milestone: re-open M1.5 — dungeon support (full G.3) pulled into scope; M2 re-deferred
Correction to 1bf037a. The user reverted the M1.5 landing: the indoor
world isn't done while dungeons are completely broken. Attempting the
dungeon demo revealed it's not a single bug (#133) but a whole-feature
gap — terrain-less indoor-only dungeon landblocks aren't supported
anywhere in the streaming/load/render/physics pipeline:
- LandblockLoader.Load returns null when there's no LandBlock terrain
record (dungeons have none) -> the dungeon never loads.
- LandblockStreamer fails when the terrain mesh build returns null
(dungeons have no terrain mesh).
- The teleport-arrival snap Resolves before the dungeon hydrates ->
places the player in the old Holtburg frame over ocean.
The user chose the FULL Phase G.3 scope (dungeon streaming + portal-space
loading screen + multi-landblock LOD + PlayerTeleport handling) and
pulled it into M1.5. M1.5 lands only when BOTH the building/cellar demo
(done) and the dungeon demo (enter via portal, navigate 3-5 rooms, walls
block, smooth transitions) pass. M2 (CombatMath) re-deferred.
Currently brainstorming the dungeon-support design (spec ->
docs/superpowers/specs/). Docs corrected: milestones (M1.5 ACTIVE +
extended, M2 DEFERRED, currently-working-toward -> M1.5), CLAUDE.md
current-state, ISSUES.md #133 (G.3 pulled into M1.5).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
1bf037a1c9
commit
9c2ceb2336
3 changed files with 63 additions and 39 deletions
23
CLAUDE.md
23
CLAUDE.md
|
|
@ -108,17 +108,18 @@ movement queries.
|
||||||
|
|
||||||
## Current state
|
## Current state
|
||||||
|
|
||||||
**Currently working toward: M2 — Kill a drudge** (M1.5 — Indoor world
|
**Currently working toward: M1.5 — Indoor world feels right.** The
|
||||||
feels right — LANDED 2026-06-13 on the building/cellar demo; the holistic
|
building/cellar demo is DONE + user-gated, but M1.5 was EXTENDED 2026-06-13
|
||||||
Option-A render port + A6.P4 physics shipped and user-gated). **First M2
|
to include **dungeon support (full Phase G.3)** — dungeons don't work at
|
||||||
target: `CombatMath.ComputeDamage`** (port-ready, ACE oracle; combat-math
|
all: terrain-less dungeon landblocks aren't supported by the streaming/
|
||||||
research memo). Drudges spawn outdoors for the demo — dungeon access is
|
load/render/physics pipeline (`LandblockLoader.Load` null with no
|
||||||
Phase G.3 (M4). **Dungeon teleport is BROKEN (#133):** teleport-into-
|
`LandBlock`; streamer needs a terrain mesh; teleport snaps before hydration
|
||||||
dungeon snaps before the dungeon streams in → lands in the old frame over
|
→ ocean — issue **#133**). M1.5 does NOT land until dungeons work; M2
|
||||||
ocean; the M1.5 dungeon demo is deferred to G.3. Recent closes (2026-06-12/13):
|
(CombatMath) deferred. Currently brainstorming the G.3 dungeon-support spec.
|
||||||
#119/#128, #112, #113, #124, #129/#130/#131/#132, UN-2, #108-residual,
|
Recent closes (2026-06-12/13): #119/#128, #112, #113, #124,
|
||||||
#127, #125; #116 partial (Ghidra threshold fix). Keep this paragraph ≤5
|
#129/#130/#131/#132, UN-2, #108-residual, #127, #125; #116 partial (Ghidra
|
||||||
lines + pointers — detail lives in the docs below, NOT here.
|
threshold fix). Keep this paragraph ≤5 lines + pointers — detail in the
|
||||||
|
docs below, NOT here.
|
||||||
|
|
||||||
For canonical state, read in this order:
|
For canonical state, read in this order:
|
||||||
- [`docs/plans/2026-05-12-milestones.md`](docs/plans/2026-05-12-milestones.md) — milestone targets + freeze list per milestone
|
- [`docs/plans/2026-05-12-milestones.md`](docs/plans/2026-05-12-milestones.md) — milestone targets + freeze list per milestone
|
||||||
|
|
|
||||||
|
|
@ -48,11 +48,13 @@ Copy this block when adding a new issue:
|
||||||
|
|
||||||
## #133 — Teleport into a dungeon snaps the player BEFORE the dungeon landblock streams in → lands at the old landblock's frame (ocean), not the dungeon
|
## #133 — Teleport into a dungeon snaps the player BEFORE the dungeon landblock streams in → lands at the old landblock's frame (ocean), not the dungeon
|
||||||
|
|
||||||
**Status:** OPEN — promote to **Phase G.3** (Dungeon streaming + portal
|
**Status:** OPEN — promoted to **Phase G.3** (Dungeon streaming + portal
|
||||||
space + `PlayerTeleport` handling; M4 per the milestones doc, line 360).
|
space + `PlayerTeleport` handling), **PULLED INTO M1.5** (user decision
|
||||||
This is the M1.5 dungeon-demo blocker; the demo is deferred to G.3 (user
|
2026-06-13: the indoor world isn't done while dungeons are broken; full
|
||||||
decision 2026-06-13). Does NOT block M2 combat (drudges can spawn
|
G.3 scope chosen). Brainstorming the spec → `docs/superpowers/specs/`.
|
||||||
outdoors).
|
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).
|
||||||
**Severity:** HIGH (any far/dungeon teleport is unusable)
|
**Severity:** HIGH (any far/dungeon teleport is unusable)
|
||||||
**Filed:** 2026-06-13 (M1.5 dungeon-demo gate attempt — meeting-hall portal)
|
**Filed:** 2026-06-13 (M1.5 dungeon-demo gate attempt — meeting-hall portal)
|
||||||
**Component:** physics/streaming — teleport-arrival snap vs async landblock hydration
|
**Component:** physics/streaming — teleport-arrival snap vs async landblock hydration
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,13 @@
|
||||||
|
|
||||||
**Status:** Living document. Created 2026-05-12.
|
**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).
|
**Sits above:** [`docs/plans/2026-04-11-roadmap.md`](2026-04-11-roadmap.md) (the strategic phase index).
|
||||||
**Currently working toward:** **M2 — Kill a drudge.** (M1.5 — Indoor world
|
**Currently working toward:** **M1.5 — Indoor world feels right.** The
|
||||||
feels right — LANDED 2026-06-13 on the building/cellar demo; the dungeon
|
building/cellar demo is DONE + user-gated, but M1.5 was EXTENDED 2026-06-13
|
||||||
half deferred to Phase G.3 via issue #133. See the M1.5 section.)
|
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.)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -187,9 +191,24 @@ close range and the player sees "You pick up the X." in chat.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### M1.5 — "Indoor world feels right" — ✅ LANDED 2026-06-13 (building/cellar demo; dungeon half → Phase G.3 / issue #133)
|
### M1.5 — "Indoor world feels right" — 🔵 ACTIVE (building/cellar demo DONE; EXTENDED 2026-06-13 to include dungeon support / Phase G.3)
|
||||||
|
|
||||||
**M1.5 LANDED 2026-06-13.** The indoor world reads as solid. Across the
|
**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
|
||||||
|
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.
|
||||||
|
|
||||||
|
**Building/cellar demo — DONE + user-gated.** The indoor world reads as
|
||||||
|
solid. Across the
|
||||||
2026-06 sessions the holistic retail-faithful render port (Option A: ONE
|
2026-06 sessions the holistic retail-faithful render port (Option A: ONE
|
||||||
`DrawInside(viewer_cell)`, no inside/outside branch — BR-2..BR-7 / T1..T6)
|
`DrawInside(viewer_cell)`, no inside/outside branch — BR-2..BR-7 / T1..T6)
|
||||||
shipped and was user-gated, and the indoor physics/membership family was
|
shipped and was user-gated, and the indoor physics/membership family was
|
||||||
|
|
@ -204,14 +223,18 @@ closed); cell transitions are smooth (the doorway "flap" family killed —
|
||||||
closed with user gates). The #90-stickiness + `TryFindIndoorWalkablePlane`
|
closed with user gates). The #90-stickiness + `TryFindIndoorWalkablePlane`
|
||||||
synthesis workarounds were removed by A6.P4. Remaining feel-level debt is
|
synthesis workarounds were removed by A6.P4. Remaining feel-level debt is
|
||||||
tracked (#116 slide-response, partial Ghidra fix shipped; A7 indoor
|
tracked (#116 slide-response, partial Ghidra fix shipped; A7 indoor
|
||||||
lighting fidelity not yet done — folded forward). **The dungeon demo is the
|
lighting fidelity not yet done — folded forward).
|
||||||
one piece NOT landed here:** attempting it (2026-06-13, meeting-hall portal)
|
|
||||||
surfaced issue **#133** — teleport-into-a-dungeon snaps the player before
|
**Still OPEN in M1.5 — dungeon support (Phase G.3, issue #133).** Dungeons
|
||||||
the dungeon landblock streams in, landing them in the old (Holtburg) frame
|
don't work: the streaming/load/render/physics pipeline was built entirely
|
||||||
over ocean. That is the **Phase G.3** machinery (dungeon streaming +
|
around outdoor landblocks (terrain + scattered buildings) and has no path
|
||||||
`PlayerTeleport` handling), an M4 concern; the dungeon demo is correctly
|
for terrain-less indoor-only dungeon landblocks. Confirmed gaps:
|
||||||
promoted there rather than blocking M1.5. Drudges for M2 can spawn
|
`LandblockLoader.Load` returns null with no `LandBlock` record; the
|
||||||
outdoors, so M2 is unblocked.
|
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/`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -325,24 +348,22 @@ unblocks that).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### M2 — "Kill a drudge" — 🔵 ACTIVE (started 2026-06-13, after M1.5 landed)
|
### M2 — "Kill a drudge" — ⏸ DEFERRED until M1.5 lands (incl. dungeons)
|
||||||
|
|
||||||
**Demo scenario:** Equip a sword. Walk to a drudge. Swing. See "You hit
|
**Demo scenario:** Equip a sword. Walk to a drudge. Swing. See "You hit
|
||||||
Drudge for 12 slashing damage (87%)" in chat. Watch the swing animation
|
Drudge for 12 slashing damage (87%)" in chat. Watch the swing animation
|
||||||
play. Drudge dies, drops loot. Pick up the loot. Open the inventory panel
|
play. Drudge dies, drops loot. Pick up the loot. Open the inventory panel
|
||||||
and see it.
|
and see it.
|
||||||
|
|
||||||
**Dungeon note:** drudges live in dungeons in retail, but the M2 demo does
|
**First port target when M2 starts (per the M2 combat-math research memo,
|
||||||
NOT require dungeon streaming (#133 / Phase G.3) — spawn a drudge outdoors
|
`docs/research/2026-06-04-combat-math-deep-dive.md`):**
|
||||||
near Holtburg for the combat loop. Dungeon access lands later with G.3 (M4).
|
|
||||||
|
|
||||||
**First port target (per the M2 combat-math research memo,
|
|
||||||
`memory/research/2026-06-04-combat-math-deep-dive.md`):**
|
|
||||||
`CombatMath.ComputeDamage` — damage-calc + armor-resists are port-ready
|
`CombatMath.ComputeDamage` — damage-calc + armor-resists are port-ready
|
||||||
(ACE is the high-confidence oracle; two known scaffold bugs in
|
(ACE is the high-confidence oracle; two known scaffold bugs in
|
||||||
`CombatModel.cs` identified). Hit-roll is well-documented client-side;
|
`CombatModel.cs` identified — additive attributeBonus + subtractive armor).
|
||||||
the server sigmoid/crit + weapon-timing (the x87 `GetPowerBarLevel`
|
Hit-roll is well-documented client-side; the server sigmoid/crit +
|
||||||
artifact) come after.
|
weapon-timing (the x87 `GetPowerBarLevel` artifact) come after. NOTE: M2
|
||||||
|
was briefly started 2026-06-13 then re-deferred when M1.5 was extended to
|
||||||
|
include dungeons.
|
||||||
|
|
||||||
**Phases to ship:**
|
**Phases to ship:**
|
||||||
- **F.2 (panels)** — Inventory panel reading `ItemRepository` (data already
|
- **F.2 (panels)** — Inventory panel reading `ItemRepository` (data already
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue