fix(p1): membership already matches retail — the 0/11 was a cdb capture artifact
The P1 "doorway membership lags retail" premise is FALSIFIED. acdream's swept ResolveWithTransition already matches retail's true per-frame curr_cell: the production gate ProductionPath_IndoorCrossings reads 9/9 on the indoor 0170<->0171 crossings with NO code change, once fed an aligned retail golden. Root cause of the false 0/11: CPhysicsObj::SetPositionInternal calls change_cell (acclient_2013_pseudo_c.txt:283456) BEFORE set_frame writes m_position (:283458), so the original golden (find-cell-list-capture.cdb, read at the change_cell BP) paired each frame's NEW cell with the PREVIOUS frame's position — a one-frame skew. Verified 3 ways: the decomp ordering; golden_picked[i] == geom(golden_position[i+1]) for all 22 rows; acdream's static pick == golden_picked[i-1] for all rows. Both retail and acdream pick with center-only point_in_cell on global_sphere[0] (no XY lead; cache_global_sphere @ pc:274196). curr_cell commits via validate_transition (@ pc:272608, curr_cell = check_cell) = the find_cell_list pick, structurally identical to acdream's RunCheckOtherCellsAndAdvance -> FindCellSet -> SetCheckPos. There was nothing to port; a swept advance would make membership LEAD by a frame. - tools/cdb/find-cell-list-capture-aligned.cdb: re-capture reads the committed position from the set_frame that follows change_cell (cell+position same instant). - Fixtures/find-cell-list-threshold.log: replaced with the aligned capture. - ThresholdPortalCrossingReplayTests / FindCellListConformanceTests: rewritten from documents-the-bug to assert retail truth (per-segment / per-indoor-pick equality). - handoff + notes + README + memory: banners correcting the disproven premise. Still open (NOT indoor membership, which is DONE): outdoor->indoor 0031<->0170 entry conformance (needs landcell + building stab in the gate cache); master-plan cleanups (delete CheckBuildingTransit, unify find_env_collisions, demote ResolveCellId) refactor working retail-faithful code -> need explicit user approval. Conformance 60 pass / 1 skip / 0 fail; full Core 1309 pass / 5 fail (pre-existing 2 BSPStepUp + 3 door-collision = P2) / 1 skip. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
db94cb1c90
commit
9017107960
7 changed files with 197 additions and 64 deletions
|
|
@ -2,10 +2,22 @@
|
|||
|
||||
Captured retail golden data for the P0 conformance tests.
|
||||
|
||||
- `find-cell-list-threshold.log` — **pending capture.** Retail `find_cell_list` picks at the
|
||||
Holtburg cottage doorway, in the `[fcl] seed=0x.. px=.. py=.. pz=.. picked=0x..` format read by
|
||||
`RetailTrace.ParseFindCellList`. Produced by `tools/cdb/find-cell-list-capture.cdb` (see its
|
||||
README). Until it lands, `FindCellList_DoorwayThreshold_MatchesRetailTrace` skips.
|
||||
- `find-cell-list-threshold.log` — retail `find_cell_list` picks at the Holtburg "Agent of
|
||||
Arcanum" doorway (the `0031↔0170↔0171` building), in the
|
||||
`[fcl] seed=0x.. px=.. py=.. pz=.. picked=0x..` format read by `RetailTrace.ParseFindCellList`.
|
||||
**Captured ALIGNED** by `tools/cdb/find-cell-list-capture-aligned.cdb`: each row's position is
|
||||
the COMMITTED position read from the `set_frame` call that follows `change_cell`, so cell and
|
||||
position are from the same instant.
|
||||
|
||||
History (2026-06-03): the first capture (`tools/cdb/find-cell-list-capture.cdb`) read position
|
||||
from `m_position` AT the `change_cell` breakpoint — but `SetPositionInternal` calls `change_cell`
|
||||
(`acclient_2013_pseudo_c.txt:283456`) BEFORE `set_frame` writes `m_position` (`:283458`), so each
|
||||
row paired THIS frame's new cell with the PREVIOUS frame's position (a one-frame skew,
|
||||
`picked[i] == geom(position[i+1])`). That skew made the conformance read 0/11 and was
|
||||
briefly misdiagnosed as a "membership lags retail" bug. The aligned golden removes the skew;
|
||||
acdream's center-only `point_in_cell` pick matches retail 9/9 on the indoor crossings with **no
|
||||
code change** — acdream's membership already IS retail's true per-frame behaviour. See
|
||||
`docs/research/2026-06-03-p1-membership-swept-advance-handoff.md`.
|
||||
|
||||
Fixtures are read from this SOURCE directory (via `ConformanceDats.FixturesDir`), not copied to
|
||||
the build output — matching the existing `Fixtures/issue98/**` pattern.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue