A gate that fires wrongly costs one argument. A gate that cannot pass costs the
practice — every session it blocks either loses its commits or learns to reach for
--no-verify. Reported from chesscast after seven blocked commits in one session.
$ katra reconcile status
reconcile: no changed code in the working tree — nothing to reconcile
$ git commit -m "feat"
katra: staged code isn't covered by a reconciliation receipt.
Declare it: katra reconcile --advance/--close <slug> ...
[blocked, exit 2]
$ katra reconcile --no-task --reason "declaring the staged work"
✓ recorded: this work advances no task
gate exit after declaring: 2
$ katra reconcile --skip --reason "just let me commit"
✓ skipped this unit of work
gate exit after --skip: 2$ katra reconcile status
work-generation: 864512ae0b6f
changed code (1): y.go
status: needs reconciliation —
$ katra reconcile --no-task --reason "declaring the staged work"
✓ recorded: this work advances no task
gate exit after declaring: 0
$ git commit -m "feat"
[allowed]$ katra reconcile status
status: ✓ reconciled — the gate will allow a stop
$ git add a.go # commit this part first
$ git commit -m "a"
BEFORE: [blocked, exit 2]
AFTER: [allowed, exit 0]
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
= SHA-256 of the empty string — a receipt covering nothing,
written cheerfully, forever.