Repository navigation
Credential inventory: sharadar slot for the survivorship-free data feed - #1044
Merged
seathatflowsinourveins merged 1 commit intoOct 12, 2026
Merged
Conversation
Adds the inventory entry the owner's interactive key entry needs: open_credential_terminal.sh and set_credential.py accept only ids committed in adoption/credential-inventory.json. The `sharadar` row mirrors `databento` (provider_api_key, user_only_paid, lane us-equities-research, its own 0600 file <store>/sharadar.env, one variable SHARADAR_API_KEY, no loader or consumer yet). Its notes carry the vendor's own facts from https://sharadar.com/llms.txt: the direct API at https://api.sharadar.com/v1.0, not Nasdaq Data Link, and the key sent as the x-api-key header, never in a URL. The secret-path guard names every inventory secret, so it gains the variable (and its pin in adoption/hooks/claude/SHA256SUMS); the credentials table in docs/secret-storage.md gains the row, and the surface dispositions' locators into that file move down one line. Failing first, with main's code and the new inventory row and tests: 2 failures and 1 error in tests.test_credential_status and tests.test_credential_run; with the row and main's guard, test_inventory_secret_names_are_all_guarded fails. Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins
force-pushed
the
claude/api-actions-sharadar-inventory-20261012
branch
from
October 12, 2026 18:05
f369eea to
26da71a
Compare
seathatflowsinourveins
marked this pull request as ready for review
October 12, 2026 18:05
Collaborator
Author
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. You're on a roll. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
seathatflowsinourveins
deleted the
claude/api-actions-sharadar-inventory-20261012
branch
October 12, 2026 19:11
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
sharadarentry toadoption/credential-inventory.json, mirroringdatabento, so the owner's hidden-input key entry (tools/credentials/open_credential_terminal.sh sharadar) andcredential_run.py sharadaraccept it on main. No loader or consumer yet: a pull from this vendor needs a scope amendment first.2f59d7448(main). Rebased fromd8f7e2051for a registry-only conflict (manifests/evidence.jsonand the adjacent lines ofadoption/hooks/claude/SHA256SUMS), re-derived withregister_fileandsha256sum; the hand-written files' patch-id is unchanged.lane:foundationadoption/credential-inventory.json,docs/secret-storage.md(the credentials table row),scripts/hooks/secret_path_guard.py(one name) and its pin inadoption/hooks/claude/SHA256SUMS,catalogs/foundation/upstream-surface-dispositions.json(five locators intodocs/secret-storage.mdmoved down one line),tests/test_credential_status.py,tests/test_credential_run.py,manifests/evidence.json(re-registration)What the entry holds: id
sharadar, classprovider_api_key, statususer_only_paid, laneus-equities-research, aprivate_env_filestore namedsharadar.envunder the stack's per-host store (the same template asdatabento's), one variableSHARADAR_API_KEY, no optional or pointer variables, no loaders or consumers. Rotation: rotate at https://sharadar.com/account, thenopen_credential_terminal.sh sharadarand typereplaceat the hidden prompt. The notes carry the vendor's facts: the direct API athttps://api.sharadar.com/v1.0, not Nasdaq Data Link (neverdata.nasdaq.comor thenasdaqdatalink/quandllibraries); the key sent as thex-api-keyheader so it never sits in a URL or a log; bulk tables asGET /data/{table}?years=5|10|full, an HTTP 302 to a zip.The guard:
tests/test_secret_path_guard.pyrequires every inventory secret name in the guard'sSECRET_NAMES, so the new variable joins the base tuple beside databento's, and the guard's pin moves. After merge a host reinstalls the user-scope guard withtools/adoption/install_claude_profile.py --only guard; until thentests.test_secret_path_guard.test_host_profile_copy_is_verbatimfails locally (it is skipped in CI), as after #1014.Follow-ups (not in this change):
x-api-keyheader.blueprints/runtime-workers/openhands/resolver/patch_policy.py:137citesdocs/secret-storage.md:199-200, already stale before this change (gate code, left as is).SOTA sources
e66cb895ba8fe2eb3209795963ce33049b997d578ca901dbe5f74bc2c47545af): line 9 (the direct API athttps://api.sharadar.com/v1.0, not Nasdaq Data Link), line 11 (the key from https://sharadar.com/account), line 13 (the key as theapi_keyorapiKeyquery parameter or thex-api-keyheader), lines 17 and 54 (bulk zips byyears=, HTTP 302). The rendered page https://sharadar.com/docs/auth is script-built and carries no static text to cite.databentorow and Credential inventory: alpaca-paper-c slot for paper account C; the guard reads a one-letter pointer suffix #1014 (thealpaca-paper-cslot),docs/secret-storage.md.Evidence-class table
local_integrationtests.test_credential_statusandtests.test_credential_rungive 2 failures and 1 error; with the row and main's guard,test_inventory_secret_names_are_all_guardedfailslocal_integrationsharadarentry; the diff is 18 added lineslocal_integrationsource_reviewLocal commands run
Decision record
None new: the inventory and its rules are
docs/decisions/2026-09-24-secret-storage.mdanddocs/secret-storage.md; the entry is a row of that design.Host evidence
Not applicable: no receipt changes.
Checklist
version comment (no floating tags). (none changed)
permissions: {}and grant each jobonly what it needs (
contents: read, or an explicitly justified addition). (none changed)added without a documented owner.
moved or overwritten).
🤖 Generated with Claude Code
Follow-ups after landing
Landed as 6934527 on 2026-10-12T19:11:08Z. CI was 33 ok; both families' reads were at 26da71a.
tools/adoption/install_claude_profile.py --only guard(secret_path_guard.py installed; the other hooks already matched). That clears the expected host-copy test
failure noted in the Claude-family check.
credential_run.py sharadar --checkon main reports the slot ready (the key name injected, value masked).