Session changelog 2026-07-21 (successor session) -- disconnect recovery + queued delivery
One changelog per session (GA-R2/D1). Status lives ONLY in docs/CURRENT-STATE.md; this file is narrative + reverts. Predecessor session (ops-commissioning-diag, disconnected before its bookend): docs/changelog-20260721-commissioning-diag.md.
1. Predecessor session close LANDED (commit 8b3adb3)
- The ops-commissioning-diag session disconnected before committing its deliverable. This session re-verified read-only first (9/9 nodes Ready in MAAS with virsh power; dc0-node-dns active+enabled with the 10.12.8.3 alias up; dhcpd running on BOTH controllers; diag-serial tag deleted and serial-console re-attached to hardy-dove = Phase-7 cleanup confirmed done), then committed the predecessor's 7 files verbatim plus the bounded session-ledger close entry and a machine-derived block re-seed from the 2026-07-21 scan (D next-free 132, DOCFIX 197, BUNDLEFIX 052, 10 open SEC rows). Operator-approved this session.
- Revert: git revert 8b3adb3 (returns the record to the not-yet-durable state; the live cloud is untouched by that commit).
2. MAC pinning in modules/node-vm (queued item 9a of the predecessor)
- modules/node-vm: new OPTIONAL
interface_macs variable (list(string), default [] = unpinned for pre-enlistment use; validations: all-or- nothing length vs network_names -- partial pinning is rejected -- and 6-byte hex format). Interfaces comprehension consumes it as mac = { address = ... } -- shape VERIFIED against the provider schema (dmacvicar/libvirt 0.9.8, tofu providers schema -json, this session).
- opentofu/vr1-dc0-substrate: all 9 nodes pinned. 54 MACs MEASURED this session (
virsh domiflist on vvr1-dc0, read-only; order = the vr1_dc0_node_nics plane order) and the 9 metal-admin entries cross-checked against MAAS boot-interface records 9/9 (machines read). No value inferred; no value reused from the adjudication file without re-measurement.
- NEW harness tests/node-vm/run-tests.sh (12 cases: variable shape, validations, consumption, 9 lists / 54 literals / 0 duplicates in the inner root, pass-through, tofu validate). Gauntlet 72 -> 73 ALL GREEN; repo-lint 0 fail; opentofu-validate PASS (both EXTRA roots).
- NOT YET APPLIED: the inner root's state (on voffice1) does not carry the pins until an operator-gated
tofu apply there. The plan gate for that apply: expected NO REPLACE -- pins equal live values, so the plan must show only benign in-place mac adoption or no-op; ANY replace is a STOP (present to operator, do not apply).
- Revert: git revert of this delivery commit (module + root + harness together); live domains unaffected until the gated apply.