docs(render): S4-c1 fix round 1 verdicts (2 PASS / 1 FAIL) and the round-2 contract (packet §9): seed the portal counter from the capture, both sequences compared, the discriminating ±12 case, the sixth pose

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-03 22:49:33 +02:00
parent f2c2cdb876
commit 49d2447a95
2 changed files with 21 additions and 1 deletions

View file

@ -438,3 +438,23 @@ turn-phase rule).
session model (retail-faithful — every predicate quoted; production —
allocation, the scratch budget, the gate's honesty); each lens returns
PASS/FAIL with file:line findings; two fix rounds maximum, then the ledger.
## 9. S4-c1 fix round 2 (lead, 2026-09-03 23:05 — the LAST round; a third stops the chunk and writes it up)
**Round 1 (`2bd353234`) verdicts:** retail-faithful lens PASS, production lens PASS, gate-honesty lens FAIL. All findings converge on the transcript gate's terrace-edge row plus one pin gap. Fix these, nothing else:
**R2-1 (blocking, gate honesty).** The terrace-edge KnownFailure write-up (test doc comment and commit body) claims "the PC sequence matches exactly"; it does not — PC diverges in the same counter field (expected `[(0,2,0),(0,2,0)]`, actual `[(0,0,0),(0,0,0)]`), and the PM assert throws before the PC assert runs, so the test never printed both sequences as §7 F3 required. Resolution: **R2-2** below removes the divergence; whatever remains must be asserted so that BOTH sequences are always compared and printed together (collect both diffs, one assertion message), and every written claim about a sequence must be one the test actually evaluated.
**R2-2 (major, both PASS lenses).** The terrace-edge divergence is a harness initial-condition choice: retail's `portalsDrawnCount` (`wo(008719b4)`) is a persistent session value that the capture's FIRST `PC`/`PM` line already carries (cathedral 0, foundry 1, holtburg 2, terrace 2, cathedral-stair-arch 8). Seed `WalkFrameDriver.PortalsDrawnCount` from the fixture's first observed counter before the ONE replay pass (the field is settable from the test assembly), delete the two-pass "priming" replay, and re-run all poses. Expected: terrace-edge turns green with NO KnownFailure tag; every other pose stays exact by the same arithmetic the passing poses already prove. If any pose still diverges after seeding, it keeps a KnownFailure tag AND its divergence is written into THIS section (not only into a doc comment) with both sequences quoted.
**R2-3 (major, retail lens).** T2's five cases do not discriminate "every vertex lies on SOME plane" (per-vertex OR, AND across vertices) from retail's "every vertex lies on the SAME plane", and real DAT content exists where they disagree. Add the discriminating case to T2 and to the punch pin: a polygon whose every vertex is on a ±12 plane but not all on the same one, e.g. `[(12,0,3), (0,12,3), (12,5,3)]` — ADMITTED by retail's four per-plane accumulators (no accumulator survives: x+12 is cleared by vertex 2, y+12 by vertex 1). Mutation text: implementing the per-vertex-OR form rejects it (assert flips).
**R2-4 (sixth pose).** The campaign branch now carries `docs/research/2026-09-01-overhaul/oh-capture/cathedral-stair-arch.walk.log` + `.alphadepth.log` (commit `4f12cd06b` on `claude/campaign-w-retail-frame-walk`; also `.pmverts.log` at `3a6aa7eef`) — the #464 artifact pose, root `0xF4180114`, seven outside views, sixteen building punches (twelve rejected by the guard on local y=12.000) and eight seals with `counterBefore` 0..7, steady-state counter 8. Cherry-pick those two capture commits into the impl worktree (`git cherry-pick 4f12cd06b 3a6aa7eef`; if either conflicts on README.md, keep both rows) and add `AlphaDepthTranscript_CathedralStairArch_MatchesRetailFrame2` as a sixth Fact. The lead already ran it against `2bd353234` with the capture copied in: PASS (the seed value 8 comes from the fixture under R2-2).
**R2-5 (comment truth, minor ×4).** (a) `RetailPViewPassExecutor.DrawPortalDepthWrite`'s summary still describes the retired ">=3 vertices" enumeration and `DrawExitPortalMask`'s summary still promises the counter "always matches what reached the GPU" — both false after F2; fix the text. (b) The F2 pin's doc comment names a mutation that would NOT fail (moving `submitted++` after `DrawDepthFan` is unobservable — void return, no throw); say so, keep only the mutation that fails (restoring the `<3` pre-filter). (c) `WalkVisibilityMath`'s doc comment states DAT-scan figures as exact facts that an independent scan does not fully reproduce; state each figure WITH its counting rule (what is counted, over which id range, how unresolvable polygons are treated) or keep only the figures both scans agree on (2,889 any-vertex / 2,163 all-on-one-plane / 100 % exits / 0 interior). (d) The commit body must not cite "register tests 52/52" as evidence — no test reads the register; register truth is the human read (no row changes; AD-119 unchanged).
**Not in scope:** anything under `src/` beyond R2-5(a)'s comments; the seal path's test-side reproduction (accepted as-is under F3's "recording leaf" wording); the lead's punch-geometry scratch dump (stays in `s4-c1-gate`, never committed).
**Gates (all reproduced by the lenses, none claimed vacuously):** Release build 0 warnings; hermetic lane green; InstalledDat lane with ONLY the pre-existing #383 ×2, TowerAscent, #458 KnownFailure failures (terrace-edge must no longer be among them); all six transcript Facts green; the shader classes green. One commit on top of `2bd353234` in `s4-c1-impl`.
**Lenses (sequential, session model, narrowed to the round-2 diff):** retail-faithful (R2-3's predicate and R2-2's seeding argued from the bytes/decomp — the counter's persistence across frames at `PView::DrawCells` and the reset site), gate-honesty (every sentence in the commit body and every test doc comment is something the tests evaluate; both sequences compared together), production (no allocation/behavior change outside the test project except R2-5(a) comments).