docs: T6 (BR-7) ship closeout - #99/#90 closed, #97 likely-closed note, #116 filed, plan stamped

- ISSUES.md: #99 DONE (per-cell shadow architecture, dbfbf85+ca4b482;
  visual rides T5); #90 DONE (stickiness workaround removed, retail
  ordered-pick owns doorway hysteresis); #97 likely-closed note (the +5m
  pad producer deleted - verify at T5); #116 filed (slide-response
  family: tick-22760 lateral-slide loss + BSPStepUp D4 first-frame
  behavior, both pre-dating BR-7, oracle-first fix shape).
- Port plan: execution stamp updated to BR-2..BR-7 ALL CODE-COMPLETE
  with the per-commit map; BR-7 section marked code-complete; remaining
  = T5, the single comprehensive user visual gate.
- Memory digests (physics + render + MEMORY.md index) updated in the
  same session per the digest protocol.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-06-11 14:49:18 +02:00
parent ca4b482f8b
commit 60c10707a3
2 changed files with 52 additions and 15 deletions

View file

@ -752,9 +752,17 @@ propagates through portal connectivity data in `CEnvCell`.
---
## #90 — Cell-id ping-pong at indoor doorway threshold
## #90 — Cell-id ping-pong at indoor doorway threshold — [DONE 2026-06-11 · ca4b482, T6/BR-7]
**Status:** OPEN — **WORKAROUND in place (sphere-overlap stickiness, commit `4ca3596`). M1.5 scope (A6.P4) — workaround removal after underlying push-back fix.** User-visible symptom resolved 2026-05-20; root cause still to investigate.
**Status:** DONE — the `4ca3596` sphere-overlap stickiness workaround was
REMOVED in T6/BR-7: it had become dead code (its only caller path was the
cache-null test fallback in `ResolveCellId`), and the retail mechanism that
owns doorway hysteresis is the ordered-pick (current cell at CELLARRAY
index 0, interior-wins-break — `BuildCellSetAndPickContaining`, the
collide-then-pick advance), which production has used since the membership
rewrite. The ping-pong's original harm (outdoor ticks bypassing indoor BSP)
is structurally gone under the per-cell query: both classifications collide
the same per-cell lists at the threshold.
**Severity:** HIGH (workaround unblocks indoor visibility for M1.5 baseline; M1.5 acceptance requires the proper fix)
**Filed:** 2026-05-20
**Component:** physics — cell tracking
@ -877,7 +885,13 @@ Retail oracle for cell-id hysteresis: `acclient_2013_pseudo_c.txt:308742-308783`
## #97 — Phantom collisions + occasional fall-through on indoor 2nd floor (post-slice-1 happy-testing)
**Status:** OPEN — **investigate after issue #96 lands** (hypothesized to be a side-effect)
**Status:** OPEN — **LIKELY CLOSED by T6/BR-7 (2026-06-11), verify at the T5
visual gate.** The +5 m radial query pad that made spheres test objects in
cells they never overlapped (the structural producer of this phantom class,
per the WF1 verification) is deleted with the per-cell query; indoor 2nd
floor now tests only the overlapped cells' own shadow lists. If T5's inn
2nd-floor walk is clean, close; if phantoms persist they have a different
mechanism and this gets a fresh capture.
**Severity:** MEDIUM (intermittent; doesn't block stair-walking which works post-slice-1)
**Filed:** 2026-05-21
**Component:** physics, ContactPlane stability
@ -946,9 +960,24 @@ Decomp anchors (`docs/research/named-retail/acclient_2013_pseudo_c.txt`):
---
## #99 — Run-through doors at building thresholds (regression from b3ce505)
## #99 — Run-through doors at building thresholds (regression from b3ce505) — [DONE 2026-06-11 · dbfbf85 + ca4b482, T6/BR-7]
**Status:** OPEN
**Status:** DONE — closed ARCHITECTURALLY by the A6.P4 per-cell shadow port
(T6/BR-7): registration computes cell membership via the retail
sphere-overlap portal flood (`CellTransit.BuildShadowCellSet` =
`CObjCell::find_cell_list`, Ghidra 0x0052b4e0), the query iterates strictly
per cell (`FindObjCollisionsInCell` = `find_obj_collisions` 0x0052b750,
primary + `CheckOtherCells` per retail order), building shells dispatch via
the per-LandCell building channel (`FindBuildingCollisions` =
`CSortCell::find_collisions` 0x005340a0), and the b3ce505 indoor gate +
radial sweep + 5 m pad + isViewer exemption are DELETED. The door is
covered twice like retail: registered into every cell its spheres overlap,
and reached from the indoor side via the straddle-admitted outdoor cells in
the player's own array. Pins: tick-13558 (indoor approach BLOCKS),
tick-22760 (outdoor block invariant), the flipped door apparatus, and the
registry membership tests. Residual: the lateral-slide delta at
near-perpendicular approach is #116 (slide response, pre-existing).
Visual confirmation rides the T5 comprehensive gate.
**Severity:** HIGH (M1 demo regression — opening doors was previously a working demo target)
**Filed:** 2026-05-24
**Component:** physics, shadow-object collision query