test(physics): harden TS-4 production chronology

This commit is contained in:
Erik 2026-07-31 14:08:51 +02:00
parent 75b6f6b6c9
commit d3c0d9ec0e
5 changed files with 807 additions and 101 deletions

View file

@ -99,36 +99,30 @@ character state continuously.
### P2 — Response-layer edge family — retires TS-1, TS-4, AP-7; closes #166, #116
**Status (2026-07-30, FINAL — Campaign P final physics slice):** TS-1 and
AP-7 retired same-day as originally recorded. **TS-4 is now ALSO
RETIRED** — the oracle follow-up pass
(`docs/research/2026-07-30-ts4-116-oracle-plan.md`) found the freeze the
first implementation attempt hit was one layer downstream of Path 6
(inside `AdjustOffset`'s crease projection against a purely-vertical
offset — a genuine retail-identical degeneracy, not a bug) and ran the
plan's own decisive confirming test: `Ts4SteepRoofWedgeCaptureTests`'s
horizontal-velocity variant (matching the realistic live-play input that
originally validated the shortcut) converges cleanly with the shortcut
removed. The Path-6 steep-poly shortcut is deleted from both
`BSPQuery.cs` and `FlatBspQuery.cs`; the pure-vertical degenerate case is
pinned (not fixed) as register row AD-56. **#116 is narrowed, not
closed**: shape-2 (D4 first-airborne-frame hard-stop) is CLOSED — the
oracle plan's structural dispatch-routing hypothesis was confirmed by
instrumentation with no cdb session needed, and the D4 pin is un-skipped.
Shape-1 (tick-22760 lateral-slide loss) got a real, independently-decomp-
confirmed fix (Path 6's foot-clear/head-hit branch now returns `Collided`
+ `SetCollisionNormal` directly, matching pc:323824-323834/ACE
`BSPTree.cs:221-230`), but the confirming replay showed this does NOT
explain tick-22760 itself — that mover is grounded (dispatches through
Path 5, not Path 6) and the actual "no normal recorded" mechanism
(`SpherePath.PrecipiceSlide`'s `find_crossed_edge`-false fallback) is
independently confirmed byte-exact retail behavior too. The remaining
divergence is most likely this test's simplified door-registration
fixture, not the response layer — see ISSUES.md #116 and the oracle
plan's Addendum 2 for the full trace and the concrete next step (re-run
against the faithful Setup-based door registration). AD-55 (the sled
slope-flatness constant, split out of AP-7's retirement) is ALSO retired
this same slice — byte-proven `cos(10°)` per the oracle plan's Addendum.
**Status (2026-07-31, FINAL):** TS-1 and AP-7 retired as originally
recorded. TS-4's first 2026-07-30 removal was accepted by an incomplete
resolver-only fixture, failed the live matrix with a roof wedge/uphill-bounce
regression, and was reverted. The 2026-07-31 closure began from a fresh
`BSPTREE::find_collisions` read and ports the exact asymmetric Path-6 split:
primary/foot hits use `SetCollide` + `LandingZ` + `Adjusted`, while
secondary/head hits use `CollisionNormal` + `Collided`; neither writes a
sliding normal. Both graph and prepared-flat implementations match that
oracle.
The corrective acceptance no longer calls the old horizontal-input fixture
"production-shaped." `Ts4ProductionQuantumConformanceTests` executes the
already-airborne, zero-root-motion 30 Hz Core collision tail — acceleration,
body integration, transition resolve, exact body/cell commit, then
`handle_all_collisions` — and retains its behavior-bearing cell, contact,
sliding, stationary-fall, and velocity state for 90 ticks. Graph and flat
match by raw bits for vertical/inward/tangential/downhill cases and a genuine
positive-Z uphill jump; exact terminal state, non-penetration, no fixed point,
and no second launch are pinned. No further product-code correction was
needed after that test became faithful, and there is no active AD-56 row. The
older resolver-only wedge test remains only as a historical three-second
signature control. #116 shape-2 remains closed; shape-1 remains narrowed as
recorded in its issue history. AD-55 remains retired by the raw-byte
`cos(10°)` proof.
The collision *response* layer (what happens after a hit): ground
friction, cliff edges, downhill landings, near-perpendicular wall
@ -145,10 +139,11 @@ binds every subagent here.
stop-at-edge.
3. **#166:** port the landing "sled" (Sledding state set/clear sites;
the sled friction constants already sit in `calc_friction`).
4. **TS-4:** replace the Path-6 steep-poly in-place-slide shortcut with
retail's `SetCollide → Path-4 → ContactPlane` landing chain, and
remove the two BSP-layer `SetSlidingNormal` writes (retail's only
in-transition writer is `validate_transition`).
4. **TS-4:** remove the Path-6 steep-poly shortcuts and port retail's exact
sphere split: primary/foot uses `SetCollide` + `LandingZ` + `Adjusted`;
secondary/head uses `CollisionNormal` + `Collided`. Remove every BSP-layer
`SetSlidingNormal` write (retail's only in-transition writer is
`validate_transition`).
5. **#116:** the near-perpendicular lateral-slide loss + first-airborne-
frame divergence, driven by the existing tick-22760 replay and D4
pins.