Skip to content

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.

  • 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=mvp hides every element whose data-version is above the lens. Feature cards get data-version from 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.

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).

  • 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: true and 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).
4 open decisions