Customer Intent Validate PaymentIntent Confirm Commit Reconcile

Data flows through the payment sequence — steps 1–4 are the green zone with zero committed state. Step 5 is the amber commitment point. Step 6 is final reconciliation. If anything fails in the green zone, just stop.

StepOur DBStripeCan Roll Back?
1. Customer IntentnothingnothingN/A — nothing exists
2. ValidatenothingnothingN/A — nothing exists
3. PaymentIntentnothingPaymentIntent onlyYes — cancel PaymentIntent
4. ConfirmnothingPaymentIntent confirmedYes — cancel PaymentIntent
5. Commitsubscriptions writtenSubscription createdComplex — but payment is confirmed
6. Reconcilefinal statefinal stateN/A — everything consistent

Steps 1–4 have zero committed state in our database. The only external artifact is a Stripe PaymentIntent, which can be cancelled trivially. This is the key insight of PDE: confirm first, commit second. There is nothing in between to clean up.

4
steps with zero state
0
rollbacks needed
1
commitment point
probation/ package

Interim state while payment resolved. No longer needed because payment is confirmed before any state is committed. The entire package becomes dead code.

Fallback retry paths

Retrying charges against already-committed subscriptions. No longer needed because subscriptions don't exist until payment succeeds. The retry logic and its failure modes disappear.