rotate-token: accept a raw value format and a tailscale-status verify probe #54
No reviewers
Labels
No labels
blocked
bug
decision
duplicate
enhancement
help wanted
invalid
landed?
question
ready-to-merge
stale
wontfix
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
allod/nexus!54
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/rotate-token-raw-format-tailscale-probe"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
rotate-token learns two names so a tailscale auth key can be registered truthfully: a value format
raw(the plaintext is the value itself, rotated exactly asraw-forgejo-token) and a verify probetailscale-status(printstailscale status --peers=false, over ssh for a VM). Nothing changes for any existing group: the three formats and three probes behave as before, and an unknown format or probe is still refused withunsupported metadata. The rotate-token test suite (41 tests, two new) andnix flake checkprove it; the registry groups for the per-machine tailscale keys are the first consumer. If it is wrong, revert this one commit; no registry on any machine uses the new names until the private secrets PR that declares them merges.Closes allod/nexus#53.
Change
scripts/rotate-token:rawaccepted invalidate_group_metadata,prepare_itemand the encryption switch;tailscale-statusaccepted in the validator and printed byprint_group_verification(tailscale status --peers=falsefor anixos-host,ssh <system> 'tailscale status --peers=false'otherwise); header comment listsraw.docs/credentials.md: one sentence naming the four formats and four probes.tests/rotate-token.sh: fixture grouptailnet.dev(service: none,format: raw, onenixos-hostand onedev-vmtarget withtailscale-status); a dry-run test asserting both printed verify lines; a live rotation test asserting the decrypted value; sabotage groupsbogus.formatandbogus.verifyadded to the refusal loop.Out of scope, tracked elsewhere: the Go port
allod secret rotate(allod/tools#197) must carry the same two names; retiring rotate-token (allod/nexus#52); renaming the registry.Risk
R2. Localized to two enum lists and one printed arm in a host script that runs only when an operator rotates a registered group. The worst credible failure is a printed verify line the operator has to fix by hand. Rollback is a revert.
Validation
Run by the integrator in the worktree, on the final code:
Cross-family review after the final edit, both reading the diff cold via codex at reasoning effort high: gpt-5.6-terra, no findings (its sandbox could not run the suite; traced every dispatch site by hand); gpt-5.6-sol, no findings, and it ran the suite itself to 41 passed. Both reports were checked for emptiness before being read as approval.