# Drain and reprocess a dead-letter backlog nobody has opened

A letter queue nobody has looked at, classified message by message and either reprocessed or discarded with a reason.

Category: Queues, jobs, and async work
Source: https://letsship.ai/use-cases/drain-a-dead-letter-backlog
Published: 2026-08-25

## Goal

Work through a dead-letter backlog, classifying each message and reprocessing or discarding it.

## Acceptance criteria

- Every message is classified by failure cause
- Reprocessable messages are replayed and confirmed
- Discarded messages are recorded with a reason before deletion
- Recurring causes are filed as their own tickets

## What lands as proof

A classification summary covering every message, so nothing is discarded without a recorded reason.

## Prompt

Copy this to an agent to open the ticket:

```text
Create a Linear issue in my team and assign it to the SHIP agent.

Title: Drain the {queue} dead-letter backlog

Description: Work through a dead-letter backlog, classifying each message and reprocessing or discarding it.

Acceptance criteria:
- Every message is classified by failure cause
- Reprocessable messages are replayed and confirmed
- Discarded messages are recorded with a reason before deletion
- Recurring causes are filed as their own tickets

Before you create the issue, count the messages in this repository's dead-letter queues and replace {queue} with the fullest one.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: work through a dead-letter backlog, classifying each message and reprocessing or discarding it. Work that serves that outcome is in scope, and anything outside it is left for a separate ticket, so the pull request stays reviewable.

### How do I know the work is done?

The pull request carries the evidence, not only the diff. Here that means every message classified, reprocessed or discarded with a recorded reason, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

The run stops for the plan, and the review bar is raised afterwards so that smaller suggestions block the merge too, not only serious findings.
