Skip to main content
A correction is an addition. Nothing recorded is ever edited or deleted: what was reported wrong stays readable, a further fact withdraws it, and every figure is derived again from the record that now stands. An audit reads the mistake, the withdrawal, and who recorded each. Two instruments cover everything, and which one applies is decided by what was wrong:

Retraction

A retraction withdraws one recorded fact, totally: no amount, no scope, no partial version of the fact survives. The body carries on, the day the fact was found to be an error, and the account every act gives of itself. On Loans, an agreement recorded in error was cancelled under cancel-0001. The follow-up found the error’s error: the cancellation itself had been recorded on the wrong loan. The cancellation is a fact, so it is retracted, by the identifier the loan’s events[] carries:
Retract the cancellation
201
The loan reads active again in the same answer, and the record keeps everything: the cancellation, its act, and the retraction block naming who withdrew it, when, and why. A withdrawn fact contributes to nothing. Every derivation runs as if it had never been recorded, and stays readable forever. A retraction is an act like the others: an identical retry answers 200, its reference reused for anything different is 409 reference_reused, and withdrawing what is already withdrawn is a conflict naming the event:
409

What cannot be

The first is refused naming the cure:
422

Reversal

Money reported in error is corrected on the payment itself, not on the loan’s events: a reversal under the payment’s own reference, stating actor, basis and one of three reasons, chargeback, returned_transfer, operator_error. The payment stays readable, marked reversed, and every allocation it produced is derived again without it, so a loan it had closed reads open. Payments carries the route, the body and the worked reversal in full.

What is recomputed

Nothing, and that is the design. There is nothing to recompute, because nothing derived is stored. State, arrears, payoff figures and schedules are computed from the recorded facts on every read, so a correction does not trigger a recalculation. It changes what the next read derives from. One consequence is worth designing for. Facts recorded while the withdrawn fact stood are not re-examined. Where a sequence of corrections leaves the record contradicting itself, the fold resolves it by precedence and reports the pair in anomalies[] rather than refusing the read. Loans carries the states, the precedence and the anomaly channel.