# Ask what cannot actually be undone

Review each completed effect against the real correction the business can perform. A method named compensate does not prove the workflow can restore its prior state.

By Cobnex editorial. Published 2026-09-10. Updated 2026-09-11.

## Choose the least reversible step

Identify an external notification, collected shipment or other effect that cannot simply be erased. Ask what acceptable outcome remains if a later step fails.

The answer may be a follow-up message, a return process or a manual decision. It should be a business operation with an owner and evidence, not a comment saying "rollback here".

Check whether the step order reduces avoidable irreversible work. A reservation phase or delayed commitment may help, but only if the services and business process support it.

## Inspect uncertain results

For each forward and compensating call, ask what happens when the target accepts the request but the response is lost. Find the operation identifier and reconciliation path.

A timeout handler that immediately runs compensation can be wrong if the allegedly failed step actually succeeded. Resolve the state or use a documented uncertainty policy before applying a correction based on an assumption.

Review duplicate handling for compensation itself. Repeating a release or reversal must have an understood effect under the downstream contract.

## Examine concurrent business changes

Ask whether compensation restores an old snapshot or applies a targeted correction. Snapshot restoration can overwrite legitimate work that occurred after the original step.

Inspect version checks, effect references and eligibility rules. A correction should address the specific committed effect while respecting current state.

Review who can authorise manual intervention and how automated recovery is paused or coordinated during it.

## Require a failed-compensation demonstration

Run a fixture in which the original step fails and one corrective action also fails. Restart the coordinator and inspect the durable state and remaining effects.

Then make one effect irreversible and demonstrate the supported resolution path. Verify the user-facing status does not claim a complete rollback that did not occur.

The review is complete when the team can explain each partial state, including those that require a person, and show how the workflow avoids losing or multiplying effects while moving towards an acceptable outcome.

## Sources

- [Microsoft Learn: compensating transactions](https://learn.microsoft.com/en-us/azure/architecture/patterns/compensating-transaction)
- [AWS Builders' Library: idempotent APIs](https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/)
