# admi.002 recebidos: análise definitiva das causas (2026-07-07)

Levantamento empírico de todos os `admi.002` (rejeição assíncrona do SPI) recebidos
e persistidos em `monetarie_audit.xml_audit_logs`, com a causa (`RsnDesc`) de cada um,
a data da última ocorrência e o commit que a corrigiu. Fonte: consulta viva na task
`pix-api:123` (2026-07-07 ~11:10Z). Total: **64 admi.002 RECEIVED**.

## Prova de estado limpo

**admi.002 recebidos após 11:05Z (pós-deploy final `pix-api:123`) = 0.**

A camt.060 de consulta de operação reenviada pelo caminho de produção às 11:06:08Z
recebeu **camt.054** (resultado, http 200) 135 ms depois, não admi.002. O detalhe da
operação (R$ 20,00, devedor 27302181, credor 46026562) foi enriquecido automaticamente
na infração `06914def-778a-4786-b41f-81b62ffbd799` (`transaction_amount=20.00`,
`last_updated=11:06:09.019Z`).

## Causas, por frequência

| Nx | RsnDesc | Última | Causa raiz | Situação |
|----|---------|--------|------------|----------|
| 21 | Data inicial de resultado e/ou data final de resultado não devem ser preenchidas | 2026-07-07 10:48Z | camt.060 de consulta de operação (`SOLIC_LANCAMENTO`: `<Id>`=E2E + ReqdMsgNmId=camt.054) emitia `RptgPrd` incondicionalmente; nesse modo o BACEN proíbe período | **Corrigido hoje** `08afd25e` (pix-api:123). Guard test `spi_client_camt060_operacao_test.exs` |
| 16 | Schema desconhecido, não habilitado para uso ou canal incorreto | 2026-06-29 11:01Z | Construtor postava caminhos fictícios `/pix/v2/*` sem assinatura, e a camt.060 caía no canal secundário (CSM) | Corrigido: tabela-verdade dos 27 tipos + camt.060 no canal primário. Sem recorrência desde 06-29 |
| 7 | O ISPB destinatário em AppHdr deve corresponder ao ISPB do Banco Central | 2026-06-28 13:18Z | `AppHdr<To>` levava o ISPB da contraparte em vez de 00038166 | Corrigido `85760afd`/`0727e4ff`. Sem recorrência desde 06-28 |
| 6 | Data/hora inicial de resultado e/ou final inválida(s) | 2026-06-27 06:09Z | camt.060: formato/regra de `FrToTm` | Corrigido nas regras de `RptgPrd` por ação. Sem recorrência desde 06-27 |
| 3 | XSD cvc-pattern-valid (MsgIdType/time) | 2026-07-07 11:04Z | Injeções manuais de teste com `MsgId` malformado: `MONB047…` (25 chars, meu teste), `TSTMIN4562` (10 chars), `00:00:00Z` (time). Produção usa `generate_message_id/1` = `M`+ISPB(8)+23hex = 32 chars, válido | **Não é defeito de produção** (comprovado: envio de produção às 11:06Z retornou camt.054) |
| 2 | Data inicial de resultado deve ser menor que o mês consultado | 2026-06-27 06:00Z | camt.060 TIR (camt.052 TRD): `FrDt` deve ser 1º dia de mês fechado | Corrigido nas regras de data por ação |
| 2 | Identificação única de evento é inválida ou não existe | 2026-06-27 06:19Z | consulta de operação com E2E inexistente (teste) | Não recorre; depende do E2E existir no SPI |
| 2 | Não existe saldo consolidado de final do dia… | 2026-06-28 02:40Z | camt.060 saldo pedindo o dia de HOJE (sem EOD) | Corrigido: `FrDt` default = ontem. Sem recorrência desde 06-28 |
| 2 | Tipo de arquivo inválido para a consulta de lançamentos | 2026-06-27 05:44Z | camt.060 relatório: `Tp` de arquivo | Corrigido nas regras por ação |
| 1 | Data final de resultado não deve ser preenchida | 2026-06-27 05:31Z | camt.060: `ToDt` indevido em modo saldo | Corrigido |
| 1 | Data inicial de resultado deve ser informada | 2026-06-27 05:43Z | camt.060: faltou `FrDt` | Corrigido (default) |
| 1 | Data inicial deve ser sempre o primeiro dia do mês | 2026-06-27 06:02Z | camt.060 TIR | Corrigido |

## Conclusão

Todas as 64 rejeições caem em causas **já corrigidas** ou em **injeções de teste**
(MsgId malformado / E2E inexistente). A causa dominante e mais recente que ainda era
real (21x, última às 10:48Z) foi o `RptgPrd` na consulta de operação, corrigido e
provado hoje. Nenhum admi.002 foi recebido após o deploy `pix-api:123`.

O grosso das causas (todas as variações de "data") é da mesma família — a construção
do `RptgPrd`/datas da camt.060 por ação — cujas regras já estavam endereçadas por ação
(saldo, relatório de lançamentos, TIR, remuneração) e agora também para a consulta de
operação (sem período).
