docs: archive Phase L L7 to COMPLETED; reconcile CLAUDE.md + CONTEXT.md + PLAN.md
This commit is contained in:
+15
-15
@@ -1688,9 +1688,8 @@ id→slot map) is settled at build; the *contract* below holds either way.
|
||||
slot** (append). It never fills an earlier gap automatically — a gap is a user's deliberate
|
||||
layout, not a hole to be plugged.
|
||||
- **Delete / remove / prune:** removing a sample **leaves its slot empty** (does not re-pack) so
|
||||
every other sample keeps its position. Define at build whether a purely-empty trailing tail is
|
||||
trimmed for content-height purposes (the recommendation: trim trailing empties for scroll
|
||||
extent, keep interior gaps).
|
||||
every other sample keeps its position. Trailing empty tail is trimmed for scroll-extent
|
||||
purposes; interior gaps are preserved (confirmed at build).
|
||||
- **Reorder:** the user drags a card to a target slot within its bank; the pure reorder mutator
|
||||
moves that sample's position to the target slot, gap-preserving. **Drop-into-empty-slot places
|
||||
there; drop-onto-occupied inserts-before and shifts the tail** (matching common file-manager
|
||||
@@ -1739,8 +1738,8 @@ kit draw is shell.
|
||||
requires a **tempo + time-signature** reference. `Sample` already carries `captureTempo` (BPM at
|
||||
capture) and `lengthBeats`, but **no time-signature.** **Decision: capture-time stamp** — add
|
||||
`captureTimeSigNum` / `captureTimeSigDenom` to `Sample` + its JSON round-trip, stamped on the
|
||||
capture path (read the project meter at capture via the REAPER meter API — verify
|
||||
`TimeMap_GetTimeSigAtTime` / equivalent against the SDK at build). bars.beats.subdivisions renders
|
||||
capture path (read the project meter at capture via `TimeMap_GetTimeSigAtTime` — confirmed
|
||||
at build against the SDK). bars.beats.subdivisions renders
|
||||
from the stamped tempo + meter, **stable under later project tempo/meter changes** — a bank sample
|
||||
outlives the project state it was captured under, matching the existing `captureTempo` stamp
|
||||
philosophy. This is a **capture-path write beyond draw work** (its own checkbox in the PLAN, now
|
||||
@@ -1812,8 +1811,8 @@ precisely:
|
||||
pool's rules forbid. The consistent rule the model enforces: **the replace's index-removal step
|
||||
is the same operation as remove-from-bank, and it must pass the same pool-privilege guard that
|
||||
remove already applies — if remove-from-pool would be rejected for that sample, Alt+Replace over
|
||||
it is rejected too** (the drop falls back to a no-op or the default insert-shift; settle the
|
||||
exact rejection UX at build). No special pool-only replace path; one rule, guarded by the
|
||||
it is rejected too** (the drop falls back to a no-op; the pool-privilege guard is reused
|
||||
as-is — confirmed at build). No special pool-only replace path; one rule, guarded by the
|
||||
existing pool invariants.
|
||||
|
||||
**Drop-result cursor cues (SETTLED 2026-07-27 — REAPER-idiomatic special cursors).** During a
|
||||
@@ -1828,12 +1827,13 @@ distinct action cursors. The cue set:
|
||||
occupied slot** (i.e. only when precedence resolves to the Alt+replace case). It must not appear
|
||||
over an empty slot or when Alt is not held.
|
||||
|
||||
**Shell mechanism:** the shell sets the cursor via Win32/SWELL `SetCursor` (REAPER ships its own
|
||||
action-cursor idiom as the visual reference — match its feel; load or synthesize kit-consistent
|
||||
cursors at build). **The *decision* of which cue applies stays in the pure gesture/disambiguation
|
||||
helper** — the same helper that resolves precedence returns the resolved gesture (reorder / move /
|
||||
copy / os-drag-out / replace), and the shell maps that pure result to a cursor. No cue logic in
|
||||
the shell; the shell only owns the `SetCursor` call and the cursor resources.
|
||||
**Shell mechanism:** the shell sets the cursor via Win32/SWELL `SetCursor`. SWELL stock cursors
|
||||
were chosen at build (Reorder→`IDC_SIZEALL`, Move→`IDC_HAND`, Copy→`IDC_UPARROW`,
|
||||
Replace→`IDC_SIZEWE`; no custom cursor load/synthesis required). **The *decision* of which cue
|
||||
applies stays in the pure gesture/disambiguation helper** — the same helper that resolves
|
||||
precedence returns the resolved gesture (reorder / move / copy / os-drag-out / replace), and the
|
||||
shell maps that pure result to a cursor. No cue logic in the shell; the shell only owns the
|
||||
`SetCursor` call and the cursor resources.
|
||||
|
||||
### Pure/shell discipline (L7)
|
||||
|
||||
@@ -1856,8 +1856,8 @@ editor (`IPlugView` LICE surface), the S6 embed strip, and the keyboard strip li
|
||||
Phase S, which is **not on dev yet** (it exists on the phase-s worktree). L3 cannot be
|
||||
built on dev until Phase S's editor/embed surfaces (≈ S1 / S6 / S10) merge to dev — **the
|
||||
Phase L team must not chase these files on dev; they are not there.** Until then L3 is a
|
||||
planned, blocked point; L1, L2, L4, and **L5 have all landed** — see `COMPLETED.md`. L4 and L5
|
||||
are independent of the L3 gate.
|
||||
planned, blocked point; L1, L2, L4, L5, L6, and **L7 have all landed** — see `COMPLETED.md`.
|
||||
L4, L5, L6, and L7 are independent of the L3 gate.
|
||||
|
||||
**Coordination contract (load-bearing):** Phase S's S10–S13 build their interaction UX with
|
||||
the **current** drawing and **adopt the L1 kit when it is available — they are NOT gated on
|
||||
|
||||
Reference in New Issue
Block a user