From 0b214d673acdf2011deca881cdb3faa5820284cf Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 12 Jun 2026 09:01:27 +0200 Subject: [PATCH] #119 + #128 CLOSED: tower stairs/barrel resolution chain recorded (user-gated 2026-06-12) --- docs/ISSUES.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 80581ba5..b1ac62c1 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -4029,11 +4029,47 @@ failing step pins which candidate fires. ## #119 — Old tower: stairs partially invisible + extraneous water barrel; two meshes permanently invisible at startup -**Status:** OPEN +**Status:** CLOSED 2026-06-12 — user gate "the tower seem to work good now" +(run-from-town stairs complete, barrel gone, climb + top stable). **Severity:** MEDIUM (pre-existing — "same issue as before" per the user) **Filed:** 2026-06-11 (T5 comprehensive gate, user items 9+13) **Component:** render — mesh upload / content inclusion +**RESOLUTION (2026-06-12) — three root causes, fixed in sequence, each +pinned by the ACDREAM_DUMP_ENTITY decisive probe (`3cf6bcc`):** +1. **`2163308` — Tier-1 cross-entity batch serving** (the broken stairs + + "water barrel"): interior entity ids discarded the landblock X byte + (`0x40YYFF00` — Holtburg town A9B3's 9th interior stab == the AAB3 + tower staircase, both 0x40B3FF09) AND the classification cache hinted + entities with the PLAYER's landblock at bucket-draw time, so the + colliding twins shared one cache key: whichever classified first + served its batches to the other all session. Town-login + run → the + staircase drew a town object's 3 zero-RestPose batches (= "the water + barrel"); tower-login → usually clean. Captured live: `cache=hit:3 + restZero=3` on a 43-part staircase. Fixed: `0x40XXYY##` ids + + owner-derived cache hints (`ResolveCacheLandblockHint`). +2. **`987313a` — knife-edge clip port** (climb strobes, top flap family): + `ProjectToClip` → exact W=0 eye-plane clip per retail + `ACRender::polyClipFinish` (0x006b6d00); zero-area in-plane views now + PROPAGATE (segment-key CanonicalKey) like retail's ClipPortals; the + `EyeInsidePortalOpening` rescue DELETED (CornerFloodReplay passes + without it under the W=0 port). +3. **`1ca412d` + `6a9b529` — entity bounds must cover the mesh** (the + gaze-dependent vanish: stairs visible climbing down, gone climbing + up): `WorldEntity.RefreshAabb` was a fixed ±5 m ANCHOR box feeding + both the dispatcher frustum cull and the viewcone sphere — 15 of the + staircase's 17 m stuck out of it. Final fix derives root-local bounds + from the dat VERTEX data at hydration (GfxObjBounds + + LocalBoundsAccumulator, all four hydration sites) — data, not a + promise; retail needs no equivalent because it viewcone-checks each + part's dat-authored `CGfxObj.drawing_sphere` per part + (CPhysicsPart::Draw 0x0050d7a0 → DrawMesh 0x005a09a4). + +The `[up-null]` lead was exonerated earlier (legit no-draw models); the +f35cb8b lift fix (below) was real but not THE bug. #113's +distance-dependent phantom staircase should be RE-CHECKED against +`2163308` (the town twin wore the tower's staircase batches). + **Symptom (user):** the old tower has missing stair parts (pre-existing; the tower stairs ARE visible in retail — user axiom recorded 2026-06-11 in the render digest) and shows a water barrel that retail doesn't. @@ -4387,7 +4423,15 @@ on PortalBounds) and stabilize it retail-shaped. ## #128 — Tower staircase invisible with a HEALTHY interior root (session-sticky; renders fine in other sessions) -**Status:** OPEN — investigation; needs a diag-instrumented repro +**Status:** CLOSED 2026-06-12 — same root causes as #119 (see its +RESOLUTION block): the session-sticky invisibility was the Tier-1 +cross-entity batch serving (`2163308` — session order decided which +colliding twin won the cache slot, exactly the observed +nondeterminism), and the healthy-root climb invisibility was the ±5 m +anchor bounds feeding the viewcone sphere (`6a9b529`). The "FullScreen +views — cone cannot cull" reasoning below missed that the camera +frustum planes still cull via the same undersized box. User gate +2026-06-12: tower works. **Filed:** 2026-06-11 (tower capture run + user report) **Component:** render — entity draw path (suspect: session-order state)