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 meansHow it is derived
āœ” verifiedA command ran and passedAn executing tool (bash, test runner) that succeeded
~ changedFiles edited, nothing run against themA mutating tool (write, edit)
✘ blockedFailed, refused, or denied by the sandboxAny 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.