docs(p2): session wrap — P1 done, P2 (Path 5 step-up) localized; handoff + plan/CLAUDE.md update
P1 membership is DONE (proven to already match retail; the 0/11 was a cdb capture artifact; merged + pushed). P2 root cause localized to BSP Path 5 grounded step-up: the Path 5 wrappers (DoStepUp=retail step_up, DoStepDown=retail step_down) are verified faithful + reached; the divergence is in the step-up CLIMB (find_walkable/step_sphere_down up-adjust when sp.StepUp=true). - docs/research/2026-06-03-p2-door-stepup-handoff.md: canonical P2 pickup + fresh-session prompt + DO-NOT-RETRY (the wrappers) + the tooling note (xunit swallows Console.WriteLine). - master-plan §3: P1 marked DONE + the (a)-(d) deletes/unifications re-scoped to approval-gated refactors of working code; P2 localization recorded. - CLAUDE.md M1.5: dated 2026-06-03 pointer (P1 done, P2 active, render seam in P3/P4, pickup doc). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f0d37d8955
commit
82045805fd
3 changed files with 220 additions and 3 deletions
|
|
@ -121,8 +121,32 @@ The render rides on stable membership + a stable viewer. Port bottom-up so each
|
|||
**P0 first** because it's the apparatus that makes "verbatim" checkable.
|
||||
|
||||
- **P0 — Conformance apparatus (before any port).** Headless fixtures of the Holtburg cottage neighborhood (cells `0xA9B4003x` + `0xA9B4017x`, the building stab, the cellar) loaded from the real dats. Golden tests that assert *retail* outcomes: `find_cell_list` returns the same cell as a captured retail trace at the threshold; `point_in_cell` matches; the PVS visible-set for a given (cell, eye) matches. Use the existing `ACDREAM_CAPTURE_RESOLVE` + cdb retail traces. **This is how we know a port is verbatim, not vibes.**
|
||||
- **P1 — Membership (A) + uniform collision (B1).** Port `find_cell_list`/`find_transit_cells`/`find_building_transit_cells`/`add_all_outside_cells` intrinsic; delete `CheckBuildingTransit`. Port uniform `find_env_collisions` (no fork). One `point_in_cell` criterion everywhere. **Gate:** stand in the cottage doorway — the cell does NOT ping-pong (`[cell-transit]` DELTA=0 standing still, no `0031↔0170↔0171`); walk in/out is a clean monotonic cell sequence.
|
||||
- **P2 — Door/building-shell collision (B3/B4).** Fix the push-back bounce (the 3 failing Core door tests go green). **Gate:** stand in the doorway — no position oscillation (foot Y stable); walk through cleanly; walls block.
|
||||
- **P1 — Membership (A) — ✅ DONE 2026-06-03 (premise REVERSED).** acdream's membership ALREADY
|
||||
matches retail; the believed "0/11 lag" was a cdb CAPTURE ARTIFACT (`CPhysicsObj::SetPositionInternal`
|
||||
calls `change_cell` at :283456 BEFORE `set_frame` writes `m_position` at :283458, so the golden
|
||||
paired each frame's new cell with the previous frame's position). An aligned re-capture
|
||||
(`tools/cdb/find-cell-list-capture-aligned.cdb`) makes the production gate read **9/9 with NO code
|
||||
change**, and the live visual gate is clean (`[cell-transit]` monotonic, no ping-pong). Both retail
|
||||
and acdream pick with center-only `point_in_cell` on `global_sphere[0]`; commit via
|
||||
`validate_transition` = the `find_cell_list` pick — structurally identical. See
|
||||
`docs/research/2026-06-03-p1-membership-swept-advance-handoff.md` (RESOLVED banner) +
|
||||
`memory/project_retail_membership_criterion.md`. **RE-SCOPED:** the original P1
|
||||
deletes/unifications — (a) demote/remove `ResolveCellId` (already out of the prod per-frame path),
|
||||
(b) unify the forked `find_env_collisions`, (c) replace `CheckBuildingTransit` with intrinsic
|
||||
building stabs in `find_transit_cells`, (d) make the per-cell ObjCell graph the collision authority
|
||||
— are now **approval-gated refactors of WORKING code, NOT bug fixes**; they wait for explicit user
|
||||
approval (CLAUDE.md "don't replace working retail-faithful logic without approval"). One soft spot:
|
||||
outdoor→indoor `0031↔0170` building-entry is live-clean but NOT conformance-locked (rides on the
|
||||
un-ported `CheckBuildingTransit` bridge).
|
||||
- **P2 — Door/building-shell collision (B3/B4) — IN PROGRESS, root cause LOCALIZED 2026-06-03.** The
|
||||
5 failing Core tests localize to **BSP Path 5 grounded step-up**. The wrappers — Path 5 dispatch
|
||||
(Contact branch), the recursion guard, `DoStepUp` (= retail `CTransition::step_up` pc:273099),
|
||||
`DoStepDown` (= retail `step_down` pc:272946) — are verified faithful + correctly reached; the
|
||||
divergence is in the step-up CLIMB itself (`find_walkable`/`step_sphere_down`'s upper-floor find +
|
||||
sphere-up-adjust when `sp.StepUp=true`; retail `BSPTREE::step_sphere_down` pc:323665). Cleanest
|
||||
isolation: `B1_GroundedMover_LowStep_StepsUp` (wall-slides a walkable 0.25 m step). Pickup:
|
||||
`docs/research/2026-06-03-p2-door-stepup-handoff.md`. **Gate:** stand in the doorway — no position
|
||||
oscillation (foot Y stable); walk through cleanly; walls block; step up a low cottage stair (climbs).
|
||||
- **P3 — Camera viewer-cell (C1/C3).** Port `find_visible_child_cell` + the faithful `update_viewer` start-cell/fallbacks. **Gate:** `viewerCell` is stable + correct as the camera orbits across boundaries (no `[flap-cam]` thrash).
|
||||
- **P4 — PView render (D2–D9), the core.** Replace `PortalVisibilityBuilder`/`ProjectToNdc`/`ScreenPolygonClip` with `ConstructView`/`InitCell`/`ClipPortals`/`GetClip`/`AddViewToPortals` + `portal_view_type`/`update_count`; re-port `DrawCells`' seal verbatim. **Gate:** cottage interior sealed (opaque walls, no transparent/flap, no void), sky/terrain through the door only.
|
||||
- **P5 — Outside-looking-in (D8).** `DrawPortal` + `ConstructView(CBldPortal)`. **Gate:** from the street the interior renders through the door (no see-through box).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue