diff --git a/CONTEXT.md b/CONTEXT.md index 8a74be3..3d3db46 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -208,8 +208,8 @@ enforces the separation **without ever destroying the user's real state.** `TrackFX_SetOffline(track, fx, true)` for **each** FX (reclaim CPU). Full CPU-park is the deliberate choice over mix-removal-only. - **Never touches `B_MUTE` / `I_SOLO`.** The tool owns only visibility, - `B_MAINSEND`, `I_FXEN`, and per-FX offline — and only on tracks it tagged. User - mute/solo survives every toggle untouched. + `B_MAINSEND`, `I_FXEN`, and per-FX offline — on every managed leaf, tagged or + untagged. User mute/solo survives every toggle untouched. - **Persistence.** Membership index + last-active mode + per-track flag snapshots ride in the existing `"reasampler"` project ext-state namespace and travel with the `.rpp`. On project open, reapply the active mode's visibility + processing. @@ -295,8 +295,11 @@ togglable per selection. path in review. - **Never touch mute/solo.** Any code path reading/writing `B_MUTE` / `I_SOLO` is a bug. -- **Never touch untagged tracks.** The tool acts only on tracks it tagged (plus - derived parents' *visibility*); it never parks or restores a track it doesn't own. +- **Every leaf is managed.** The mode system owns all leaf tracks: an untagged leaf + is an Arrange member, and when the active mode is not Arrange it is fully parked + and snapshot-restored exactly like a tagged leaf out of its mode. **show-both** is + the only way to opt a leaf out of parking. (Parents stay visibility-only, master + is never touched — see below.) - **Restore from snapshot, never to a default.** No hardcoded "on" restores. - **Verify API names** against the SDK header before use. diff --git a/docs/product/design-view.md b/docs/product/design-view.md index eae71ec..8a02eac 100644 --- a/docs/product/design-view.md +++ b/docs/product/design-view.md @@ -112,8 +112,10 @@ truth and changes underneath us). ## What a toggle actually does (the parking contract) -Toggling to mode M partitions tagged leaves into **active** (in M, or show-both) -and **inactive** (tagged into some other mode, not M). For each track: +Toggling to mode M partitions **every** leaf into **active** (belongs to M, or +show-both) and **inactive** (belongs to some other mode — tagged elsewhere, or +untagged/Arrange when M is not Arrange). Untagged leaves are Arrange members and +park identically to tagged ones; there is no unmanaged leaf. For each track: **Active leaves** and **derived-visible parents** → restored to their snapshot values (see restore contract) and shown. @@ -138,8 +140,9 @@ of the CPU reclaim, not a bug. It must be documented at the toggle affordance so the user isn't surprised. **Never touched:** `B_MUTE` and `I_SOLO`. The tool owns visibility, `B_MAINSEND`, -`I_FXEN`, and FX-offline — nothing else — and only on tracks it has tagged. The -user's mute/solo survives every toggle, untouched. This is the exact analog of the +`I_FXEN`, and FX-offline — nothing else — across every managed leaf, tagged or +untagged. The user's mute/solo survives every toggle, untouched. This is the exact +analog of the capture pillar's non-destructive invariant: **the tool never destroys the user's real state to do its job.**