#119 + #128 CLOSED: tower stairs/barrel resolution chain recorded (user-gated 2026-06-12)

This commit is contained in:
Erik 2026-06-12 09:01:27 +02:00
parent 6a9b529113
commit 0b214d673a

View file

@ -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)