From f984e92e3713d4019cee3eb32d26dd9117f40ecb Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 4 Jun 2026 09:35:14 +0200 Subject: [PATCH] =?UTF-8?q?docs(p2):=20correct=20the=20handoff=20=E2=80=94?= =?UTF-8?q?=20B1=20was=20the=20Path=205=20near-miss=20gate,=20not=20the=20?= =?UTF-8?q?climb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The prior localization (step-up CLIMB) was disproven by an ITestOutputHelper capture. Records the real root cause (A6.P4 near-miss missing retail's num_sphere>1 gate, fixed in abbd761), that the door blocks faithfully with a real floor, and that the remaining red tests are separate (apparatus synthetic-floor artifact, LiveCompare buggy-captures, D4 airborne) β€” not simple "flip to green" targets. Next is the user visual gate. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../2026-06-03-p2-door-stepup-handoff.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/research/2026-06-03-p2-door-stepup-handoff.md b/docs/research/2026-06-03-p2-door-stepup-handoff.md index f688d2da..215848c5 100644 --- a/docs/research/2026-06-03-p2-door-stepup-handoff.md +++ b/docs/research/2026-06-03-p2-door-stepup-handoff.md @@ -1,5 +1,37 @@ # P2 pickup handoff β€” door / building-shell collision = BSP Path 5 grounded step-up +> **πŸ”΄ CORRECTED 2026-06-04 β€” the localization below (the step-up CLIMB) was WRONG; B1 is FIXED.** +> An `ITestOutputHelper` capture of B1 (xunit swallows `Console.WriteLine`) proved the climb code +> (`find_walkable`/`AdjustSphereToPlane`/`step_sphere_down`/`DoStepUp`/`DoStepDown`) is **correct** and +> matches ACE exactly. The real B1 bug was the **A6.P4 near-miss dispatch in `BSPQuery.FindCollisions` +> Path 5 (Contact branch)**, which diverged from retail three ways: (1) recorded a near-miss +> `NegPolyHit` **unconditionally** β€” retail gates both `set_neg_poly_hit` calls behind +> `if (num_sphere > 1)` (`acclient_2013_pseudo_c.txt:323852`); (2) checked the foot near-miss before +> the head's (retail checks the head/sphere1 first); (3) reversed the `neg_step_up` mapping (retail: +> head index0β†’FALSE/slide, foot index1β†’TRUE/step-up, per `SPHEREPATH::set_neg_poly_hit` :323279). +> For B1's single foot sphere the spurious near-miss β†’ outer `!NegStepUp β†’ Collided` β†’ revert β†’ the +> mover wedged at x=0.1, never reached the wall to step up. **Verbatim fix committed (`abbd761`):** +> the gate+order+mapping now match retail; B1 climbs (footβ†’(0.6,0,0.25)); the Holtburg door blocks +> faithfully (slab `(0,-1,0)` normal) when the scenario has a real floor. +> +> **Remaining red (NOT simple flips β€” all separate from B1):** +> - `Apparatus_Grounded_50cmOffCenter` β€” its tick-0 `(0,0,1)` "block" is a **synthetic-test artifact**: +> the apparatus sets `terrain=-1000` so the only BSP is the door slab; the contact-maintenance +> step-down finds no floor underfoot β†’ false Collided/revert, then the mover walks through. With a +> real floor (`terrain=0`) the door blocks faithfully at Yβ‰ˆ11.5 with `(0,-1,0)`. Fix = give the +> grounded test a real floor + assert the block normal is the door's Β±Y (NOT the tick-0 `(0,0,1)` +> contact-maintenance hiccup, which is a separate cold-seed first-frame artifact). Do **NOT** just +> flip to `Assert.True(blocked)` β€” that blesses the artifact. +> - `LiveCompare_DoorOffCenterWalkthrough_Tick13558` / `_DoorBlocksFromOutside_Tick22760` β€” compare +> against captured **buggy-live** positions; a correct fix makes the harness diverge (blocks earlier). +> Re-baseline to the corrected behavior or retire as documents-the-bug. +> - `D4_AirborneMover_TallWall_PersistsSlidingNormalAcrossFrames` β€” **airborne (Path 6)**, a separate +> sliding-normal-persistence issue, unrelated to the Path 5 grounded near-miss. Pre-existing. +> +> See `memory/project_p2_door_stepup_findings.md`. **Next: USER VISUAL GATE** (walk through a cottage +> door cleanly; step up a stair) β€” the authoritative P2 acceptance. The original (wrong) analysis is +> retained below for the record. + > **Canonical pickup for the next session.** 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. Read this FIRST.