Session body (GA-R2, one per session). Status lives ONLY in docs/CURRENT-STATE.md. Branch dc-dc-stage5-preconditions. Live work ran FROM the dc0 rack 172.31.0.2 (vvr1-dc0) via voffice1 (D-138). dc0 is throwaway (10.13 rebuild follows); live mutations were test scaffold, all torn down.
Extends the 2026-08-08 family-split root cause. Diagnostic (bounded, after a fable advisory caught an INVALID first test -- pings sourced from an OVN localport/ovnmeta namespace, which OVN never tunnels by design; that wrong "v6 broken" conclusion was retracted). REAL cause of the v6 tunnel failing: ovn-chassis 24.03 sets external_ids:ovn-encap-ip BRACKETED ("[2602:f3e2:f02:30::120]"); OVS geneve rejects it (bad geneve 'remote_ip'), tunnel ofport -1. Isolated test proved kernel 5.15/OVS 3.3 accept an UNbracketed v6 geneve remote_ip (ofport valid) and reject the bracketed form. Live fix + confirm on dc0: ovs-vsctl set open_vswitch . external_ids:ovn-encap-ip=<unbracketed> on both computes -> ovn0-vr1-d-0 ofport -1->14 -> real VM->VM cross-compute ping over geneve-over-IPv6 = 8/8, 0% loss. geneve-over-v6 WORKS on this stack; v4-forced is OFF the table.
docs/audit/geneve-over-v6-rootcause-20260808.md (RETRACTION + RESOLVED + LIVE-CONFIRMED sections, with the tested sequence), docs/CURRENT-STATE.md (section 1 UPDATE 2026-08-09).git checkout <prev> -- docs/audit/geneve-over-v6-rootcause-20260808.md docs/CURRENT-STATE.md. Live: the manual encap override is transient (charm re-asserts on next hook) and on throwaway dc0; no revert needed. Test scaffold (geneve-proof-*, lb-smoke) already deleted.Makes the phase-04 "geneve-over-v6 verified" gate EXECUTABLE (was ruled-not-built). Asserts C1 (all chassis Encap.ip single-family, optional --expect-family v6 for the D-139 ruled family) AND C2 (every geneve tunnel ofport >= 0 -- catches the bracket bug that C1 alone misses). Offline (fixture-testable) + --live (gathers via juju on the rack). Harness proves BOTH failing directions (split -> C1 FAIL; ofport -1 -> C2 FAIL) + refuse-not-pass on empty + rc-2 usage.
scripts/geneve-encap-assert.sh, tests/geneve-encap-assert/run-tests.sh (16 pass).git rm scripts/geneve-encap-assert.sh tests/geneve-encap-assert/run-tests.sh.Step 12.2 was FAMILY-ONLY (would PASS on a bracketed v6 encap with no working tunnel) and cited the retired ULA (D-139 is full-GUA). Rewrote it to lead with bash scripts/geneve-encap-assert.sh --live, add the C2 tunnel-health check + the bracket-bug fix, and correct ULA->GUA. Step 6's "geneve family follows the interface once the plane is v6-only" note gained a measured CAVEAT (necessary-not-sufficient: containerized-chassis v6 carve + unbracketed encap).
runbooks/dc-dc-phase4-juju-bundle-per-dc.md (Step 12.2, Step 6).git checkout <prev> -- runbooks/dc-dc-phase4-juju-bundle-per-dc.md.docs/audit/gua-carve-completion-proposal-20260809.md (Rev 2, fable-reviewed) carries the DC1 GUA carve gap + missing-assignment scan + matrix. Its section-5.1 geneve decision is RESOLVED by Item 1 (v6 viable). Proposal-doc update to reflect the resolution is the next task (operator flow "A then B").
git rm docs/audit/gua-carve-completion-proposal-20260809.md (if unwanted).ovn-chassis charm revision (LP charm-ovn-chassis IPv6 bracket family) OR a persistent post-deploy unbracket override; wire into the deploy.overlay_ip_version=6 (tenant MTU ~1422) for the v6 overlay.