docs: #125 root-cause-fixed status + #119 decoded/likely-fixed-by-#120 ledger update

This commit is contained in:
Erik 2026-06-11 18:20:36 +02:00
parent fcade06c46
commit 0c55b473dd

View file

@ -4077,6 +4077,24 @@ area:**
tracked under #112; note the #120 ping-pong fired at exactly A9B3 tracked under #112; note the #120 ping-pong fired at exactly A9B3
0103↔010F, so re-check after the #120 fix (`dede7e4`). 0103↔010F, so re-check after the #120 fix (`dede7e4`).
**DECODED + LIKELY FIXED BY #120 (2026-06-11 evening):** the user's
logout position pinned the tower (cell 0xAAB30107, AAB3 building[1]
model 0x01001117). Dat truth (`Issue119TowerDumpTests`): the stairs are
ONE static — Setup 0x020003F2, a 43-part spiral staircase at the tower
center (placement frames perfect, all parts drawable); the "extraneous
barrel" = the four 0x020005D8 wall barrels on the landings — legit dat
statics orphaned by the missing staircase. Pipeline exonerated layer by
layer (extraction, hydration ParentCellId=envCellId, per-MeshRef
registration, dispatcher compose); clean WB_DIAG counters at the tower
spawn: meshMissing=0, entSeen==entDrawn. **A screenshot of the running
post-fix build shows the staircase RENDERING.** Mechanism (most
plausible): the tower's three threshold cells portal back to 0x0107 —
climbing the stairs walks the eye through those portal planes, exactly
the #120 ping-pong window; the corrupted/aborted floods broke the
statics' viewcone per frame. The original report predates the #120 fix;
re-gate #2 did not re-check the stairs. **Pending: user verdict on the
tower stairs + barrels in the current build** — if clean, close #119.
--- ---
## #120 — [pv-ERROR] in-place propagation tripwire: convergence invariant broken at depth 128 (cottage interior cells) ## #120 — [pv-ERROR] in-place propagation tripwire: convergence invariant broken at depth 128 (cottage interior cells)
@ -4227,7 +4245,27 @@ selector.
## #125 — GL InvalidOperation during staged texture upload: failed uploads are STICKY (never retried) + uncaught crash in GenerateMipmaps ## #125 — GL InvalidOperation during staged texture upload: failed uploads are STICKY (never retried) + uncaught crash in GenerateMipmaps
**Status:** OPEN — HIGH (the likely #119 missing-stairs mechanism + a process crash) **Status:** ROOT CAUSE FIXED 2026-06-11 (`fcade06`, live-verified) —
remaining: the sticky-drop design debt (below).
**RESOLVED (root cause):** the GL errors were the gpu_us QUERY RING's own
— a glGenQueries name isn't a query object until first glBeginQuery, and
GetQueryObject on a never-begun name is GL_INVALID_OPERATION. The N.6
ring assumed ONE Draw/frame with both passes non-empty; the pview
pipeline's many small Draws routinely skip a pass → the slot read queued
an error EVERY frame under ACDREAM_WB_DIAG=1; WB's texture-path
glGetError checks ate the stale errors (the attribution trap) → fake
upload failures + the ProcessDirtyUpdates throw. Fix: begun-flags per
slot; read only begun queries. Live-verified in-tower: 0 [wb-error]
(was 7), no crash, gpu_us reads real values (911 µs) for the first
time under pview, meshMissing=0. **Normal runs (WB_DIAG off) never had
these errors — this mechanism is RETIRED for #119.**
**Remaining debt (keep open under this number):** UploadMeshData removes
the preparation task BEFORE uploading, so any genuinely-failed upload is
never retried — permanently invisible mesh with one [wb-error] line.
The trigger is gone but the design flaw isn't; add retry/re-prepare
semantics in a maintenance pass.
**Filed:** 2026-06-11 (in-tower WB_DIAG launch, `tower-wbdiag3.log` — preserved in the worktree root) **Filed:** 2026-06-11 (in-tower WB_DIAG launch, `tower-wbdiag3.log` — preserved in the worktree root)
**Component:** render — WB staged texture pipeline (ObjectMeshManager / ManagedGLTextureArray) **Component:** render — WB staged texture pipeline (ObjectMeshManager / ManagedGLTextureArray)