diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 18100db..d26ccdc 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -34,8 +34,31 @@ GA-R7 memory review + merge of `dc-dc-stage3-phase2-dc-substrate` to `main` (merge commit) + branch retirement; stage record `docs/archive/stage-records/vr1-stage3-record.md`. Stages 0-2 - precede it; stages 4-7 are authored, not executed (workflow - doc:873). The NEXT stage branches off post-merge `main`. + precede it; stages 5-7 are authored, not executed (workflow + doc:873). +- **Stage 4 / Phase 3 -- "MAAS enlist / commission / deploy (per DC)" + (`runbooks/dc-dc-phase3-maas-enlist-deploy.md`): OPEN 2026-07-23** on + branch `dc-dc-stage4-phase3-maas-deploy` (off post-merge `main`). + Precondition PASS + discovery CAPTURED read-only + (`docs/audit/stage4-discovery-20260723.txt`): both DC racks enrolled + (vvr1-dc0 `7chphy`, vvr1-dc1 `nmpcq4`); 9 nodes per DC ALL Ready, + power=virsh, dc0 boot fabric-4 / dc1 fabric-142, zone/pool both + `default` (no zone/pool convention -- fabric + MAC prefix is the + grouping signal). Runbook deltas vs reality: commissioning (Step 3) + already satisfied by Stage 3; order is carve-then-deploy per the + runbook's own Ready-state sequencing note; VR1 nodes have 6 flat + per-plane NICs (enp1s0 metal-admin/boot, enp2s0 provider-public, + enp3s0 metal-internal, enp4s0 data-tenant, enp5s0 storage, enp6s0 + replication). **D-133 ADOPTED 2026-07-23** (flat per-NIC carve for + VR1; next deployment rehearses hardware-faithful bonds/trunks). + OPEN decision points before mutation: deploy OS series (bundle is + ubuntu@22.04/jammy; region default_distro_series=noble and ONLY + noble images are synced -- capture, ibid.), per-node static-IP/octet + plan (none recorded for VR1 fleets), per-DC artifact mirror (gap #5, + D-107 -- blocks the exit gate honestly), deploy-placement tag shape + (single region serves BOTH DCs; VR0's shared `openstack` tag cannot + disambiguate). No cloud mutation has occurred this stage; the logged + window opens before the first one. - Position inside Stage 3: deploy step A EXECUTED 2026-07-19 (6/0/6 exact; convergence zero -- `docs/audit/outer-plan-20260719-postA-converged.txt`). **Deploy step B diff --git a/docs/audit/stage4-discovery-20260723.txt b/docs/audit/stage4-discovery-20260723.txt new file mode 100644 index 0000000..c0af212 --- /dev/null +++ b/docs/audit/stage4-discovery-20260723.txt @@ -0,0 +1,49 @@ +# Stage 4 discovery capture -- 2026-07-23 (read-only, Plane 2 via voffice1) +# Command: maas admin rack-controllers read | jq ... +voffice1 mtstwf +vvr1-dc0 7chphy +vvr1-dc1 nmpcq4 + +# Command: maas admin machines read | jq (hostname/system_id/status/zone/pool/power/boot-mac/fabric) +office1-netbox prrsp8 Deployed default default lxd 00:16:3e:92:76:c4 fabric-1 +office1-tailscale rcys3q Deployed default default lxd 00:16:3e:77:5c:da fabric-1 +superb-piglet sgwfnb Ready default default virsh 52:54:00:18:ab:b4 fabric-4 +wired-thrush nhg3nf Ready default default virsh 52:54:00:be:69:c5 fabric-4 +alert-cub sn6qda Ready default default virsh 52:54:00:b1:94:d1 fabric-4 +first-oryx kghggm Ready default default virsh 52:54:00:5f:8d:42 fabric-4 +keen-dove dbcq8h Ready default default virsh 52:54:00:1b:19:e6 fabric-4 +ace-robin ssyexn Ready default default virsh 52:54:00:02:ff:57 fabric-4 +real-filly sk8c4d Ready default default virsh 52:54:00:4f:de:a9 fabric-4 +wise-stud 8mtpxq Ready default default virsh 52:54:00:48:86:2c fabric-4 +moral-salmon xqqwdq Ready default default virsh 52:54:00:2b:ed:ab fabric-4 +big-trout x8t386 Ready default default virsh 52:54:01:d1:01:01 fabric-142 +cute-satyr qp4krq Ready default default virsh 52:54:01:d1:06:01 fabric-142 +ample-buck m8y6kr Ready default default virsh 52:54:01:d1:04:01 fabric-142 +tender-elk 8dfwmh Ready default default virsh 52:54:01:d1:07:01 fabric-142 +big-eel pf47qm Ready default default virsh 52:54:01:d1:08:01 fabric-142 +right-spider y3h4sw Ready default default virsh 52:54:01:d1:09:01 fabric-142 +divine-heron sgqrcc Ready default default virsh 52:54:01:d1:05:01 fabric-142 +apt-ocelot qc3sem Ready default default virsh 52:54:01:d1:03:01 fabric-142 +real-wasp 6xhcnf Ready default default virsh 52:54:01:d1:02:01 fabric-142 + +# Command: maas admin interfaces read sgwfnb (one dc0 node, physical NICs) +enp1s0 52:54:00:18:ab:b4 fabric-4 +enp2s0 52:54:00:50:48:88 fabric-98 +enp3s0 52:54:00:78:fb:c5 fabric-100 +enp4s0 52:54:00:cc:84:61 fabric-103 +enp5s0 52:54:00:e4:ab:df fabric-105 +enp6s0 52:54:00:5b:93:c4 fabric-107 + +# Command: maas admin maas get-config name=default_distro_series +"noble" +# Command: maas admin boot-resources read (Synced) +grub-efi-signed/uefi amd64/generic +grub-efi/uefi arm64/generic +grub-ieee1275/open-firmware ppc64el/generic +pxelinux/pxe i386/generic +ubuntu/noble amd64/ga-24.04 +ubuntu/noble amd64/ga-24.04-lowlatency +ubuntu/noble amd64/hwe-24.04 +ubuntu/noble amd64/hwe-24.04-edge +ubuntu/noble amd64/hwe-24.04-lowlatency +ubuntu/noble amd64/hwe-24.04-lowlatency-edge diff --git a/docs/changelog-20260723-stage4-open.md b/docs/changelog-20260723-stage4-open.md new file mode 100644 index 0000000..5e5d593 --- /dev/null +++ b/docs/changelog-20260723-stage4-open.md @@ -0,0 +1,49 @@ +# Changelog -- 2026-07-23 -- Stage 4 open: discovery + D-133 carve ruling + +Session scope: open Stage 4 (Phase 3, MAAS enlist/commission/deploy per DC) on +branch `dc-dc-stage4-phase3-maas-deploy` off post-merge `main`. Bootstrap ran +clean (pull up-to-date at bff71d4; repo-lint 0 fail / 1 legacy warn; ledger-scan +reconciled -- 12 open SEC rows, D next-free 133). No cloud mutation this session +yet; everything below is read-only measurement + repo records. + +## Item 1 -- Stage 4 OPENED: precondition + discovery (read-only), captured + +- Branch `dc-dc-stage4-phase3-maas-deploy` created off `main` (bff71d4). +- Runbook Step 0 precondition PASS: both DC rack controllers enrolled + (vvr1-dc0 `7chphy`, vvr1-dc1 `nmpcq4`). +- Step 2 discovery complete for BOTH DCs, all read-only, captured to + `docs/audit/stage4-discovery-20260723.txt`: 9 nodes per DC, ALL Ready, + power=virsh; dc0 = boot fabric-4 / MACs 52:54:00:*, dc1 = fabric-142 / + pinned 52:54:01:d1:*; zone/pool `default` everywhere (no zone/pool + convention exists -- fabric + MAC prefix is the grouping signal). + Also captured: one dc0 node's full physical NIC list (6 flat per-plane + NICs), `default_distro_series=noble`, and the synced boot-resources list + (noble ONLY -- no jammy images on the region). +- Runbook-vs-reality deltas recorded in CURRENT-STATE (the runbook predates + Stage 3's execution): Step 3 commissioning already satisfied; carve comes + BEFORE deploy per the runbook's own Ready-state sequencing note; gap #6 + (pod-discovery landing status) is moot -- the pod path was refuted 2026-07-20. +- **Revert:** `git branch -D dc-dc-stage4-phase3-maas-deploy` (after moving off + it); delete `docs/audit/stage4-discovery-20260723.txt`; revert the + CURRENT-STATE Stage-4 bullet. No live state was touched. + +## Item 2 -- D-133 ADOPTED: flat per-NIC carve (VR1); hardware-faithful NIC topology next deployment + +- New entry `docs/design-decisions.md` D-133 [ARCH], Status ADOPTED 2026-07-23, + operator utterance quoted verbatim per GA-R5 ("Fine, keep it flat but on the + next deployment we need to build the VMs with exact hardware duplicated + networking so we can work out any bonding/trunking kinks."). +- Part 1: VR1 DC nodes carve every plane FLAT on its dedicated NIC; no + VLAN-103 stack in VR1 (supersedes the D-052-era Pattern A shape for VR1 DC + nodes only; VR0 untouched). +- Part 2 (pinned to next deployment): node VMs duplicate target hardware's + exact NIC topology (bond members, trunks) -- composes with D-132. +- Affected-surfaces list recorded IN the entry (buildout-design VID-103 text, + workflow Stage 4 row, phase3 runbook Step 5 tree, lib-net vr1-dc0 arm's + inherited METAL_INTERNAL_VID) -- queued as this stage's DOCFIX/delivery work, + not silently edited. +- CURRENT-STATE section 1 updated in the same commit (GA-R1 C1): Stage 4 OPEN + bullet with discovery facts + the open decision points (deploy OS series, + octet plan, mirror gap #5, tag shape). +- **Revert:** remove the D-133 block from design-decisions.md and the Stage-4 + bullet from CURRENT-STATE.md (single commit; `git revert `). diff --git a/docs/design-decisions.md b/docs/design-decisions.md index d151964..ea7aa68 100644 --- a/docs/design-decisions.md +++ b/docs/design-decisions.md @@ -4472,3 +4472,49 @@ **Status:** Q3 RULED 2026-07-23; item 1 remains OPEN on its sole remainder -- the Q2 PATH selection (2a/2b/2c) + deadline at Roosevelt Vault design time. Q1 ruled, Q2 structure ruled, Q3 ruled. **Related:** D-071 (vehicle), the two amendments above. + +--- + +## D-133: ADOPTED -- VR1 DC plane carve is FLAT per-NIC (no VLAN-103 stack); next deployment rehearses hardware-faithful NIC topology (bonds/trunks) [ARCH] + +**Status:** ADOPTED 2026-07-23 (Stage 4 open, branch dc-dc-stage4-phase3-maas-deploy). +Question as presented: "How should metal-internal be carved on VR1 DC nodes? The design +text (VR0 Pattern A) says a VLAN-103 stack on the metal NIC, but the built substrate gives +each node a dedicated flat metal-internal NIC (enp3s0) on its own isolated plane network." +Options presented: flat on the dedicated NIC (recommended) / VLAN-103 stack on enp1s0 / +defer for deeper analysis. Operator asked for discussion first; the analysis below was +presented. Operator ruling, exact utterance (2026-07-23): "Fine, keep it flat but on the +next deployment we need to build the VMs with exact hardware duplicated networking so we +can work out any bonding/trunking kinks." + +**Decision (two coupled parts, one exchange):** +1. **VR1 DCs carve every plane FLAT on its dedicated node NIC.** Metal-internal is an + untagged subnet on the enp3s0 plane network (dc0: 10.12.12.0/22, dc1: 10.12.72.0/22); + no br-metal.103 / br-internal stack exists in VR1. VID 103 is a VR0-only fact. This + SUPERSEDES the D-052-era Pattern A VLAN-103 shape FOR VR1 DC NODES ONLY -- VR0's + as-built carve is untouched and remains the validated tagged-VLAN precedent. +2. **PINNED TO THE NEXT DEPLOYMENT (standing requirement, not a VR1 change):** the next + rehearsal's node VMs must duplicate the TARGET HARDWARE's exact NIC topology -- + real NIC count, bond members, VLAN trunks -- so bonding/trunking kinks are worked + out in rehearsal, not on metal. The VR1 6-flat-NIC node-vm shape is a tagged shim + and must NOT be carried forward once real hardware specs exist. This composes with + D-132 (Roosevelt MAAS topology, also pinned to next-deployment design time). + +**Context (measured 2026-07-23, docs/audit/stage4-discovery-20260723.txt).** VR0's +as-built table (this file, 2026-06-29 inventory) shows VLAN-sharing occurred exactly +where planes outnumbered NICs (enp1s0 provider+VIP VID 104; enp7s0 metal-admin+internal +VID 103) and every plane with its own NIC ran flat -- the VLAN was a NIC-scarcity +workaround, not a design principle. The VR1 substrate (D-121/D-123, applied both DCs) +gives each node 6 NICs, one per plane, MACs config-pinned; bundle.yaml binds by Juju +space name, which maps to MAAS subnets -- charms are agnostic to VLAN vs flat beneath +the space. Roosevelt's real carve (bonds + trunks on few NICs) is neither option here +and is re-derived from real switch/NIC inventory at Roosevelt design time; part 2 makes +that rehearsal explicit definition-of-scope for the next deployment's substrate. + +**Affected surfaces (DOCFIX/delivery queued to this stage, not silently edited):** +dc-dc-buildout-design.md plane table "VID 103" + "VLAN-103 bridge stack" build lines; +dc-dc-deployment-workflow.md Stage 4 Build row; runbooks/dc-dc-phase3-maas-enlist-deploy.md +Step 5's VR0-literal carve tree; scripts/lib-net.sh vr1-dc0 arm (inherits VR0's +METAL_INTERNAL_VID=103/IFACE=br-internal via the D-101 no-op -- needs an explicit +VR1-carve comment or unset, WITH its harness, at the carve delivery). A1 test: a +Roosevelt build session greps this before designing the bond/trunk carve.