Version lens & roadmap
version in frontmatter records the tier a feature first ships in — a
fact, set once at the roadmap session. Viewing is separate: the lens is
pure client-side state.
The ?v= parameter
Section titled “The ?v= parameter”- Ladder:
mvp → v1 → v2 → v3 → v4 → v5(src/lib/versions.ts). - No parameter (or
?v=v5) shows the full v5 vision — the north star. ?v=mvphides every element whosedata-versionis above the lens. Feature cards getdata-versionfrom frontmatter; arbitrary content can opt in via the<VersionGate version="v1">component.- The lens travels: internal links are rewritten to carry
?v=, and a floating banner shows the active scope with one click back to v5. - The workbench version popover (DEC-0018) is a slider over the same ladder; it re-filters live without a reload, in dev and on deployed previews alike.
The roadmap page
Section titled “The roadmap page”Two generated views, never hand-edited: the public /roadmap (what ships
when, marketing-friendly) and the workbench roadmap (/workbench/ roadmap), which adds gate state — the open decisions blocking each
version (Gate 3 is mechanical).
States & edge cases
Section titled “States & edge cases”- Unversioned features belong to the dream horizon: visible at v5 only, listed on the roadmap under “Awaiting roadmap session”.
- Blocked tiers (workbench roadmap) show which open decisions block
them — with titles in dev; production shows only IDs and a count (open
decisions are
private: trueand strip from public builds). - Invalid
?v=values fall back to v5. - Previewing never edits frontmatter — dragging the slider is a lens, not a scope change.
- Lens + time travel compose:
?v=works inside time-travel iframes (arrives in Phase 4).