diff --git a/docs/VERIFICATION.md b/docs/VERIFICATION.md index acb7e66..138eea5 100644 --- a/docs/VERIFICATION.md +++ b/docs/VERIFICATION.md @@ -1,6 +1,6 @@ # DAW verification — post-1.0 work on `dev` -Checks for Θ, Ξ, Ψ, and Ε work that no unit test can close. Build **Release**, install into +Checks for Θ, Ξ, Ψ, Ε, and Ρ work that no unit test can close. Build **Release**, install into `UserPlugins/`, restart REAPER. Panel tail toggle = **None**, project rate 48000, unless a check says otherwise. ## Precision invariants @@ -108,6 +108,60 @@ Checks for Θ, Ξ, Ψ, and Ε work that no unit test can close. Build **Release* - [ ] After a bake: instance is in Trigger with start point reset, channel mode and preview velocity survived (`docs/COMPLETED.md:714`, `docs/COMPLETED.md:720`) - [ ] Gate mode + active sustain loop — "Bake Hold" appears within ~500 ms, its label fits its cell, its travel is duration-ordered (`docs/COMPLETED.md:806`) +## Render in place + +- [ ] Fire *Render track in place* over a track with a range selected — solo the source + and the new sibling track, invert one track's polarity, and confirm silence. This is + Ρ's own trust anchor: the placement is the null test performed automatically + (`docs/product/render-in-place.md` §"DAW-verification obligations", + `docs/COMPLETED.md` §"Phase Ρ — Render in place") +- [ ] Render in place from three source positions in turn — a normal mid-folder track, a + track that is last in its folder, and a folder-parent track — each time confirm the new + sibling track lands at the same nesting level as the source and that the folder bus + feeds (or bypasses) it correctly. Then, to settle whether `TrackList_AdjustWindows(false)` + is actually needed: comment out that call in `render_in_place.cpp`'s + `RunRenderTrackInPlace` (it was added preemptively, answering a question the spec had + left open rather than one the code confirmed), rebuild, and repeat the folder-parent + case — if nesting still displays correctly with the call removed, it can be dropped in a + follow-up (`docs/product/render-in-place.md` §"DAW-verification obligations") +- [ ] Render in place from a dead-centre (channel-identical) source — confirm the placed + item is mono, and confirm it plays back at the same perceived level the stereo source + did before the render. This is root `CLAUDE.md`'s existing mono-summing + `[verify — DAW]`, promoted to load-bearing because Ρ is the first path that places a + collapsed render into the mix automatically (`docs/product/render-in-place.md` + §"DAW-verification obligations") +- [ ] Fire Render track in place once from Arrange and once from Design. From Arrange: + confirm the source track parks and the result track is visible and in the mix. From + Design: confirm the source stays on the bench, the result track is parked too, then + switch to Arrange and confirm the result track appears in the source's place. **In + both cases wait out at least one panel timer tick before checking membership** — that + is the check that catches a missing explicit-tag-wins filter or an untagged item, + either of which silently reverses the ruling that the result track is always an + Arrange member (`docs/product/render-in-place.md` §"Mode transitions — the source + parks, the result goes to Arrange") +- [ ] Render in place, then press Ctrl-Z once — confirm the new track and its item are + both gone, the source track's folder depth is restored, the rendered file itself is + still on disk, and the source track is still tagged Design (`docs/product/render-in-place.md` + §"DAW-verification obligations") +- [ ] Render in place from a named source, then run it again over the resulting (already + `Capture `-prefixed) track — confirm the name does not stack a second prefix, and + confirm the new sibling's colour matches the source's (the colour clone has no unit + coverage at all). Repeat once from an unnamed source and confirm the result reads + `Capture Track N` (`docs/product/render-in-place.md` §"DAW-verification obligations"; + the name-composition logic itself — apart from the live colour clone and the real + `GetTrackName`/`P_NAME` round trip — is unit-tested in `tests/test_capture_name.cpp`) +- [ ] Save a project into a folder whose recording path is set away from the default + (Project Settings → Media → Path), then Render track in place — confirm the rendered + file lands in that configured recording path, not the project folder itself + (`render_in_place.cpp`'s `RunRenderTrackInPlace`, `GetProjectPathEx`) +- [ ] Render in place, save the project, and reopen it — confirm the result track (which + carries an explicit `kArrangeModeId` membership record, unlike the shipped + tag-selected-tracks action which never writes one) behaves identically, in every + mode-switch and visibility check, to an ordinary untagged Arrange track. The JSON + round-trip itself is unit-tested (`tests/test_view_mode_model.cpp`); this is the + live-view half that isn't (`docs/product/render-in-place.md` §"Mode transitions — the + source parks, the result goes to Arrange") + ## Instrument migration - [ ] Open a project saved before the zone retirement — the instance reopens on its first zone and sounds the same (`docs/COMPLETED.md:85`)