# Copy-paste prompt — next session for L.2d brainstorm **This file is meant to be pasted verbatim into a new Claude Code session.** It assumes the next session starts on a freshly-merged `main` with the L.2a-slice-1/2/3 work already landed. --- ## Prompt to paste > You are picking up Phase L.2d (Movement & Collision Conformance — Shape Fidelity: Sphere / CylSphere / Building Objects) for the acdream project. > > The previous session shipped L.2a-slice-1/2/3 (resolver + cell-transit probes + entity attribution plumbing) and used the probes to settle the L.2d sub-direction call: **the wall blocking us at building doorways is a landblock-baked static (`0xA9B47900` for the Holtburg test building), NOT a door entity.** The fix is to port `CBuildingObj` + per-cell walkability so the building's baked collision mesh has walkable openings where doorways are. Door-state-toggle is NOT the issue. > > Before writing any code: > > 1. **Read the handoff:** `docs/research/2026-05-12-l2a-shipped-l2d-handoff.md` — full context, evidence, file pointers. > 2. **Read the plan-of-record:** `docs/plans/2026-04-29-movement-collision-conformance.md` — focus on L.2d, and notice that L.2c already shipped most of its work + L.2a is now ~75% covered. > 3. **Read the named-retail anchors** (grep `docs/research/named-retail/acclient_2013_pseudo_c.txt` by `class::method`): > - `CCellStruct::point_in_cell` > - `CCellStruct::sphere_intersects_cell` > - `CCellStruct::box_intersects_cell` > - `CBuildingObj::find_building_collisions` > - `CObjCell::find_cell_list` > 4. **Read current code:** > - `src/AcDream.Core/Physics/TransitionTypes.cs:1386` — `FindObjCollisions` (where building objects currently flow through generic BSP path). > - `src/AcDream.Core/Physics/PhysicsDataCache.cs` — what building-specific data we already load vs ignore. > 5. **Cross-reference WorldBuilder** at `references/WorldBuilder/` for any building-cell handling we can crib. > > Your deliverable for this session: > > 1. A brainstorm using `superpowers:brainstorming` if scope is unclear, then > 2. A design spec at `docs/superpowers/specs/2026-05-13-l2d-cbuildingobj-collision-design.md` covering: > - Named-retail anchors with line numbers from the PDB pseudo-C > - Component breakdown (CObjCell port, CBuildingObj port, integration with FindObjCollisions) > - Conformance test plan (synthetic + real-DAT fixtures at known Holtburg buildings) > - Slice plan (3-5 commits, each conformance-cited) > - Acceptance criteria > 3. After spec approval, implement slice 1. > > **Before implementation,** verify the L.2a probes still work — relaunch with `ACDREAM_PROBE_RESOLVE=1 ACDREAM_PROBE_CELL=1 ACDREAM_DEVTOOLS=1`, walk up to the Holtburg test doorway, confirm `[resolve]` lines still show `obj=0xA9B4xxxx` for the wall hits. (Reproduction recipe in the handoff doc's last section.) > > Side note: **8 pre-existing test failures** exist on main (verified by stash+rerun in the prior session, none from L.2a slice work). Most touch movement/physics code we're about to evolve. **Triage them before sinking deep L.2d effort** — a recent baseline regression in this area could waste hours of L.2d work. --- ## Reading order if you only have 10 minutes 1. `docs/research/2026-05-12-l2a-shipped-l2d-handoff.md` — TL;DR + Three findings sections (5 min). 2. `docs/plans/2026-04-29-movement-collision-conformance.md` §L.2d (2 min). 3. `src/AcDream.Core/Physics/TransitionTypes.cs:1386-1543` — current `FindObjCollisions` body (3 min). From there, decide whether to brainstorm or jump straight to the spec.