Begin with the interrupted request
A customer clicks submit, the network stalls and the interface offers a retry. The customer cannot tell whether the original operation completed. Design the server around that uncertainty. For a paid booking, the business requirement is one intended reservation, even if several requests arrive. Disabling a button improves the interface but does not resolve duplicate requests from retries, multiple tabs or background workers.
Identify the business operation
Decide what makes two requests attempts at the same action. An idempotency key can identify a logical operation, but its lifetime and storage need deliberate design. Reusing a key for a different purchase is not the same as retrying the original purchase. Define how conflicting parameters are handled and how a caller obtains the original result. Stripe’s API documentation provides a concrete example of an idempotent request contract.
Map the local and external steps
Suppose an application creates an order and then calls a payment provider. A provider-side key does not automatically prevent duplicate local orders. Write the sequence down and identify where durable state records the operation. Decide how concurrent requests are coordinated and how incomplete work is reconciled. The design should explain what happens after a process restart, not only while one server instance remembers the request.
Test the ambiguous outcomes
Use a synthetic order and simulate a timeout before the response reaches the caller. Repeat the request with the same operation identity and inspect the stored outcome. Also try simultaneous requests, a changed payload and a new legitimate order. Confirm that the system preserves the distinction between replay and new work. Tests should examine records and fulfilment, not merely whether the second response uses the same status code.
Write down the remaining limits
Document expiry, retention and recovery rules for operation records. Decide how support can safely resolve an incomplete operation without creating a second one. Avoid promising exactly-once behaviour across every component unless the design and evidence justify it. The useful release question is narrower: for the failures you expect, can the customer retry without receiving duplicate consequences, and can the team identify exceptions that require intervention?
Sources & further reading
Reference material for the guidance and examples above. Where included, community discussions provide context rather than verified incident evidence.
Retrospective weekly fieldnote, prepared with AI assistance and published on 12 September 2026. Examples are illustrative; this is not a client case study or a claim about events in the assigned week.
