diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 092df1c4..69162e56 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -3749,61 +3749,75 @@ adjacent-claim shape self-heals, dat-tested) then retail keep-curr. Poisoned saves stay covered at the snap (#107/#111 AdjustPosition). P1 retail-golden gates explicitly green (11/11). -**RESIDUAL (documented by -`Issue112MembershipTests.A9B3CottageGap_..._DocumentsResidual`):** at the -doorway-region gap itself, the NORMAL outdoor-candidate path still demotes -(the BFS reaches the exterior portal → outdoor cells enter the array). Open -oracle read: retail's `add_all_outside_cells` gate in -`CEnvCell::find_transit_cells` (pc:317499 region) — sphere-proximity to the -exterior portal polygon vs mere graph reachability. If proximity-gated, the -at-door demote disappears and the DocumentsResidual assert flips to keep-curr. -Re-promotion at doorway cells works (retail-identical), so the demote now -self-heals walking in — no stranding. Live gate pending: user re-walks the -A9B3 cottage; expect interior to stay rendered (brief doorway flicker at most). -The missing OBJECT collision in that cottage = #99 data point (A6.P4 debt). -Scan data: standing-now → [0x103]; flip-a → []; flip-b → [0x100]. +**RESIDUAL RESOLVED 2026-06-10 (`414c3de`, live-binary oracle):** retail's +gate read straight from the running 2013 client (cdb attach, +`CEnvCell::find_transit_cells` @ 0052c820 — BN pseudo-C had invented +portal_side tests in this branch): outdoor cells are admitted IFF a path +sphere STRADDLES an exterior portal's polygon plane, +`|dist| < radius + F_EPSILON(0.0002)`. Ported as the straddle gate on the +membership PICK's outdoor branch; the collision cell SET keeps the A6.P5 +topology widening until #99/A6.P4 (outdoor-registered doors must stay +findable from indoors). Consequences: (a) the at-doorway gap demote is +RETAIL-FAITHFUL (gap point 0.23 m from 0x104's door plane < 0.48 m foot +radius → retail straddles + demotes + self-heals inward) — test renamed +`...DemotesRetailFaithfully`, expectation unchanged; (b) deep-interior +containment gaps in ANY house now keep-curr like retail instead of demoting +(new pins: `A9B3Cottage_GapBeyondStraddleDistance_KeepsCurrCell` + +`FindTransitCellsSphere_ExitPortalStraddleGate_MatchesRetail`). Live gate +pending: user re-walks the A9B3 cottage; expect interior to stay rendered +(brief doorway flicker at most). The missing OBJECT collision in that +cottage = #99 data point (A6.P4 debt). Scan data: standing-now → [0x103]; +flip-a → []; flip-b → [0x100]. --- -## #113 — Phantom exterior staircase on an A9B3 building (not in retail); suspect misplaced interior cell - -**Status:** OPEN -**Severity:** MEDIUM (visual fidelity; suspect shares a root with the same -building's containment gap #112 and collision gaps #99) -**Filed:** 2026-06-10 (late — user side-by-side vs retail) -**Component:** render / building cells (or dat interpretation) - -**Symptom:** an A9B3 building (near the #112 hill cottage; NPCs Aun Kielerea + -The Sentry nearby, spot ~(183, −111, 116) world) shows a stone-and-wood -STAIRCASE attached to its exterior wall in acdream; the retail client shows a -plain wall with a window there (user screenshots, 2026-06-10). The stairs are -NOT pickable (clicks select only NPCs behind them) ⇒ not a stab/WorldEntity — -building-shell or interior-cell geometry. - -**Hypothesis (would unify three symptoms at this building):** a misplaced -interior EnvCell — an indoor staircase cell whose world transform puts its -geometry outside the shell. That would simultaneously explain (a) the phantom -exterior stairs, (b) the interior containment gap (#112's dead zone = a cell -volume sitting in the wrong place), and (c) missing collision on objects in -the house. - -**Next steps:** (1) ACViewer oracle — open the same landblock; stairs present -there ⇒ shared dat-interpretation, absent ⇒ our transform/draw -(feedback_acviewer_as_oracle). (2) Offline: dump A9B3's LandBlockInfo -buildings + per-cell Position.Origin/rotation; look for a cell whose -transformed AABB escapes the building footprint. (3) Identify the building id -(the landblock's building list near the spot). - -**Meta (user, 2026-06-10):** "we should not have to verify all houses like -this" — agreed; the open systemic debts are A6.P4 per-cell shadows (#99, -fixes collision everywhere), the #112 residual oracle read, and this transform -check. If (2) finds a systematic per-building transform error, ONE fix covers -every affected house. - --- # Recently closed +## #113 — Phantom exterior staircase (Holtburg meeting hall): PView shell clip was never GL-enabled — [FIXED 2026-06-10 · 927fd8f, user visual gate pending] + +**Status:** FIXED (self-gated by screenshot comparison at the original spot — +phantom gone; formal user visual gate pending) +**Closed:** 2026-06-10 +**Component:** render (PView shell pass GL state) + +**Attribution (dat-evidenced — the filed "A9B3 misplaced interior cell" +hypothesis is REFUTED):** the building is the Holtburg MEETING HALL — AAB3 +building[0], model `0x010014C3` at AAB3-local (36,84,116), not an A9B3 +building (A9B3 has exactly ONE building, the #112 hill cottage; the user +stood at the A9B3/AAB3 boundary — `issue112-gate1.log` cell-transit trail — +and clicked through the hall to the NPC behind it). The hall's interior +stair cells (0x100..0x106, a ring climbing z 116→124.5 to the deck hatch) +have geometry COINCIDENT with the shell's west wall (both at local x=29.0). + +**Root cause:** retail clips drawn CELL geometry to the accumulated portal +view (`Render::set_view` :343750 + `planeMask=0xffffffff` per cell polygon +:427922 → `polyClipFinish`). Our equivalent — `UseShellClipRouting` → +`mesh_modern.vert` `gl_ClipDistance` — was routed with CORRECT tight clip +regions (`Issue113MeetingHallFloodTests` proves 4–6 planes, door-aperture +NDC boxes) but was INERT: `gl_ClipDistance` writes are ignored unless +`GL_CLIP_DISTANCEi` is enabled, and no caller ever enabled it for the shell +pass (born inert in `1405dd8`). Flooded interior cells drew WHOLE → the +interior staircase painted across the exterior wall; unpickable because +it's cell geometry. 5th instance of +`feedback_render_self_contained_gl_state`. + +**Fix (`927fd8f`):** enable `GL_CLIP_DISTANCE0..7` around exactly the shell +pass in `RetailPViewRenderer.DrawEnvCellShells` (no early-outs between set +and restore). Entities/characters stay unclipped (retail's mesh path is +viewcone-check, not poly-clip — comment scoped). Known remaining +approximation: slot-0 fallback slices (>8-plane apertures) still draw +pass-all — the assembler's scissor fallback remains unimplemented (rare; +pinned 0 such slices at the hall). + +**Refuted along the way (evidence in `Issue113PhantomStairsDumpTests`):** +the unifying misplaced-cell hypothesis — all 17 A9B3 cottage cells share +one identical dat Position (nothing to misplace); the #112 gap is a real +20 cm doorway micro-gap, not a displaced volume; missing object collision +remains #99/A6.P4. A9B3's dat has NO stair geometry anywhere near the spot +(shell = balcony slabs z119 + turret roof; cells flat 116/118.8). + ## #111 — ACE-mutated indoor restores: transparent interior / wrong placement at login — [DONE 2026-06-10 · 5f1eb7c + 5706e0e + 2735695] **Status:** DONE (user-gated: clean indoor logins at two different buildings —