docs(roadmap+milestones): mark A6.P1/A6.P2 shipped; update M1.5 demo

A6.P1 (cdb probe spike) + A6.P2 (analysis report) both SHIPPED this
session. Updated:

  docs/plans/2026-04-11-roadmap.md — M1.5 phase block now shows A6.P1
  + A6.P2 SHIPPED with commit refs; A6.P3 entry expanded with the
  Finding-2-first sequencing recommendation from A6.P2; A6.P4 entry
  notes the original "Holtburg Sewer end-to-end" acceptance walk is
  unreachable (sewer doesn't exist).

  docs/plans/2026-05-12-milestones.md — M1.5 demo scenario split into
  building/cellar half (achievable post-A6.P3) + dungeon half (blocked
  on issue #95 visibility blowup; promote to post-M1.5 if #95 isn't
  fixed in scope). Issue list updated: added #95 + indoor sling-out
  (new from scen4); marked stairs/2nd-floor/cellar as characterized by
  A6.P2 Finding 2 family.

  CLAUDE.md — Currently-working-toward block now points at A6.P3 as
  the active phase. A6.P1 + A6.P2 ship noted with the findings doc
  pointer. Demo-scenario note updated to reflect the sewer + #95
  reality. Issues-in-scope updated.

Also includes a 1-line trailing-prompt addition to scen3 + scen4
retail.log files (cdb wrote one more `0:000>` after the kill that
landed after the original capture commits).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-21 21:17:21 +02:00
parent 184933d796
commit 90fbdc02df
5 changed files with 97 additions and 44 deletions

View file

@ -726,16 +726,25 @@ render identically to pre-O. Spec:
[`docs/superpowers/specs/2026-05-21-phase-o-dat-path-unification-design.md`](docs/superpowers/specs/2026-05-21-phase-o-dat-path-unification-design.md).
**Currently working toward: M1.5 — Indoor world feels right** (resumed
from 2026-05-20 baseline after Phase O ship). Demo scenario: enter the
Holtburg Sewer through the in-town portal, navigate through (walls
block, stairs work, items block, lighting reads correctly), exit back
to town. 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), L-indoor,
L-spotlight, stairs, 2nd-floor, cellar, and the
`TryFindIndoorWalkablePlane` synthesis removal. **M2 ("Kill a drudge")
is deferred until M1.5 lands.** Full M1.5 writeup at the corresponding
block in `docs/plans/2026-05-12-milestones.md`.
from 2026-05-20 baseline after Phase O ship). **A6.P1 + A6.P2 SHIPPED
2026-05-21** (this session). Current A6 phase: **A6.P3 — Fix BSP
correction paths.** Per A6.P2 sequencing: Finding 2 first (ContactPlane
resynthesis blowup — primary M1.5 root cause; suspect site
`Transition.FindEnvCollisions` indoor branch). Re-run scen1-5 captures
after PR. Then Finding 3 (cell-resolver sling-out from scen4; remove #90
workaround in same PR). Findings doc:
[`docs/research/2026-05-21-a6-cdb-capture-findings.md`](docs/research/2026-05-21-a6-cdb-capture-findings.md).
Original demo scenario (Holtburg Sewer end-to-end) is unreachable: sewer
doesn't exist on this server, and **issue #95** (portal-graph visibility
blowup, discovered in A6.P1 scen5) blocks any substitute dungeon. Revised
M1.5 demo split into building/cellar half (achievable after A6.P3) +
dungeon half (blocked on #95). Issues in scope: #80, #81, #83, #88, #90
(workaround removal), **#95** (visibility blowup; not A6 scope but
blocks dungeon demo), L-indoor, L-spotlight, stairs, 2nd-floor, cellar,
indoor sling-out (new from scen4), and the `TryFindIndoorWalkablePlane`
synthesis removal. **M2 ("Kill a drudge") is deferred until M1.5
lands.** Full M1.5 writeup at the corresponding block in
`docs/plans/2026-05-12-milestones.md`.
**Today's pre-M1.5 baseline (2026-05-20).** Five surgical fixes
shipped to close the user-reported "logged in inside the inn, ran

View file

