Amendments & blast radius
Changing a canon beat is not an edit — it is a migration with a computed impact set. Prose fights its beat; that is normal and expected. When it happens, you amend the beat, and Keel tells you exactly what the change breaks: which leaves realize it, which neighbouring contracts stop holding, which references and promises are stranded. The whole change then lands atomically — or not at all.
A worked amendment, end to end
Say the crossing scene taught you the toll is memory, not coin — the beat's exit condition is wrong. Check the beat out and change it:
The beat's own edit became the first member of changeset
a-1, landed as pending — visible to everyone, canon to
no one. Try to land too early and Keel refuses:
Reconcile the successor — an ordinary check-out and check-in, tagged to the changeset:
The warning you chose not to reconcile did not vanish — it became
tracked debt. Until that leaf is revisited,
keel status says so:
Why a changeset
A three-word canon change can touch six leaves. If each reconcile were its own review, nobody would use the tool for a week — so an amendment is reviewed once, as one changeset spanning many objects. While an object's head is pending in an open changeset, a plain check-in on it is refused: history cannot interleave.
Where the impacts come from
| DIRECT | every leaf realizing the amended beat — the prose that now serves a changed contract |
| CONTRACT | a changed exits_with breaks the successor's entry; a changed enters_with questions the predecessor's exit — ⛔ blocking |
| REFERENCE | leaves whose quote-anchored refs point at changed people or places, via the index |
| PROMISE | an opens removed strands its payoff; a pays removed orphans the setup |
| ⛔ blocking | must be reconciled into the changeset — or waived with the reason on record |
| ⚠ warning | may land as tracked debt; shows stale until revisited |
| · advisory | listed, never gating |
Waiving, and walking away
Sometimes the blocking impact is wrong, or you know better. Landing with
--waive "reason" proceeds — and writes your reason into the
amendment's record permanently. The other exit is full retreat:
Nothing is ever deleted. Abandoning walks each object's
head back to its last revision outside the changeset — but the pending
revisions stay in the trail, visible in keel log. The next
revision simply lands above them. History only ever grows.