Separate hypervisor Pi recipients from VM keys #15
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
allod/secrets!15
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/pi-split-hypervisor-recipients"
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?
Pi credential recipients now take the hypervisor's ordered keys from identity data and VM keys from the VM registry.
The public template removes Nexus from
machine-host-keys.json, while its exported credential inventory stays identical.Existing external constructor callers keep working through a tested compatibility fallback.
No running machine changes until a deployment updates its secrets pin and rebuilds.
Registry, inventory, split-key sabotage, and the deploy composed-layer canary prove the contract.
If this is wrong, keep the prior secrets pin or revert this PR before adopting the Nexus integration.
Refs allod/nexus#29
Contract
secrets.nixand the flake passidentity.hostPublicKeysas the exact orderedhypervisorPublicKeyslist.machineHostKeyscontains VM records only. Duplicate validation covers the hypervisor keys and every VM record, including untargeted machines.mkPiCredentialContractaccepts explicithypervisorPublicKeyswithoutnexusName; only omission of the explicit list requiresnexusNameand reads the historicalmachineHostKeys.${nexusName}record.Validation
nix build --no-link .#checks.x86_64-linux.pi-credential-registry -Lnix build --no-link .#checks.x86_64-linux.credential-inventory -Lnix build --no-link --override-input secrets path:<this-worktree> .#checks.x86_64-linux.composed-layer -Linallod/deploynix eval --json .#lib.credentials | sha256summatched master:e7175c2e08265b60553818fa3887dca15d347a6b33ef1a42d4013659152773e2Risk is R3 because this changes a shared recipient interface. Independent
gpt-5.6-solreview found global duplicate coverage, public ownership migration, and malformed-input diagnostic gaps; all were fixed and witnessed before submission. The known deploy consumer was measured against this exact checkout.