# Auditoria CADOC 6209 vs Manual Oficial BACEN — 2026-07-08

**Fonte da spec:** "Elaboração e Remessa de Informações Relativas a Pagamentos de Varejo e a Canais de Atendimento" (documento 6209), versão 2.0.7 (01/04/2026), Decem/BCB, conforme IN BCB nº 335/2022 (34 páginas).
**Método:** workflow multi-agente (45 agentes): extração da spec em 2 blocos + mapa de código em 2 frentes → comparação em 4 dimensões → verificação adversarial de cada achado contra PDF + código. 36 achados confirmados, 1 refutado.

## Veredito

**O módulo 6209 atual NÃO está adequado e NÃO gera o leiaute correto. Nenhum artefato produzido hoje seria aceito pelo BACEN.** O 6209 **não é XML**: é TXT posicional (HEADER + FILLER, pictures `9(n)`/`X(n)`), ISO 8859-1, 8 arquivos na raiz de um `BACEN.ZIP`, enviado via STA (arquivo ASPB009), trimestral, prazo = último dia útil do mês subsequente ao trimestre.

## O que a spec exige (resumo do leiaute)

| Arquivo | Conteúdo | Observações |
|---|---|---|
| CONGLOME.TXT | Participantes do conglomerado (nome + ISPB) | Líder obrigatoriamente na 1ª linha |
| USUREMOT.TXT | Usuários PF/PJ com uso efetivo por canal remoto (Internet/Home-Office/Mobile Banking) | Quantidades 9(009) |
| ESTATCRT.TXT | Cartões função saque (S) / e-money (E), bandeira (00–04, 99), saques e compras | |
| ESTATATM.TXT | ATMs por função (01–08), localização (01/02/04), compartilhamento (01–03), UF | Soma deve bater com total |
| TRANSOPA.TXT | Qtd + valor por Canal de Acesso (01–08) × Produto (01–10) × Acesso ao ATM (01–04) | PIX=produto 09; DOC/TED/TEC juntos=03; só ponta pagadora |
| OPEINTRA.TXT | Operações intrabancárias (01–10), qtd + valor | |
| CONTATOS.TXT | Diretor + 2 técnicos + e-mail institucional | |
| DATABASE.TXT | Só HEADER, com data-base AAAAMM (…03/06/09/12) | Campo 025–030 = data-base, não contagem |

- HEADER padrão (7 dos 8): nome literal do arquivo X(008) + data geração AAAAMMDD + **ISPB ou 8 primeiros dígitos do CNPJ** (nunca os 14 — erro VCRD0010) + qtd de registros 9(008).
- Valores: 9(015) com 2 decimais implícitos, zeros à esquerda (ex.: `000000014579854` = R$ 145.798,54).
- Remessa zerada: arquivo vai mesmo sem dados, só com HEADER e contagem `00000000`.
- Retificação: corrigir o BACEN.ZIP, atualizar data dos cabeçalhos, reenviar completo.
- Confirmação: só após arquivo-resposta ASPB009 sem inconsistências (protocolo STA não é comprovante).

## Achados confirmados (agrupados)

### Críticos — remessa seria rejeitada e/ou reporta a coisa errada
1. **Formato errado:** `Pgv.Generator` gera **CSV** delimitado por vírgula, UTF-8, arquivo único `PGV_6209_<cnpj14>_<YYYYQn>.csv` — spec exige 8 TXT posicionais ISO 8859-1 em `BACEN.ZIP`. Zero ocorrências de CONGLOME/USUREMOT/ESTATCRT/ESTATATM/TRANSOPA/OPEINTRA/CONTATOS/DATABASE/BACEN.ZIP/ASPB009 no repositório (`pgv/generator.ex:38,68-89,121-152`).
2. **Cadeia de envio ligada ao conteúdo errado:** `GenerateReportJob` (report_type PGV, deliver:true) → `StaDelivery` com `sta_document_for("PGV")="6209"` — o CSV é exatamente o payload que iria ao BCB (`sta_delivery.ex:150`).
3. **Domínio semanticamente errado:** `Monetarie.UseCases.Regulatory.Cadoc6209` se autodenomina "Quarterly Credit Summary" e agrega **loans** (carteira/modalidade/inadimplência) sob o rótulo 6209 — que no BACEN significa exclusivamente pagamentos de varejo e canais. Dois módulos contraditórios reivindicam o mesmo código (`cadoc6209/cadoc6209.ex:1-27`).
4. **Cobertura de dados:** a agregação PGV tangencia só o escopo temático do TRANSOPA; não existe agregação para USUREMOT (a Monetarie TEM canais APP/WEB vivos — ficariam sem reporte), ESTATCRT, ESTATATM, OPEINTRA, CONGLOME, CONTATOS, DATABASE.

