docs(plan): settle Phase V forks V1-V4
V1 semver via project(VERSION), ext-state version stamp first-wave. V2 plain -beta suffix. V3 console line + panel readout. V4 reverses prior rec: beta ships as a separate coexisting binary with isolated ext-state namespace + command-id prefix.
This commit is contained in:
@@ -445,29 +445,33 @@ CONTEXT.md §Prune (Settled forks).
|
||||
> Namespaced **`V` (Versioning)** alongside `M`/`D`/`B`/`R` because it is a distinct
|
||||
> concern (build identity + channel isolation) that touches CMake, `main.cpp`'s
|
||||
> forever-stable command-id contract, and the `"reasampler"` ext-state — not a
|
||||
> capture step. Product framing + the full option analysis + open forks:
|
||||
> `docs/product/versioning-and-release.md`. **Forks V1–V4 UNSETTLED — awaiting
|
||||
> Daniel.** No points are scoped-to-build until Daniel picks; the note lays out the
|
||||
> recommendation (semver via `project(VERSION)` + ext-state version stamp; beta =
|
||||
> branch-discipline/one-at-a-time built on a compile-time channel flag, with true
|
||||
> simultaneous coexistence designed-as-a-seam but deferred). Deploy/CD wiring hands
|
||||
> off to dev-ops.
|
||||
> capture step. Product framing + the full option analysis: `docs/product/versioning-
|
||||
> and-release.md`. **Forks V1–V4 SETTLED (Daniel, 2026-07-26)** — semver via
|
||||
> `project(VERSION)` + ext-state version stamp prioritized first-wave; plain `-beta`
|
||||
> suffix; console line + panel readout (about-box deferred); and **beta ships as a
|
||||
> separate, fully isolated coexisting binary (beta-in-isolation)** — a reversal of the
|
||||
> note's original one-at-a-time recommendation. Deploy/CD wiring (now two named
|
||||
> artifacts per platform) hands off to dev-ops. Build-scoped points to be drawn up.
|
||||
|
||||
## Open forks — for Daniel (see `docs/product/versioning-and-release.md`)
|
||||
- **V1 — version scheme.** Recommend semver, single source of truth in CMake
|
||||
`project(reaper_reasampler VERSION x.y.z)`, threaded into the binary; **plus a
|
||||
writing-version stamp in the `"reasampler"` ext-state blob** for forward
|
||||
migration/detection. Approve scheme + whether the ext-state stamp lands first wave.
|
||||
- **V2 — beta suffix source.** Recommend `git describe` decorating beta builds while
|
||||
`project(VERSION)` owns the release triple. Approve or simplify to plain `-beta`.
|
||||
- **V3 — user-visible home.** Recommend startup console line (`"ReaSampler x.y.z
|
||||
loaded"`) + a bank-panel version/channel readout; about-box deferred. Panel
|
||||
placement is the residual polish call.
|
||||
- **V4 — beta channel shape (the big one).** Recommend **branch-discipline /
|
||||
one-installed-at-a-time (Option B) built on a compile-time channel flag (Option
|
||||
C)**, with **true simultaneous coexistence (Option A) seam-designed but deferred**.
|
||||
Sharp edges that must be decided explicitly: the forever-stable command-id prefix
|
||||
(`CEREBELLUM_REASAMPLER_`) must not collide between coexisting builds, and the
|
||||
`"reasampler"` ext-state namespace must not let a beta corrupt a stable project's
|
||||
state — so the **ext-state-across-a-channel-swap policy** (isolate vs.
|
||||
stay-compatible/stamp-and-detect vs. accept-discipline) is genuinely Daniel's call.
|
||||
## Settled decisions (Daniel, 2026-07-26 — see `docs/product/versioning-and-release.md`)
|
||||
- **V1 — version scheme: APPROVED as recommended.** Semver, single source of truth in
|
||||
CMake `project(reaper_reasampler VERSION x.y.z)`, threaded into the binary. **The
|
||||
`"reasampler"` ext-state writing-version stamp is prioritized to the first wave, not
|
||||
deferred** — every project saved without the stamp is harder to migrate later, so
|
||||
the migration seam lands early.
|
||||
- **V2 — beta suffix: plain `-beta`.** `project(VERSION)` owns the release triple; beta
|
||||
carries a `-beta` suffix. `git describe` decoration considered and rejected for
|
||||
legibility.
|
||||
- **V3 — user-visible home: recommendation accepted.** Startup console line
|
||||
(`"ReaSampler x.y.z loaded"`) + a bank-panel version/channel readout; about-box
|
||||
deferred. Panel placement is the residual polish call.
|
||||
- **V4 — beta channel shape: BETA-IN-ISOLATION (full coexistence).** *Reverses the
|
||||
original recommendation.* Beta ships as a **separate binary** (`reaper_reasampler_
|
||||
beta`) with an **isolated ext-state namespace** (distinct from stable's
|
||||
`"reasampler"` — a beta cannot corrupt a stable project's saved state) and an
|
||||
**isolated forever-stable command-id prefix** (beta/stable keybindings don't
|
||||
collide), so both install and run side-by-side. Built through a compile-time channel
|
||||
flag (`-DREASAMPLER_CHANNEL=beta`) as the mechanism. **Two permanent commitments
|
||||
locked in:** a second forever-stable command-id prefix and a second ext-state
|
||||
namespace. **Dev-ops:** the build now produces two named artifacts (stable + beta)
|
||||
per platform.
|
||||
|
||||
Reference in New Issue
Block a user