architecture decision

ADR-012: Treat delivery failure as a retriable fulfillment state

Delivery failures are modeled as recoverable states so support and automation can retry, redirect, or cancel shipments.

Decision RecordNovember 7, 2024AcceptedFulfillment

Context

Carrier delivery failures can be temporary, such as customer unavailable or address correction needed. Treating all failures as terminal created unnecessary cancellations.

Decision

DeliveryFailed represents a retriable state with reason codes. Support tooling can trigger redelivery, address correction, return, or cancellation.

Consequences

Fulfillment state machines need explicit retry limits. Customer notifications can provide more accurate next steps.