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>
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:
- AUTONOMOUS PREP: wire nothing yet. Re-read the EnvCell collision path
(
CellTransit, the door apparatus,ShadowObjectRegistryper-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. - 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. - 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.