### Altos — campos/domínios/fluxo operacional
5. Domínios inventados: `TIPO_PAGAMENTO` PIX/TED/BOLETO/DOC (vs Produto 01–10; TED+DOC deviam ser 03 juntos, PIX=09), `CANAL` APP/WEB/ATM/BRANCH/API (vs Canal de Acesso 01–08; fallback para API=08 contraria FAQ 6.4.22), `FAIXA_VALOR` e `VALOR_MEDIO` não existem em leiaute nenhum.
6. Sem filtro de ponta pagadora: PIX **recebido** entra na agregação (campo `direction` existe e não é usado) — infla quantidades (`pgv/pgv.ex:96-107`).
7. **Bug latente que explica o "Erro" na tela:** a query agrega qualquer transação settled/confirmed sem filtrar `type`; tipos `internal/deposit/withdrawal/settlement/fee/refund` passam pelo fallback `String.upcase` e estouram no `validate_inclusion`+`Repo.insert!` — a agregação inteira aborta (`pgv/pgv.ex:139-143,182-207`).
8. Botão "Enviar" do PGV marca `delivered` **sem transmitir nada** (`pgv_controller.ex:91-115`); card 6209 da CadocReportsView cai em "Generator not implemented for 6209"; nenhum acionador (UI/cron) da remessa real; ASPB009 (validação postecipada) não implementado; identificação com CNPJ de 14 dígitos onde cabe ISPB/8; encoding sem conversão Latin-1 (outros geradores do repo têm `encode_latin1`).

### Médios/baixos
9. Remessa zerada inexistente; retificação inexistente (re-geração mistura records `pending`+`included`); prazo do 6209 fora do calendário/cron do Orchestrator; `CADOC_6209` no whitelist do RegulatoryFile é beco sem saída (sem generator → `failed`); representações de trimestre inconsistentes entre módulos; sem largura fixa/zeros à esquerda.

**Refutado (não é problema):** alegação duplicada de largura fixa com impacto "high" — subsumida no achado de formato (o CSV inteiro já é o problema).

**Conformes (pouco):** unidade em centavos (2 decimais implícitos) na agregação; trimestralidade conceitual; STA como meio de remessa; envio em base64 pelo conector.

## Reconstrução necessária (proposta)

1. **Gerador novo** `Cadoc6209` real: 8 builders posicionais (HEADER/FILLER por picture), agregações por arquivo — USUREMOT de usuários ativos por canal; TRANSOPA de `transactions` com domínios oficiais, ponta pagadora e Acesso-ATM=04; OPEINTRA de operações internas; ESTATCRT/ESTATATM zerados (SCD digital sem cartões próprios/ATM) via remessa zerada; CONGLOME instituição única; CONTATOS de configuração; DATABASE header-only. Conversão ISO 8859-1 + empacotamento `BACEN.ZIP`.
2. **Remessa:** rota STA documento 6209 com o ZIP, tratamento do arquivo-resposta ASPB009, retificação (reenvio completo com data de cabeçalho atualizada), prazo no calendário do Orchestrator.
3. **Aposentar/renomear** o módulo de crédito mal-rotulado (`Cadoc6209` atual) e o CSV do PGV.
4. **UI:** viewer em tela como os demais CADOCs — 8 abas (TXT mono + modo tabela parseando posições), download do BACEN.ZIP, fluxo de status/protocolo/ASPB009.

**Evidências completas:** journal do workflow `wf_16b566a8-448` (sessão Claude 2026-07-08), 36 achados com veredito adversarial individual.
