docs: reconcile M1.5 tracking with git reality — G.3 dungeons SHIPPED, not "broken"

The milestones doc, roadmap, CLAUDE.md banner, and #138's ISSUES cross-ref had
drifted ~4 weeks behind shipped work — they still claimed "dungeons don't work
AT ALL / terrain-less landblocks unsupported (#133)", which sent this session
chasing a phantom door "regression" for an hour. Git reality (and tonight's live
dungeon session) refute it:

- #133 teleport-into-dungeon DONE (G.3a hold-until-hydrate FSM 7947d7a/2ce5e5c8/47ae237e);
  the terrain-less premise was refuted at design time (90786c19: dungeon LandBlock
  is flat-terrain, streams via the existing pipeline).
- #95 portal-graph visibility blowup RESOLVED (9.1M→~39k instances, a40c38e8).
- #137 dungeon collision CLOSED (0efa7ed2); doors #187/#188; A7 lighting #79/#93/#80/#154 CLOSED.
- #138 teleport-OUT ESSENTIALLY RESOLVED in code — the remaining M1.5 gap is one
  RECORDED end-to-end round-trip user gate, not broken code.

Also fixes a numbering trap: #138's body cited "#146/#147" for its collision
residuals, but those numbers are D.2b inventory-polish issues in this worktree;
the real residuals are #152 (portal-in walls, DONE 49d743f) + #151 (far-town
walls, FIXED 9743537). Sole live residual now surfaced: far-town teleport-OUT
arrival cascade (#145-residual, REOPENED — capture-harness-first).

Historical working-notes annotated [SUPERSEDED] rather than deleted.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-10 09:45:05 +02:00
parent 217a4bad69
commit 5e271dd719
4 changed files with 75 additions and 43 deletions

View file

@ -3,12 +3,18 @@
**Status:** Living document. Created 2026-05-12.
**Sits above:** [`docs/plans/2026-04-11-roadmap.md`](2026-04-11-roadmap.md) (the strategic phase index).
**Currently working toward:** **M1.5 — Indoor world feels right.** The
building/cellar demo is DONE + user-gated, but M1.5 was EXTENDED 2026-06-13
to include **dungeon support (full Phase G.3)** — dungeons don't work yet
(terrain-less dungeon landblocks aren't supported by the streaming/load
pipeline; issue #133). M1.5 does NOT land until dungeons work. M2 stays
deferred. (Correction: M1.5 was briefly marked landed 2026-06-13; the user
reverted that — the indoor world isn't done while dungeons are broken.)
building/cellar demo is DONE + user-gated. M1.5 was EXTENDED 2026-06-13 to
include **dungeon support (full Phase G.3)** — dungeons initially didn't
work at all (issue #133), but that premise was refuted at design time
(commit `90786c19`: the dungeon LandBlock is flat-terrain and streams via
the existing pipeline), and G.3 has since **SHIPPED**: dungeons render,
stream, teleport-in, collide, light, and their doors work — each piece
individually user-gated (#133/#137/#95/#79/#93/#80 all CLOSED). M1.5's
dungeon-demo scenario is functionally met; M1.5 stays 🔵 ACTIVE /
not-yet-landed, awaiting ONE recorded end-to-end dungeon round-trip user
gate. The sole remaining live-code residual is the far-town teleport-OUT
arrival cascade (**#145-residual, REOPENED** — capture-harness-first). M2
stays deferred.
---
@ -193,19 +199,25 @@ close range and the player sees "You pick up the X." in chat.
### M1.5 — "Indoor world feels right" — 🔵 ACTIVE (building/cellar demo DONE; EXTENDED 2026-06-13 to include dungeon support / Phase G.3)
**EXTENDED 2026-06-13 — dungeons pulled into M1.5 scope.** The
building/cellar demo (below) is DONE + user-gated, but attempting the
dungeon demo surfaced that dungeons don't work AT ALL: terrain-less
dungeon landblocks aren't supported anywhere in the streaming/load/
render/physics pipeline (`LandblockLoader.Load` returns null with no
`LandBlock` terrain record; the streamer fails with no terrain mesh; the
teleport snap Resolves before hydration — issue #133). The user decided
M1.5 is NOT done while the indoor world excludes dungeons, and chose the
**EXTENDED 2026-06-13 — dungeons pulled into M1.5 scope; G.3 SHIPPED.** The
building/cellar demo (below) is DONE + user-gated. Attempting the dungeon
demo initially surfaced that dungeons didn't work AT ALL — terrain-less
dungeon landblocks appeared unsupported anywhere in the streaming/load/
render/physics pipeline (`LandblockLoader.Load` returning null, no terrain
mesh, teleport snap Resolving before hydration — issue #133). That premise
was refuted at design time (commit `90786c19`: the dungeon `LandBlock` is
flat-terrain and streams via the existing pipeline). The user chose the
FULL Phase G.3 scope (dungeon streaming + portal-space loading screen +
multi-landblock dungeon LOD + `PlayerTeleport` handling). Design in
progress (`docs/superpowers/specs/` — dungeon-support spec). M1.5 lands
when: building/cellar demo (DONE) + dungeon demo (enter via portal,
navigate 3-5 rooms, walls block, smooth transitions) both pass.
multi-landblock dungeon LOD + `PlayerTeleport` handling), and it has since
**SHIPPED**: teleport-into-dungeon (G.3a hold-until-hydrate FSM closes
#133), dungeon collision (#137 CLOSED), the #95 portal-graph visibility
blowup (RESOLVED), dungeon doors (#187/#188), and A7 dungeon lighting
(#79/#93/#80/#154, all CLOSED). M1.5's dungeon-demo scenario (enter via
portal, navigate 3-5 rooms, walls block, smooth transitions) is
functionally met; M1.5 now awaits ONE recorded end-to-end dungeon
round-trip user gate. The sole remaining live-code residual is the
far-town teleport-OUT arrival cascade (**#145-residual, REOPENED** — see
below).
**Building/cellar demo — DONE + user-gated.** The indoor world reads as
solid. Across the
@ -222,8 +234,8 @@ closed); cell transitions are smooth (the doorway "flap" family killed —
#119/#128, #112, #113, #124, #129/#130/#131/#132, #108-residual, #127 all
closed with user gates). The #90-stickiness + `TryFindIndoorWalkablePlane`
synthesis workarounds were removed by A6.P4. Remaining feel-level debt is
tracked (#116 slide-response, partial Ghidra fix shipped; A7 indoor
lighting fidelity not yet done — folded forward).
tracked (#116 slide-response, partial Ghidra fix shipped). A7 indoor/
dungeon lighting fidelity CLOSED 2026-07-09 (#79/#93/#80/#154).
**Interleaved parity tracks (reconciled 2026-07-04 — NOT milestones).** Two
work streams have run alongside M1.5, both driven by the user's live
@ -259,16 +271,21 @@ as ad-hoc rework. Rule 2's freeze still binds all NON-MP work. MP runs in
dedicated side-track sessions; the M1.5 critical path wins every conflict,
and MP4 is hard-queued behind #137.
**Still OPEN in M1.5 — dungeon support (Phase G.3, issue #133).** Dungeons
don't work: the streaming/load/render/physics pipeline was built entirely
around outdoor landblocks (terrain + scattered buildings) and has no path
for terrain-less indoor-only dungeon landblocks. Confirmed gaps:
`LandblockLoader.Load` returns null with no `LandBlock` record; the
streamer fails with no terrain mesh; the teleport-arrival snap Resolves
before the dungeon hydrates → places the player in the old frame over
ocean. Full G.3 scope chosen by the user 2026-06-13 (streaming + portal-
space loading screen + multi-landblock LOD + `PlayerTeleport` handling).
Spec under `docs/superpowers/specs/`.
**Dungeon support (Phase G.3, issue #133) — SHIPPED.** The original
premise here (terrain-less dungeon landblocks unsupported anywhere in the
streaming/load/render/physics pipeline) was refuted at design time
(commit `90786c19`: the dungeon `LandBlock` is flat-terrain and streams
via the existing pipeline). Full G.3 scope (streaming + portal-space
loading screen + multi-landblock LOD + `PlayerTeleport` handling) has
shipped: teleport-into-dungeon (G.3a hold-until-hydrate FSM,
`7947d7a`/`2ce5e5c8`/`47ae237e`) closed #133; dungeon collision closed
#137 (`0efa7ed2`); the #95 portal-graph visibility blowup RESOLVED
(9.1M→~39k instances, `a40c38e8`); dungeon doors shipped (#187
`e2e285b8`, #188 `3284dd0a`); A7 dungeon lighting closed
(#79/#93/#80/#154, `44cced71`/`d275ed55`/`9ebb2060`). Remaining: one
recorded end-to-end dungeon round-trip user gate, plus the far-town
teleport-OUT arrival cascade residual (**#145-residual, REOPENED** —
capture-harness-first).
---
@ -302,8 +319,9 @@ M1.5's planned phases (A6 + A7) are unaffected.
"enter the Holtburg Sewer dungeon" but that location doesn't exist on
this ACE server (discovered during A6.P1 capture session). Additionally,
A6.P1 surfaced **issue #95** (portal-graph visibility blowup) which makes
ANY dungeon visually unusable on entry. Demo scenario revised in two
parts:
ANY dungeon visually unusable on entry. **[SUPERSEDED — #95 RESOLVED
(9.1M→~39k instances, `a40c38e8`); dungeons ship; see M1.5 section
above.]** Demo scenario revised in two parts:
**Building/cellar demo (achievable after A6.P3 lands):**
Walk into the Holtburg inn, climb to the 2nd floor, walk around without
@ -317,7 +335,8 @@ through. Throughout:
artifacts, static decorations participate in env lighting.
**Dungeon demo (blocked on issue #95 fix; promote to post-M1.5 if
the visibility bug isn't addressed in M1.5 scope):**
the visibility bug isn't addressed in M1.5 scope):** **[SUPERSEDED — #95
RESOLVED, dungeons ship; see M1.5 section above.]**
Enter any dungeon via portal (substitute for "Holtburg Sewer"). Navigate
~3-5 rooms without rendering corruption (no see-through-walls, no
other-dungeons-rendered-inside). Walls block, stairs work, items block,
@ -352,7 +371,7 @@ patch.
- **#83** — Indoor multi-Z walking broken (cellars, 2nd floors, intermittent falling-stuck)
- **#88** — Indoor static objects vibrate (suspected sub-step state corruption — A6.P2 maps to Finding 2 family)
- **#90** — CellId ping-pong (workaround in place; remove during A6.P4)
- **#95** — Portal-graph visibility blowup (filed 2026-05-21; **blocks the dungeon half of the M1.5 demo** but is NOT in A6 scope; either add a dedicated phase inside M1.5 to fix it OR promote the dungeon demo to post-M1.5)
- **#95** — Portal-graph visibility blowup (filed 2026-05-21; **blocks the dungeon half of the M1.5 demo** but is NOT in A6 scope; either add a dedicated phase inside M1.5 to fix it OR promote the dungeon demo to post-M1.5) **[SUPERSEDED — RESOLVED, 9.1M→~39k instances, `a40c38e8`; dungeons ship; see M1.5 section above.]**
- **L-indoor** — Lighting indoors broken (file as new # during M1.5 kickoff)
- **L-spotlight** — Items projecting spotlight on walls (file as new # during M1.5 kickoff)
- **Stairs walk-through** — captured + characterized by A6.P2 (Finding 2 family); fix in A6.P3