fix(physics): port retail stair edge backprobe

This commit is contained in:
Erik 2026-07-31 09:26:28 +02:00
parent 5a0f9868a6
commit 2dcb4f1d94
6 changed files with 218 additions and 6 deletions

View file

@ -98,6 +98,38 @@ Copy this block when adding a new issue:
---
## #271 — Stair-side collision reverses uphill movement and rapidly slides the player down
**Status:** DONE — 2026-07-31 (implementation + user live gate)
**Severity:** MEDIUM (movement feel and navigation)
**Component:** physics / `edge_slide` / `precipice_slide`
**Symptom:** while running diagonally up an outdoor staircase and pressing
against its side, the character could suddenly move backward and slide rapidly
to the bottom.
**Root cause:** a 677-quantum live trace caught the first bad frame. A valid
X side-wall collision turned a requested `+0.88377` uphill Y displacement into
`-0.34059`, followed three frames later by a 1.52 m snap to terrain.
`EdgeSlideAfterStepDownFailed` promoted ACDream's separately retained
`LastWalkable` polygon into the current `SPHEREPATH::walkable` slot. At the
stair side this could be the preceding tread, so `PrecipiceSlide` projected
against stale geometry and reversed the tangent.
Named-retail `CTransition::edge_slide @ 0x0050B3D0` never substitutes an older
polygon: when current `walkable` is null it back-probes at the current sphere
center, restores the failed candidate, and only then invokes
`SPHEREPATH::precipice_slide @ 0x0050CC80`. Both stale-history substitutions
are removed. The exact captured frame is pinned against the installed stair
fixture: pre-fix output moved downhill to Y `75.346481`, while the retail-flow
result advances uphill to Y `76.078186` and Z `60.016247`. Core Release passes
4,108 tests / 2 skips; the complete Release solution passes 10,062 tests /
5 skips. The user then repeatedly climbed the same stairs while pressing into
their sides and confirmed the rapid downhill slide was gone. Evidence:
`docs/research/2026-07-31-271-stair-side-slide-capture.md`.
---
## #270 — Stuck spell animations + intermittently missing monster attack animations
**Status:** CLOSED 2026-07-31 — both symptoms user-verified fixed (stuck casts: exhaustion-edge gate `a46c8e65`; missing monster attack animations: spawn settle placement `21b3a3f3` + lost-cell retry `807fdb5f`). Final settle-session log: 14/15 spawn settles grounded; Falling-refusal spam 2,954 → 15 transient pre-settle lines. All #270 probes stripped.