docs(roadmap): A4 shipped + #90 cell-tracking ping-pong filed
Phase A4 (multi-cell BSP iteration) ships in three commits (e6369e2,493c5e5,691493e— with revert3add110+ reapply during visual verification that proved A4 is not the cause of the issue surfaced). 1139 + 8 baseline maintained. 10 new unit tests pass. Wires retail's CTransition::check_other_cells (acclient_2013_pseudo_c.txt:272717-272798) into Transition.FindEnvCollisions. Visual verification at the Holtburg inn vestibule surfaced a separate, pre-existing M2 blocker (filed as #90): CellId ping-pongs between outdoor 0xA9B40022 and indoor 0xA9B40164 on every wall push-back because the push-back exits the indoor CellBSP volume, causing the resolver to flip back to outdoor and bypass walls on outdoor ticks. Indoor BSP results (Collided/Adjusted/Slid all firing) prove walls ARE detected when the player is indoor; the aggregate "walls walk through" appearance comes from CellId classification instability, not from collision detection. Bug reproduces fully with A4 reverted (launch-revert2.log captured 18 cell-id flips between 0xA9B40022 ↔ 0xA9B40164, 11 inside=True building-transit events, 61 indoor-bsp queries firing the full result distribution). A4 is correct and tested but dormant in practice until #90 is fixed. Updates: - docs/research/2026-05-20-phase-a4-shipped-cell-pingpong-finding.md (new) - docs/plans/2026-04-11-roadmap.md (A4 shipped row added) - CLAUDE.md (Indoor walking Phase A4 paragraph + next-step pointer to #90 with retail oracle anchor at acclient_2013_pseudo_c.txt:308742-308783) - docs/ISSUES.md (#90 filed, HIGH severity, M2-blocker) - docs/research/2026-05-21-open-items-pickup-prompt.md (landscape table updated — A4 closed, #90 promoted to top blocker) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
691493e579
commit
1534990102
5 changed files with 281 additions and 4 deletions
32
CLAUDE.md
32
CLAUDE.md
|
|
@ -801,6 +801,38 @@ Diagnostic infrastructure: `[indoor-bsp]`, `[cell-cache]`, `[cell-transit]`,
|
|||
Handoff: [`docs/research/2026-05-19-indoor-walking-phase2-shipped-handoff.md`](docs/research/2026-05-19-indoor-walking-phase2-shipped-handoff.md).
|
||||
Phase 1 handoff: [`docs/research/2026-05-19-cluster-a-shipped-handoff.md`](docs/research/2026-05-19-cluster-a-shipped-handoff.md).
|
||||
|
||||
**Indoor walking Phase A4 — Multi-cell BSP iteration shipped 2026-05-20.**
|
||||
Three commits land the slices (with one revert/reapply during visual
|
||||
verification proving A4 wasn't the cause of the bug that surfaced):
|
||||
- `e6369e2` — `CellTransit.FindCellSet` overload exposes the candidate set
|
||||
- `493c5e5` — `Transition.CheckOtherCells` + `ApplyOtherCellResult` combine helper
|
||||
- `691493e` — wire `CheckOtherCells` into `FindEnvCollisions` (orig `967d065`, revert `3add110`, reapply)
|
||||
|
||||
Ports retail's `CTransition::check_other_cells` at
|
||||
`acclient_2013_pseudo_c.txt:272717-272798`. After the primary cell's BSP
|
||||
returns OK, every other cell the foot-sphere overlaps is queried. Halt
|
||||
on first Collided/Adjusted/Slid; Slid clears the contact-plane fields.
|
||||
10 new unit tests; 1139 + 8 baseline maintained.
|
||||
|
||||
**Visual verification surfaced a separate, pre-existing M2 blocker**:
|
||||
at the Holtburg inn doorway, the CellId ping-pongs between outdoor
|
||||
`0xA9B40022` and indoor vestibule `0xA9B40164` every few ticks. Indoor
|
||||
BSP DOES detect walls (Collided/Adjusted/Slid fire on push-back), but
|
||||
the push-back exits the indoor CellBSP volume → ResolveCellId
|
||||
reclassifies as outdoor → wall checks bypassed on outdoor ticks → net
|
||||
appearance "walls walk through." Bug reproduces fully with A4 reverted
|
||||
(see `launch-revert2.log`), confirming A4 is not the cause. A4 is
|
||||
correct and tested but **dormant in practice** until the ping-pong is
|
||||
fixed. Handoff:
|
||||
[`docs/research/2026-05-20-phase-a4-shipped-cell-pingpong-finding.md`](docs/research/2026-05-20-phase-a4-shipped-cell-pingpong-finding.md).
|
||||
|
||||
**Next: cell-tracking ping-pong fix.** Retail oracle:
|
||||
`acclient_2013_pseudo_c.txt:308742-308783` (`CObjCell::find_cell_list`
|
||||
Position-variant). Look for the cell-array hysteresis / stickiness
|
||||
logic that prevents flipping CellId on a single push-back. Likely
|
||||
modifies `PhysicsEngine.ResolveCellId` to prefer the previous indoor
|
||||
classification when the sphere is close to the indoor CellBSP volume.
|
||||
|
||||
**Next phase is Claude's choice** per work-order autonomy. Candidates:
|
||||
M2 critical path (F.2 / F.3 / F.5a / L.1c / L.1b — kill-a-drudge demo);
|
||||
or the pre-existing "next phase candidates" list below.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue