diff --git a/docs/ISSUES.md b/docs/ISSUES.md index d7a6a4ff..c12f1781 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -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 diff --git a/docs/plans/2026-06-11-building-render-port-plan.md b/docs/plans/2026-06-11-building-render-port-plan.md index f7a80e7a..76c67746 100644 --- a/docs/plans/2026-06-11-building-render-port-plan.md +++ b/docs/plans/2026-06-11-building-render-port-plan.md @@ -1,14 +1,22 @@ # The holistic building-render port plan (Phase B) — one drawing discipline -**EXECUTION STATUS (2026-06-11 end of day): BR-2…BR-6 are CODE-COMPLETE on -the branch (HEAD `4a307d3`), executed as the fused tasks T1–T4 — see the -render digest's ledger for the per-commit map (T1 `579c8b0` frame order; -T2 `cf8a2c3`/`529dfcf`/`88f3ce1` flood fidelity, two retail constants refuted -by the conformance gate and kept at documented tolerances; T3 `a6aec8c` -viewconeCheck; T4 `4a307d3` one-gate deletions). REMAINING: BR-7 (T6, -collision A6.P4) → then T5, the single comprehensive visual gate. The 4 -pre-existing #99-era Core test failures double as BR-7's built-in -acceptance signal (they should flip green as A6.P4 lands).** +**EXECUTION STATUS (2026-06-11, post-BR-7): BR-2…BR-7 are ALL CODE-COMPLETE +on the branch — the render arc as the fused tasks T1–T4 (T1 `579c8b0` frame +order; T2 `cf8a2c3`/`529dfcf`/`88f3ce1` flood fidelity, two retail constants +refuted by the conformance gate and kept at documented tolerances; T3 +`a6aec8c` viewconeCheck; T4 `4a307d3` one-gate deletions), and BR-7 (T6, +collision A6.P4) as `6ec4cde` (signed OtherPortalId gate) + `abf36e2` +(BuildShadowCellSet flood) + `dbfbf85` (per-cell architecture: flood +registration, building channel, per-cell query, b3ce505 DELETED — closes +#99) + `ca4b482` (straddle-only outside-add, A6.P5 widening + #90 +stickiness removed). Of the 4 #99-era Core reds, 3 flipped green as +designed (door apparatus + tick-13558 + tick-22760's blocking invariant); +the 4th (BSPStepUp D4) + 22760's lateral-slide delta proved to be a +SEPARATE pre-existing slide-response family — filed #116, D4 skipped with +the reference (probes show the cell-set layer innocent). Suites: Core +1416/0/2skip, App 225, UI 420, Net 294. REMAINING: **T5 — the single +comprehensive visual gate with the user** (checklist in the render +digest's ledger), then roadmap/digest closeout.** **Status: APPROVED + AMENDED (2026-06-11). EXECUTION DIRECTIVE CHANGED BY THE USER: "I don't care if it is non-playable… I want everything ported, then we @@ -235,7 +243,7 @@ center/radius window. green. - **Size:** ~3 commits, mostly deletions (each independently revertable). -### BR-7 — Interior collision: per-cell shadow lists (A6.P4, verified) +### BR-7 — Interior collision: per-cell shadow lists (A6.P4, verified) — ✅ CODE-COMPLETE 2026-06-11 (`6ec4cde`+`abf36e2`+`dbfbf85`+`ca4b482`; visual confirmation rides T5) **What:** ship the A6.P4 architecture with the investigation's corrections: registration builds the cell set by sphere-overlap portal flood (not an XY