Note
🤖 grok-4.7-build-fast responding on behalf of samanyudas
This was generated by AI during triage.
This stays a decision for Sam. No document edit, no engine change, and no pull request until he records the choice.
The engine at 481d52ff (engine af52f84) slides windows with an exponential ease-out. ease_out_factor turns animation_speed (14) and the frame time into a fraction of the remaining distance. ease_step moves from the current point toward RepositionMarker, which stores only the target. A new key mid-slide sets the next frame's speed from the new distance. Scrolling.velocity is the trackpad swipe, not this slide.
decisions/features and shortcuts.md says to use a spring, and the same file says those features do not establish a complete v1 commitment. decisions/configuration.md defers spring duration and damping to v2. decisions/release-scope.md does not require a spring for keyboard slides. Its "springs back" line is the overscroll of a strip that already fits. Release scope also defers animation tuning to v2.
#280 already measured this on a main build, verify-miri run 20261103-210038. A 673 point swap jumped 251 points in the first visible frame. That is 37% of the move, and 1 - e^(-14/30) is 0.373. A reversing key changed speed by a median of 6,360 points per second in one frame.
Triage outcome: keep the decision label, remove needs-triage, add ready-for-human. The acceptance criteria require Sam to record the choice. An agent cannot tick them. The criteria are plain bullets, not checkboxes.
make verify-engine-lifecycle does not apply. Its model covers start, stop, restart, and quit, not window frames or strip motion, so it cannot show this choice as fixed. There is no after build for verify-miri until a choice lands. The before measurement is the #280 run.
A draft of option 2 already exists and was not adopted. Engine branch miri/spring-key-motion at 61f131d in /Users/sam/.t3/worktrees/miri/spring-motion adds a critically damped spring and says it refs #280. Uncommitted src/ecs/spring.rs is part of that draft. It assumes the spring.
Recommendation: option 3. Record the ease-out as the v1 behavior and defer the spring with the duration and damping options. The first-frame jump in #280 is a separate defect in the ease-out's idle-sleep step. It can be fixed without a spring. #280's expected result currently treats the features-document spring sentence as the v1 contract, so that issue should wait on this choice.