docs: retire the bake mono collapse and FX-GUID keying entries, file what they left behind
Both landed with accepted consequences rather than avoided ones, so COMPLETED carries the identity move and the offline-FX degrade. Two line-ceiling entries and the DAW-unverified GUID stability are now tracked.
This commit is contained in:
@@ -1135,3 +1135,50 @@ exercises "the manifest parses, the layout computes, the exact-size proof fails"
|
||||
the payload boundary instead. No production module was touched — the wave adds test-tree
|
||||
files, the corpus, its README, the verification script, and one path variable in the root
|
||||
`CMakeLists.txt`.
|
||||
|
||||
### Resample-bake mono collapse — closes the `docs/TODO.md` deferral (ad-hoc)
|
||||
|
||||
`prepareLanding` (`src/shell/capture/bake_landing.cpp`) now applies the shared lossless
|
||||
mono collapse to the staged buffer — via a new thin wrapper `applyMonoCollapse` in
|
||||
`src/core/capture/wav_codec.cpp` — before the hash and the channel-count read, so the
|
||||
hash, the entry, and the written file all come from one collapsed buffer. A dead-center
|
||||
(dual-mono) bake now lands as a 1-channel file exactly as a dead-center offline capture
|
||||
already does; a true-stereo bake is byte-identical to before, asserted on bytes and on
|
||||
hash.
|
||||
|
||||
**The blocker this deferral originally cited has cleared.** `bake_land.cpp` was
|
||||
another team's freshly-landed remediation surface at the time; that remediation has
|
||||
since landed, which is what made taking this item this wave safe.
|
||||
|
||||
**Consequences accepted, not avoided:**
|
||||
- A dead-center bake's **content identity moves** — the hash now covers the collapsed
|
||||
bytes, so a dual-mono bake will not hash-dedup against a stereo twin already in the
|
||||
bank, and its derived file name changes. This was already documented as accepted for
|
||||
the other capture paths in `src/core/capture/CLAUDE.md`; the bake path now inherits
|
||||
it rather than being an exception.
|
||||
- `BakeOutcome::channelCount` now answers 1 for a dead-center bake, which flips the
|
||||
instrument's channel-mode auto-default to Mono. Safe: the audio is identical either
|
||||
way when the source was dead-center, and the consuming site was already written
|
||||
anticipating that value.
|
||||
|
||||
### Design View FX-GUID keying for `restoreFxOffline` — closes the `docs/TODO.md` deferral (ad-hoc)
|
||||
|
||||
`restoreFxOffline` (`src/shell/view/view.cpp`) now returns each parked track's per-FX
|
||||
offline state to the plugin it was captured from, keyed by the FX's own GUID
|
||||
(`TrackFX_GetFXGUID`) rather than its slot index. New pure module
|
||||
`src/core/view/fx_offline.{h,cpp}` holds the keying types (`FxKeying`: Identity/Slot),
|
||||
the per-FX snapshot/plan types, and `resolveFxRestore`, which matches each captured
|
||||
state against the chain as it stands at restore time. `view_state` gained a v2 schema
|
||||
that writes the identity array beside the v1 slot array, so an older build reading a
|
||||
v2 blob keeps the behaviour it had rather than losing every FX state.
|
||||
|
||||
**Consequences accepted, not avoided:**
|
||||
- A dropped FX (one whose captured identity is no longer live in the chain at restore
|
||||
time) is left **offline**, as park left it, with its snapshot already cleared — the
|
||||
console report names the drop and the recovery.
|
||||
- The console report uses the quiet `!SHOW:` form on every path, so it never
|
||||
force-opens the console window.
|
||||
|
||||
**Left open, filed to `docs/TODO.md`:** FX-GUID stability itself — whether
|
||||
`TrackFX_GetFXGUID` survives a chain reorder while parked — is unverified in the DAW
|
||||
(SWS issue #802 names a specific way it might not hold).
|
||||
|
||||
Reference in New Issue
Block a user