v2.4.1
Fixed
- Calibration decision tree — severe delivery-timing failures (failed releases, p99 > 15 ms, late > 10 ms count > 5) now route to
audience_safe;local_preciseis reserved for infeasible same-key repeats without timing failure. Missed-note failure modes no longer pick the tightest profile. - Tempo scaling —
rec_tempois nowmin(current, target)in both severe and moderate branches, so a user tempo of 0.93 on a 0.95 target no longer rounds upward to 0.95. - Excellent-timing path — keeps the user's current profile instead of always recommending
local_precise; the calibration report now confirms rather than changes. - Latency margin guard — calibrated margin recommendation is rejected when sample count
n < 50, preventing low-sample p99/p50 quantiles from poisoning the input-latency guard.
Changed
docs/timing-profile-frame-model.md: updated severe-failure routing description to match the newaudience_safevslocal_precisesplit.
Notes
Shader-free pure-scheduler patch. No SendInput, platform, or updater surfaces touched. Build provenance attested.