Rename the rotation registry to rotation-registry.json and lib.rotationRegistry #31
No reviewers
Labels
No labels
blocked
bug
decision
duplicate
enhancement
handoff
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/secrets!31
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/rotation-registry-rename"
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?
The rotation registry is renamed to say what it holds: the file
forgejo-token-groups.jsonbecomesrotation-registry.jsonand the flake exportlib.forgejoTokenGroupsbecomeslib.rotationRegistry. What changes for a running machine: nothing yet; the registry's contents, validation, and every value consumers read are byte-identical, and the old export name stays as a deprecated alias of the new one for one compatibility window. What stays identical: the registry shape, the checks, and every other export. What proves it: thecredential-registryandcredential-inventorychecks pass and both export names evaluate to the same JSON. If it is wrong, revert; the only consumer that notices the file rename before the alias isallod secret declare, which opens the file by name and lands next.Landing order, as recorded on the issue: this PR first; then allod/tools, allod/nexus, and allod/archetypes, each reading
lib.rotationRegistrywith no fallback; then the deploy lock cascade advancing secrets before archetypes; then a final secrets PR removing the alias, which closes the issue. A deployment's private fork of allod/secrets must merge this rename before the new nexus or tools reads its checkout. allod/secrets PR 30 is open on the same two files; whichever lands second rebases.Refs allod/secrets#22
Risk
R3. A cross-repo interface in the secrets repository is renamed. Residual: a consumer bumped to this commit without moving to the new name keeps working through the alias, and a consumer moved to the new name against an older secrets checkout fails loudly by attribute name; neither touches secret material.
Validation
Run by the integrator on the reviewed commit:
nix build .#checks.x86_64-linux.credential-registry .#checks.x86_64-linux.credential-inventory --no-link -L: exit 0.nix eval --json .#lib.rotationRegistry | sha256sumand the same for.#lib.forgejoTokenGroups: identical hashes.grep -rn -i 'forgejo-token-groups\|forgejoTokenGroups' .outside.git: only the alias line inflake.nixand its README row.Cold review:
gpt-5.6-solviacodex exec, default effort, read-only sandbox, on commitefc72c37. Findings and disposition:allod secret declare, which lands right after this.c3eaf54.serviceisforgejoornoneinside a paragraph about what the check rejects, but the validator never readsservice. Fixed inc3eaf54: the sentence now describes the field and says the check does not validate it andallod secretrefuses other values. Adding validation is out of scope for the issue.The fix commit was re-validated with the same three commands.
Master moved under this branch when allod/secrets PR 30 landed, and both PRs edit the export block of
flake.nixand the README tables, so the branch now carries a merge of master (0f92a38) plus one follow-up (cc705d4). The follow-up exists because the merge left two validations of the same file: PR 30 had introduced its ownforgejoTokenGroupslet binding, and ourrotationRegistrybinding sat beside it. There is now one binding,rotationRegistry, feedinglib.rotationRegistry, the deprecatedlib.forgejoTokenGroupsalias,lib.localAuthRefreshSources, and thelocal-auth-refreshcheck.Validation on
cc705d4, run by the integrator:credential-registry,credential-inventory, andlocal-auth-refreshchecks build (exit 0);lib.rotationRegistryandlib.forgejoTokenGroupshash identically and unchanged from the reviewed commit;lib.credentialStoreUrlandlib.localAuthRefreshSourcesevaluate.