Add the vmFacts runtime export plan #31
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/strategy!31
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/vmfacts-runtime-contract"
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 for the remaining half of the microvm arc's contract 1: exporting the inventory
runtimefact througharchetypes.vmFacts.<name>.runtime. Inventory's half already landed; this is the third source of truth that contract makes agree.It is planned as its own slice, ahead of the rest of milestone 4, because contract 18 makes both allod/nexus key-rotation tools dispatch on this exact attribute — allod/nexus#21 and allod/nexus#22 cannot start until it exists.
Implementation is tracked by allod/archetypes#27 and is one additive field in
nix/vm-facts.nixplus check coverage inflake.nix.Risk
Plan document only; no runtime behavior. The change it plans is scored R2 Medium:
vmFactsis a public flake output read host-side byallod/nexus, so adding a field is a public interface change with cross-repo ordering, held below R3 by being additive-only with every consumer across seven repos enumerated and verified inert.Validation
Reviewed by an independent agent that verified empirical claims against the tree rather than reading the prose. It returned no blockers and four majors, all folded:
set -euwould have made the deliberately-failing invocation abort the builder, and the natural fix (|| true) would have made the proof vacuous. The plan now specifiesreturn 1overexit, anif-guarded negative call, agreppinning the failure to the diff rather than to any failure, and a sabotage value inside the valid enum so nothing else can satisfy it.checkedMachinestrip-wire already guarantees it. The plan now declines to add it and says why, keeping contract 1's enum command as a manual acceptance test.EvalError, whichtryEvaldoes not catch, so the check aborts opaquely instead of naming the fixture. The plan now predicts that actual outcome and records that the guard's job is to name the error, not to create it.lib.mkVmFactswith its own data would inherit inventory's enum was false, and the reviewer demonstrated the bypass. The plan now records it as an accepted, inert gap with the mitigation named: contract 18's consumers must fail closed on an unrecognized runtime.Six minors and four nits — wrong line numbers, an incomplete consumer enumeration missing
allod/deploy, and an over-claimed test rationale — were also folded. The reviewer independently reproduced all four libvirt drvPath hashes in the acceptance table and re-derived the consumer-compatibility conclusion without finding a counterexample.Refs allod/strategy#20