test(p0): retail-trace golden captured — membership criterion divergence pinned (P0 GATE MET)

P0 Task 6 complete. Captured live retail membership at the 0031<->0170<->0171
doorway via cdb on CPhysicsObj::change_cell (symbol-driven; offsets verified by
discover-types.cdb; PDB MATCH). 22 transitions, clean monotonic sequence, NO
ping-pong (retail is correct-by-construction). Golden:
Conformance/Fixtures/find-cell-list-threshold.log.

ROOT-CAUSE FINDING (the central P1 work): retail transitions membership at the
PORTAL CROSSING (CEnvCell::find_transit_cells @ 0x52c820 pc:309968 — sphere crosses
the doorway polygon plane), while acdream's FindCellList re-picks by POINT-IN-CELL
containment at the foot. Retail commits room 0171 while the foot is STILL inside
vestibule 0170's BSP (in_0171=0); acdream lags. ALL 22 transitions diverge for this
one criterion mismatch — not a per-cell hysteresis or a building-entry-only split.
This is master-plan §0 'hysteresis gap' confirmed against the real client.

FindCellList_DoorwayThreshold_DivergesFromRetail_PendingP1 (documents-the-bug, GREEN)
+ ThresholdDivergenceDiagnosticTests (per-transition containment print) pin it; both
flip when P1 ports the directed portal crossing. Conformance 59 pass / 1 skip / 0 fail;
full Core 1308 pass / 5 fail (baseline) / 1 skip — no new failures.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-06-03 15:04:51 +02:00
parent 1662da8731
commit bb4dead0ae
7 changed files with 253 additions and 59 deletions

View file

@ -0,0 +1,22 @@
[fcl] seed=0xA9B40031 px=155.4350 py=16.1483 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4210 py=15.4818 pz=94.0050 picked=0xA9B40171
[fcl] seed=0xA9B40171 px=155.4130 py=15.1004 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4302 py=15.9169 pz=94.0050 picked=0xA9B40031
[fcl] seed=0xA9B40031 px=155.4360 py=16.1878 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4192 py=15.3880 pz=94.0050 picked=0xA9B40171
[fcl] seed=0xA9B40171 px=155.4126 py=15.0677 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4298 py=15.8842 pz=94.0050 picked=0xA9B40031
[fcl] seed=0xA9B40031 px=155.4341 py=16.0885 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4173 py=15.2887 pz=94.0050 picked=0xA9B40171
[fcl] seed=0xA9B40171 px=155.4139 py=15.1239 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4311 py=15.9404 pz=94.0050 picked=0xA9B40031
[fcl] seed=0xA9B40031 px=155.4369 py=16.2114 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4201 py=15.4115 pz=94.0050 picked=0xA9B40171
[fcl] seed=0xA9B40171 px=155.4139 py=15.1135 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4311 py=15.9299 pz=94.0050 picked=0xA9B40031
[fcl] seed=0xA9B40031 px=155.4388 py=16.2898 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4219 py=15.4899 pz=94.0050 picked=0xA9B40171
[fcl] seed=0xA9B40171 px=155.4135 py=15.0863 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4340 py=16.0583 pz=94.0050 picked=0xA9B40031
[fcl] seed=0xA9B40031 px=155.4365 py=16.1738 pz=94.0050 picked=0xA9B40170
[fcl] seed=0xA9B40170 px=155.4196 py=15.3739 pz=94.0050 picked=0xA9B40171