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>
17 lines
493 B
Text
17 lines
493 B
Text
$$ Safe type-layout discovery (no breakpoint -> cannot freeze retail).
|
|
$$ Confirms the @@c++ field paths the capture script depends on, then detaches.
|
|
.sympath C:\Users\erikn\source\repos\acdream\refs
|
|
.symopt+ 0x40
|
|
.reload /f acclient.exe
|
|
.echo ===PHYSOBJ===
|
|
dt acclient!CPhysicsObj m_position cell
|
|
.echo ===POSITION===
|
|
dt acclient!Position
|
|
.echo ===FRAME===
|
|
dt acclient!Frame
|
|
.echo ===VECTOR3===
|
|
dt acclient!AC1Legacy::Vector3
|
|
.echo ===OBJCELL===
|
|
dt acclient!CObjCell pos
|
|
.echo ===DONE===
|
|
qd
|