Stability

What semver covers from v1.0 โ€” and what deliberately tracks upstream instead. Edit on GitHub

Stability contract

Status: binding as of v1.0.0. This document is the semver contract โ€” breaking any covered item requires a major release.

groot's promise is narrow on purpose: the interface is stable; the output workspaces track living upstream generators by design. This page defines exactly where that line sits.

Covered by semver

SurfaceWhere it's specified
The command set: init, add, doctor โ€” plus the bun-create bare-destination routing (bun create groot my-app โ†’ init)cli-spec.md
Every documented flag: name, value domain, default, and semantics (including aliases like -y)cli-spec flag tables
Exit codes: 0 ok ยท 1 internal ยท 2 usage ยท 3 preflight ยท 4 generator ยท 5 stitch/verify/doctor-problems ยท 130 cancelledcli-spec.md#exit-codes
The groot.json manifest schema (version: 1) and its published $schema URLschemas/groot.schema.json
--json output shapes: init/add dry runs emit the manifest schema on pure stdout; doctor --json emits { healthy, workspaceRoot, checks[] } with checks[] entries shaped { name, status: pass|warn|fail, detail, fix? }cli-spec output contracts
The non-interactive contract (never prompt without a TTY; stdout purity in --json; plain line-based progress; interactive steps deferred, never run)cli-spec.md#non-interactive-contract-ci--agents
Bin names groot and create-groot; install.sh / install.ps1 entry points and their checksum-verification behaviorpackage.json bin, installers

Explicitly NOT covered

Change rules

Manifest schema evolution

Enforcement

packages/cli/src/contract.test.ts snapshots the covered surface โ€” the flag set of every command, aliases, exit codes, the bun-create routing table, and the schema's invariants (version const, required fields, slot/framework enums cross-checked against the live scaffold matrix). Any PR that touches the surface fails CI until the snapshot is updated in the same PR, which is the reviewer's cue to check this contract's change rules before merging.