An agent run can be complete while its outbound side effect is still unknown.

That distinction matters for email, GitHub comments, payments, ticket updates, browser actions, and every other operation where a remote system accepts a request asynchronously. A process exit of 0 proves only that your worker reached its local completion path. It does not prove delivery.

This article presents a small delivery ledger and a failure-injection test you can add before trusting an always-on agent.

The two facts you need to store

For each externally visible action, record two independent facts: