acdream/docs/research/2026-07-05-m15-dungeon-pickup-prompt.md
Erik 67c3357246 docs: M1.5 dungeon-track pickup prompt for the next session
Work order: #137 collision (oracle-first, repro before fix) -> #153
apparatus-first (hold shape needs explicit user approval per the
no-holds feedback) -> #138 acceptance run -> A7 lighting closer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 14:02:35 +02:00

3.4 KiB

Pickup prompt — M1.5 dungeon track: #137 collision first (paste into a fresh session)

Read claude-memory/project_physics_collision_digest.md FIRST (the collision SSOT + DO-NOT-RETRY table — binding), then the ISSUES entries for #137, #153, #138 (in that order), plus the prior-art closed fixes #150 (ethereal door step-down skip), #151 (portal-less wall shells), #152 (building-cache re-base). Then work the track below.

Context: the R5 movement-manager arc is DONE and merged — main == claude/vigorous-joliot-f0c3ad @ aa734f34 (facade close-out: docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md). M1.5's remaining critical path is the dungeon track: #137 dungeon collision → #153/#138 teleport-out residuals → A7 dungeon lighting (A7 last — its 5-dungeon-site capture protocol needs dungeons walkable first).

Slice 1 — #137 (dungeon collision at doors + wall openings), oracle-first:

  1. AUTONOMOUS PREP: wire nothing yet. Re-read the EnvCell collision path (CellTransit, the door apparatus, ShadowObjectRegistry per-cell registration — A6.P4 architecture) and check whether the #150 ethereal step-down skip (TransitionTypes.cs, retail pc:276795-276806) already covers EnvCell dungeon doors or only building doors. Grep named-retail before any fresh decompilation.
  2. REPRO (needs the user in-world): the 0x0007 dungeon, with ACDREAM_PROBE_RESOLVE=1 (+ ACDREAM_CAPTURE_RESOLVE=<path> if a replay diff is warranted). Characterize per site: which door / which opening, expected vs actual, open-vs-closed state. The issue text says symptoms are NOT yet characterized — do not fix ahead of the repro.
  3. Fix per the digest workflow (retail decomp is the oracle; ACE second). Acceptance: doors block/pass per open/closed state, wall openings pass, solid walls block — matching retail in 0x0007. Register row per deviation, same commit.

Slice 2 — #153 (portals only work once / teleport-onto-unstreamed-edge runaway), apparatus-first: the issue is REOPENED with a narrowed residual (arrival on a NOT-yet-streamed landblock NEAR AN EDGE → cell-march + Z free-fall + garbage outbound cell). The issue text itself says DO NOT guess-patch — the original #145 burned 5 attempts. Build the capture + anchor/guard diagnostic at the crossing first. ⚠️ The issue's "likely fix shape" is a streaming-gap HOLD — but the user REVERTED a previous teleport hold as "shaky and bandaid" (feedback_no_holds_for_slow_foundation). If the evidence really does point at a hold (as retail's synchronous-load equivalent), STOP and get explicit user approval with the retail anchor in hand; do not ship it on your own authority.

Then: the #138 acceptance run (portal out → world + objects + avatar all present across REPEATED round-trips, collision working — its component fixes are shipped; #151/#152 closed the wall residuals; what's left is the gate), and A7 lighting (#154 dungeon-dim, #142 windowed interiors, #143 portal swirl, #140 Fix D) as the M1.5 closer.

Gotchas: visual gates + repro sessions need the user (plan autonomous decomp/probe prep around their availability); PowerShell Tee logs are UTF-16 (tr -d '\000' before grep); the user manages client lifecycle (plain dotnet run, graceful close, ask if a rebuild is locked); probes: ACDREAM_PROBE_RESOLVE / ACDREAM_PROBE_CELL / ACDREAM_CAPTURE_RESOLVE / ACDREAM_PROBE_ENT are all wired and DebugPanel-toggleable.