Skip to content

docs(token-rotation): record mint dates and the private-repo carve-out - #86

Merged
twistedmelonman merged 1 commit into
mainfrom
claude/docs-step6-token-rotation-1ef43e2a
Sep 4, 2026
Merged

docs(token-rotation): record mint dates and the private-repo carve-out#86
twistedmelonman merged 1 commit into
mainfrom
claude/docs-step6-token-rotation-1ef43e2a

Conversation

@twistedmelonman

Copy link
Copy Markdown
Member

Step 6 of the org migration: the token-rotation doc shipped with an empty
table, and its private-repo rationale named only one repo.

What changed

Mint dates filled in, from each secret's updated_at via gh secret list — the date the value was last set, which is what rotation planning
needs.

Expiry left blank, and the doc now says why. It is not readable from
the API; it exists only in what claude setup-token printed at mint time.
Three empty cells otherwise read as an oversight, and a row without a real
expiry cannot get its calendar reminder either — so the blank is load-
bearing information, not a gap.

Two rows added. photo-game-poc and cleanroom are private repos
running Claude workflows, so they carry repo-level tokens for exactly the
reason scripts does. The doc named only scripts.

A warning about the temporary Team plan. Both orgs currently read as
plan=team, under which an org secret does reach private repos, which
would make all three repo-level copies look redundant. That plan was bought
to file a support ticket and will be dropped. Deleting a private repo's
token on the strength of it fails at the downgrade — silently, on repos
nobody is watching.

Verification

  • Mint dates read from the live API, not reconstructed
  • Full org-migration test suite green (no test references this doc)
  • markdownlint clean; codebase reviewer PASS
  • The runbook's step-3 rerun command re-checked against the now
    org-owned smartwatermelon/dev-env

Related

Filed alongside this: #85, the scripts-goes-public issue Step 6 calls for.

Remaining in Step 6: the calendar events (needs real expiry dates first)
and removing the wrapper's smartwatermelon login alias — the latter
gated on TILSIT and MIMOLETTE running runbook Part D, or gh breaks on
both machines.

https://claude.ai/code/session_01MM2jf6c7eNN4QMq32GdC5X

The table shipped empty. Fill it from `gh secret list` timestamps, which
give the date each secret's value was last set -- enough to plan a
rotation against.

Expiry stays blank on purpose. It is not readable from the API; it exists
only in what `claude setup-token` printed at mint time. Say so in the doc
rather than leaving three empty cells that look like an oversight, since a
row without a real expiry cannot get its calendar reminder either.

Two rows are new. photo-game-poc and cleanroom are private repos running
Claude workflows, so they carry repo-level copies for the same reason
scripts does; the doc previously named only scripts.

Both orgs currently read as plan=team, under which an org secret would
reach a private repo and make these copies redundant. That plan was bought
to file a support ticket and is temporary, so the doc warns against
deleting a private repo's token on the strength of it -- the failure would
land at the downgrade, silently, on repos nobody is watching.

Claude-Session: https://claude.ai/code/session_01MM2jf6c7eNN4QMq32GdC5X
@twistedmelonman
twistedmelonman merged commit 1199498 into main Sep 4, 2026
2 checks passed
@twistedmelonman
twistedmelonman deleted the claude/docs-step6-token-rotation-1ef43e2a branch September 4, 2026 22:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant