Skip to main content

Delivery State Machine

Integration delivery retries are now durable and database-driven.

Implemented:

  • Explicit delivery state: pending, delivering, delivered, retry_scheduled, failed, dead_lettered.
  • Retry work is persisted in integration_outbox.
  • Attempts are persisted in integration_delivery_attempts with timing, HTTP status, retryability, correlation, and event references.
  • Worker-service polls due retry rows from Postgres.
  • Claimed rows use locked_by and locked_until to avoid duplicate worker execution.
  • Dead-letter transitions are audited.

Current gaps:

  • DLQ browser tooling is planned.
  • Tenant discovery for retry polling is configured for local/runtime deployment and should later come from the tenant registry/service-account model.
  • Kubernetes SecretProvider implementation exists. External secret sync/RBAC precision and direct Vault/AWS/Azure/GCP providers remain future work.

Source architecture note: docs/architecture/delivery-state-machine.md.