docs: retire Phase Rho from the plan, record it as landed
This commit is contained in:
@@ -887,3 +887,58 @@ wrong that refusal costs a working capture. Each track's DAW-verification obliga
|
||||
is recorded in `docs/PLAN.md`'s Phase Ψ section; `docs/verify-track-scope-multitrack.md`
|
||||
is a new standalone verification script on this branch, for Ψ-W3-T1's multi-track
|
||||
refusal specifically. No human has observed any of these seven behaviors in a DAW.
|
||||
|
||||
### Phase Ρ — Render in place: a track's output to a new sibling, source to the bench
|
||||
|
||||
One wave, one track (Ρ-W1-T1 `render-in-place`), code-complete, reviewed, remediated, and
|
||||
merged to `dev` as `b400384`: 91/91 tests passing, a clean build. Phase Ρ came from a
|
||||
direct request (Daniel, 2026-08-02) rather than a backing product doc list — see
|
||||
`docs/product/render-in-place.md` for the framing and its three [Daniel]-class forks
|
||||
(Ρ-F1/F2/F3), all ruled the day the phase was framed.
|
||||
|
||||
**Ρ-W1-T1 — `render-in-place`.** One bindable action, `RENDER_TRACK_IN_PLACE`, renders
|
||||
the selected track's output over the current range to the project's recording path —
|
||||
never the bank — places it as an item on a brand-new sibling track at the exact unsnapped
|
||||
render position, clones the source's colour and its name with an idempotent `Capture `
|
||||
prefix, moves the source track to Design mode, and puts the result track into Arrange
|
||||
unconditionally (the Ρ-F2 ruling). New `src/shell/capture/render_in_place.{h,cpp}`.
|
||||
Extended `core/capture/track_topology` (`siblingPlacement`), `core/capture/capture_name`
|
||||
(`captureTrackName`), `core/capture/capture_paths` (`RenderPaths`/`deriveRenderPaths`,
|
||||
with `deriveBankPaths` re-expressed over it). A `CaptureDestination` enum was added to
|
||||
`CaptureRequest`; `render_bounds_gate` became destination-aware. A filter added to
|
||||
`panel_input::detectNewContent`, one `ActionTableRow` in `src/app/main.cpp`. All four
|
||||
invariant amendments the plan required (`src/shell/capture/CLAUDE.md`,
|
||||
`src/shell/actions/CLAUDE.md`, root `CLAUDE.md` §"The load-bearing principle",
|
||||
`src/core/view/CLAUDE.md`) landed inline with the track.
|
||||
|
||||
**Four deviations worth recording:**
|
||||
|
||||
1. **The `activeModeId` acceptance criterion was met in spirit, not to the letter.** The
|
||||
criterion said `activeModeId()` must appear only in the `applyMode` reapply. The
|
||||
implementer added the spec-recommended one-line Design-fired `ShowConsoleMsg`, which
|
||||
requires reading the active mode, and hoisted that read into a single named local
|
||||
shared by the message condition and the reapply. All three `tag()` calls still take
|
||||
literal mode ids, so the ruling the criterion protects (Ρ-F2) holds. Review accepted
|
||||
this explicitly.
|
||||
2. **The `panel_input` edit was larger than the spec's estimate** — the spec budgeted
|
||||
"two lines only"; the landed change is six lines plus an `<algorithm>` include and
|
||||
dropping a `const`, still confined to `detectNewContent`.
|
||||
3. **`TrackList_AdjustWindows(false)` was included preemptively** where the spec had
|
||||
asked to `[verify — DAW]` whether it is needed. Consequence worth recording: the DAW
|
||||
check can no longer distinguish, so answering that question now requires commenting
|
||||
the call out locally.
|
||||
4. **A behavioural change beyond Ρ's stated scope**, surfaced in review and judged an
|
||||
improvement: a track restored by undo now keeps its original mode instead of being
|
||||
re-tagged to the active mode. Its reach is narrower than it sounds —
|
||||
`ViewModeModel::reconcile` prunes records for GUIDs that have gone away, so a track
|
||||
absent across a reconcile pass still falls back to the old behaviour.
|
||||
|
||||
Both **[propose at review]** items resolved to the plan's own recommendations: the
|
||||
Design-fired console message was added (yes), and no master-track refusal was added
|
||||
(no — `ResolveScopeSource` already refuses a master-only selection).
|
||||
|
||||
**The entire DAW-verification obligation remains outstanding.** The null test on Ρ's
|
||||
own output, the three folder cases, collapsed-mono placement and summing, both mode
|
||||
transitions waited out past a panel timer tick, undo, name/colour clone, and
|
||||
`GetProjectPathEx` against a non-default recording path — none of it is unit-testable
|
||||
and none has been run.
|
||||
|
||||
Reference in New Issue
Block a user