Add the microvm credential delivery plan and review prompt #32
No reviewers
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
allod/strategy!32
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/microvm-credential-delivery-plan"
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?
Adds the dev plan and iterative review prompt for the third slice of milestone 4 in the microvm.nix adoption arc: moving a selected microvm guest's private key material off agenix and durable paths and onto per-boot delivery from host memory.
The slice implements parent contracts 7 (closed credential names and paths), the guest half of 8a (
allod.microvm.guestCredentialRoot), 9 (one runtime plaintext root), 10 (a materializer boot service, not the current activation script), 11 (the SSH host key cannot auto-regenerate), 12 (no age in a microvm guest) and 14 (persistence and secrets never overlap). It excludes contract 8b'sextendModuleshost integration, contract 15's networking, and the nested-boot tests.What the plan settles
age.secrets, soallod/archetypes#17's Forge opt-out keeps meaning one thing.services.openssh.hostKeys = []plus anextraConfigHostKey, because pinned nixpkgs rendersHostKeylines solely fromcfg.hostKeysand givessshd-keygenan empty script when that list is empty — pointinghostKeysat the runtime path instead would leavesshd-keygenarmed to mint a replacement identity, which is the exact failure contract 11 forbids.sshd_config,sshd-keygen.service,nix.conf,gitconfig, the Home Manager result and the guest closure — rather than option values.Contract contradictions recorded
Two, both recorded in the plan rather than worked around: the guest option namespace (
allod.microvm.guestCredentialRootper contract 8a versusallod.archetypes.microvm.volumeImageRootas the volumes slice landed it), and contract 9 forbidding/etcon a guest whose/etcis already tmpfs.Risk
R0 for this PR: it adds two Markdown files to
allod/strategyand changes no code.The plan it describes is R3 High and says so, and says the score does not come down with its own validation because nothing in that slice boots a guest. Every claim about credential receipt, materializer ordering and sshd startup is an inference from pinned upstream source. The plan carries an explicit gate: no machine is enabled on the microvm runtime on the strength of that change.
Validation
Plan conforms to
dev-plans.md: Tracking Issue, Goal, Scope, Risk Assessment, Interface Contracts, Agent Gates, Acceptance Tests, Rollback Plan all present; one PR, so per-PR risk does not apply.Empirical claims in the plan were measured against the pinned sources before writing, not asserted: the microvm.nix and nixpkgs store paths were confirmed by comparing
nix hash pathagainst theflake.locknarHashes; QEMU'sFW_CFG_MAX_FILE_PATHarithmetic, sshd'sHostKeyandsshd-keygenbehaviour with an emptyhostKeys, agenix'smkIf (cfg.secrets != {})wrapper and itsidentityPathsdefault, and systemd's fw_cfg import path and per-unit credential modes were each read from source.The review prompt carries a Review Evidence table and is set up for rotating passes to convergence, which this arc's parent plan required and which the slice's risk level warrants. Pass 1 is scheduled cross-vendor because the plan was authored by
claude-opus-5.Refs allod/strategy#20
Refs allod/archetypes#29
Approved for landing, and it lands by relay rather than by the merge button — so this PR will need closing by hand once it does.
The slice this plan describes is implemented and merged on
allod/archetypesmaster as233044f..8982381, so the plan should not sit indev-plans/describing finished work. It lands and is archived in one change: this branch's twelve commits carried forward unchanged in content, plus two more that archive this plan and prompt alongside seven other plans and five other prompts whose work has landed.The relaying environment cannot push to this org, and the relay tool refuses merge commits, so these commits arrive rebased onto master with new hashes rather than through a merge. Content is identical. When they appear on master, close this with
-d.One note for the record, from the deployment that carries this arc: the guest half's tracking issue
allod/archetypes#29stays open, and the plan is being archived anyway because its own scope is complete — it excluded contract 8b, which is whatallod/archetypes#39is landing now.0c5d7445d9tof73f728cb4