---
id: "0006"
date: 2026-04-20
status: Accepted
supersedes:
superseded-by:
affected-paths: [lib/relay/delivery.rb]
affected-components: [delivery, retries]
---

# 0006 — Dead-letter deliveries that exhaust retries to a JSONL file

## Context

A delivery that exhausts its retry attempts was previously just a log line; operators had no way to replay it after the receiver recovered.

## Decision

When a delivery fails its final attempt, Delivery appends the URL, payload, and last error as one JSON line to the dead-letter file (deadletter.jsonl). Replay is a manual operator action, not automatic.

## Consequences

No delivery is silently lost; the report command can enumerate failures. The file grows without rotation, acceptable at current volume.

## Alternatives rejected

Automatic background replay rejected: a recovering receiver would immediately be hit with the full backlog. A database table rejected: the tool has no database and one failure file is greppable.
