From 70c559c1ba25c83b408eee6a3f9f10fd7f7ba575 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 13 Jun 2026 18:30:43 +0200 Subject: [PATCH] =?UTF-8?q?docs(G.3):=20gate=20correction=20=E2=80=94=20G.?= =?UTF-8?q?3a=20core=20landed;=20#95=20CONFIRMED=20LIVE=20(not=20supersede?= =?UTF-8?q?d)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The G.3a visual gate ran a real PlayerTeleport into the 0x0007 dungeon. The core hold+place worked (grounded on the dungeon floor, no ocean) and Bug A (landblock- prefix mis-stamp) is fixed (2ce5e5c). But the gate proved #95 (portal-graph visibility blowup, ~9.1M instances/frame) is LIVE under the current pipeline — my plan's "likely superseded / conditional G.3b" premise was wrong. Spec §2.5/§3.2 + ISSUES #133/#95 updated: G.3b (grab_visible_cells stab_list bounding) is REQUIRED, needs its own grounding/brainstorm. Also noted: the render-only hydration decouple was reverted (e7058ca) for making the player invisible at Holtburg. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/ISSUES.md | 34 ++++++++++++-- .../2026-06-13-dungeon-support-design.md | 46 +++++++++++++------ 2 files changed, 61 insertions(+), 19 deletions(-) diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 80581f8a..8abe2820 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -51,10 +51,25 @@ Copy this block when adding a new issue: **Status:** OPEN — promoted to **Phase G.3** (Dungeon streaming + portal space + `PlayerTeleport` handling), **PULLED INTO M1.5** (user decision 2026-06-13: the indoor world isn't done while dungeons are broken; full -G.3 scope chosen). Brainstorming the spec → `docs/superpowers/specs/`. -This is now an M1.5 exit-gate blocker, not deferred. The investigation -below found it's not a single bug but a whole-feature gap (terrain-less -dungeon landblocks unsupported across the pipeline). +G.3 scope chosen). Spec: `docs/superpowers/specs/2026-06-13-dungeon-support-design.md`; +G.3a plan: `docs/superpowers/plans/2026-06-13-dungeon-support-g3a.md`. +This is now an M1.5 exit-gate blocker, not deferred. + +**PROGRESS (2026-06-13 PM — G.3a core LANDED + Bug A fixed; gate exposed #95):** +the teleport-timing root cause IS fixed. G.3a shipped the `TeleportArrivalController` +hold-until-hydration (`7947d7a`/`aca4b46`/`f22121b`) + the validated-claim +landblock-prefix fix (`2ce5e5c`, "Bug A"). Live gate proof: a real `PlayerTeleport` +into the `0x0007` dungeon held through the 46 km jump and grounded the player on the +dungeon's walkable floor (`[snap] claim=0x00070143 VALIDATED -> z=0.000`) — **no +ocean.** The "terrain-less landblock" framing was refuted earlier (dat probe: dungeon += flat-terrain LandBlock + EnvCells). REMAINING blockers, both exposed at the gate: +(1) **#95 CONFIRMED LIVE** — the dungeon renders as "thin air" because WB-DIAG blows +up to ~9.1M instances/frame at `0x0007` (see #95); (2) **possible Bug C** — per-tick +membership may still drift in the dungeon's negative-local-Y frame (ACE `movement +pre-validation failed` spam) — re-gate after Bug A to confirm. NOTE: a render-only +EnvCell hydration decouple was tried in G.3a and REVERTED (`e7058ca`) — it made the +player character invisible at Holtburg (it touched the shared building hydration +path); re-approach separately if a geometry-less collision cell ever needs it. **Severity:** HIGH (any far/dungeon teleport is unusable) **Filed:** 2026-06-13 (M1.5 dungeon-demo gate attempt — meeting-hall portal) **Component:** physics/streaming — teleport-arrival snap vs async landblock hydration @@ -887,7 +902,16 @@ Retail oracle for cell-id hysteresis: `acclient_2013_pseudo_c.txt:308742-308783` ## #95 — Dungeon portal-graph visibility blowup (see-through-walls / other dungeons rendered) -**Status:** OPEN — **explains user-observed "dungeons are broken"** +**Status:** OPEN — **RE-CONFIRMED LIVE under the current Option-A pipeline (2026-06-13 +G.3a gate).** A real `PlayerTeleport` into the `0x0007` dungeon blew WB-DIAG up to +entSeen=6.5M / instances=9.1M / drawsIssued=590K per frame (vs. 3345/4667 at Holtburg) +with a flood of `[mesh-miss] 0x000100xxxx` interior re-requests → dungeon renders as +"thin air." So the T1–T6 rewrite did NOT supersede this (the earlier "likely superseded" +read was wrong). This is now the **#133/G.3b** blocker; fix shape = port retail +`CEnvCell::grab_visible_cells` (:311878) stab_list bounding (seen_outside==0 → walk only +stab_list, never the whole resident cell set). Needs its own grounding/brainstorm in the +flap-sensitive `PortalVisibilityBuilder`. **Originally** also: **explains user-observed +"dungeons are broken"** **Severity:** HIGH (blocks all dungeon navigation visually) **Filed:** 2026-05-21 **Component:** rendering, visibility, EnvCell portal traversal diff --git a/docs/superpowers/specs/2026-06-13-dungeon-support-design.md b/docs/superpowers/specs/2026-06-13-dungeon-support-design.md index 6f62f41c..95129126 100644 --- a/docs/superpowers/specs/2026-06-13-dungeon-support-design.md +++ b/docs/superpowers/specs/2026-06-13-dungeon-support-design.md @@ -169,10 +169,19 @@ All five verified against current code this session (high confidence). *correct*, and the cross-landblock 135-cell blowup **structurally cannot reproduce**: a single-landblock flood visits ≤ `NumCells` distinct cells (71 for the meeting hall). -- **Verdict:** #95's evidence is stale, from a deleted path; the current pipeline - is bounded. Treat #95 as **likely superseded, unverified**. The meeting-hall - demo (71 cells, one landblock) IS its empirical test. **Do not pre-build the - stab_list bounding port** against a dead repro (G.3b is conditional — §3.2). +- **Verdict (pre-gate, 2026-06-13 AM):** #95's evidence is stale, from a deleted + path; the current pipeline looked bounded. Treated #95 as likely superseded. +- **⚠️ GATE CORRECTION (2026-06-13 PM — #95 is CONFIRMED LIVE):** the G.3a visual + gate ran a real `PlayerTeleport` into the `0x0007` dungeon (Town Network). The + core hold+place worked (player grounded on the dungeon floor, z=0 — no ocean), + but **WB-DIAG exploded to entSeen=6.5M / instances=9.1M / drawsIssued=590K per + frame** (vs. 3345 / 4667 at Holtburg), with a flood of `[mesh-miss] 0x000100xxxx` + interior re-requests → the dungeon renders as "thin air." **#95 reproduces under + the current Option-A pipeline.** The "bounded flood" reasoning was wrong for the + `0x0007` dungeon (the grounding agent's "still live" verdict was correct; this + doc over-discounted it). **G.3b is now REQUIRED, not conditional** (§3.2). The + retail-faithful fix shape stands: port `CEnvCell::grab_visible_cells` (:311878) + stab_list bounding — a `seen_outside==0` cell walks ONLY its `stab_list`. --- @@ -234,19 +243,28 @@ each on its own non-null precondition. **Acceptance (G.3a):** the visual gate in §6. This gate also empirically settles #95 (does the flood blow up?) and the hydration coupling (does collision work?). -### 3.2 G.3b — #95 visibility bounding (CONDITIONAL) +### 3.2 G.3b — #95 visibility bounding (REQUIRED — gate-confirmed 2026-06-13) -**Trigger:** *only* if the G.3a visual gate shows the see-through-walls / -other-dungeon-geometry blowup at the meeting hall. +**The G.3a gate confirmed the blowup** (9.1M instances/frame in `0x0007`), so this +is the next blocker, not a conditional follow-up. The dungeon will not render +until the portal-visibility flood is bounded to the dungeon's own cell adjacency. -**If triggered:** port retail `CEnvCell::grab_visible_cells` (`:311878`) — a cell -with `seen_outside == 0` loads ZERO terrain and walks ONLY its `stab_list` of -adjacent EnvCells; the portal graph is bounded by the dungeon's own cell -adjacency, never a radius. Verify the dat carries the stab_list and acdream's -EnvCell loader parses it before relying on it. +**Fix:** port retail `CEnvCell::grab_visible_cells` (`:311878`) — a cell with +`seen_outside == 0` loads ZERO terrain and walks ONLY its `stab_list` of adjacent +EnvCells; the portal graph is bounded by the dungeon's own cell adjacency, never a +radius / never the whole resident cell set. This is a render-pipeline change in +`PortalVisibilityBuilder` (the flap-/DO-NOT-RETRY-sensitive area) and needs its own +grounding + brainstorm before implementation (verify the dat carries the stab_list +and acdream's EnvCell loader parses it; confirm the `seen_outside` flag is read; +decide how it composes with the outdoor-root look-in floods). **NOT a wing-it +inline fix.** -**If NOT triggered:** close #95 as **superseded** (deleted WB path; current flood -bounded) with a one-line ISSUES.md note. **No speculative build.** +**Open question surfaced at the gate (possible Bug C):** even with Bug A fixed +(placement keeps the dungeon prefix, `2ce5e5c`), the dungeon's negative-local-Y +coordinate frame may cause the per-tick membership/landblock resolution to drift +(the ACE `movement pre-validation failed` spam). Re-gate after Bug A to see if it +persists; if so, fold the dungeon-coordinate membership handling into G.3b's +grounding (it is plausibly the same `seen_outside` / cross-landblock root as #95). ### 3.3 G.3c — Portal-tunnel loading visual (faithful `TeleportAnimState`)