Build the (b) ruling: prefer-ipv6 emitted for NO application; 9b re-pointed
Renderer: the emission condition is DISABLED, not deleted -- when the v6
completion work lands (allocatable ranges on the six v6 plane subnets, rack-side
v6 legs, a v6 default route, v6-reachable services) that one line turns it back
on, and PREFER_IPV6_CHARMS is still the correct set to gate it by.

Both overlays re-rendered: exactly 7 lines removed per DC and nothing else --
all 13 apps keep 6-leg dual-family vips at both DCs.

INVARIANT 9b RE-POINTED, not deleted: it required the option and the v6 legs to
travel together on a declaring charm (the L3-9 defect), which would now fail on
the ruled artifact. The rule is the option must be ABSENT everywhere. L3-9 cannot
recur while it is absent -- there is nothing to keep while legs are dropped. It
returns to the coupling form when v6 is operational.

HARNESS re-pointed rather than deleted, and three stale fixtures fixed:
 - T20 was 'option without v6 legs FAILS'; now 'option on a DECLARING charm FAILS'
 - T21 was the inverse; now the POSITIVE CONTROL -- v6 legs WITHOUT the option
   must PASS, so 9b cannot be satisfied by rejecting everything
 - T22/T23/T30 each set prefer-ipv6 because the OLD coupling required it
   alongside v6 legs. Under the absence rule 9b fires FIRST and short-circuits,
   so their v6-band assertions would never have been reached and they would have
   passed for the wrong reason. The option is removed from those fixtures.

Mutation-proven: disabling the 9b absence check kills T20; re-enabling renderer
emission kills render-drift. Source restored byte-identical after each.

Gauntlet ALL GREEN (93); repo-lint 0 fail; harness 55/55.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf
1 parent 0168ea3 commit 6282abfbcf03a15f71402ea51444e01e288abaa4
@JANeumatrix JANeumatrix authored 1 hour ago
Showing 5 changed files
View
overlays/vr1-dc0-vips.yaml
View
overlays/vr1-dc1-vips.yaml
View
scripts/provider-bundle-check.py
View
scripts/render-dc-overlays.py
View
tests/provider-bundle-check/run-tests.sh