|
Items 3.9 + 3.10: the teardown false clear existed in three places, not one
3.9 was the readiness audit's most dangerous item -- the teardown runbook is what an operator reaches for DURING a failed Stage 5, under time pressure. The false clear was in THREE places, not the one the audit named. Besides Step 2's vm-host read -- which can never return, since this repo uses per-machine power_type=virsh and instantiates no maas_vm_host module -- the same wrong premise sat in the "READ BEFORE ANY DC TEARDOWN" header telling the operator to remove the maas-vm-host record, and in the Relationship-to-D-061 claim that no VR1 DC had reached Stage 4. The header instance is the consequential one: it is read FIRST, so it bypassed any fix confined to Step 2. Step 2 is now a two-lens MACHINE census run from the headend (maas is measurably absent on vcloud): lens 1 enumerates what exists and ends in a countable RECORDS REQUIRING ATTRIBUTION, lens 2 corroborates against lib-hosts pinned boot MACs and exits 1 on any hit. Demonstrated three ways against a fixture -- records present -> exit 1, zero -> exit 0, empty roster -> REFUSE -- so it is a gate rather than a formality. The 2026-07-21 pod-cascade precedent is retained as the reason associations are read before any destroy. Step 3's six phantom module.dc1_* targets are retired; all 8 targets now resolve, verified independently against ^module "X" across all three roots. The real insight: scoping a DC is a ROOT choice, not a -target choice, since each substrate root holds exactly one site. Step 4's VERIFY moved to qemu+ssh from the headend behind a virsh version REFUSAL, because an unreachable URI, a stopped VM and a bad key otherwise return the same empty result. The decision tree gains "no branch reaches a destroy without Step 2 passing" -- it never mentioned the MAAS gate -- and the virsh destroy vs tofu destroy verb distinction. Also fixed: Step 1 backed up the wrong state file, "Two paths" pointed twice at a nonexistent Step 6, and $REPO silently meant two different clones. 3.10: item 17 CLOSED with measured evidence, and its own stated fix corrected (it closed by D-125 bridge-in, not the replication the entry claimed). Item 19 disambiguated 19a/19b rather than renumbered, because both are cited by number from outside the file. Item 20 MEASURED, not asserted -- verdict no leg required, with the rule mismatch written in rather than resolved silently, plus an expiry condition; the voffice1-side reboot durability recorded as UNMEASURED with the commands that would resolve it. repo-lint 0 fail / 615 files, both files ASCII+LF. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| docs/CURRENT-STATE.md |
|---|
| docs/dc-dc-deployment-workflow.md |
|---|
| runbooks/dc-dc-teardown-rollback.md |
|---|