Worked examples
A gate decision, asking what is next, the merge that checks before it moves, closing honestly.
A gate decision, and what the surface refuses
Both --gate and --decision are required with no defaults. A stop1 gate is an owner act:
it asks for the one-time code on your terminal before anything is written. The engine
refuses, with nothing written:
- a decision by a non-human actor,
- vocabulary outside the closed sets above,
- a
mergeddecision (merged is observed, never declared), - a gate out of order — refused with the list of what the stream still owes.
Asking the fleet what is next
One read returns the stream's resolved state, every gate still owed, the legal next acts — and a ready-to-paste command per act, so "what now" never requires reconstructing the protocol from memory.
The merge that checks before it moves
Ordinary preconditions are checked first: the required gates recorded, the review lane
(when engaged) holding a recorded accept or conditions, the branch state
sane. Then the engine conflict-probes the current pair in a detached worktree, with no
suite. A violated precondition or conflict refuses by name (class merge-preconditions)
and lands nothing; a clean probe lands before the serialized act releases its lock.
Closing a stream honestly
Refused until the projection shows merged and the worktree is clean; every return
artifact's fate is recorded (landed:<path> is hash-checked against the worktree's copy; a
bare landed is recorded as an unverified claim). The second line re-verifies the archive and
removes the worktree. For work that ends without landing:
The stream ends, and the record says why.