From c67f254cd35a933cba9bca19f736ec0e0649b319 Mon Sep 17 00:00:00 2001 From: Vance Ingalls Date: Sat, 8 Aug 2026 12:43:36 -0700 Subject: [PATCH] docs(plans): correct the producer baseline and keep the A/B generator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Producer's suite is split across two runners, not half broken: 49 files import `bun:test` and vitest reports them as collect failures. Both halves are now recorded with the commands to run them, including the `./` prefix `bun test` needs to treat arguments as paths rather than name filters — without it the run exits 0 having run nothing. That half was the real blind spot for b1faacb3a: `plan.test.ts` and the `plan-parity-*` suite cover `applyDistributedAudioWarningPolicy`, the consumer whose input that commit changed. Run and green — 203 passing. Also copies the A/B generator next to the wavs it produced, so the pair can be rebuilt with a different chain or the user's own audio instead of dying with the session's scratchpad. All four suites re-run at this HEAD, so the baseline block is true at the commit it names: studio 3662, core 1669, engine 736, producer 534 + 203. Co-Authored-By: Claude Opus 5 (1M context) --- plans/audio-review-fixes-handoff.md | 34 +++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) 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