Act and Undo is the pair that makes autonomous execution trustworthy. The principle underneath it: you can only confidently undo what you can prove happened.
Act: execution with evidence
When an agent acts, the act lands in the Ledger with a receipt attached: the raw evidence that verifies the outcome. A status 200 with its response payload, a message delivery confirmation, a diff, a file hash. The receipt carries its source system, timestamp, and verification status. Claimed outcomes without evidence are exactly what erodes trust in autonomous work, so an act whose receipt cannot be obtained is flagged as unverified instead of quietly counted as done.
Undo: scoped by the receipt
Undo is not a guess at compensation. An undo operation references the original act’s receipt and reverses what that receipt proves happened, no more, no less. The undo itself is an act, so it produces its own receipt. The Ledger ends up holding the full story: what was done, the proof, the reversal, the proof of the reversal.
What cannot be undone is gated, not undone badly
Some actions have no honest undo. A message a human already read cannot be unread. Heidi treats those as a separate action class: they default to draft-and-confirm and never enter the act-with-undo tier. The same logic protects memory: facts are retired with the reason on record rather than silently deleted, so even forgetting leaves a receipt.