docs: record D2-W3-B landing; mark Phase D2 complete; preserve deferred panel indicator

Move D2-W3-B (item-level mode actions + W3-A polish) from PLAN.md to COMPLETED.md.
Phase D2 two-canvas sub-phase functionally complete; panel UI indicator explicitly
deferred, not dropped.
This commit is contained in:
2026-07-25 14:12:12 -04:00
parent 7885d5cf48
commit a786915451
2 changed files with 48 additions and 26 deletions
+40
View File
@@ -614,3 +614,43 @@ flips to fixed-lane mode, and whether the leftover empty default lane 0 is silen
closed with no label (discarded by REAPER) when the plan is non-empty but every write closed with no label (discarded by REAPER) when the plan is non-empty but every write
was already satisfied, so no phantom undo points accumulate. was already satisfied, so no phantom undo points accumulate.
- **Review passed** with no Critical or Major findings. - **Review passed** with no Critical or Major findings.
---
## D2-W3-B — item-level mode actions + W3-A polish
**Goal:** Item-level lane/mode-management actions mirroring the track-level Design
View tag family (bindable in the Actions list), plus the three code-review polish
items carried from D2-W3-A. The persist slice and lane-ownership index round-trip
were completed in D2-W3-A; this wave closes the remaining action surface and
cleans up the implementation.
See CONTEXT.md §Two-canvas sub-phase (Module architecture — persistence).
**Verify (in DAW):** Item mode actions registered and MIDI-bindable in the Actions
list; re-drive mint/apply so each item lands on its mode's managed lane; manual-lane
items exempt; one undo block per action. ctest 14/14 green.
**Depends on:** D2-W3-A.
- [x] "Move selected items → Design" action (`CEREBELLUM_REASAMPLER_VIEW_` family):
retags selected items' membership to Design mode, re-drives the existing mint/apply
so each item lands on its mode's managed lane; manual-lane items exempt; one undo
block.
- [x] "Move selected items → Arrange" action: retags selected items' membership to
Arrange mode, re-drives mint/apply; manual-lane items exempt; one undo block.
- [x] "Untag selected items" action: removes selected items' membership, re-drives
mint/apply; manual-lane items exempt; one undo block.
- [x] All three registered (`command_id`/`gaccel`/`hookcommand`); MIDI-bindable.
- [x] W3-A polish — simplified `applyMintPlan`'s redundant `I_NUMFIXEDLANES` re-read:
single grow-and-track pass removes the second `GetMediaTrackInfo_Value` call inside
the mint loop.
- [x] W3-A polish — extracted shared item-read seam (`src/item_read.{h,cpp}`):
removes duplicated `itemGuid`/`itemLaneName` read logic from `view.cpp` and
`bank_panel.cpp`.
- [x] W3-A polish — added reconcile guard in `reconcileManagedLanes`: skips lanes
encoding an unregistered mode id (log and skip rather than silently recording an
orphaned ownership entry).
**Notes/decisions:**
- ctest 14/14 green; review passed with no Critical or Major findings.
- **Panel UI indicator explicitly deferred** (Daniel's decision): a per-track
lane-split marker has no natural cheap home in the bank panel; the mode switch
already shows the active mode. Preserved as a deferred/backlog note in PLAN.md
Phase D2 — not silently dropped.
+8 -26
View File
@@ -119,32 +119,14 @@ landed milestone.
> point lands, doc-keeper moves it to `COMPLETED.md`. > point lands, doc-keeper moves it to `COMPLETED.md`.
> >
> **D2-W1 (pure lane extension), D2-W2 (shell: lane application + new-content > **D2-W1 (pure lane extension), D2-W2 (shell: lane application + new-content
> detection), and D2-W3-A (lane minting + item→lane assignment + persist > detection), D2-W3-A (lane minting + item→lane assignment + persist round-trip),
> round-trip) have landed** — see `COMPLETED.md`. > and D2-W3-B (item-level mode actions + W3-A polish) have all landed** — see
> `COMPLETED.md`. **Phase D2 is functionally complete.**
## D2-W3-B — two-canvas actions + panel UI indicators >
**Goal:** Any new lane/mode-management actions (bindable in the Actions list), and > **Deferred:** panel UI indicator for per-track lane/mode state (a per-track
any panel UI indicator for lane/mode state. The persist slice and the > lane-split marker). The mode switch already shows the active mode; no natural
lane-ownership index round-trip were completed in D2-W3-A; this wave closes the > cheap home for a per-track indicator was found in the bank panel. Explicitly
remaining UI and action surface. > deferred — not silently dropped. Can be picked up later if wanted.
See CONTEXT.md §Two-canvas sub-phase (Module architecture — persistence).
**Verify (in DAW):** Lane/mode-management actions are registered and bindable in
the Actions list; the panel UI indicator reflects the current lane/mode state.
**Depends on:** D2-W3-A.
- [ ] Any new lane/mode-management actions (`command_id`/`gaccel`/`hookcommand`);
bindable in the Actions list.
- [ ] Any panel UI indicator for lane/mode state.
**D2-W3-A code-review polish (fold into this wave):**
- [ ] Simplify the redundant per-mint `I_NUMFIXEDLANES` re-read in `view.cpp`
(`applyMintPlan`): a single grow-and-track pass removes the second
`GetMediaTrackInfo_Value` call inside the mint loop.
- [ ] Optional shared item-read helper to remove duplicated `itemGuid`/`itemLaneName`
read logic between `view.cpp` and `bank_panel.cpp`.
- [ ] Optional defensive note/check in `reconcileManagedLanes` for the edge case
where a managed lane name encodes an unregistered mode id (log and skip rather
than silently record an orphaned ownership entry).
--- ---