docs: frame versioning scheme + beta side-channel (Phase V)

Add docs/product/versioning-and-release.md and a PLAN.md Phase V pointer
laying out release versioning and the beta side-channel as decidable
options (V1-V4, unsettled - awaiting Daniel).
This commit is contained in:
2026-07-26 05:48:45 -04:00
parent 6c6a275234
commit cce9016279
2 changed files with 370 additions and 0 deletions
+36
View File
@@ -435,3 +435,39 @@ untouched.
Both docs of record: `docs/product/removal-and-prune.md` §Fork R-C/R-D/R-E and
CONTEXT.md §Prune (Settled forks).
---
# Phase V — Versioning & release (release-milestone pillar, own lettered namespace)
> **New pillar, own lettered namespace.** Version scheme + beta side-channel — the
> release-deployment path M11 forward-implies but that had no phase or points.
> 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 V1V4 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.
## 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.