Add a dead-letter queue for messages that will never succeed
A poison message looping forever, given somewhere to go after a bounded number of attempts.
The ticket
Add a dead-letter queue so permanently failing messages stop retrying.
Acceptance criteria
- Messages move to the letter queue after a stated attempt count
- A poison message is seeded and observed arriving there
- The letter queue has an alert on depth
- The original failure reason is preserved with the message
What lands as proof
A seeded poison message observed landing in the letter queue rather than cycling.
Why teams defer it
- A looping message is invisible until it is consuming the whole consumer's capacity.
- A letter queue nobody watches is only slightly better than no letter queue, so it needs an alert too.
Questions
- What does the agent actually change?
- The ticket is scoped to one outcome: add a dead-letter queue so permanently failing messages stop retrying. 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 a poison message lands in the letter queue instead of looping forever, so a reviewer can confirm the result without reproducing the work locally.
- How much oversight does this need?
- The run stops once the plan is written. Somebody reads the approach and approves it before any code exists, which is the cheapest moment to redirect the work.