From 57435e912b3d8ac5a06cafedd7b01ac743aee7d2 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 4 Jun 2026 11:43:11 +0200 Subject: [PATCH] =?UTF-8?q?docs(p2):=20fresh-session=20kickoff=20prompt=20?= =?UTF-8?q?=E2=80=94=20principled=20P1=20membership=20fix=20(user-approved?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Appends the copy-paste kickoff prompt for the next session: pursue the principled P1 fix for the cellar-lip cell-resolver ping-pong (demote ResolveCellId / make the swept curr_cell the per-frame membership authority), NOT a stickiness band-aid. Captures the evidence, apparatus, retail anchors, do-not list, and test baseline. Co-Authored-By: Claude Opus 4.8 (1M context) --- ...6-06-04-p2-cellar-corner-stepup-handoff.md | 70 ++++++++++++++++++- 1 file changed, 67 insertions(+), 3 deletions(-) diff --git a/docs/research/2026-06-04-p2-cellar-corner-stepup-handoff.md b/docs/research/2026-06-04-p2-cellar-corner-stepup-handoff.md index 62570079..feacd0d4 100644 --- a/docs/research/2026-06-04-p2-cellar-corner-stepup-handoff.md +++ b/docs/research/2026-06-04-p2-cellar-corner-stepup-handoff.md @@ -104,8 +104,72 @@ LiveCompare_*` (compare against captured-BUGGY-live positions; need re-baseline) `BSPStepUpTests.D4` (airborne Path 6 sliding-normal persistence — separate). App 177 green. ## Do NOT -- Guess a step-up fix without acdream's corner path trace (the #98 saga burned 10+ guesses). +- Guess (the #98 saga burned 10+ speculative fixes) — pin the mechanism with the apparatus first. +- Add a `ResolveCellId` stickiness clamp / suppression flag — the user chose the **principled** + P1 demotion, not a band-aid (no-workarounds rule). - Flip `Apparatus_Grounded_50cmOffCenter` to `Assert.True(blocked)` — it blocks via a synthetic-floor artifact, not a faithful door block. -- Re-investigate B1 (the near-miss gate) or the slide_sphere head-near-miss path — both - shipped + verified. +- Re-investigate B1 (`abbd761`) or slide_sphere (`0935a31`) — both shipped + verified + correct. + +## FRESH-SESSION KICKOFF PROMPT (copy-paste) — user-approved 2026-06-04: principled P1 membership fix + +``` +Continue the VERBATIM retail spatial-pipeline port for acdream. Branch claude/thirsty-goldberg-51bb9b +(do NOT branch/worktree; do NOT push without asking; NEVER git stash/gc). PowerShell on Windows; +launch logs are UTF-16. + +STATE: M1.5 (Indoor world feels right). P2 COLLISION = DONE + shipped: B1 near-miss gate (abbd761) + +slide_sphere head-near-miss (0935a31). Generic step-up climbs; the closed cottage door BLOCKS (no +walkthrough); step-up AT THE CELLAR LIP works (220 successful candidate-landings on the cottage floor). +The remaining intermittent CELLAR-ASCENT WEDGE is RE-DIAGNOSED (live acdream + retail cdb traces) to a +MEMBERSHIP cell-resolver ping-pong — NOT collision. The user APPROVED the PRINCIPLED P1 fix (demote +ResolveCellId / swept curr_cell as per-frame authority), NOT a stickiness band-aid. + +READ FIRST (in order): +1. docs/research/2026-06-04-p2-cellar-corner-stepup-handoff.md — RE-DIAGNOSIS banner + full evidence. +2. memory/project_p2_door_stepup_findings.md — RE-DIAGNOSIS 2026-06-04 entry + shipped fixes + do-not. +3. memory/project_retail_membership_criterion.md — P1 membership context (swept curr_cell pick). +4. docs/superpowers/specs/2026-06-03-verbatim-spatial-pipeline-port-master-plan.md — §A membership + A1–A9, §1 KEEP/REPLACE/DELETE (ResolveCellId -> spawn/teleport seed; per-frame from swept curr_cell), + parked (a)–(d). + +THE FINDING (evidence): at the Holtburg cottage cellar-top lip (3-cell junction), acdream step-up +SUCCEEDS — lands CheckPos on the cottage floor (Z=94.0, normal (0,0,1)) 220/518 times, matching retail. +But committed CurPos never advances (stays on the ramp ~(…,9.70,93.41)); every success is REVERTED +because the cell PING-PONGS every tick (0xA9B40175<->0174<->0171, [cell-transit] reason=resolver) -> the +floor-landing is validated against the wrong cell + rejected. Retail (cdb) is smooth: step_up + contact +plane transitions ramp N.z=0.78 -> flat floor N.z=1.0 (76 landings), no cell ping-pong. This CONTRADICTS +P1's claim that ResolveCellId was demoted out of the per-frame path. + +THE JOB (evidence-first; do NOT guess): +1. PIN the exact code path producing the per-frame [cell-transit] reason=resolver ping-pong at the lip + (is it PhysicsEngine.ResolveCellId despite P1's demotion claim, the swept advance, or + PlayerMovementController.UpdateCellId/UpdatePlayerCurrCell?), and CONFIRM the resolver flip CAUSES the + step-up commit-rejection (re-validation against the flipped cell) vs being a symptom. +2. PORT THE PRINCIPLED P1 FIX: make the swept curr_cell (find_cell_list pick over the uniform candidate + set) the per-frame membership authority at this junction; demote ResolveCellId to spawn/teleport seed. + Retail anchors: A1 CObjCell::find_cell_list 0x52b4e0 pc:308742; A8 change_cell/SetPositionInternal + 0x513390/0x515330; A7 transitional_insert/validate_transition/check_other_cells. The cell must NOT + flip out from under a committed step-up. NO stickiness band-aid. +3. RED->GREEN: deterministic test for the lip junction (cell stable after step-up) + keep B1/B2/B3/door + tests green. USER VISUAL GATE: cellar ascent clean (no wedge); door still blocks; generic step-up climbs. + +APPARATUS (in the worktree): +- acdream captures: acdream-corner-capture.jsonl (lip wedge: step-up-works + cell ping-pong), + cellar-up-capture-v2.jsonl, cellar-up-capture.jsonl (JSON Lines, ACDREAM_CAPTURE_RESOLVE, IsPlayer). +- Retail cdb: cellar-corner-retail.log + tools/cdb/cellar-corner-escape.cdb. Decode: parse_corner_log.py + / tools/cdb/decode_retail_hex.py. +- Probes: ACDREAM_PROBE_CELL=1 ([cell-transit]), ACDREAM_DUMP_STEPUP=1 (stepup:), ACDREAM_PROBE_RESOLVE=1 + ([resolve]), ACDREAM_CAPTURE_RESOLVE=. Live launch per CLAUDE.md "Running the client". +- cdb on retail at the lip (break CObjCell::find_cell_list / change_cell / SetPositionInternal) if the + decomp is ambiguous. PDB matches; tools/cdb/. Lower the trace threshold (~3000) so it auto-detaches in + one wedge. + +DO NOT: re-investigate B1/slide_sphere (shipped, correct); add a ResolveCellId stickiness/suppression +band-aid (user chose principled); flip Apparatus_Grounded_50cmOffCenter to Assert.True(blocked) +(synthetic-floor artifact); guess. + +TEST BASELINE: Core 1310 pass / 4 fail / 1 skip (the 4: Apparatus_Grounded_50cmOffCenter [synthetic-floor +artifact], 2x DoorBugTrajectoryReplay LiveCompare_* [captured-buggy-live, re-baseline], BSPStepUpTests.D4 +[airborne Path 6, separate]); App 177 green. Branch HEAD: 664101f (+ this commit). +```