/goal /ultracode-workflows [SEC-1] sovereign age-key backup, escrow verification, and rotation runbook + tooling #26
Labels
No labels
bug
discussion
duplicate
enhancement
goal
help wanted
horizon:backlog
horizon:governance
horizon:mvp
invalid
operator-decision
question
roadmap
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#27 /goal /ultracode-workflows [SPINE-4] re-establish a known-good baseline — germinate a fresh long-lived reference/staging platform from post-SPINE-2/3 main
open-platform/mitosis
#42 /goal /ultracode-workflows [POL-4] policy-govern the secrets + domains + network invariants
open-platform/mitosis
Reference
open-platform/mitosis#26
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Track/Wave:
SEC-1· Wave M4 · Size MRepos:
mitosisDepends on: HYB-1
Why
You cannot responsibly hand a client a platform whose single sovereign age key has no backup or rotation path. This is the "robust foundation" gate.
Scope
In bin/lib.sh: (1) germination-time age-encrypted BACKUP of the fork key to an operator-specified location, with explicit acknowledgment before proceeding past the "keep your key forever" banner; (2) a
rotate_age_keyop that mints a new keypair, rekeys .sops.yaml, re-encrypts every clusters/** sops file PRESERVING VALUES (sops updatekeys, not fork's regen-fresh shortcut), updates the in-cluster sops-age Secret, and gates on fork_verify_all_sealed; (3) a lost-key + suspected-compromise runbook.Acceptance
On a germinated daughter, after rotate_age_key a previously-set app secret still resolves in the running pod; fork_verify_all_sealed passes against the NEW key and FAILS against the old; the old key decrypts nothing; a documented restore-from-backup recovers a platform whose local key was "lost".
Notes
Seam A (bin/lib.sh) — after HYB-1. Open decision: off-box custody target (password manager / hardware token / escrow).
Part of the First Client Deploy → Governance roadmap. The owning agent may recurse into its own subagent team (ultracode workflow) if the task warrants. Honor the seam-serialization: land on a shared seam by rebase, and don't start a seam position until the prior one has merged.
SEC-1 delivered in plat/mitosis PR #52 (merged).
Validated LIVE on the vxrail:
valid8egermination: age-encrypted backup written (chmod 600),FORK_KEY_ACK=1honored, restore decrypts byte-identical to the sovereign key.k3d-valid8c(value-preserving): the previously-setMCP_BEARER_TOKENstill resolves in the SAME running mcp pod after rotation (identical value); platform Kustomization Ready=True at the pushed revision (Flux decrypts with the NEW key); in-clustersops-ageswapped to the new key;fork_verify_all_sealedPASSES on the new key and FAILS on the old; the old key decrypts 0/9clusters/**files; restore-from-backup recovers a platform whose local key was moved aside.valid8bgitops: 9/9 decrypted plaintexts identical pre/post rotation.valid8b(current-stack reference) untouched;platgold2never touched.