# 50 -- Session-ledger append (GA-R4 rule 1: 15-LINE HARD CAP)

Append at the ledger TAIL as a new `## SESSION CLOSE ...` block. Do NOT touch the
machine-derived fence (`<!-- SECTION: machine-derived ... -->` to
`<!-- END: machine-derived -->`) -- owned by `ledger-scan`, never hand-edited. The full
session body goes to `docs/archive/` in the same close commit.

Re-count before committing. The block between the markers is 15 lines.

--- BEGIN 15-line block ---
## SESSION CLOSE 2026-07-25 -- NetBox->deploy coupling scoped in Chat (bounded, GA-R4)
- D-NNN PROPOSED [ARCH]: NetBox-coupled per-DC render pipeline, option (C) recommended;
  revised against decision-recon-20260725 -- gap is SUB-PREFIX (D-134 bands + 33 VIP
  addresses), apex writes are IN scope (DOCFIX-195), VLAN/space/fabric stays MAAS-sourced
  (D-133), and extending sandbox-fidelity-check.py sequences FIRST. Non-gating for dc1.
- 3 rulings recorded (GA-R5, exact utterances): family dual-stack-where-v4-required
  DC0+DC1; keystone PO: per-unit VERIFY-LIVE after scale-up; per-DC shape symmetric
  (base VIP-free, dc0 VIPs extract to a dc0 overlay).
- DOCFIX-NNN (A) dual-VIP decision is D-020 not D-036 -- now SIX live sites, two created
  by the recon itself; (B) buildout-scope s5 demoted to a D-111 pointer; (C) D-134's
  superseded band table needs an in-place marker (it misled this seat).
- Found: VIP_COUNT_EXPECT=11 (lib-net:59) is a HARD fail gate in pre-flight-checks
  :99-102 -- must go to 12 with the vault VIP. Vault .61 is band-legal per D-134 amended.
- PINNED: operating-model planning session; SpryGit dev-handover doc (Chat next).
- Chat-side skill copy confirmed STALE vs repo (245 vs 130 lines); operator to upload.
--- END 15-line block ---
