feat(phys): A6.P3 slice 5 — [place-fail] probe + sharpened #98 diagnosis
Add ACDREAM_PROBE_PLACEMENT_FAIL gate + LogPlacementFail emitter + side-channel polygon attribution in PhysicsDiagnostics. Wire into BSPQuery.FindCollisions Path 1 (Placement/Ethereal) on Collided returns; wire into Transition.DoStepDown after the placement_insert TransitionalInsert(1) call; wire into Transition.FindObjCollisions to emit per-static-object [place-fail-obj] lines. Run scen4 cellar-up with the probe → 168 [place-fail] events. 80 of 81 BSPQuery Path 1 placement rejections cite polygon 0x0020 in cellar cell 0xA9B40147's BSP: n=(0,0,-1) d=-0.2, world Z=93.82 — the cellar ceiling (underside of cottage main floor thickness layer). 0 [place-fail-obj] lines, confirming the failure source is the cell BSP not a static object. The probe-driven evidence INVALIDATES the 2026-05-22 morning handoff's "Path 5 vs Path 6 in BSPQuery.FindCollisions" diagnosis. Retail's BP4 trace shows every find_collisions hit has collide=0 — retail enters the same Contact branch we do, no outer-dispatcher divergence. Retail's BP5 fires 17+ times on the cellar ramp polygon, not "30 hits all on flat planes" as morning claimed. The actual divergence is downstream in cell-promotion: retail's check_cell transitions to cottage cell 0xA9B40146 during the ascent (BP7 sets ContactPlane to the cottage main floor poly, which lives in cottage cell's BSP not cellar's). Ours stays at cellar 0xA9B40147, where the ceiling poly 0x0020 correctly rejects the lifted sphere. No fix attempted this session per CLAUDE.md discipline check (3+ failed fixes = handoff). Full slice 5 evidence + concrete next-session pickup steps at docs/research/2026-05-22-a6-p3-slice5-handoff.md. ISSUES.md #98 updated with the corrected diagnosis. Test baseline: 1148 + 8 pre-existing fail. Maintained. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c479ea68a3
commit
cf3deff7c2