Pure, headless easing curves of t in [0,1] for the organic-animation pass (swap/fall/combine juice), placed alongside the existing ease_out_cubic / ease_in_quad in board_anim.sx: ease_in_cubic, ease_in_out_cubic, ease_out_back (bounded overshoot, settles to exactly 1), spring (damped wobble to exactly 1), and squash_envelope (signed squash-&-stretch landing shape). The math module has no exp/pow, so the decaying curves use a (1-t)^n polynomial envelope that hits 0 at t==1, pinning f(1) precisely. Additive only: no render code calls the new curves yet. tests/easing.sx locks, per curve, the endpoints, overshoot/undershoot bounds, and monotonicity-where- required (booleans only, so the snapshot is platform-stable), structured so P16.2 can append illegal-swap bounce-back assertions. Test count 21 -> 22.
483 B
483 B