1@README.md
2
3## Notes for agents
4
5**Stop playback before playing `song.js`.** Its section masks count from cycle 0.
6
7**The harmony moves every two bars on purpose.** Each vocoded line is rendered on one chord (`samples/README.md` lists which), so it must start on the first bar of its chord. The hook's "Output tokens: free" exists in three renders (`tcfreeam`, `tcfree`, `tcfreeg`) for the three chords it lands on.
8
9**The filter sweeps are phrase-bound.** `saw.range(...).slow(8)` restarts every 8 cycles, so the sweep opens over each 8-bar phrase only because every section starts on a multiple of 8. Moving a section boundary off that grid breaks the sweep.
10
11**"Gate the sudo" does not survive the vocoder.** Five renders read back as other words; the lyric is "Gate the sudo command" for that reason, and it is spelled "Gate, the sue-doo command" for SAPI, or whisper hears "pseudo" (see SPEC.md). Accept a re-render only when whisper.cpp `ggml-base.en` reads "gate the sudo command" both dry and mixed over the kick.
12
13**Levels are choices, narrowed by `allow`.** Each part's level is `choice` {full, back, out}, not a score, so `allow` can leave out what a section does not have; `full` is every level's fallback and must stay in every allowed set. The outro is all `ending`, which Jev never levels.
14
15**Measure after any gain change.** superdough has no limiter; `MASTER` is set so the loudest pick (every part full, energy all out, which is also the fallback) peaks at or under -1 dBFS in `nix run .#measure`.