Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-0009: tiers L1/L2/L3, the local live branch, the trellis CLI

Status: accepted (2026-07-06)

Context

The trial chapter’s three tiers of permanence worked as a mental model but had no machinery: L2 tolerated “imperative in $HOME” as an untracked soft spot, and nothing could enumerate what was live-but-not-landed. The reboot-prep ritual was a skill prompt, not a tool.

Decision

Make the tiers first-class via the trellis CLI and a local live branch. L1: trellis try CMD executes and journals to a tmpfs L1 journal; dies at reboot. L2: trellis keep = commit on live + nix build + hand the human the pkexec activation; the machine builds from live, so main..live IS the mechanically enumerable not-yet-landed set. L3: trellis land squashes live commits into a PR to main, CI gates it, the human merges, trellis sync rebases live. trellis gate is the pre-reboot review (since-boot sweep, hyprctl drift, journal replay, main..live). Clean-tree invariant: a dirty tree is a transient authoring state, never a storage tier - the ward-os “imperative-in-$HOME as tolerated L2 debt” category is abolished.

Alternatives considered

  • Keep tiers as prose + reboot-prep skill: proven leaky in the trial.
  • No live branch (working tree as L2): unenumerable, unbuildable state.

Consequences

Every durable change has a commit; every reboot is preceded by an auditable promotion decision; erosion has to pass a PR to become permanent.