Live retail cdb trace (tools/cdb/cellar-corner-escape.cdb) of the Holtburg cottage cellar-top corner decodes the ground truth: retail escapes by step_sphere_up->step_up (196x vs 38 near-misses), transitioning the contact plane from the ramp (N.z=0.78) onto the flat cottage floor (N.z=1.0, 76 landings). acdream slides at the lip and never makes that ramp->floor transition -> the intermittent cellar wedge. So the remaining cellar bug is the #98-core step-up-onto-cottage-floor (DoStepDown / step_sphere_down / find_walkable), which the shipped B1 (abbd761) + slide_sphere (0935a31) fixes got close to but didn't finish. Door still blocks; generic step-up climbs; cellar went always-stuck -> works-mostly. Next (handoff doc): instrument acdream's OWN corner path (does step_up fire at the lip and fail to land on the cottage floor?) before porting the lip-climb -- no guessing (#98 saga rule). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.9 KiB
P2 pickup — cellar-top corner wedge = step-up-onto-cottage-floor (retail cdb pinned)
Canonical pickup, 2026-06-04. Branch
claude/thirsty-goldberg-51bb9b(do NOT branch/worktree; do NOT push without asking; NEVERgit stash/gc). PowerShell on Windows; launch logs are UTF-16.
State both altitudes
- Milestone: M1.5 — Indoor world feels right.
- Phase: P2 (door / building-shell collision) of the verbatim spatial-pipeline port.
- Shipped this session (committed, branch HEAD
0935a31):abbd761— B1 fix: Path 5 (Contact) near-miss dispatch ported verbatim — gate behindnum_sphere > 1, head-first order,neg_step_upmapping (head→false/slide, foot→true/step-up). Retailtransitional_insert/find_collisionsContact branch (acclient_2013_pseudo_c.txt:323838-323881,set_neg_poly_hit:323279). Fixed the B1 grounded-step-up wedge (the handoff's "climb" localization was WRONG — proved viaITestOutputHelpercapture).0935a31— slide_sphere fix: head near-miss (neg_step_up==0) now calls the faithfulCSphere::slide_sphere(existingSlideSphereInternal) + continues the insert loop, replacing the A6.P4Collidedshortcut (transitional_insertpc:273350-273351).f984e92— docs (corrected the prior P2 handoff).
- Visual-verified 2026-06-04: generic step-up climbs; closed cottage door still BLOCKS (slides tangentially, no walkthrough — regression check passed); cellar ascent went from ALWAYS-stuck → WORKS-MOSTLY.
- Remaining: an intermittent corner-wedge at the cellar-top lip. Retail is always smooth there (user-confirmed). So it's a real bug.
The cdb-pinned finding (retail ground truth)
tools/cdb/cellar-corner-escape.cdb traced live retail at the cellar-top corner
(decode: parse_corner_log.py; raw: cellar-corner-retail.log). Retail escapes the
corner by STEP-UP, not slide:
step_sphere_up→step_upfired 196× vs only 38 near-misses.step_upnormals: +X wall ×78, ceiling(0,0,-1)×36, +Y wall ×32, −X wall ×18, ramp slope(0,−0.62,0.78)×11, −Y wall ×10, floor(0,0,1)×10. So retail step-ups against EVERY grounded full-hit at the corner.- Contact plane transitions ramp
N.z=0.78(×63) → flat cottage floorN.z=1.0(×76). That's the escape: retail climbs the lip off the ramp ONTO the cottage floor. - The user's "run in place against the ceiling (not stuck)" =
step_upfailing on the ceiling normal(0,0,-1)→step_up_slide(transient; steer out).
Divergence pinned: retail escapes by stepping up onto the cottage floor;
acdream slides at the lip and never makes the ramp→floor transition. The slide
itself (the 0935a31 fix) is correct + working; the gap is the final lip-climb.
This is the original #98 core — DoStepDown/step_sphere_down finding + landing
on the cottage floor — which B1+slide got close to but didn't finish.
Next step (evidence-first — #98 saga rule: do NOT guess)
- Instrument acdream's OWN corner path. The captures so far
(
cellar-up-capture*.jsonl,door-recheck-capture.jsonl) have positions/normals but NOT the path. Need to answer: at the cellar-top lip, does acdream'sstep_sphere_up→DoStepUpFIRE and FAIL to land on the cottage floor (DoStepDown can't findN.z=1.0withinStepUpHeight=0.6), or does it not fire (the hit goes to the slide path instead)? Relaunch acdream withProbeBuildingEnabled(→[neg-poly-dispatch]/[bsp-test]) +ACDREAM_DUMP_STEPUP=1+ProbeStepWalkEnabled(→[step-walk]), reproduce the wedge, read the path. (xunit-swallow doesn't apply to the live app — Console probes DO surface in the launch log.) - Compare to retail's 196 step_up / ramp→floor transition and port the missing
lip-climb verbatim. Likely in
DoStepDown(TransitionTypes.cs:3074) /BSPQuery.step_sphere_down(:1206) /find_walkable(:693) — the cottage-floor find+land. Retail anchors:CTransition::step_uppc:273099,step_downpc:272946,BSPTREE::step_sphere_downpc:323665,CObjCell::find_env_collisions(the walkable-refresh that overwrites the contact plane ramp→floor). - USER VISUAL GATE: cellar ascent clean (no intermittent wedge); door still blocks; generic step-up still climbs.
Apparatus (committed / available)
tools/cdb/cellar-corner-escape.cdb— retail corner trace (step_up/step_sphere_up/ neg_poly_hit/contact_plane counts + args; 30K threshold — TOO HIGH for these lower-frequency BPs, lower to ~3000 next time so it auto-detaches in one wedge).parse_corner_log.py— decodes the cdb log (hex→float, histograms).- Captures (UNCOMMITTED, in worktree root, ~32 MB each — do NOT commit):
cellar-up-capture.jsonl(v1, pre-slide-fix wedge),cellar-up-capture-v2.jsonl(post-slide-fix: 96 hit-and-advanced slide frames),door-recheck-capture.jsonl,cellar-corner-retail.log(the retail cdb trace). analyze_cellar.py/analyze_v2.py— ad-hoc capture analyzers (capture-specific).
Test baseline
Core 1310 pass / 4 fail / 1 skip. The 4 fails are pre-existing documents-the-bug /
separate-issue: DoorCollisionApparatusTests.Apparatus_Grounded_50cmOffCenter
(synthetic-test artifact — terrain=-1000, no queryable floor; NOT a real door-block
failure — see memory/project_p2_door_stepup_findings.md), 2× DoorBugTrajectoryReplay LiveCompare_* (compare against captured-BUGGY-live positions; need re-baseline), and
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).
- Flip
Apparatus_Grounded_50cmOffCentertoAssert.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.