## Objective Safely replace incompatible patches using a preconstructed dual-engine transition with deterministic linear/equal-power crossfades. ## Scope - [ ] Build replacement controlled engines entirely outside the audio callback. - [ ] Implement transition slots, old/new routing, active-note policy, generation acknowledgement, cleanup, and stale-handle invalidation. - [ ] Implement exact-duration linear and equal-power gain curves; default to 20 ms and support validated 0–250 ms configuration. - [ ] Route new notes to the new engine at the transition frame and release/migrate old voices according to documented compatibility policy. - [ ] Add hard-swap fallback warnings and preserve the old engine on initialization failure. - [ ] Record transition traces, render/callback costs, budget utilization, underruns, and strategy statistics. - [ ] Add incompatible/compatible fixtures, click metric comparison, finite/silence/clipping checks, race tests, and block-size matrix. ## Acceptance criteria - [ ] Incompatible redefinition crossfades for exactly the requested frames without compiling or unbounded allocation on the audio thread. - [ ] Output is deterministic, finite, block-size invariant, and less discontinuous than the calibrated hard-swap baseline. - [ ] Failed transitions leave the previous engine running. Spec: `phase-3.md` §§17–19, 25, 27–33, 35–36, 40 (Milestone 7), 42.
Activity