From 38337229d44ff260443962472ba6bdf400d5b0d1 Mon Sep 17 00:00:00 2001 From: daniel-c-harvey Date: Sat, 1 Aug 2026 22:27:07 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20correct=20=CE=93's=20payload=20rungs=20?= =?UTF-8?q?to=20v15/v16/v17=20after=20=CE=9E=20took=20v14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit States rung one as spent rather than derivable, so following the instruction no longer contradicts the stated number — the trap that caused the collision. --- docs/PLAN.md | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/docs/PLAN.md b/docs/PLAN.md index 3a2db48..7be35e9 100644 --- a/docs/PLAN.md +++ b/docs/PLAN.md @@ -1062,10 +1062,10 @@ module under `core/instrument/engine/` (each with its own `_tests` targe `shell/instrument/reasampler_processor` (the chain, the published block state, **and the `getLatencySamples` / `restartComponent(kLatencyChanged)` path**), and **the phase's FIRST params-payload rung** (the limiter enable flag). **Does not own** MASTER's deck geometry or -any drawing — that is Γ-W3-T1. **Read `kParamsPayloadVersion` on `dev` and take the next rung -above it rather than assuming the number** — Phase Ξ ran ahead of this plan's sequencing, so -the plan is not the record of what the ladder currently carries. On `dev` as of 2026-08-01 -that resolves to **v14**. +any drawing — that is Γ-W3-T1. **This track spends that rung: `kParamsPayloadVersion == 15`** +(`map/component_state_io.h:170`), confirmed on this branch as of 2026-08-01 — the full ladder +(spent / next-free / reserved) is stated in the phase summary's resequencing note near the end +of this phase's ASCII block. **Behavior.** - **Chain:** `voice mixer → master gain (existing ramped multiply) → limiter (bypassable) → @@ -1432,8 +1432,8 @@ second taper defined inside `deck_values`' binding** — one home, appended to, **The format ladder stays clean.** The loop enable maps onto the existing `SampleLoop::hasLoop`, which is already persisted and whose `start`/`end` are already written unconditionally — **no new field, no version bump** — so T1 keeps sole ownership of **the -phase's second payload rung** exactly as specced (v15 on `dev` as of 2026-08-01; read the -ladder rather than assuming the number). +phase's second payload rung** exactly as specced (v16 on this branch as of 2026-08-01, which +has already integrated Ξ; read the ladder rather than assuming the number). #### Γ-W2-T1 — `pitch-rate-deck` @@ -1445,7 +1445,8 @@ existing Varisp|Presrv toggle, with both new controls wired through the engine. **Surface boundary — owns:** `core/instrument/engine/play_params.h` + `core/instrument/map/play_seconds.h` (the two new fields), `core/instrument/map/component_state_io` + `params_payload` (**the phase's SECOND payload -rung** — v15 on `dev` as of 2026-08-01; read the ladder, do not assume the number), +rung** — v16 on this branch as of 2026-08-01, which has already integrated Ξ; read the ladder, +do not assume the number), `core/instrument/engine/voice.{h,cpp}` (the compounding and the note-on latch), `core/instrument/ui/deck_groups` (the PITCH/RATE descriptor **and** the three-state live predicate), `core/instrument/ui/deck_values` (the two new bindings). **Does not own** the @@ -4319,8 +4320,10 @@ Phase Γ — The instrument's control surface (none of the seventeen; ends Resequenced 2026-08-01, three times: the reflow split canvas (W1-T4) from arrangement (W3-T1); preserve-time-stretch moved W4 -> W1-T5, retiring Rate's interim stand-in; then Ruling 1 added W4 and Ruling 2 grew W1-T1. - Payload rungs are RELATIVE, not absolute — read kParamsPayloadVersion on dev and take the - next three above it. On dev at 2026-08-01 that is v14 / v15 / v16-reserved. + Payload rungs are RELATIVE, not absolute. On this branch at 2026-08-01, the first is already + spent — kParamsPayloadVersion == 15 (Γ-W1-T2, landed, above) — the second is the next free + rung, v16 (Γ-W2-T1, stated there), and the third remains RESERVED as v17, spent only if + Γ-W4-T1's storage verification forces it. Shared files, named: engine/CMakeLists.txt (W1-T2 | W1-T5), ui/CMakeLists.txt (W1-T1 | W1-T3), editor_session.cpp (W2-T1 | W2-T2) — all textual adjacency, not semantic contention. W3-T2's disjointness from W3-T1 is CONDITIONAL: confirm it against