docs(phase-q): record Q-W0 close + Q-W1 landing — points moved to COMPLETED.md; skipped riders and bank_book nameKey residual preserved

This commit is contained in:
2026-07-29 09:50:37 -04:00
parent 0ce3f4894a
commit 9dd3440b75
2 changed files with 101 additions and 68 deletions
+72
View File
@@ -2883,3 +2883,75 @@ now covered by the same mechanism.
- [x] `reasampler_processor`: `reloadInstrument` decodes from `SampleRefs_` (bank-free); `SampleRefs` table added to `ComponentState` v10; heal timer + poll-to-play removed; preview summing removed; `PreviewCard` member removed.
- [x] `sample_map`: `SampleRefs` type + `SampleRefEntry` struct; `refreshRefsFromBank`, `retainRefs`, `resolvePerformanceFromRefs` (decodes directly from refs, no bank blob required); `kComponentStateVersion` bumped to 10; pre-v10 lift to empty refs.
- [x] `ComponentState` v10 serialization round-trip: new `sampleRefs` field; pre-v10 blobs migrate on load.
---
## Q-W0 fix-now remediations — closes Q-W0 (2026-07-28)
> **Merged to `phase-q` 2026-07-28 (commit `546927e`).** Closes the Q-W0 sub-gate — Q-W0
> (pre-restructure functional + DSP quality audit) is now fully closed. Part of the phase-q
> integration that later reached 60/60 green with Q-W1.
**Goal:** Land the six Daniel-approved fix-now remediations from the Q-W0 audit triage, plus
seven review riders surfaced during their review, before any structural Q-wave begins.
**Verify:** Each remediation lands with its module's CTest target green; the audible DSP fixes
carry a stated before/after listening check.
- [x] **T1-01** — linked-lag stereo SOLA + follower self-heal fallback.
- [x] **T1-03** — playable-span prime bound.
- [x] **T1-09** — declick dead-state removal.
- [x] **T2-01a** — provenance wire-cursor hardening backport.
- [x] **T3-01** — rate-derived gain ramp.
- [x] **T3-03** — rate-derived fade ceiling.
- [x] Seven additional review riders landed in the same merge (not individually itemized in
this entry).
**Notes/decisions:**
- Landing these six fix-nows (plus the review riders) closes Q-W0 entirely — audit, triage,
sign-off, and remediation are all complete — and opens Q-W1.
---
## Q-W1 — safe opener: `core/json` extraction + directory/namespace layout (2026-07-29)
> **Merged to `phase-q` 2026-07-29. Integrated suite 60/60 green.** First structural wave of
> Phase Q; unblocked by the Q-W0 fix-now remediations closing 2026-07-28.
**Goal:** The zero-god-module-risk opener. Extract a pure `core/json` module (parser +
serializer) and delete the five hand-rolled JSON decoders — the four `Parser`s in `bank_model`
/ `bank_book` / `view_mode_model` / `owned_manifest` plus `tail_control`'s fifth decoder; impose
the settled `core/`/`shell/`/`app/` directory layout + sub-namespaces on the clean pure libs,
clean shells, and clean VST pure libs — pure relocation, no logic change.
**Verify:** CTest green at every commit (60/60). The five duplicate JSON decoders are gone,
replaced by one `core/json` consumed by all five former consumers; round-trip serialization is
byte-identical to before. Every relocated clean module compiles and its test executable passes
unmoved. No REAPER type crosses into any `core/` file.
- [x] `core/json` extracted (`json::Reader`/`json::Writer`); `bank_model`, `bank_book`,
`view_mode_model`, `owned_manifest`, and `tail_control` rewired onto it; the five hand-rolled
JSON decoders deleted.
- [x] Wire-`Cursor` family collapsed into `core/wire` — one hardened survivor codec.
- [x] Shared `readFileBytes` pure helper added; linked by both artifacts.
- [x] `slot_map` extracted from `bank_book`, with its own `slot_map_tests`.
- [x] ~50 clean modules relocated into `core/{model,view,capture,audio,ui,reclaim,version,json,
util,wire}/`, `core/instrument/{engine,map,ui}/`, `shell/{capture,panel,view,persist,actions,
instrument}/`; `main.cpp` moved to `app/`. Sub-namespaces applied to every relocated clean
module.
- [x] Rect unification: one concrete `ui::Rect` + `contains()` + per-role aliases — the
XYWH-vs-LTRB fork retired, `footer_bar.h`'s "NAME NOTE" collision workaround gone.
- [x] `clamp01` deduplicated.
- [x] Naming riders: survivor JSON parser minted as `json::Reader`/`json::Writer`; `BankIndex`
renamed to `BankModel` (verified by `bank_model_tests`).
- [x] `reasampler_uid.h` relocated to `core/wire/`.
- [x] Interim `core/namespaces.h` shim added for the six not-yet-split god TUs; each downstream
split wave (Q-W2 onward) retires its own includes of it as that module splits.
**Notes/decisions:**
- **Riders explicitly skipped/deferred:** T4-22 (`hitIndex` hit-test template) — not trivial,
deferred as an opportunistic follow-on once the rect unification is in use downstream; T4-06
(`view_mode_model` planner split) — optional, deferred; T4-09 (`view_lanes` split) —
deferred (in scope only if a later wave touches `view.cpp` anyway).
- **Open residual — `bank_book.cpp` still 737 LOC.** The serialize/deserialize seam is
identified but blocked on a `nameKey` linkage design decision, escalated to Daniel and
**pending** as of 2026-07-29. Downstream waves touching `bank_book` should check this
residual before assuming the split is finished.