Skip to main content

RFCs & design docs

Big changes start in docs/spec/. That directory is the authoritative design surface for the project — the Docusaurus site documents what Versionx does today; the spec documents what Versionx aims to be and why.

When to write a spec entry

Write a new spec page or update an existing one when:

  • You're proposing a new subsystem (e.g., a new tier of adapters, a new release strategy, remote state).
  • You're changing a load-bearing interface in a way that affects multiple crates.
  • You're making a decision that future maintainers will need the context for ("why did we shell out instead of reimplement?").

Skip the spec for:

  • Bug fixes.
  • Small feature additions that fit cleanly into existing subsystems.
  • Documentation or test-only changes.

Proposing a new spec page

  1. Copy the nearest existing spec doc as a template.
  2. Include the standard sections: Scope, Contract, Design principles honored, Rationale, Open questions.
  3. File a PR titled docs(spec): propose <topic>.
  4. The PR body includes a summary and a decision request.

Review model

  • Spec PRs are reviewed for architectural fit, not prose polish.
  • Two approvals before merge for anything affecting crate boundaries.
  • One approval for single-subsystem additions.
  • Open questions are OK at merge time — they become follow-up issues.

Relationship to the site

  • Spec is authoritative for design decisions. "Why do we do X?" → spec.
  • Site is authoritative for current behavior. "How do I do X?" → site.

When a spec doc changes in a way users care about, the corresponding site page(s) must update in the same PR. The reverse is not required — site-only edits don't need spec changes.

The spec files today

Index at docs/spec/00-README.md. Current set:

#FileScope
0000-README.mdIndex, north star, design principles
0101-architecture-overview.mdCrate layout, process model, transport surfaces
0202-config-and-state-model.mdversionx.toml, lockfile, state DB
0303-ecosystem-adapters.mdPackageManagerAdapter trait, tier plan
0404-runtime-toolchain-mgmt.mdRuntime installers, shims, pinning
0505-release-orchestration.mdRelease strategies, AI-assisted changelogs
0606-multi-repo-and-monorepo.mdTopologies, saga protocol
0707-policy-engine.mdPolicy DSL, Luau, waivers
0808-github-integration.mdActions first, App deferred
0909-programmatic-and-ai-api.mdSDK, JSON-RPC, HTTP, MCP
1010-mvp-and-roadmap.mdPhased delivery plan
1111-version-roadmap.mdPer-version 0.1 → 1.4 plan

Add a new file with the next number. The 00 index grows to match.

See also