diff --git a/plans/audio-review-fixes-handoff.md b/plans/audio-review-fixes-handoff.md index 0015683e6c..3b553cffce 100644 --- a/plans/audio-review-fixes-handoff.md +++ b/plans/audio-review-fixes-handoff.md @@ -32,12 +32,32 @@ plain fast-forward. packages/studio 3662 passing, 18 todo, 1 file skipped packages/core 1669 passing packages/engine 736 passing, 3 skipped (src/services) -packages/producer 534 passing — plus 50 PRE-EXISTING collect failures +packages/producer 534 passing under vitest, 203 under bun test (see below) ``` -The producer collect failures are files importing `bun:test`, which `vitest run` -cannot load. Same 50 before and after this work; only the passing count moved -(533 → 534). Producer was never in the original baseline set, which is why. +**Producer's suite is split across two runners.** 49 files import `bun:test` +and `vitest run` cannot load them — it reports them as collect failures, which +is a harness split, not breakage. Run BOTH: + +```bash +cd packages/producer +./node_modules/.bin/vitest run # 534 passing, 50 files fail to collect +bun test ./src/services/distributed/plan.test.ts ./src/plan-parity-*.test.ts \ + ./src/services/render/stages/*.test.ts # 203 passing +``` + +Note the leading `./` — without it `bun test` reads the arguments as name +filters and runs nothing while exiting 0. A bare `bun test` is worse than +useless here: it also picks up the vitest files, which it cannot run, so it +reports ~37 phantom failures. + +The bun half matters for the `b1faacb3a` audioStage change specifically: +`plan.test.ts` and the `plan-parity-*` suite cover +`applyDistributedAudioWarningPolicy`, the consumer whose input that commit +changed. Verified green. + +Producer was never in the original baseline set, which is why neither half was +tracked before. `tsc`, `oxlint`, `oxfmt` clean across studio, core, engine, producer, lint. @@ -125,6 +145,12 @@ Three judgement calls worth knowing: yet.** The numbers: the chain peaks at 1.346, the old order sheared 19,166 samples (1.7% of the file) flat against ±1, and level-matched the two differ by an error signal 26.3 dB down with a worst single-sample delta of 0.242. + The generator sits beside them — `bun ~/audio-fx-clip-ab/ab-clip.mts + ` — so the pair can be rebuilt with a different chain, a + different duck, or the user's own audio. It drives the real + `applyAudioFxChain`, once with the envelope and once without followed by the + mixer's old second pass, so "before" is the actual previous behaviour rather + than a simulation of it. - **§4a-4 striding was tried and rejected.** Capping Welch at N windows is 27x faster on a 5-minute voiceover (427 ms → 15 ms) but *changes the carve*: at strength 0.9 the selected band set moved (630 Hz → 160 Hz) and it did not