Almost all software is designed under a tacit assumption: if it goes wrong, try again. The assumption is reasonable for most of what gets built, and it is what allows teams to iterate quickly without thinking about it.
There is a class of decisions for which it is false. Systems that dispatch physical resources, grant or deny credit, revoke access, halt a production line, mark a case as urgent, authorise a payment. In those, being wrong does not cost a retry: it costs money that has left, time that does not come back, a person affected by a decision nobody reviewed. The design changes at four points, and none of them is about being right more often.
The four points
01
Reversibility
The action is expressed as an intention before it becomes an effect, so that there is somewhere to stop.
02
An explicit envelope
The system knows where the range it was validated in ends, and refusing is an exit designed like any other.
03
Ownership
Every decision has a named function that answers for it when it is questioned.
04
A channel of discovery
There is a path by which the error surfaces before a client, a regulator or a reporter surfaces it.