status: concluído
dlq-doctor
Um agente que diagnostica e reprocessa dead letter queues do RabbitMQ — com aprovação humana em cada correção.
O problema
Dead letter queues acumulam milhares de mensagens que ninguém investiga: os erros se repetem, e reprocessar na mão é arriscado — efeito duplicado, poison message voltando. O dlq-doctor ingere a fila, agrupa as falhas por embeddings, usa um agente com ferramentas somente leitura para propor causa e correção por cluster, e executa um replay seguro: dry-run, aprovação humana, canário, idempotency key.
Pipeline
Números reais
| Abordagem | Clusters | Pureza | ARI |
|---|---|---|---|
Agrupar por exception_type | 3 | 72,4% | 0,506 |
| Hash exato do fingerprint | 8 | 100,0% | 0,679 |
| Embeddings + limiar incremental (real) | 4 | 72,4% | 0,505 |
Achado honesto: neste volume, o sistema real empata com o baseline ingênuo de agrupar por tipo de exceção — os dois fundem duas categorias de falha que lançam a mesma exceção, exatamente como o ADR-0003 previu.
Decisões técnicas
x-delivery-limit do RabbitMQ só conta perda de conexão de verdade, nunca um nack(requeue: true) explícito — verificado contra um broker real.
Dois tipos de falha lançam a mesma exceção de propósito, para a avaliação de clusterização ter uma chance real de mostrar um baseline falhando.
Embeddings via ONNX local (sem chave, sem custo) e clusterização por limiar incremental — validado empiricamente antes de confiar na similaridade de cosseno.
Métricas de avaliação por mensagem, não por fingerprint, comparadas contra dois baselines mais simples — não só contra o próprio sistema.