Repository navigation
Take up the command center's two remaining notes on the key slots - #1050
Open
seathatflowsinourveins wants to merge 3 commits into
Open
seathatflowsinourveins wants to merge 3 commits into
seathatflowsinourveins wants to merge 3 commits into
Conversation
seathatflowsinourveins
marked this pull request as ready for review
October 12, 2026 21:18
seathatflowsinourveins
force-pushed
the
claude/api-actions-key-slots-notes-20261012
branch
from
October 12, 2026 23:46
116ebd9 to
d5bcfd3
Compare
seathatflowsinourveins
added a commit
that referenced
this pull request
Oct 12, 2026
…te records by name only Fix round 1 of #1050, after Astra's first read at 116ebd9 and the command center's requests of 2026-10-12. - anthropic-api-7 holds the owner's Max-plan API credit (a personal key scoped to one workspace, read valid by the command center at 23:28:51Z), so it fills first: 7, 4, 3, 2, 5, anthropic-api, then 8 to 10. The worker's DEFAULT_KEYS, its README, the inventory notes, the slot table and both decision records say so; the organization's name and id are not recorded. The order test pins the new order and fails on the old worker. - P1: the key-slot records no longer publish digests of private command-center records (the key-practice record, anthropic_key_health.sh, the 2026-10-11 ruling); they are cited by name. Each public-page digest is labelled a capture of a public page (the command center's ruling of 22:44Z). KeySlotRecordDigestTests fails on 116ebd9 (13 sites in the decision record, 1 in secret-storage.md) and passes here. - P3 #4: anthropic-api-3's purpose, rotation and the CI paragraphs say the claude-review environment is gone (#981; the repository's environment list, read 2026-10-12); the slot table gives each slot's place in the order. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The command center's read of #969 at 28c99ca passed with three quality notes. The commit that answered them (ea7f3638, 2026-10-10) stayed on a local follow-up branch and never reached the merged PR. This is that commit, ported to current main: - anthropic-api-6 holds a second key of anthropic-api-5's account, so it adds no credit; the slot table and the next-key step say so (next: anthropic-api-7, from a new account). Checked 2026-10-12 with credential_run.py --check: anthropic-api-6 stored, anthropic-api-7 missing. - anthropic_key_health.py reports a 429 that carries retry-after as rate_limited and exits 0 for it, so a daily timer does not alarm on throttling. A 429 without retry-after is the tier's spend cap (Anthropic's errors and rate-limits pages: no retry-after, usage paused until the next month), reported as spend_capped, and it fails, as do every other non-2xx answer and main's probe_failed. Only the header's presence is kept. The tests fail on main's tool (3 failures, 1 error). The third note, a planned CI fallback to anthropic-api-4, lapsed when Claude review inside GitHub was retired (#981); the record says so. The decision cites the command center's refreshed key-practice record (sha256 ee25fc91..., unchanged). Five dispositions locators into docs/secret-storage.md move by five lines; the files are re-registered. Co-Authored-By: Claude Opus 5.5 <[email protected]>
… spare The command center's ruling of 2026-10-12 (20:34Z): the owner's fill-first order exists to fill distinct credit pools first, and anthropic-api-6 holds a second key of anthropic-api-5's account, so it caps exactly when anthropic-api-5 caps. It leaves the order and stays in the inventory as anthropic-api-5's spare, used only to replace that key. - The review worker's DEFAULT_KEYS drops anthropic-api-6; the test that pins the order fails on main's worker. - The inventory's anthropic-api-6 label and notes say it is a spare of anthropic-api-5's account (the command center's key-practice record, table row anthropic-api-6), and docs/secret-storage.md's table row follows the label. - docs/secret-storage.md item 10 now states the current order: anthropic-api-4, -3, -2, -5, anthropic-api, then -7 to -10. That includes the owner's 2026-10-11 move of anthropic-api-2 to third (the command center's 10-11 ruling, which the worker already followed but the page did not), and that anthropic-api-3 serves local work only since #981. - The key-slots decision's follow-up section and the review-worker record say the same; the 2026-10-10 decision text stays as history with a pointer. Five dispositions locators into docs/secret-storage.md move by two more lines; the files are re-registered. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…te records by name only Fix round 1 of #1050, after Astra's first read at 116ebd9 and the command center's requests of 2026-10-12. - anthropic-api-7 holds the owner's Max-plan API credit (a personal key scoped to one workspace, read valid by the command center at 23:28:51Z), so it fills first: 7, 4, 3, 2, 5, anthropic-api, then 8 to 10. The worker's DEFAULT_KEYS, its README, the inventory notes, the slot table and both decision records say so; the organization's name and id are not recorded. The order test pins the new order and fails on the old worker. - P1: the key-slot records no longer publish digests of private command-center records (the key-practice record, anthropic_key_health.sh, the 2026-10-11 ruling); they are cited by name. Each public-page digest is labelled a capture of a public page (the command center's ruling of 22:44Z). KeySlotRecordDigestTests fails on 116ebd9 (13 sites in the decision record, 1 in secret-storage.md) and passes here. - P3 #4: anthropic-api-3's purpose, rotation and the CI paragraphs say the claude-review environment is gone (#981; the repository's environment list, read 2026-10-12); the slot table gives each slot's place in the order. Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins
force-pushed
the
claude/api-actions-key-slots-notes-20261012
branch
from
October 13, 2026 15:36
d5bcfd3 to
6a40d6a
Compare
Merged
5 tasks done
This branch has not been deployed
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
anthropic-api-6is recorded as a spare key ofanthropic-api-5's account (it adds no credit, and the next key goes inanthropic-api-7).tools/credentials/anthropic_key_health.pypasses a throttling 429 (one withretry-after) asrate_limitedand fails a spend-cap 429 (one without) asspend_capped.df3a477c(main). Three commits:1581d620(the notes),a86a5991, which takesanthropic-api-6out of the fill-first order (the command center's ruling of 2026-10-12, 20:34Z), and6a40d6ab, fix round 1 (below).d5bcfd33to6a40d6ab. That rebase took main'smanifests/evidence.jsonandcatalogs/foundation/upstream-surface-dispositions.json, moved the five locators with the repository's locator mapping, and re-registered this change's rows.738fdf70) as against the new one, none is removed, and every row matches its file.git patch-id --stable.validate.pypasses, andgit merge-tree --write-treeagainstdf3a477creturns 0 (checked before the push).lane:foundationtools/credentials/anthropic_key_health.pyandtests/test_anthropic_key_health.py;tools/claude-review-worker/worker.py(DEFAULT_KEYS), itsREADME.mdandtests/test_claude_review_worker.py;tests/test_published_digest_privacy.py:KeySlotRecordDigestTests(fix round 1);adoption/credential-inventory.json:anthropic-api-6's label and notes,anthropic-api-7's notes,anthropic-api-3's purpose and rotation,anthropic-api-4's CI sentence;docs/decisions/2026-10-09-claude-review-worker.md: the default key list;docs/decisions/2026-10-10-anthropic-key-slots-and-practice.md: the follow-up section, the slot table and the citation of the refreshed record;docs/secret-storage.md: the key-practice paragraphs;catalogs/foundation/upstream-surface-dispositions.json: five locators moved by 18 lines (against main738fdf70; five lines in the first commit, the rest in fix round 1);manifests/evidence.json: re-registration.Origin. The command center's read of #969 at
28c99ca9(2026-10-10) passed with three quality notes. The commit that answered them,ea7f3638, stayed on a local follow-up branch and was never pushed. #969 merged at5c5bff1ewithout it (squash421bf3f9). This PR is that commit, ported to current main:anthropic-api-6is a spare. It holds a second key ofanthropic-api-5's account, so the slot table and the next-key step say so. The next key goes inanthropic-api-7, from a new account. Checked 2026-10-12 withcredential_run.py <id> --check, which prints names and state only:anthropic-api-6is stored andanthropic-api-7is missing.retry-afteruntil access resumes the next month. Passing it would hide a key with no usable credit.GET /v1/modelscarriedretry-after, never its value.rate_limitedand exits 0, so a daily timer does not alarm on throttling.spend_cappedand fails.probe_failed(a probe that exited nonzero or reported an error). The docstrings carry the rules.anthropic-api-6leaves the fill-first order (the command center's ruling of 2026-10-12, 20:34Z). The owner's order exists to fill distinct credit pools first, and a second key onanthropic-api-5's account caps exactly whenanthropic-api-5caps. It stays in the inventory asanthropic-api-5's spare, used only to replace that key.DEFAULT_KEYSdrops it. The test that pins the order fails on main's worker.anthropic-api-5's account, citing the command center's key-practice record (table rowanthropic-api-6).docs/secret-storage.mditem 10 now gives the current order:anthropic-api-4,-3,-2,-5,anthropic-api, then-7to-10. The page had not taken up the owner's 2026-10-11 move ofanthropic-api-2to third (the command center'sruling-anthropic-api-automation-practice-20261011.md, which the worker already followed), nor thatanthropic-api-3serves local work only since Retire Claude review inside GitHub; AI reviews run locally #981.anthropic-api-4on credit exhaustion. It lapsed when Claude review inside GitHub was retired (Retire Claude review inside GitHub; AI reviews run locally #981,docs/decisions/2026-10-10-retire-in-github-claude-review.md), and the record says so.Fix round 1 (
d5bcfd33). Astra's first read at116ebd97asked for changes: 1 P1 and 5 P3s. The command center's tests-only Claude check passed. The command center also sent two requests aboutanthropic-api-7.anthropic-api-7goes first in the fill-first order (the command center's requests of 2026-10-12, about 23:17Z and 23:30Z, on the owner's subscription-oriented direction).anthropic-api-7,-4,-3,-2,-5,anthropic-api, then-8to-10.DEFAULT_KEYS, the worker's README, the inventory notes, the slot table, item 10 and both decision records say so. The organization's name and id are not recorded.116ebd97's worker and passes here.cc-tools/anthropic_key_health.shand the 2026-10-11 ruling. They are cited by name only.KeySlotRecordDigestTestsrequires each digest in the decision record, and indocs/secret-storage.md's key-practice section, to be either labelled a public capture or the sha256 of a repository file named beside it. It fails on116ebd97(13 sites in the decision record, 1 insecret-storage.md) and passes here. The existing guard reads JSON only.anthropic-api-3's purpose, its rotation step,anthropic-api-4's note, item 5 and item 9 now say theclaude-reviewenvironment is gone. Retire Claude review inside GitHub; AI reviews run locally #981 removed the workflows that used it, and the repository's environment list, read 2026-10-12, holds onlyoffhost-fixture.Follow-ups (not in this change):
catalogs/foundation/upstream-surface-dispositions.json(35) andmanifests/evidence.json(20). None is on an added line.blueprints/runtime-workers/openhands/resolver/patch_policy.py:137citesdocs/secret-storage.md:199-200, an older locator; the text it means is in the project-settings passages. It is inherited and outside this change's paths.worker.py:1091) switches keys on 402 or on 400 with "credit balance is too low", not on a spend-cap 429. The health tool now names that 429spend_capped. Aligning the worker needs a sanitized refusal capture from the pinned CLI first.d5bcfd33(ACK; P3):KeySlotRecordDigestTestschecks the citation form (a labelled public capture or a named repository file), not the capture's bytes.oauthlibignore expiry, is the command center's incident of 2026-10-13, 00:17Z, outside this change.GET /v1/modelstogether with a 200 fromGET /v1/organizations/meas an unscoped key that needsanthropic-workspace-id. The source is the "Select a workspace" section of https://docs.claude.com/en/docs/manage-claude/authentication.md (capture of a public page, read 2026-10-12T23:35:20Z, sha256e047c3b1d130cb39939c00a5ee15b946aaba9603e3aa98c4e16e8965fc913141, lines 124-128). That is a separate change.SOTA sources
45b370216e463bac22090d9f5823d9e410de5a05e69fac111dd8795628db4181), line 25: a 429rate_limit_errormeans a rate limit, the usage tier's monthly spend cap, or a workspace spend limit; a tier spend-cap 429 has noretry-afterand keeps failing until access resumes.447a6f223f60445f056cf237d7f690a113abc5fcd908d9bc0fb37e25c6bbbacc). Line 47: at the spend cap, usage pauses until the first day of the next month and requests return 429. Line 293:retry-afteris "Not sent with the spend-cap 429".key-practice-20261010.md(a private record, unchanged since 2026-10-10; no digest of it is published), which the decision cites.Evidence-class table
local_integrationReviewRunTest.test_the_default_key_order_is_fill_first_with_the_max_plan_credit_firstwith116ebd97'sworker.py:FAILED (failures=1); here: OKlocal_integrationKeySlotRecordDigestTests's check over116ebd97's records: 13 sites and 1 site; here: nonelocal_integrationtests.test_anthropic_key_healthwith main'santhropic_key_health.py:FAILED (failures=3, errors=1); here:Ran 21 tests ... OKanthropic-api-6is stored,anthropic-api-7missing (before round 1)native_provencredential_run.py anthropic-api-6 --check/anthropic-api-7 --checkon the workstation, 2026-10-12 (names and state only)anthropic-api-7is validnative_provenGET /v1/models200)source_reviewea7f3638is not an ancestor of #969's merged head5c5bff1e; the new test fails on mainLocal commands run
Decision record
docs/decisions/2026-10-10-anthropic-key-slots-and-practice.md, section "Follow-up after the command center's read (2026-10-10, taken up 2026-10-12)".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