Settlement
Every agent turn that changed something ends with a settlement card ā a short accounting of what actually happened, drawn by the runtime from its own record of tool calls rather than written by the model.
ā settlement āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā verified
bash cargo test -p mur-core
~ changed 3 file(s)
src/store/config.rs
src/cmd/model.rs
README.md
ā blocked
/etc/hosts ā sandbox: write denied outside project root
ā stopped at iteration cap (12 iterations) ā output may be incomplete
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Why the runtime draws it
An agent summarising its own turn is grading its own work, and the failure is always in the same direction: changed gets reported as done. A model can edit thirteen files, compile none of them, and write "fixed everywhere" ā every word of which it believes.
The card cannot be talked around, because it is assembled from what the loop recorded, not from what the model concluded. When the prose above it overclaims, the two visibly disagree, and the disagreement is the signal.
The three states
MUR keeps apart three things agents routinely collapse into one:
| What it means | How it is derived | |
|---|---|---|
ā verified | A command ran and passed | An executing tool (bash, test runner) that succeeded |
~ changed | Files edited, nothing run against them | A mutating tool (write, edit) |
ā blocked | Failed, refused, or denied by the sandbox | Any tool call that errored or was denied |
No judgement is involved, so there is nothing for a model to round in its own favour.
The empty row is stated, never omitted
When nothing ran, the card says so out loud:
ā verified (nothing ran ā no evidence this works)
Leaving the row out would let a reader assume success. That line is the difference between "changed nine files" and "it works" ā and it is the whole reason the card exists.
Stops name themselves
A turn that ended for any reason other than finishing says which:
ā stopped at budget ($5.00 spent) ā output may be incomplete
Previously a turn cut short by its iteration cap or budget could read exactly like a clean finish.
Quiet when there is nothing to settle
A turn that only answered a question gets no card. A three-row table under a one-line reply is noise, and noise is how a real signal stops being read.
Machine-readable, not just printed
The same ledger travels with the reply as structured JSON, so mur agent send,
fleet steps, and MUR Hub read the accounting directly instead of scraping the
prose.
The companion skill
The card covers what a tool ledger can see. mur-settlement, a built-in skill
loaded at session start, covers what it cannot: state in one line, what is left
and why, and the handoff last.