test(p0): threshold-trace golden wiring + PVS scaffold + P1-entry checklist

P0 Tasks 6 (autonomous half) + 7. FindCellList_DoorwayThreshold_MatchesRetailTrace
asserts acdream's pick == each captured retail pick; skips until the capture
fixture lands. PvsConformanceTests scaffolds the render visible-set golden
(skipped; filled in P4). ConformanceDats.FixturesDir resolves fixtures from the
source tree (issue98 pattern). Notes record: existing retail traces are
collision-only (no membership) so the strict P1 gate needs the one live capture;
plus the P1 re-scope finding (Stage-1 membership already on this branch).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-06-03 14:29:30 +02:00
parent b35e491f12
commit 1662da8731
5 changed files with 120 additions and 3 deletions

View file

@ -64,7 +64,39 @@ retail loads, so a geometrically-correct containment answer is the retail answer
| `find_cell_list` doorway-threshold pick | **retail cdb trace** | Task 6 — USER GATE / mine existing traces |
| PVS visible-set | retail cdb `cell_draw_list` trace | deferred to P4 (Task 7 scaffold) |
## P1-entry checklist (filled at end of P0)
## Existing retail traces — mined, NOT usable for membership
- [ ] Threshold golden GREEN (acdream already matches retail) or RED (P1 must fix) — recorded here.
- [ ] "P0 gate met: ≥1 retail-trace-backed assertion exists" — stated explicitly so P1 can begin.
`docs/research/2026-05-21-a6-captures/*/retail.log` + `retail.decoded.log` were grepped for
`change_cell` / `curr_cell` / `find_cell_list` / `cell=0x` / `insert_into_cell`. **Zero matches in
any retail log** — all 15,492 membership/cell-id matches are in the paired `acdream.log` files
(our own probe output). The committed retail traces are collision-only (`find_collisions`
hit-counters, `set_neg_poly_hit`, etc.); they carry no membership cell-id or position. So the
retail-trace-backed threshold golden **cannot** be built from existing data — a live capture is
required (`tools/cdb/find-cell-list-capture.cdb`).
## P0 status / P1-entry checklist
**Autonomous apparatus: COMPLETE + GREEN.** (Conformance suite 58 pass / 1 skip / 0 fail.)
- ✅ Dat-backed fixture loader (`ConformanceDats`).
- ✅ Characterized + pinned cottage-doorway topology (`0031↔0170↔0171` verified real).
- ✅ `point_in_cell` goldens vs real dat BSP.
- ✅ `find_cell_list` unambiguous goldens (interior picks + stale-seed re-pick stability).
- ✅ Retail-trace parser (`RetailTrace`, 4 tests) + cdb capture script + README.
- ✅ PVS-golden scaffold (skipped; filled in P4).
- ⏳ `FindCellList_DoorwayThreshold_MatchesRetailTrace` — wired, **skips until the capture fixture
`Conformance/Fixtures/find-cell-list-threshold.log` exists**.
**P0 gate for P1 (`≥1 retail-trace-backed assertion`): PENDING the one user-gated capture.**
The existing traces don't satisfy it (collision-only). To meet the strict gate, run
`tools/cdb/find-cell-list-capture.cdb` against live retail at the cottage doorway (its README is
the runbook), decode, drop the log at the fixture path, and re-run the threshold test:
- GREEN → acdream already matches retail at the threshold; P1's membership port preserves it.
- RED → the P1 divergence, captured as a documents-the-bug conformance test (do not weaken).
**Re-scope note for P1 (discovered during P0):** this branch already carries the membership
"Stage 1" work the master plan's §2 "acdream now" column lists as partial — `CellArray` (ordered
CELLARRAY / R1 flap fix), `FindCellSet`'s interior-wins pick (cites pc:308788-308825),
`RunCheckOtherCellsAndAdvance` (collide-then-pick), swept `sp.CurCellId` return, player-only
`UpdatePlayerCurrCell`. P1's REAL remaining scope is narrower: intrinsic building entry (delete
`CheckBuildingTransit`) + uniform `find_env_collisions` (delete the `cellLow >= 0x0100` fork) +
demote `ResolveCellId` to seed-only. Re-confirm against the code when P1 starts.