docs(plan): ground L3 readiness against landed Phase S surfaces

Both VST draw shells still draw flat off a local pre-L1 palette — L3
restyle confirmed live, not a born-in-kit no-op. Name the concrete gate
files, add the palette-reconcile point, enumerate the landed editor set.
This commit is contained in:
2026-07-27 03:42:24 -04:00
parent 40ee6bb6d1
commit a434ef47f8
2 changed files with 113 additions and 37 deletions
+52 -15
View File
@@ -584,26 +584,63 @@ not a forecast of them. If L2 starts before M11 lands, it designs against a movi
### 5.3 `L3` — VST editor + embed-strip restyle (GATED on Phase S landing on dev)
The ReaSampler 9000 VST editor (`IPlugView` LICE surface) and the S6 embed strip get the
full kit treatment: kit cached-font text (§3.1 — the kit's current face, no bundled font),
kit component draws, the **B palette with the three-accent pastel system**
(primary lime / secondary teal / tertiary purple), the **pastel spectral keyboard strip**
as the signature surface, hover/pressed/drag states everywhere.
The ReaSampler 9000 VST editor (`IPlugView` LICE surface, `reasampler_editor.cpp`) and the
S6 embed strip (`reasampler_embed.cpp`) get the full kit treatment: kit cached-font text
(§3.1 — the kit's current face, no bundled font), kit component draws, the **B palette with
the three-accent pastel system** (primary lime / secondary teal / tertiary purple), the
**pastel spectral keyboard strip** as the signature surface, hover/pressed/drag states
everywhere. The editor's landed component set (verified on the phase-s worktree) is broader
than an early "editor + keyboard strip" sketch: a **capture-first browser** (search box +
tabs + sample thumbnails, S10), **channel mono/stereo toggles** (S7), a **waveform pane with
start + loop markers** (S11), the **keyboard strip + zone bars** (S10/S10-Z), and **ADSR +
pitch sliders + Trigger/Gate & Varispeed/Preserve mode toggles** (S12/S15/S16) — every one of
these is on the restyle surface.
**L3 is explicitly GATED: these surfaces do not exist on dev yet.** The VST editor, the
embed strip, and the keyboard strip live in Phase S, which has landed on the phase-s
worktree but **not on dev**. L3 cannot be built on dev until Phase S (at least the editor
+ embed surfaces, S1/S6/S10) lands on dev. **The Phase L team must not chase these files
on dev** — the gate is stated so they don't. Until Phase S merges to dev, L3 is a planned,
blocked point; L1 and L2 are the live Phase L work.
worktree but **not on dev**. L3 cannot be built on dev until the two Phase S drawing shells
(`src/vst/reasampler_editor.cpp` + `reasampler_embed.cpp`) land on dev. **The Phase L team
must not chase these files on dev** — the gate is stated so they don't. Until Phase S merges
to dev, L3 is a planned, blocked point; L1 and L2 are the live Phase L work.
**Coordination contract (stated once, load-bearing):** Phase S's S10S13 build their
interaction UX with the *current* drawing and **adopt the L1 kit when it is available —
they are not gated on Phase L.** Whichever lands first (L1 kit or S10S13 UX), the kit is
**Landed-reality check (product-designer, 2026-07-27 — read-only against the phase-s
worktree).** Verified against the actual landed Phase S surfaces so L3's scope is grounded,
not forecast:
- **All Phase S UI draw is in exactly two shells** — `reasampler_editor.cpp` (the
`IPlugView` editor) and `reasampler_embed.cpp` (the S6 embed strip). Every other
`src/vst/` UI file (`editor_geometry`, `keyboard_strip`, `waveform_view`,
`capture_browser`, `param_slider`, `browser_scroll`, `embed_strip`) is a **pure
geometry/hit-test module with zero LICE and zero draw** — the house pure/shell discipline
held on the branch. L3 is therefore a **shell-side restyle of two files**; no geometry
rework, and the pure hit-test coverage is already there to lean on.
- **Both shells still draw at the floor.** They fill flat `LICE_FillRect` rectangles and
pipe text through raw GDI `DrawTextA` — the exact "temple os" path §0/§1.1 describe. They
do **not** include `theme.h` / `draw_kit.h`, do **not** call any kit `draw*`/`text()`, and
use **no** `LICE_CachedFont`. So the coordination contract's "born in the kit" branch did
**not** happen for the VST surfaces — L3 lands as a **full restyle**, and all three build
points below are confirmed live (none is a no-op).
- **There is a second palette to reconcile.** The editor shell carries its own local
constants block — `kColBackground = RGB(28,28,30)`, accent `kColThumb/kColWaveform =
RGB(120,200,160)`, `kColTitleBg = RGB(20,20,22)`, etc. — the **pre-L1 forest-green-on-near-
black palette** this doc's §2 set out to replace, mirrored (partially) in the embed shell.
That is a live divergence from the landed `theme` roles. Collapsing these two palettes into
the one `theme` kit is the concrete "one kit, one look" reconcile L3 performs (§5.3 build
point 2, PLAN.md §L3).
- **The Phase S branch carries an *older* L1 kit.** The kit modules (`theme`, `draw_kit`,
`component_geometry`) are present on the branch, but its `theme` predates dev's L4L7
palette revisions (the branch has only L1+L2). After Phase S merges to dev, L3 draws
against **dev's** current `theme`/`draw_kit`, so the restyle consumes dev's pastel-on-grey
roles, not the branch's stale copy — a merge-hygiene note, not a scope change.
**Coordination contract (stated once, load-bearing).** Phase S's editor/embed UX build
their interaction UX with the *current* drawing and **adopt the L1 kit when it is available —
they are not gated on Phase L.** Whichever lands first (L1 kit or the Phase S UX), the kit is
the **one source of drawing**; when both exist, the Phase S surfaces draw through it, and
L3 is the point that completes that adoption + applies the settled B+spectral look. If
S10S13 land on dev before L1, they draw in the current language and L3 restyles them; if
L1 lands first, S10S13 are born in the kit. Either way there is one kit, one look.
L3 is the point that completes that adoption + applies the settled B+spectral look. **In the
event that actually occurred, the Phase S surfaces reached the worktree with the current
(flat, local-palette) drawing and did not adopt the kit — so L3 restyles them.** Either way
there is one kit, one look.
### 5.4 Sequencing summary