|
D-136 step 6: the chain audit -- R9's drift gate built, three refusals, two dead cases
Three read-only lenses over data source -> renderer -> deployment mechanism, the ruled final step of D-136 option (D). Lens 3 was adversarial and made the chain produce wrong-but-green THREE times, all executed. All three converged on one root cause: dc1's overlay was byte-gated and dc0's was gated by nothing. render/values/ was referenced by zero scripts and zero harnesses, while preflight P2 feeds the deploy gate dc0's overlay. R9's render-drift check had been RULED and never built. Executed wrong-but-green: - transposing two apps' octets in the dc0 overlay (consistent, in-band, correct prefixes) -> PASS - changing ONE WORD, family: dual -> v4, silently reverting dc0 to IPv4-only against R2's ruling -> PASS, because dropping prefer-ipv6 and the v6 legs together satisfies invariant 9, and vip_dual is printed but never asserted tests/render-drift/ is R9's gate, built. It iterates render/values/*.yaml, reads each file's own output: field (inert until now), renders and byte-compares. A new per-DC values file is gated the moment it is committed. Non-zero floor plus a proof-of-teeth case that mutates a copy and requires red. Three refusals where the chain took the last writer silently: - duplicate (role, kind) in the apex, in BOTH readers. Appending one spare prefix -- routine IPAM work -- re-homed every dc0 VIP into a different /64 and went green, because the gate checks overlay-vs-apex agreement and both sides read the same wrong value. The winner depended on JSON array order. - duplicate app name / duplicate octet / out-of-band octet in APP_OCTET. A duplicate name emitted two YAML blocks, safe_load kept the last, and one app's ruled octet vanished with nothing red. Two harness cases that could not fail: - T3b's byte-compare was CIRCULAR -- header derived --from-overlay $LIVE then compared --against $LIVE, so a third of the bytes were self-copied. Proven by rewriting a header line to a false claim and still matching. - T29's own fixture was inert; its assertion held from the overlay alone. OWNED: my first T29 re-point asserted a --show-legs flag THAT DOES NOT EXIST. I invented an interface instead of reading one. The harness caught it immediately; replaced with real behaviour and recorded rather than quietly fixed. Gauntlet ALL GREEN (86) on vcloud; repo-lint 0 fail / 612 files. The larger deploy-path half is logged not actioned -- see the changelog, items 16-25. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| docs/CURRENT-STATE.md |
|---|
| docs/changelog-20260728-vip-arity-gate.md |
|---|
| scripts/provider-bundle-check.py |
|---|
| scripts/render-dc-overlays.py |
|---|
| tests/HARNESS-MANIFEST |
|---|
| tests/provider-bundle-check/run-tests.sh |
|---|
| tests/render-dc-overlays/run-tests.sh |
|---|
| tests/render-drift/run-tests.sh 0 → 100755 |
|---|