docs(milestones): promote indoor work to M1.5 — primary focus

Continued indoor testing through 2026-05-20 surfaced a deep family
of physics + lighting bugs that span buildings AND dungeons. Today's
session shipped 5 surgical fixes (A4 + #89 + #90 + #91 + #92) that
close the user-visible "walls walk through at Holtburg inn" symptom,
but #90 specifically is a CLAUDE.md-rules workaround (sphere-overlap
stickiness on top of point-only cell containment) added without prior
approval. The underlying issue (BSP push-back distance probably
diverges from retail) hasn't been measured. Plus the umbrella #83
(indoor multi-Z walking) has been open since 2026-05-19 with multiple
aborted fix attempts; plus indoor lighting (#80 + #81 + new #93 +
#94) has been deferred as "M7 polish" but is actually part of the
same indoor-experience problem.

Promoting to a milestone of its own forces the work to be central,
retail-anchored, and complete — not another whack-a-mole patch.

Milestone M1.5 — "Indoor world feels right":
  Demo: enter Holtburg Sewer through the in-town portal, navigate
  through 5-7 rooms with stairs + a multi-Z chamber, exit back to
  town. Walls block. Stairs work. Items block. Lighting reads
  correctly. Cell transitions smooth.

  Phases:
    A6 — Indoor physics fidelity (cdb-driven)
    A7 — Indoor lighting fidelity (RenderDoc + retail-decomp driven)

  Issues in scope: #80, #81, #83, #88, #90 (workaround removal),
  #93 (new lighting umbrella), #94 (held-item spotlight),
  + TryFindIndoorWalkablePlane synthesis removal.

M2 ("Kill a drudge") deferred until M1.5 lands.

This commit updates:
  - docs/plans/2026-05-12-milestones.md (M1.5 block inserted, M2 moved
    to deferred status)
  - docs/plans/2026-04-11-roadmap.md (A6 + A7 sub-pieces detailed)
  - CLAUDE.md (Currently working toward updated to M1.5, M2 paragraph
    marked deferred, M1.5 baseline shipped paragraph added)
  - docs/ISSUES.md (#80, #81, #83, #88, #90 tagged M1.5 scope;
    new #93 indoor lighting umbrella + #94 held-item spotlight filed)
  - docs/research/2026-05-21-open-items-pickup-prompt.md (landscape
    table reorganized around M1.5 phases)

A6 + A7 specs to be drafted in the next session(s).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-21 10:32:24 +02:00
parent 23ab17362a
commit 6d18d879a2
5 changed files with 272 additions and 26 deletions

View file

@ -203,7 +203,7 @@ matching torch-light pools.
## #80 — Camera on 2nd floor goes very dark
**Status:** OPEN
**Status:** OPEN — **M1.5 scope (A7 lighting fidelity)**
**Severity:** MEDIUM
**Filed:** 2026-05-19
**Component:** lighting
@ -232,7 +232,7 @@ ground floor; transition is not abrupt.
## #81 — Static building stabs don't react to atmospheric lighting changes
**Status:** OPEN
**Status:** OPEN — **M1.5 scope (A7 lighting fidelity)**
**Severity:** MEDIUM
**Filed:** 2026-05-19
**Component:** lighting, rendering
@ -284,8 +284,8 @@ slopes shows matching shading.
## #83 — Indoor multi-Z walking broken (cellars, 2nd floors, intermittent falling-stuck)
**Status:** OPEN — foundation work landed 2026-05-19, root-cause fix deferred to a follow-up investigation phase
**Severity:** HIGH (blocks vertical indoor traversal + degrades single-floor cases)
**Status:** OPEN — **M1.5 scope (A6 physics fidelity, primary umbrella issue)**. Foundation work landed 2026-05-19; root-cause fix scoped to A6.P1-P3 cdb-driven investigation.
**Severity:** HIGH (blocks vertical indoor traversal + degrades single-floor cases). M1.5 acceptance depends on this closing.
**Filed:** 2026-05-19
**Component:** physics, movement, resolver
@ -472,7 +472,7 @@ propagates through portal connectivity data in `CEnvCell`.
## #88 — Indoor static objects vibrate (bookshelves, open furnaces)
**Status:** OPEN
**Status:** OPEN — **M1.5 scope (A6 physics — suspected sub-step state corruption family)**
**Severity:** MEDIUM (visual jitter; doesn't block gameplay)
**Filed:** 2026-05-19
**Component:** rendering, animation
@ -511,8 +511,8 @@ propagates through portal connectivity data in `CEnvCell`.
## #90 — Cell-id ping-pong at indoor doorway threshold
**Status:** OPEN
**Severity:** HIGH (blocks visible value of Phase A4 multi-cell BSP iteration; user-reported as "walls walk through everywhere in the inn")
**Status:** OPEN**WORKAROUND in place (sphere-overlap stickiness, commit `4ca3596`). M1.5 scope (A6.P4) — workaround removal after underlying push-back fix.** User-visible symptom resolved 2026-05-20; root cause still to investigate.
**Severity:** HIGH (workaround unblocks indoor visibility for M1.5 baseline; M1.5 acceptance requires the proper fix)
**Filed:** 2026-05-20
**Component:** physics — cell tracking
@ -534,6 +534,46 @@ Retail oracle for cell-id hysteresis: `acclient_2013_pseudo_c.txt:308742-308783`
---
## #93 — Indoor lighting broken (M1.5 lighting umbrella)
**Status:** OPEN — **M1.5 scope (A7 lighting fidelity, primary lighting issue)**
**Severity:** HIGH (degrades indoor experience; M1.5 acceptance depends on it closing)
**Filed:** 2026-05-20
**Component:** lighting, rendering
**Description:** Interior cells (inn, cottages, dungeons — anywhere with `cellLow >= 0x0100`) render with lighting that doesn't match retail. Specific symptoms include #80 (2nd floor goes dark), wrong per-cell ambient, missing cell-internal light sources (torches/lanterns), and outdoor day-cycle bleeding into indoor cells. Umbrella issue covering the family; sub-issues to be filed during A7.L1 probe spike.
**Root cause / status:** Suspected family of bugs in (a) per-cell environment-light tag parsing from the dat (we may not parse `cell.envLightInfo` correctly), (b) cell-light association (which lights belong to which cell), (c) indoor visibility culling for lights, (d) the indoor branch of `GameWindow.UpdateSunFromSky` which uses a flat ambient. Investigation deferred to A7.L1.
**Files:**
- `src/AcDream.App/Rendering/GameWindow.cs:8330+` (`UpdateSunFromSky`, indoor branch with flat ambient)
- `src/AcDream.App/Rendering/Shaders/mesh_modern.frag` (per-pixel light evaluation)
- `references/WorldBuilder/...` (any WB lighting helpers we inherit)
- Retail oracle: grep `Render::lighting_*` in `acclient_2013_pseudo_c.txt`
**Acceptance:** Holtburg inn interior lighting matches retail at the same character position. Holtburg Sewer dungeon torchlight reads correctly per-room. 2nd-floor cells brightness matches ground floor.
---
## #94 — Held items project spotlight on walls
**Status:** OPEN — **M1.5 scope (A7 lighting fidelity)**
**Severity:** MEDIUM (visual fidelity; doesn't block gameplay)
**Filed:** 2026-05-20
**Component:** lighting, rendering
**Description:** Items the player is holding (torches, light-source items) project a spotlight effect onto nearby walls. The spotlight direction is wrong — should be omnidirectional from the item, but appears to project specifically toward wall surfaces.
**Root cause / status:** Per-entity light direction transform. `LightingHookSink` owner-tracking applies an entity-rotation transform that's probably wrong for held-light items — likely passing the entity's facing-direction as the spotlight cone direction when retail's behavior is omnidirectional point-light.
**Files:**
- `src/AcDream.App/Rendering/Vfx/LightingHookSink.cs` (suspected — verify during A7.L1)
- `src/AcDream.App/Rendering/Shaders/mesh_modern.frag` (point-light eval branch)
**Acceptance:** Held-item lighting illuminates nearby surfaces uniformly without directional cone artifacts. Matches retail's behavior at the same item in same scene.
---
**Status:** DONE