d139-steps2-3-dc0-20260801.txt
===============================
D-139 execution STEPS 2 and 3 for vr1-dc0. EXECUTED 2026-08-01, operator-gated.
Run from voffice1 (D-128 Plane-2) via the restored :5241 forward, profile
vr1-dc0-region asserted by rack identity before any call.

STEP 2 -- MAAS GUA /64s alongside the existing ULA
  scripts/dc-plane-ipam.sh carve-v6 vr1-dc0 --commit
  planned=5 applied=5 skipped=7 errors=2
  Each GUA /64 created on the SAME vlan as its v4 twin, each read back:
    2602:f3e2:f02:20::/64 vlan 5001 (metal-admin)     + fd50:840e:74e2:220::/64
    2602:f3e2:f02:21::/64 vlan 5004 (metal-internal)  + fd50:840e:74e2:221::/64
    2602:f3e2:f02:30::/64 vlan 5005 (data-tenant)     + fd50:840e:74e2:230::/64
    2602:f3e2:f02:40::/64 vlan 5006 (storage)         + fd50:840e:74e2:240::/64
    2602:f3e2:f02:50::/64 vlan 5007 (replication)     + fd50:840e:74e2:250::/64
    2602:f3e2:f02:10::/64 vlan 5002 (provider-public) -- already GUA, untouched
  The 2 errors are CORRECT REFUSALS, not failures: lbaas-mgmt and oob have no v4
  plane to pair with ("refusing to guess a fabric"). lb-mgmt is D-139 step 5; oob's
  10.12.40.0/22 is ruled-but-not-built.
  Independent read-back: 11 v6 subnets, 6 GUA + 5 ULA, every GUA paired on one vlan.

STEP 3 -- node v6 statics migrated ULA -> GUA, WHILE v4 IS STILL PRESENT
  scripts/dc-node-v6-carve.py replace vr1-dc0 --v6-family gua --commit
  applied=45 skipped=9 errors=0;  READ-BACK: 45/45 link(s) verified live
  PRE : 54 v6 links on tagged nodes -- GUA 9, ULA 45
  POST: 54 v6 links on tagged nodes -- GUA 54, ULA 0
  NICs carrying more than one global v6: 0  (G19's sole-global predicate holds)
  The 9 skipped are br-ex on provider-public, already GUA before this step.
  v4 was NOT touched -- that is the ordering step 3 exists to enforce, because
  dc-node-v6-carve.py pivots on IPv4 existing.

GATES AFTER
  dc-node-v6-carve check vr1-dc0 --v6-family gua : PASS, 54 correct, 0 missing, 0 errors
  dc-plane-ipam check vr1-dc0                   : 29 pass / 2 fail
    The 2 are EXACTLY the two expected absences and neither is new:
      v6 lbaas-mgmt 2602:f3e2:f02:80::/64 ABSENT  (D-139 step 5 creates that plane)
      v6 oob        2602:f3e2:f02:f0::/64 ABSENT  (oob has no plane in MAAS at all)
    It was 7 fail before step 2; the 5 closed are the 5 planes carved.

REVERSIBLE: `replace vr1-dc0 --v6-family ula --commit` swaps the node statics back --
both /64s remain in MAAS until step 6 retires the ULA rows. Nothing has been deleted.

NOT DONE BY THESE STEPS: no v4 was removed (step 7, still gated on the unmeasured
`network-get` question); no ULA prefix was retired (step 6); lb-mgmt's plane does not
exist (step 5); vr1-dc1 is untouched throughout.
