fix(physics): restore the flipper downstroke

Represent press and release as distinct deferred flipper edges. Keep upward
position/velocity transfer unchanged, and apply the position-preserving
return-stroke velocity recovered from a live ball at `(125,390)`, mirrored for
the right flipper.

The downstroke now assigns raw `(3519,6302)` before the next physics clamp,
matching the original instead of moving geometry silently.

Test Plan:
- `cargo test --all-targets` -- 48 passed
- `cargo clippy --all-targets -- -D warnings` -- passed
- `cargo build --profile production` -- passed
- live downstroke transfer test -- passed within one raw unit
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-22 21:36:24 +02:00
parent 7d28818e23
commit b86810ebed
3 changed files with 35 additions and 17 deletions
+3 -1
View File
@@ -142,7 +142,9 @@ from the record geometry. Three live left-edge probes at `(115,390)`,
`(120,390)`, and `(125,390)` produced post-edge positions `(128.718,365)`,
`(133.397,360)`, and `(138.182,355)` with raw velocities `(1932,-3523)`,
`(2079,-4658)`, and `(2217,-5889)`. The Rust upward stroke fits those states;
the full raw calculation and return-stroke transfer remain pending.
the full raw calculation remains pending. A separate downstroke probe at
`(125,390)` kept position unchanged and assigned `(3519,6302)` before the next
substep clamped speed to 3800; the Rust return edge now matches that state.
The type-4 rule dispatcher at `1000:b476` shows that records 150-152 are three
independent 500-point sensors. Each sets its own ten-callback timer and enables