@ -142,27 +142,55 @@ successfully 2026-04-30 for the steep-roof case. Matching binaries
(acclient.exe v11.4186) + PDB present.
**Sub-pieces (slices):**
- **A6.P1 — cdb probe spike** (~3 days). Build cdb scripts capturing
retail's per-tick state at 9 scenarios:
- 4 building sites: Holtburg inn doorway, inn stairs, inn 2nd floor,
cottage cellar.
- 5 dungeon sites: Holtburg Sewer entry portal, first stair descent,
inter-room portal transition, open central area, dark corridor.
Breakpoints on `set_collide`, `step_sphere_up`, `step_sphere_down`,
`transitional_insert`, `set_contact_plane`, `validate_walkable`.
Mirror with our equivalent probes (`[indoor-bsp]`, `[cp-write]`,
new `[push-back]`).
- **A6.P2 — Analysis report** (~1 day). Quantify the per-call-site
gap. Identify which BSP path(s) over- or under-correct. Output:
13 specific bug findings with retail decomp anchors.
- **A6.P3 — Fix the BSP correction paths** (~35 days). Surgical
fixes informed by A6.P2 data. Likely touches `BSPQuery.AdjustSphereToPlane`,
`AdjustOffsetToPlane`, Path 5 / Path 6 branches, sub-step state
mutation.
- **A6.P4 — Remove workarounds** (~1 day). Revert #90 sphere-overlap
stickiness in `PhysicsEngine.ResolveCellId`. Delete
`Transition.TryFindIndoorWalkablePlane` + its caller in
`FindEnvCollisions`. Verify behavior holds without the workarounds.
- **✓ SHIPPED — A6.P1 — cdb probe spike** (2026-05-21). Built cdb
scripts (`tools/cdb/a6-probe.cdb` v4 with PDB-verified offsets +
hex-bits float output + Python decoder), PowerShell runner with
ASCII encoding, PDB-match verification, and the new
`[push-back]`/`[push-back-disp]`/`[push-back-cell]` acdream probe
family (env `ACDREAM_PROBE_PUSH_BACK=1`). Captured 5 of 9 scenarios
with paired retail+acdream traces (scen1 inn doorway, scen2 inn
stairs, scen3 inn 2nd floor, scen4 cottage cellar, scen5 town
network portal as substitute for Holtburg Sewer entry). Scen6-9
cancelled — Holtburg Sewer doesn't exist on this server, and any
substitute dungeon hits issue #95 (portal-graph visibility blowup)
on portal entry, making physics-only analysis impossible. Five
captures are sufficient evidence for A6.P2. Commits: infra Tasks
1-14 + cdb iterations + scen1 capture (prior session); scen2-5
captures (`a9a427f`, `297d1c5`, `4b5aebc`, `46c6e08`, `35d5c58`)
+ issue #95 filing (`5be784e`) (this session).
- **✓ SHIPPED — A6.P2 — Analysis report** (2026-05-21, `184933d`).
Output: [`docs/research/2026-05-21-a6-cdb-capture-findings.md`](../research/2026-05-21-a6-cdb-capture-findings.md).
Four findings ready for A6.P3: Finding 2 (ContactPlane resynthesis
blowup — 250× to ∞× more CP writes in acdream; primary M1.5 root
cause) is HIGH severity and the highest-confidence single-cause
fix candidate. Finding 1 (dispatcher entry frequency mismatch —
4× to 281× fewer dispatcher entries in acdream) is likely a
secondary effect of Finding 2's missing retention paths. Finding 3
(indoor cell-resolver sling-out captured in scen4) — HIGH severity,
separate fix surface in ResolveCellId/CheckBuildingTransit.
Finding 4 (portal-graph visibility blowup discovered incidentally
in scen5) — filed as issue #95, scope-adjacent, handled outside A6.
Tables 1+2 (per-site push-back delta + path-frequency diff)
deferred to optional A6.P1.5 (entry+exit BPs in cdb script);
not blocking A6.P3. M1.5 symptom coverage matrix shows every
in-scope physics symptom mapped to at least one finding.
- **A6.P3 — Fix the BSP correction paths** (~35 days). Sequencing
per A6.P2 recommendation: Finding 2 first (highest-confidence
single-cause; suspect site is `Transition.FindEnvCollisions` indoor
branch + the retention mechanisms that should keep ContactPlane
across frames). Re-run scen1-5 captures after the PR. If CP-write
ratios drop from ~1,000× to ~1×, Finding 2 is closed and Finding 1
may close as side-effect. Then Finding 3 (cell-resolver stickiness
in ResolveCellId + CheckBuildingTransit; same PR also removes #90
workaround). Issue #95 is NOT in A6.P3 scope.
- **A6.P4 — Remove workarounds + visual verification** (~1 day after
P3). Revert #90 sphere-overlap stickiness in
`PhysicsEngine.ResolveCellId`. Delete `Transition.TryFindIndoorWalkablePlane`
+ its caller in `FindEnvCollisions`. Visual verification at Holtburg
inn + cellar + (if #95 is also fixed by then) a dungeon. The
original A6.P4 plan named "Holtburg Sewer end-to-end" as the
acceptance walk; since the sewer doesn't exist, the M1.5 demo
scenario needs an alternative (see milestones doc).
#### Phase A7 — Indoor lighting fidelity (RenderDoc + retail-decomp driven)

View file

@ -198,18 +198,30 @@ baseline with no code changes lost — Phase O did not touch dat-loading
infrastructure for physics or collision, only the rendering pipeline.
M1.5's planned phases (A6 + A7) are unaffected.
**Demo scenario:** Enter the Holtburg Sewer dungeon through the in-town entry
portal. Navigate to the end (57 rooms with stairs + a multi-Z chamber).
Exit back to town. Throughout the walk:
**Demo scenario (updated 2026-05-21):** The original demo target was
"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:
**Building/cellar demo (achievable after A6.P3 lands):**
Walk into the Holtburg inn, climb to the 2nd floor, walk around without
sling-out or wall-clip. Enter a cottage cellar, descend without falling
through. Throughout:
- Walls block — no walk-through anywhere, indoor or stab-shell.
- Stairs work — ascend + descend without falling through or stuck-in-falling.
- Items block — sarcophagi, urns, decorations, tables, chests, fireplaces.
- Lighting reads correctly — torchlit rooms are bright, dark corridors are
dark, no spotlights projecting onto walls from held items, no upper-floor
dimming bug, static decorations participate in the day-cycle (outside) and
in per-cell environment lighting (inside).
- Items block — furniture, decorations.
- Cell transitions are smooth — no CellId ping-pong, no flicker.
- Lighting reads correctly — torchlit rooms are bright, no spotlight
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):**
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,
lighting correct, cell transitions smooth.
**Why this is its own milestone:** M1 landed walkable + clickable as a
specification (the doorways open, NPCs select, items pick up — all visible
@ -238,14 +250,16 @@ patch.
- **#80** — Camera on 2nd floor goes very dark
- **#81** — Static building stabs don't react to atmospheric lighting
- **#83** — Indoor multi-Z walking broken (cellars, 2nd floors, intermittent falling-stuck)
- **#88** — Indoor static objects vibrate (suspected sub-step state corruption)
- **#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)
- **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** — file as new # during M1.5 kickoff
- **2nd-floor walking** — file as new # during M1.5 kickoff
- **Cellar descent** — file as new # during M1.5 kickoff
- **`TryFindIndoorWalkablePlane`** — synthesis workaround removal (Bug A's original goal, finally unblocked)
- **Stairs walk-through** — captured + characterized by A6.P2 (Finding 2 family); fix in A6.P3
- **2nd-floor walking** — captured + characterized by A6.P2 (Finding 2 — scen3 shows infinite CP-write ratio on flat 2nd-floor walk); fix in A6.P3
- **Cellar descent** — same physics family as stairs; fix in A6.P3
- **Indoor sling-out** (new symptom from A6.P1 scen4) — captured + mapped to A6.P2 Finding 3 (cell-resolver in ResolveCellId / CheckBuildingTransit); fix in A6.P3
- **`TryFindIndoorWalkablePlane`** — synthesis workaround removal (Bug A's original goal, finally unblocked; A6.P4)
**Frozen phases during M1.5:** all M0 + M1 phases stay frozen. Plus
specifically the recently-shipped A4 + #89 + #91 + #92 (today's work) — those

View file

@ -21335,3 +21335,4 @@ ntdll!NtTerminateProcess+0xc:
7748949c c20800 ret 8
0:000>
[BP4] find_collisions hit#10636 collide=Memory access error at '), dwo(poi(@esp+4)+0x174), dwo(@esp+8); .if (@$t0 >= 50000) { qd } .else { gc }'
0:000>

View file

@ -22534,3 +22534,4 @@ ntdll!NtTerminateProcess+0xc:
7748949c c20800 ret 8
0:000>
[BP4] find_collisions hit#12596 collide=Memory access error at '), dwo(poi(@esp+4)+0x174), dwo(@esp+8); .if (@$t0 >= 50000) { qd } .else { gc }'
0:000>