gobridge

0015 — DLQ redrive inject-then-delete (at-least-once)

Status: accepted Date: 2026-09-03 Deciders: GoBridge core Supersedes: 0006 (claim-by-delete, at-most-once)

Context

ADR 0006 chose claim-by-delete for POST /api/v1/admin/dlq/redrive: delete the entry first, inject second, and accept that a crash in between loses the entry. The rationale was that for a manual recovery action a lost message was preferable to a duplicate. Two things about that trade turned out to be wrong in production terms:

Decision

Inject first, delete only after a confirmed inject, and re-issue every redrive under a fresh identity confined to the binding that failed.

Consequences

Rejected alternatives