Invariants: the load-bearing rules every verb upholds

The design invariants are the load-bearing rules every Verbs and dog upholds — the small set of guarantees that keep the command language unambiguous and the store safe. The goal is to state them in one place so a change that would break one is easy to spot. The method: a handful of write-path, branching, and resolution invariants, plus the open edges still being settled; the per-verb pages and Store carry the detail, this page carries the contract.

Write-path invariants

The write path has exactly one commit-maker and one ref-writer, a linear first-parent spine, and a strict fast-forward rule, so history stays simple and safe.

Branch and worktree invariants

Branches are cheap one-row entries, speculative work forks preventively, and one store backs many worktrees, with detach the one explicit escape hatch.

Resolution and interop invariants

URI shape alone fixes the resource, remotes are cached unless a transport scheme is named, projectors never mutate, and git peers see a flat byte-faithful namespace.

Open edges

A few cross-cutting contracts are still unsettled; the per-verb pages carry their own TBDs, this section the architectural ones.