Container-layer-elimination pass -- SCOPE & EXECUTION PLAN (handoff for a NEW session)
STATUS: SCOPED, NOT YET RUN. This folder is the self-contained execution package for a multi-agent planning pass. It was scoped 2026-08-09 in a large session and deliberately DEFERRED to a fresh session (context budget). A new session should be able to run the whole pass from this file without re-deriving anything. This is a READ-ONLY PLANNING pass -- it produces a plan / change-set / module design. It performs NO teardown and NO live mutation; execution is the redeploy itself, gated separately.
0. How the NEW session starts (bootstrap, then begin Phase 0)
- Standard bootstrap:
git pull; bash scripts/repo-lint.sh; read docs/CURRENT-STATE.md in full; docs/session-ledger.md + bash scripts/ledger-scan.sh.
- Read THIS file end to end, then
phase-prompts.md in this folder.
- Confirm the advisor model with the operator (
/advisor) -- the final review step and the per-phase administrators assume the advisor/administrator tier the operator intends. As of 2026-08-09 the advisor() tool is Fable 5 (operator-configured). Name a model only when confirmed (see the instrument-currency memory terminology caveat -- prior "fable advisor" labels were actually Opus 5).
- Begin Phase 0. Do NOT skip the Phase-0 operator gate (Section 4).
1. Purpose & framing
Goal. Plan the ELIMINATION of the dc0/dc1 container layer as part of the imminent 10.13.0.0/16 re-IP redeploy (D-143), and structure the redeploy so its steps become a LAYERED, MODULE-BASED workflow -- repeatable, less scattered, and directly reusable for the pre-Roosevelt bare-metal test that follows.
Operator directives that frame this pass (verbatim, 2026-08-09):
- Container layer: "We will be eliminating the dc0/DC1 container layer. It will not provide the testing environment I was assuming ... has only caused more trouble than beneficial data. That will pull all deeper layers up one and simplify the wiring."
- Follow-on: "after the next rebuild we will be moving to a pre-roosevelt bare metal test on a smaller set of hardware ... I will provide hardware specs within a few days ... a good test of the module deployment project we are developing during the teardown and redeploy."
- Module meaning (scoping answer): "Both -- layered module system" (IaC modules for the substrate + procedure/runbook modules for the orchestration on top; this pass defines how they layer into one repeatable workflow).
Why now / why a redeploy. The 10.13 redeploy is a full teardown + rebuild that is already going to re-carve the substrate. It is the cheapest possible moment to also flatten the topology and to convert the (currently scattered) deploy steps into modules -- doing it piecemeal later would repeat the work.
2. Grounded current-state -- what the "container layer" IS (verify in Phase 0, do not trust this alone)
Confirmed read-only 2026-08-09:
- Model B (D-122/D-123): the OUTER OpenTofu root on vcloud (
opentofu/main.tf, qemu:///system) creates a per-DC CONTAINMENT VM vvr1-dc0 / vvr1-dc1 that holds the inner libvirt pool (opentofu/variables.tf:153,191 -- "Model B: holds the inner libvirt pool"). The node VMs are created INSIDE that containment VM by a SEPARATE inner OpenTofu root via the qemu+ssh inner provider (opentofu/main.tf:26-33), run from the Office1 headend per D-128.
- The "container layer" = the
vvr1-dcN containment VMs + their inner libvirtd + the 6 inner plane bridges + the transit leg. Current nesting: vcloud (outer libvirt) -> vvr1-dcN (containment VM = inner libvirt) -> node VMs.
- "Eliminate + pull layers up one" = collapse to
vcloud (libvirt) -> node VMs directly. The 6 inner plane bridges + transit + br-ex "wiring" simplify accordingly. The EXACT target is Phase 0's job to define and the operator's to confirm.
- Governing decisions that touch this layer (Phase 0 maps the full set): D-122 (site shape), D-123 (Model B containment), D-124 (region<->rack transit), D-125 (per-DC egress / SEC-010 forwarding), D-126 (base-leg reach), D-127 (autostart), D-128 (operating model / execution hosts), D-138 (client-in-DC), D-121/D-134 (node layout / octet bands), D-143 (the re-IP the redeploy executes). SEC-010 (transit forwarding drop) is wiring-sensitive.
3. Decisions LOCKED for this pass (from the 2026-08-09 scoping exchange -- do not re-ask)
| Item |
Decision |
| Phase structure |
Phases 0-4 (adopted as proposed; see Section 4) |
| Module meaning |
Layered module system -- IaC (OpenTofu) modules + procedure/runbook modules; the pass defines the layering |
| Target topology |
Phase 0 PROPOSES 1-2 targets; operator CONFIRMS before Phase 1 (HARD GATE) |
| Fleet per phase |
Standard: 3-5 sonnet worker agents + 1 fable administrator |
| Final review |
fable advisor (advisor() tool) reviews the aggregate findings before the operator report |
| Mutation |
NONE -- read-only planning pass; produces a plan, gated for later execution |
| Context discipline |
agents WRITE durable per-phase docs in this folder and RETURN BOUNDED SUMMARIES (never dump full findings into the orchestrator's context) |
| Reporting |
operator gets ONE report at the END (after all phases + the fable advisor); the orchestrator reviews between phases and feeds findings forward |
4. Phase definitions (0-4) -- objective, workers, administrator, deliverable, gate
Each phase: spawn the sonnet workers (each owns one dimension) in parallel; when all return, spawn the fable administrator to synthesize their durable docs into the phase report; the orchestrator reviews the phase report and feeds it into the next phase. Draft prompts are in phase-prompts.md.
Phase 0 -- Baseline & target topology (ends in an OPERATOR GATE)
- Objective: map the container layer + full blast-radius EXACTLY; propose the target topology.
- Sonnet workers (4):
- W0.1 Substrate/tofu map -- outer
main.tf + modules/ + inner root; how vvr1-dcN and the nested node VMs are created; disk/pool/cloud-init/seed dependencies.
- W0.2 Network/wiring map -- the 6 inner plane bridges, transit leg,
br-ex, MTU (jumbo / geneve-over-v6 budget), SEC-010 forwarding, D-124/125/126 paths; what "simplify the wiring" touches.
- W0.3 Consumer/dependency inventory -- everything keyed to the containment layer:
lib-hosts.sh (VIRSH_POWER_ADDRESS, NIC maps, CARVE_AUX_HOSTS), lib-net.sh, maas-node-power.sh (qemu+ssh power addresses), site-headend-install.sh, dc-rack-net.sh, the carve scripts, and the D-128/D-138 execution-host assumptions.
- W0.4 Target-topology options -- propose 1-2 concrete "layers-up-one" targets (node VMs on vcloud libvirt directly; where the 6 planes + transit land; capacity/FIT impact; what breaks; what simplifies), with tradeoffs, for operator confirmation.
- Fable administrator: synthesize into (a) the as-is map, (b) the blast-radius inventory, (c) the target-topology options + a recommendation.
- GATE (do not skip): orchestrator presents the target-topology options to the OPERATOR; operator confirms the target BEFORE Phase 1. This is the one decision that governs everything downstream.
Phase 1 -- Planning review
- Objective: what the confirmed target topology + module framing change in the PLANNING.
- Sonnet workers (3-4): W1.1 redeploy/teardown planning (D-143 execution,
dc-dc-teardown- rollback.md, the phase runbooks); W1.2 deployment-workflow doc + stage/gate structure vs the module framing; W1.3 teardown->redeploy SEQUENCING with no container layer; W1.4 how planning artifacts map onto the layered module model.
- Fable administrator: planning change-set + module-planning implications.
- Objective: what changes in the tooling; what becomes reusable modules.
- Sonnet workers (4-5): W2.1 OpenTofu roots/modules (what collapses; what becomes reusable IaC modules, D-140-aligned); W2.2
lib-hosts/lib-net containment-keyed values (power addresses, NIC maps, plane CIDRs) for a flat topology + 10.13; W2.3 carve/power/network scripts (dc-node-carve, maas-node-power, dc-rack-net, site-headend-install); W2.4 module decomposition -- which tools become procedure-modules; the IaC/procedure layering.
- Fable administrator: tools change-set + module decomposition.
Phase 3 -- Tests review
- Objective: what changes in the harnesses/gates; what new tests the flat topology + modules need.
- Sonnet workers (3-4): W3.1 harnesses/gauntlet that assume the container layer; W3.2 preflight / cloud-assert / stage gates for a flat topology; W3.3 new per-module test harness requirements (each module ships its own tested harness -- repo discipline).
- Fable administrator: tests change-set + per-module test requirements.
Phase 4 -- Change synthesis & module-workflow design
- Objective: consolidate into the change-set + the layered module workflow; frame the owed decision.
- Sonnet workers (3-4): W4.1 consolidated master change-inventory (planning+tools+tests); W4.2 the layered module-workflow DESIGN (IaC modules + procedure modules + how they compose into the repeatable redeploy); W4.3 execution sequencing into the teardown->redeploy (module invocation order), feeding the pre-Roosevelt bare-metal test; W4.4 the owed [ARCH] decision framing (a D-123 amendment or a new D-number -- the container-elim + module workflow).
- Fable administrator: the final consolidated plan + module design + the decision package.
- THEN: the orchestrator reviews the whole; the fable advisor (
advisor()) reviews the aggregate findings; the orchestrator writes the operator report.
5. Orchestration flow & context discipline
- Sequential phases 0->4; feed-forward (each phase's administrator report is an input to the next phase's worker prompts -- earlier findings shape later dimensions).
- Every agent writes its output to a durable file in this folder (
passN-wM-<slug>.md for workers; passN-admin-report.md for administrators) and returns to the orchestrator only a bounded summary (<= ~15 lines: what it found, where the durable doc is, the top items). This is the load-bearing context-discipline rule -- a multi-phase 25+ agent run must not dump full findings into the orchestrator's window.
- Phase-0 gate is a real stop: present target-topology options to the operator; do not start Phase 1 until confirmed.
- Between phases the orchestrator (main session) reviews the administrator report, reconciles it against repo ground truth, and adjusts the next phase's prompts if a finding warrants it.
- Findings are LOGGED, not executed (hard rule 1). Any live-state question an agent needs is READ-ONLY (the operator has authorized read-only live discovery in prior sessions; confirm it still stands at run time). No teardown, no mutation.
- Final: fable advisor review -> operator report. The report states the confirmed target topology, the master change-set, the layered module design, the sequencing into the redeploy, and the owed [ARCH] decision.
6. Deliverables & file layout (what the pass produces in this folder)
docs/audit/container-elim-pass/
SCOPE-AND-EXECUTION-PLAN.md <- this file (the handoff)
phase-prompts.md <- draft worker + administrator prompts, per phase
pass0-w1-substrate-map.md <- (produced when run) ...per worker
pass0-admin-report.md <- ...per phase administrator
pass1-*.md ... pass4-*.md
FINAL-PLAN.md <- Phase 4 consolidated plan + module design
FINAL-advisor-review.md <- the fable advisor's aggregate review
operator-report.md <- the single report to the operator
7. Governing constraints the pass must respect
- Hard rules 1-4 (CLAUDE.md): current-step-only, no inferred values, verify-before-mutate, USE-THE-TESTED-ARTIFACT (
docs/tool-index.md first). This pass writes a plan; it does not run raw substrate commands.
- The re-IP (D-143) is ruled and is the deployment the container-elim rides. Octet-preserving 10.12->10.13; apex fork B2; lib-net shape (i). The container-elim is ADDITIVE to D-143's address change -- keep the two changes distinguishable in the change-set.
- The container-elim itself is an OWED [ARCH] decision (flagged in
roosevelt-held-decisions- review-20260809.md Section 0.1 + CURRENT-STATE): a D-123 amendment or a new D-number. Phase 4 FRAMES it (options, reconciliation, Roosevelt-delta); it is ruled by the OPERATOR (GA-R5), not by the pass.
- Module discipline: every script/module change ships with its tested harness + a changelog entry with a revert; repo-lint clean. The pass PLANS this; delivery is the execution session.
- Roosevelt-delta lens: the layered module workflow is a Roosevelt deliverable -- design it to transfer to the pre-Roosevelt bare-metal test and beyond (minimize-delta-to-Roosevelt).
- Target topology detail -- resolved via the Phase-0 gate (operator confirms Phase-0's proposed targets).
- Pre-Roosevelt bare-metal hardware specs -- "within a few days"; NOT required for this planning pass (the pass is topology-flattening + module-structuring, hardware-agnostic), but W4.3's sequencing should note where the specs plug in.
- Existing "module deployment project" artifacts -- if any already exist outside this repo or in flight, point the Phase-2/Phase-4 workers at them so they build ON rather than invent. (At scope time none was identified in-repo; confirm at run time.)