Failure field guide

Edge cases are the curriculum.

Understand why a failure occurs, the bug it creates, and the architectural control that contains it.

Payments

Payments

Webhook arrives before checkout response

A monotonic client flow rejects a valid success or emits two receipts.

Payments

Payment succeeds after caller timeout

Retry creates a duplicate charge or order remains falsely failed.

Payments

Concurrent partial refunds exceed capture

Total refunded exceeds the captured amount.

Booking

Booking

Two users confirm the last slot

Both users receive confirmation.

Booking

Reservation hold expires during payment

Money is taken without inventory.

Booking

Operational day differs from calendar day

Charges land on the wrong report or run twice.

Authentication

Authentication

Revoked membership survives a cache

A removed user reads tenant data.

Authentication

Recovery reveals whether an account exists

Attackers enumerate users.

Authentication

Capability link is forwarded

Unintended recipient edits or downloads data.

File Upload

File Upload

Upload completes but metadata does not

Orphaned bytes consume quota forever.

File Upload

Metadata points at a missing object

Downloads fail after a claimed successful upload.

File Upload

Archive expands beyond limits

Scanner exhausts disk, memory, or CPU.

Realtime

Realtime

Location batches arrive out of order

A courier or driver appears to move backward.

Realtime

Revoked user keeps a live subscription

Private changes continue to stream.

Realtime

Presence says offline while user is active

Workflow incorrectly cancels or reassigns work.

Messaging

Messaging

Worker processes an event twice

Email, payout, or task is duplicated.

Messaging

One message always crashes a worker

Queue stalls or retries forever.

Messaging

Producer deploys an incompatible event

Old consumers misread or discard data.

Notifications

Notifications

Old reminder fires after reschedule

Customer arrives at the wrong time.

Notifications

Popular action creates millions of notifications

Queue delay impacts unrelated transactional messages.

Inventory

Inventory

Availability read causes oversell

Reservations exceed on-hand stock.

Inventory

Expired reservation never releases

Stock appears permanently unavailable.

Inventory

Menu changes between browse and order

Wrong item or price is ordered.

Multi-tenancy

Multi-tenancy

Cache key omits tenant id

One tenant receives another's data.

Multi-tenancy

Row references another tenant

Queries or cascades cross the isolation boundary.

Timezones

Timezones

A local appointment time does not exist

Scheduler silently moves or duplicates a booking.

Timezones

A local time occurs twice

Wrong slot or night charge is selected.

Distributed Systems

Distributed Systems

Expired lock holder resumes

Both mutate the resource.

Distributed Systems

Page cursor points across deleted rows

Items are skipped or repeated.

Distributed Systems

Nodes disagree about expiry

One service accepts an already expired offer/token.