|
Ruling 3 commit 1: bundle.yaml is VIP-free; dc0's VIPs are now a RENDERED overlay
The 11 inline vip: lines are gone from bundle.yaml and live in overlays/vr1-dc0-vips.yaml, GENERATED by scripts/render-dc-overlays.py from render/values/vr1-dc0-vips.yaml -- the renderer's first real output. placement's then-empty options: block was dropped rather than left parsing as null. Ruling 3's dual-stack ADD is commit 2 and is NOT in here. PROVEN NEUTRAL by the ruling's own named check: provider-bundle-check on the pre-extraction bundle and on the merged pair produce line-for-line identical output, same known designate failure included. A structural diff separately confirmed only vip moved -- applications 56 -> 56, relations 108 -> 108, every other key byte-identical. The 11 inline comments were carried, not dropped: extracted verbatim by parser rather than retyped, via new optional per-app comment support in the renderer. An app with no comment emits none, so dc1 still reproduces byte-for-byte at 1634 bytes. The B1/B5 tokens stay DEFINED in bundle.yaml's header and the overlay header names that, so the references do not dangle. The blast-radius repair is the bulk of this, and every item was found BEFORE the edit by the read-only agent sweep: - preflight.sh P2 validated the bare base (11 phantom failures post-move) -> merged input. - pre-flight-checks.sh CHECK 1 read the base as raw text and would have seen ZERO VIPs. This is BLOCKER-1, fixed the ruled way and not by bumping the count. Measured trap: the file sets IFS=$'\n\t', so a space-joined string reached grep as ONE filename, grep exited 2, pipefail propagated and the gate died silently mid-check. Fixed with a bash array. - phase-01's RUN block gates juju deploy on 11/11/0 and would have read 0/0/0 and ABORTED THE DEPLOY. Both guards now span base + overlay, and a second latent bug was fixed in the same edit: grep -c over two files prints one count PER FILE, so the bare $( ) captured a two-line string and every numeric test would have failed anyway. Now awk-summed; verified 11/11/0. - phase-01's Octavia SAN derivation raised KeyError, swallowed by || true into an empty VIP. Now reads the overlay, deriving 10.12.4.57. - phase-00 teardown, dc-dc-phase4's "NO VIP edits" guidance, appendix-A L3, and render-baseline's now-unverifiable bundle hash all repaired. Harness 30 -> 31. The fixture base is now bundle + dc0 overlay, since that pair is the deploy input; T16 renamed to match. NEW T31 asserts the bare base fails for every clustered principal, so "deployed without its overlay" is a tested state rather than an assumption. Gauntlet ALL GREEN (85) on vcloud; repo-lint 0 fail / 610 files scanned. Still red and expected: CHECK 1 at OK=11 want 13, and designate -- R11's .61/.62 remain ruled-but-not-built, which is commit 2's job. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| bundle.yaml |
|---|
| docs/CURRENT-STATE.md |
|---|
| docs/changelog-20260728-vip-arity-gate.md |
|---|
| overlays/vr1-dc0-vips.yaml 0 → 100644 |
|---|
| render/values/vr1-dc0-vips.yaml 0 → 100644 |
|---|
| runbooks/appendix-A-troubleshooting.md |
|---|
| runbooks/dc-dc-phase4-juju-bundle-per-dc.md |
|---|
| runbooks/phase-00-teardown-maas-reset.md |
|---|
| runbooks/phase-01-bundle-deploy.md |
|---|
| scripts/pre-flight-checks.sh |
|---|
| scripts/preflight.sh |
|---|
| scripts/render-dc-overlays.py |
|---|
| tests/provider-bundle-check/run-tests.sh |
|---|
| tests/render-baseline/README.md |
|---|