# Matriz PIX/SPB/Core pre-atuacao extensa - pos-deploy - 2026-06-27

Este relatorio consolida a leitura sequencial dos documentos `00` a `08`, o estado atual do repositorio Monetarie, artefatos oficiais locais do catalogo 5.12/5.12.1, LegadoPIX, LegadoSPB e AWS homolog usando exclusivamente o profile `vulcimonetarie`.

Nao ha declaracao de "100% coberto" neste documento. A classificacao abaixo e por evidencia:

- `validado BACEN`: fluxo executado contra BACEN homolog e registrado em handoff ou nesta rodada.
- `corrigido nesta rodada`: alteracao aplicada agora com teste/validacao local.
- `portado`: existe codigo local compativel e evidencia estatica/teste.
- `portado parcial`: existe parte da superficie, mas falta dispatcher, controller, fluxo de negocio, UI ou prova viva.
- `gap real`: falta implementacao ou endpoint retorna explicitamente nao implementado.
- `documento stale`: o documento lido aponta lacuna que o codigo atual ja cobre.
- `nao provado`: existe ocorrencia/XSD, mas nao ha prova de fluxo de negocio nem BACEN vivo.
- `deferido`: fora da atuacao imediata por orientacao do dono.

## Adendo executivo pos-deploy

Este adendo prevalece sobre qualquer print/trecho historico anterior dentro do proprio relatorio.

| Ponto | Estado empirico em 2026-06-27 | Evidencia |
| --- | --- | --- |
| Dashboard PIX com 9 bilhoes | Era erro de unidade na UI. Backend retorna `raw_total_centavos=9160772444.16`; valor correto exibido e `R$ 91.607.724,44`, nao `R$ 9.160.772.444,16`. | `/Users/luizpenha/Desktop/monetarie-evidencias-balance-truth-postdeploy-v76-2026-06-27/balance-truth-probe.json` e `pix-02-dashboard.png` pos-deploy. |
| PIX catalogo 5.12 | Homolog pos-deploy responde 27 tipos de mensagem, com `TRCK=1`, `CAMT=8`, `PAIN=5`, `REDA=6`, `PACS=3`, `PIBR=2`, `ADMI=2`. | `/Users/luizpenha/Desktop/monetarie-evidencias-pix-homolog-smoke-2026-06-27-post-deploy-v76/pix-homolog-api-smoke.json`. |
| SPB Conta PI falsa | UI SPB deixou de exibir saldo inventado de Conta PI; se API nao materializa saldo BACEN real, a tela mostra `--`/`Sem dado`. | `/Users/luizpenha/Desktop/monetarie-evidencias-spb-balance-ui-fixed-2026-06-27/screenshots/spb-12-operator-balances.png`. |
| Core/IB PIX/TED | Deploy Core `:48` e Banking UI `:12` corrigiu unidade de dinheiro e contrato TED externo. PIX `amount=1` volta como `1`; TED UI corrigido `amount=100` volta como `100`; TED direto `amount=100` volta como `100`. | `/Users/luizpenha/Desktop/monetarie-evidencias-core-ib-payment-probe-postdeploy-v48-2026-06-27/core-ib-payment-probe.json`. |
| Gap que permanece | Status-poll do PIX Core/IB ainda retorna 404 para `PIXOUT-*`; isso e gap real de rastreio/timeline, nao liquidacao comprovada. | Mesmo probe Core/IB pos-deploy. |
| Garantia 100% | Nao declarada. O que esta validado esta listado por endpoint, task definition, print ou teste. Redesconto/desdobro/pilotos e cobertura SPB viva ainda exigem massa controlada. | Este relatorio. |

## Premissas obrigatorias

1. A cabine PIX atual tem fluxos ja validados no BACEN. Esses pontos sao area protegida: nao reescrever sem teste de regressao e evidencia viva.
2. `trck.002` e mensagem PIX/SPI, nao SPB.
3. HSM RTM homolog usa HTTPS 443. A porta 6443 nao deve ser replicada aqui.
4. AWS so pode ser consultada com `AWS_PROFILE=vulcimonetarie`, `AWS_REGION=sa-east-1` e variaveis `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN` removidas do ambiente.
5. SGCT/PIX Automatico fica anotado para depois, conforme orientacao do dono. Nao entra na onda imediata, embora continue registrado como lacuna de paridade.
6. Prints visuais foram capturados contra homologacao real, nao porta local: Core, PIX e SPB em `*.monetarie.internal`. Evidencias principais: `/Users/luizpenha/Desktop/monetarie-evidencias-pix-spb-post-deploy-v76-2026-06-27`, `/Users/luizpenha/Desktop/monetarie-evidencias-spb-balance-ui-fixed-2026-06-27`, `/Users/luizpenha/Desktop/monetarie-evidencias-core-ib-payment-probe-postdeploy-v48-2026-06-27`.

## Fontes lidas em sequencia

| Seq | Documento | Linhas | Uso nesta matriz |
| --- | --- | ---: | --- |
| 00 | `/Users/luizpenha/Downloads/00_RELATORIO_MESTRE_PRE_CUTOVER.md` | 289 | Registro mestre de riscos: PIX Automatico, Batch, PI-ResourceId, Composite QR, hardcodeds. |
| 01 | `/Users/luizpenha/Downloads/01_mocks_hardcoded.md` | 766 | Base para hardcoded/mock/stub. Parte corrigida agora, parte segue aberta. |
| 02 | `/Users/luizpenha/Downloads/02_migrations_indices.md` | 469 | Conferencia de particionamento e indices; `monetarie_spi.messages` entrou no manager. |
| 03 | `/Users/luizpenha/Downloads/03_i18n_strings_hardcoded.md` | 462 | Frente posterior de i18n/UX; nao foi executada nesta rodada de backend/AWS. |
| 04 | `/Users/luizpenha/Downloads/04_redesconto_desdobro_fluxos_spb.md` | 448 | RDC, redesconto, reserva, piloto/desdobro. Separou lacunas stale de lacunas reais. |
| 05 | `/Users/luizpenha/Downloads/05_xsd_diff_spi_spb.md` | 954 | Base de XSD SPI/SPB. Validada contra artefatos locais oficiais. |
| 06 | `/Users/luizpenha/Downloads/06_catalog_versioning.md` | 283 | Seeds/catalogo v5.12; ajuste RDC0011/RDC0017 e taxonomy RDC. |
| 07 | `/Users/luizpenha/Downloads/07_regras_negocio_512.md` | 520 | Regras RSTR0039/RSTR0040 e `CodDocFis` para Reforma Tributaria v5.12. |
| 08 | `/Users/luizpenha/Downloads/08_paridade_monetarie_mwbank.md` | 441 | Paridade LegadoPIX/MWBank: Batch, Composite QR, Scheduled, PI-ResourceId, SGCT. |

## Fontes oficiais e legado

| Fonte | Evidencia objetiva | Observacao |
| --- | --- | --- |
| Catalogo SPI local oficial | `/Users/luizpenha/mwbank/md/v5.12.1/xsd`: 28 XSDs SPI. | Mesmo conjunto presente em `pix/backend/apps/shared/priv/xsd/spi/v5.12.1`. |
| `trck.002` oficial | `trck.002.spi.1.1.xsd` tem `targetNamespace='https://www.bcb.gov.br/pi/trck.002/1.1'`; exemplo oficial tem `MsgDefIdr>trck.002.spi.1.1`. | Usado para corrigir o handler. |
| Catalogo SPB 5.12 local | `/Users/luizpenha/mwbank/md/XSDDOCV512.zip`: 992 entradas `GRUPO/MENSAGEM.XSD`. | O diretorio extraido `XSDDOCV512` nao estava disponivel; a validacao foi feita sobre o zip. |
| Snapshot SPB no repo | `spb/services/bacen_gateway/priv/xsd`: 979 arquivos `.md`. | Snapshot documental local, nao prova sozinho implementacao de fluxo. |
| LegadoSPB | 1.025 arquivos fonte/documentais uteis filtrados; evidencia de `PilotoController.ConsisteSaldoReserva`, `FiltroDesdobroSLC0001`, `GeraDesdobroSLC0002`, `FiltroDesdobroCSD1001`, `GeraDesdobroCSD1002`, `AlertaRDCController`. | Busca ampla em bundles Angular minificados foi descartada como ruido. |
| LegadoPIX | `LegadoPIX/Multiliquidacao/src` e `LegadoPIX/SPI/src` trazem lote/multiliquidacao e `PIResourceId`. | O Monetarie tem partes, mas nao a superficie completa de batch no SPI. |

## AWS homolog - prints textuais

Wrapper usado:

```bash
env -u AWS_ACCESS_KEY_ID -u AWS_SECRET_ACCESS_KEY -u AWS_SESSION_TOKEN \
  AWS_PROFILE=vulcimonetarie AWS_REGION=sa-east-1 AWS_EC2_METADATA_DISABLED=true \
  aws ...
```

Profile validado no proprio projeto:

```text
infra/aws/greenfield/backend.tf: profile = "vulcimonetarie"
```

STS:

```json
{
  "Account": "990933657879",
  "Arn": "arn:aws:iam::990933657879:user/vulciaws"
}
```

Cluster ECS:

```text
cluster: monetarie-greenfield-homolog
status: ACTIVE
activeServices: 15
runningTasks: 15
pendingTasks: 0
```

Servicos principais:

| Servico | Status | Desired | Running | Pending | Task definition |
| --- | --- | ---: | ---: | ---: | --- |
| `pix-api` | ACTIVE | 1 | 1 | 0 | `monetarie-pix-api-homolog:76` |
| `spb-api` | ACTIVE | 1 | 1 | 0 | `monetarie-spb-api-homolog:19` |
| `sta-api` | ACTIVE | 1 | 1 | 0 | `monetarie-sta-api-homolog:8` |
| `core-api` | ACTIVE | 1 | 1 | 0 | `monetarie-core-api-homolog:48` |
| `core-banking-ui` | ACTIVE | 1 | 1 | 0 | `monetarie-core-banking-ui-homolog:12` |

Task definition PIX atual:

```text
RTM_HSM_BASE_URL=https://monetarie-hsm-hml.priv.rtmcloud.net.br
RTM_HSM_ENABLED=true
BACEN_ENABLED=true
BACEN_ENV=homolog
INBOUND_SOURCE=icom_http
CERT_SECRET_PREFIX=monetarie/homolog/pix/cert
```

Observacao pos-deploy: a task definition viva `pix-api:76` expoe `CERT_SECRET_PREFIX` e manteve HSM RTM em HTTPS 443.

Task definition SPB atual:

```text
RTM_HSM_BASE_URL=https://monetarie-hsm-hml.priv.rtmcloud.net.br
RTM_HSM_ENABLED=false
IBM_MQ_ENABLED=true
BACEN_ENVIRONMENT=homolog
IBM_MQ_TRANSPORT=sidecar
```

Task definition STA atual:

```text
STA_ENVIRONMENT=homologation
```

HSM RTM via HTTPS 443, executado de dentro das tasks ECS:

```text
pix-api: 200 0.039821 https://monetarie-hsm-hml.priv.rtmcloud.net.br/v1/health
spb-api: 200 0.189157 https://monetarie-hsm-hml.priv.rtmcloud.net.br/v1/health
```

O `Cannot perform start session: EOF` apareceu apos o retorno do `curl` e representa fechamento da sessao interativa ECS Exec, nao falha do healthcheck.

## Homolog UI - prints e erros analisados

Captura feita pelo script `scripts/codex_capture_core_pix_spb.cjs` contra:

| Sistema | URL | Login | Prints |
| --- | --- | --- | ---: |
| Core | `http://coreadmin-h.monetarie.internal` | OK | 12 |
| PIX | `http://pixadmin-h.monetarie.internal` | OK | 11 |
| SPB | `http://spbadmin-h.monetarie.internal` | OK | 13 |

Evidencias:

```text
/Users/luizpenha/Desktop/monetarie-evidencias-pix-spb-post-deploy-v76-2026-06-27/screenshots
/Users/luizpenha/Desktop/monetarie-evidencias-pix-spb-post-deploy-v76-2026-06-27/logs/screenshot-metadata.json
/Users/luizpenha/Desktop/monetarie-evidencias-spb-balance-ui-fixed-2026-06-27/screenshots
/Users/luizpenha/Desktop/monetarie-evidencias-spb-balance-ui-fixed-2026-06-27/logs/screenshot-metadata.json
```

Erros/achados dos prints:

| Print | Achado | Impacto | Acao nesta rodada |
| --- | --- | --- | --- |
| `core-01-login.png` | Console/network registram 2 chamadas 401 para `/api/admin/auth/me` antes do login. | Erro tecnico pre-auth ruidoso; nao bloqueia login. | Anotado para ajustar bootstrap/auth check do Core. Nao alterado nesta rodada porque o foco imediato era PIX/SPB. |
| `pix-09-messages.png` | Cabine PIX exibia `Tipos Disponiveis = 21` e atalhos `PACS 3`, `CAMT 7`, `PAIN 4`, `PIBR 2`, `ADMI 2`, `REDA 3`; faltavam 6 mensagens do catalogo SPI 5.12 de negocio. | UI/API omitindo parte do catalogo; risco de matriz falsa. | Corrigido no `MessageController` para 27/27 e no frontend para categorias dinamicas, incluindo `TRCK`. Validado por teste local e build. |
| `pix-02-dashboard.png` | Print pre-correcao mostrava `Saldo Conta PI R$ 9.160.772.444,16`. | Multiplicacao visual por 100 sobre dado que ja vinha em centavos. | Corrigido para `formatBalanceCents`; print pos-deploy mostra `R$ 91.607.724,44`. |
| `pix-08-balance.png` | RB aparecia como `R$ 0,00` sem posicao real; PI precisava ser convertido de centavos. | UI podia sugerir saldo real inexistente e total errado. | Corrigido para `N/D`/`Sem posicao` quando nao materializado e total apenas com posicoes reais. |
| `spb-06-admin-entities.png` | Textos em ingles: `Entities`, `Search entities`, `ADD ENTITY`, `Entity Management`, colunas `Name/Type/Actions`, badges `Bank`. | UX fora do padrao operacional PT-BR. | Corrigido em `spb/frontend-vue/src/apps/admin/views/EntitiesView.vue`; build SPB passou. |
| `spb-10-operator-payments.png` | Textos em ingles e contador quebrado `Payments ()`: `Payments`, `Payment Type`, `Refresh`, `No payments found`, `Try changing your filters`. | UX fora do padrao e total indefinido. | Corrigido em `spb/frontend-vue/src/apps/operator/views/PaymentsView.vue`; fallback `response.total ?? filteredPayments.length`; build SPB passou. |
| `spb-12-operator-balances.png` | Tela antiga exibia Conta PI `R$ 42.850.000,00` sem fonte BACEN real. | Saldo mentiroso em cabine SPB. | Removido hardcoded/fallback; tela pos-fix mostra `--`/`Sem dado` enquanto `/api/balances` nao trouxer saldo real BACEN. |
| `spb-09-operator-dashboard.png` | Badge `Sem evidencia BACEN`, `CHSTATUS pendente`, MES01 sem comprovacao. | Estado honesto de homolog; nao e bug visual isolado. | Mantido como evidencia operacional: precisa smoke SPB/BACEN com massa controlada antes de chamar ambiente "verde". |

Observacao: o diretorio `pix-spb-full-matrix` contem prints historicos de pre-correcao. O diretorio `pix-spb-post-deploy-v76` contem PIX/SPB apos deploy PIX `:76` e UI SPB `:6`. O diretorio `spb-balance-ui-fixed` contem a recaptura especifica que removeu o saldo falso de Conta PI no SPB.

## PIX homolog - smoke API autorizado

Operacoes de teste PIX executadas em homologacao apos autorizacao explicita do dono. Evidencia JSON:

```text
/Users/luizpenha/Desktop/monetarie-evidencias-pix-homolog-smoke-2026-06-27-post-deploy-v76/pix-homolog-api-smoke.json
```

Ambientes testados:

```text
PIX admin: http://pixadmin-h.monetarie.internal
PIX API:   http://pixapi-h.monetarie.internal
ISPB:      46026562
```

Resumo do smoke:

| Teste | Resultado | Evidencia objetiva |
| --- | --- | --- |
| `pixapi /health` | OK | HTTP 200, JSON. |
| Login admin PIX | OK | HTTP 200, usuario `admin`, sem MFA. |
| Sessao `/api/v1/auth/me` | OK | HTTP 200, usuario `admin`. |
| Catalogo `/api/v1/messages/types` | OK pos-deploy | HTTP 200, total `27`; faltantes `[]`; extras `[]`; categorias `ADMI=2`, `CAMT=8`, `PACS=3`, `PAIN=5`, `PIBR=2`, `REDA=6`, `TRCK=1`. |
| Estatisticas de mensagens | OK | HTTP 200. |
| Lista de transacoes | OK | HTTP 200, 5 itens retornados, total 14. |
| Posicoes de saldo | OK | HTTP 200, 1 posicao retornada. |
| Echo PIX | OK | HTTP 200, `success=true`, mensagem operacional do SPI Service. |
| CAMT.060 `saldo-atual` | OK | API retornou `status=OK`, `bacen.sent=true`, saldo local `materialized`. |
| CAMT.060 `saldo-na-data` | OK | API retornou `status=OK`, `bacen.sent=true`, saldo local `materialized`. |
| CAMT.060 `lista-lanctos` | OK | API retornou `status=OK`, `bacen.sent=true`. |
| CAMT.060 `demonstrativo-tir` | OK | API retornou `status=OK`, `bacen.sent=true`. |
| CAMT.060 `total-tir` | OK | API retornou `status=OK`, `bacen.sent=true`. |
| CAMT.060 `demonstrativo-remuneracao` | OK | API retornou `status=OK`, `bacen.sent=true`. |

Conclusao empirica do smoke pos-deploy: o ambiente PIX homolog esta acessivel, autenticando, consultando, listando transacoes/saldo, expondo catalogo SPI de negocio 27/27 e enviando CAMT.060 com `bacen.sent=true` nas seis acoes testadas. Isso prova os itens testados; nao prova todos os fluxos SPI nem liquida todos os cenarios de negocio.

## Core/IB - PIX e TED pos-deploy

Evidencia JSON:

```text
/Users/luizpenha/Desktop/monetarie-evidencias-core-ib-payment-probe-postdeploy-v48-2026-06-27/core-ib-payment-probe.json
```

Deploy validado:

| Servico | Task definition | Estado ECS |
| --- | --- | --- |
| `core-api` | `monetarie-core-api-homolog:48` | `COMPLETED`, desired 1, running 1, pending 0 |
| `core-banking-ui` | `monetarie-core-banking-ui-homolog:12` | `COMPLETED`, desired 1, running 1, pending 0 |

Resultados empiricos:

| Teste | Resultado | Evidencia objetiva |
| --- | --- | --- |
| Health Core | OK | `GET /health` HTTP 200. |
| Conta IB candidata | OK | Conta ativa `10016185`, saldo inicial `2236` centavos (`R$ 22,36`) no probe pos-deploy. |
| PIX via IB | Aceito | `POST /api/accounts/10016185/pix/send`, payload `amount=1`, resposta HTTP 202 com `amount=1`, `transactionId=PIXOUT-13ac33581e998327`, E2E retornado. |
| Status PIX via Core | Gap real | `GET /api/merchants/15763/transactions/PIXOUT-.../status` retornou HTTP 404 `Transacao nao encontrada`; nao declarar liquidez/timeline Core como fechada. |
| TED payload antigo da UI | Falha esperada | Payload sem favorecido/ISPB/documento retornou HTTP 422 com campos ausentes `recipient_ispb`, `recipient_name`, `recipient_document`, `recipient_account`. |
| TED payload corrigido da UI | Aceito | `POST /api/merchants/15763/transfers`, payload `amount=100` com favorecido/ISPB/documento/agencia/conta, resposta HTTP 202 com `amount=100`, `transactionId=TRF20260627e481eb3b92984b441041`. |
| TED direto STR0008 | Aceito | `POST /api/transfers/ted`, payload `amount=100`, resposta HTTP 202 com `amount=100`, `transactionId=TED2026062784dafcd5e86c46b7ab9b`. |
| Saldo apos mutacoes | Parcialmente coerente | Saldo final `2036` centavos; refletiu dois debitos de TED de 100 centavos. O PIX aceito nao foi tratado aqui como liquidado porque o status-poll ainda falha. |

## PIX ja validado BACEN - area protegida

| Fluxo | Evidencia | Status | Regra de atuacao |
| --- | --- | --- | --- |
| DICT GetEntry | `docs/handoff/2026-06-23-pix-bacen-native-dict-spi-cid-sync.md:58-68`: chamada real `GET /entries/...` retornou 200 no BACEN homolog com mTLS. | validado BACEN | Nao reescrever; cobrir com regressao. |
| CID eventos CPF/CNPJ | Mesmo handoff, linhas 64-66: eventos reais ADDED/REMOVED e `has_more_elements=false`. | validado BACEN | Nao trocar paths/headers sem prova. |
| PIBR.001 echo | Mesmo handoff, linha 67: `{:ok, %{latency_ms: 196}}`. | validado BACEN | Preservar envelope/assinatura. |
| CAMT.060 saldo | Mesmo handoff e `docs/handoff/2026-06-27-camt060-resolvido-e-timeline-detalhe-transacao.md:9-23`. | validado BACEN parcial: 6/7 relatorios vivos | Nao mexer na receita sem executar regressao BACEN. |
| Detalha lancamento | Handoff 2026-06-27, linha 19: exige ID real de evento; homolog voltou camt.052 vazio. | nao provado por falta de dado vivo | Precisa dado/ID real antes de classificar como bug. |
| Timeline detalhe transacao | Handoff 2026-06-27, linhas 25-43: endpoint historico fragil por id inteiro vs E2E, ACSP preso, `status_history` ausente. | gap real | Corrigir sem tocar nos fluxos BACEN validos. |
| HSM RTM | Healthcheck 200 em 443 nas tasks PIX/SPB nesta rodada. | validado AWS/RTM | Replicar 443. Nao usar 6443. |

## Matriz SPI 5.12.1 - 28 XSDs

Todos os 28 XSDs SPI oficiais locais estao presentes em `pix/backend/apps/shared/priv/xsd/spi/v5.12.1`. A coluna "ocorrencias" e busca estatica no codigo fora do diretorio de XSD; ela nao prova fluxo de negocio.

| Mensagem | Ocorrencias codigo | Status conservador | Evidencia/acao |
| --- | ---: | --- | --- |
| `admi.002` | 81 | portado parcial | Usado em rejeicoes/retornos; validar regressao das rejeicoes assincronas. |
| `admi.004` | 59 | portado parcial | Presenca estatica; precisa teste de fluxo. |
| `camt.014` | 61 | nao provado | XSD/codigo presentes; sem prova BACEN nesta rodada. |
| `camt.025` | 35 | nao provado | XSD/codigo presentes; sem prova BACEN nesta rodada. |
| `camt.029` | 65 | portado parcial | Cancelamento existe em superficie; precisa matriz de cenarios. |
| `camt.052` | 132 | validado BACEN parcial | CAMT.060 lista/relatorios retornaram `camt.052` em 6/7. |
| `camt.053` | 141 | validado BACEN parcial | CAMT.060 saldo/remuneracao retornaram `camt.053` em 6/7. |
| `camt.054` | 107 | nao provado por dado | Detalha-lancamento depende de ID real de evento. |
| `camt.055` | 35 | portado parcial | Cancelamento/solicitacao presente, sem prova viva completa. |
| `camt.060` | 107 | validado BACEN parcial | Receita corrigida e provada 6/7, proteger. |
| `pacs.002` | 265 | portado parcial | Status/retorno presentes; ciclo ACSP->ACCC->STLD segue gap. |
| `pacs.004` | 175 | portado parcial | Devolucao presente; precisa prova end-to-end. |
| `pacs.008` | 450 | portado parcial | Pagamento presente; timeline/liquidacao ainda mostram lacunas. |
| `pain.009` | 45 | deferido | PIX Automatico/recorrencia base existe, SGCT fica para depois. |
| `pain.011` | 39 | deferido | Idem. |
| `pain.012` | 43 | deferido | Idem. |
| `pain.013` | 84 | deferido | Idem. |
| `pain.014` | 73 | deferido | Idem. |
| `pibr.001` | 83 | validado BACEN | Echo aceito no ICOM. |
| `pibr.002` | 57 | portado parcial | Presenca estatica; mapear retorno. |
| `reda.014` | 37 | portado parcial | Builders/processamento existem, sem controller dedicado provado. |
| `reda.016` | 33 | portado parcial | Idem. |
| `reda.017` | 23 | portado parcial | Idem. |
| `reda.022` | 44 | portado parcial | Idem. |
| `reda.031` | 37 | portado parcial | Idem. |
| `reda.041` | 28 | portado parcial | Idem. |
| `trck.002` | 63 | corrigido nesta rodada | Corrigido para XSD oficial `trck.002.spi.1.1`; teste XSD local passa. Nao ha prova BACEN viva. |
| `xmldsig` | 159 | portado parcial | Assinatura usada nos fluxos BACEN; manter regressao. |

## Correcoes aplicadas nesta rodada

| Area | Arquivo | Correcao | Evidencia |
| --- | --- | --- | --- |
| PIX/TRCK002 | `pix/backend/apps/spi_service/lib/spi_service/med/trck002_handler.ex` | Removeu forma antiga `urn:bcb:pix:trck.002.001.01`/`TrckReq`; usa `MessageBuilder.build("trck.002", ...)`; fail-closed para campos obrigatorios. | Teste `pix/backend/apps/spi_service/test/spi_service/med/trck002_handler_test.exs` valida namespace, `MsgDefIdr`, root e XSD. |
| PIX catalogo mensagens | `pix/backend/apps/settlement_service/lib/settlement_service_web/controllers/message_controller.ex` e `pix/frontend/admin/src/views/messages/MessageCenterView.vue` | Catalogo da API passou de 21 para 27 mensagens de negocio SPI 5.12; inclui `camt.014`, `pain.014`, `reda.016`, `reda.017`, `reda.041`, `trck.002`; frontend removeu atalhos fixos e mostra categorias dinamicas. | Teste novo `message_controller_test.exs` compara endpoint com `SpiVersion.known_types()` e exclui `xmldsig`; `pnpm build` do PIX passou. |
| PIX saldo dashboard | `pix/frontend/admin/src/views/DashboardView.vue` e `pix/frontend/admin/src/views/balance/BalanceDashboardView.vue` | Valores vindos como centavos sao divididos por 100 na exibicao; posicao ausente deixa de virar `R$ 0,00`; total soma apenas posicoes materializadas. | Balance truth probe e prints pos-deploy mostram PI `R$ 91.607.724,44`, RB `N/D` quando nao materializado. |
| SPB/RSTR split | `spb/services/bacen_gateway/lib/bacen_gateway/messages/rstr_split_rules.ex` | `CodDocFis` obrigatorio quando ha grupo split; regex alfanumerico 1-50; fail-closed. | Teste focado passou. |
| SPB/RSTR mapper | `spb/services/bacen_gateway/lib/bacen_gateway/str/rstr_error_mapper.ex` | `RSTR0039`: STR->`ESTR0151`, PAG->`EPAG0068`; `RSTR0040`: STR->`ESTR0152`, PAG->`EPAG0069`. | Teste focado passou. |
| SPB/RDC taxonomy | `spb/services/bacen_gateway/priv/repo/seeds/038_missing_message_groups.exs` | RDC virou `Redesconto do Banco Central`, clearing `RDC`, domain `MES03`. | Teste `rdc_catalog_v512_test.exs`. |
| SPB/RDC v5.12 | `spb/services/bacen_gateway/priv/repo/seeds/013_message_catalog.exs` | `RDC0011` e `RDC0017` removidos do catalogo ativo. | Teste `rdc_catalog_v512_test.exs`. |
| PIX runtime | `pix/backend/config/runtime.exs` e `pix/backend/apps/shared/lib/shared/application.ex` | `BACEN_ENV`, `INBOUND_SOURCE`, `CERT_SECRET_PREFIX` deixam de depender de defaults quando `BACEN_ENABLED=true`. | Deploy PIX `monetarie-pix-api-homolog:76`; ECS vivo contem `CERT_SECRET_PREFIX`. |
| Infra PIX | `infra/aws/greenfield/ecs.tf` | Adicionado `CERT_SECRET_PREFIX=monetarie/homolog/pix/cert` para PIX. | `terraform validate` passou; task PIX `:76` esta `COMPLETED`. |
| STA runtime | `sta/backend/config/runtime.exs` | `STA_ENVIRONMENT` obrigatorio e restrito a `production`/`homologation`. | `MIX_ENV=test mix compile` passou. |
| PIX particionamento | `pix/backend/apps/shared/lib/shared/partition_manager.ex` | Incluido `monetarie_spi.messages` no manager. | Formatado. |
| SPB dual custody | `spb/services/bacen_gateway/lib/bacen_gateway/engines/dual_custody_engine.ex` | Removido fallback publico `ChangeMe123!`; criacao de usuario exige senha explicita. | Teste focado passou. |
| SPB transaction webhooks | `spb/services/transaction_service/lib/transaction_service/webhooks.ex` e `config/runtime.exs` | Removidos fallback de segredo HMAC, `SECRET_KEY_BASE`, `DATABASE_URL`, `SPB_WEBHOOK_URL`; prod usa `System.fetch_env!`. | Teste novo `webhooks_runtime_requirements_test.exs` passou. |
| SPB frontend PT-BR | `spb/frontend-vue/src/apps/admin/views/EntitiesView.vue` e `spb/frontend-vue/src/apps/operator/views/PaymentsView.vue` | Telas `Entidades` e `Pagamentos` deixam de exibir ingles operacional; contador de pagamentos deixa de ficar `()`. | `pnpm build` do SPB passou. |
| SPB saldo PI | `spb/frontend-vue/src/apps/operator/views/BalanceDashboardView.vue` | Removeu contas/movimentos hardcoded e fallback aleatorio; Conta PI/CIP/SELIC mostram `--` quando `/api/balances` nao materializa dado real. | Print pos-fix `spb-12-operator-balances.png` mostra `--`, nao `R$ 42.850.000,00`. |
| Core/IB unidade de dinheiro | `core/backend/lib/monetarie_web/controllers/v2/transfer_controller.ex` | Entrada em centavos vira unidade interna via `MoneyUnit.from_cents`; respostas de PIX/TED voltam em centavos via `MoneyUnit.to_cents`. | Probe pos-deploy: PIX `amount=1` retorna `1`; TED `amount=100` retorna `100`. |
| Core/IB TED externo | `core/apps/banking/src/views/transfer/TransferSendView.vue`, `TransferSendConfirmView.vue`, `useTransfer.ts` | UI exige e envia nome, CPF/CNPJ, ISPB, agencia e conta para TED externo. | Probe pos-deploy: payload antigo 422; payload corrigido 202. |

## PIX - matriz de gaps de negocio

| Item | Documento origem | Estado atual | Classificacao | Proxima acao |
| --- | --- | --- | --- | --- |
| Composite QR | `08`, linhas 374/401 | `CompositeQRCodeController` retorna 501 explicitamente. | gap real | Implementar controller ou remover superficie do escopo formal. |
| Batch/Multiliquidacao | `08`, linhas 66/88/225/371 | Gateway tem proxy `/api/v1/batch`, schema existe, mas nao ha controller/use case SPI equivalente aos 6 controllers do legado. | gap real | Portar contrato real de batch antes de declarar paridade. |
| Scheduled messages | `08`, linhas 50/90/226/372 | CRUD admin existe, mas `ScheduledMessageDispatcher` esperado dinamicamente nao existe. | portado parcial/gap execucao | Implementar dispatcher/scheduler ou remover chamada dinamica. |
| DICT PI-ResourceId | `08`, linhas 239/373/399 | LegadoPIX usa `PIResourceId`; Monetarie tem idempotencia geral, mas plugs `pi_resource_id_generator`/`pi_resource_idempotency` nao foram encontrados. | gap real de conformidade | Implementar plug ou provar substituto equivalente. |
| Timeline do detalhe | Handoff 2026-06-27 | Front existe; API historico falha para E2E; ciclo fica em ACSP; `status_history` ausente. | gap real | Corrigir resolver id inteiro/E2E e lifecycle ACSP->ACCC->STLD. |
| REDA | `05`/`08` | Builders e inbound existem; sem prova de controller/rota dedicada completa. | portado parcial | Fazer matriz REDA por mensagem e teste XSD/fluxo. |
| SGCT/PIX Automatico | `08`, varias linhas | Base de recorrencia existe, mas SGCT/router/workers dedicados ausentes. | deferido | Anotar backlog para atuar depois, conforme orientacao do dono. |

## SPB - matriz de redesconto, desdobro e catalogo

| Item | Evidencia | Status | Classificacao | Proxima acao |
| --- | --- | --- | --- | --- |
| Catalogo SPB 5.12 | `XSDDOCV512.zip` com 992 XSDs; repo tem 1.587 modulos de mensagens. | Alta cobertura estatica. | portado parcial | Cobertura estatica nao substitui smoke E2E por fluxo. |
| Reforma Tributaria CBS/IBS | RSTR0039/RSTR0040 + `CodDocFis` corrigidos. | Teste focado passou. | corrigido nesta rodada | Executar em mensagens PAG/STR reais quando houver massa. |
| RDC taxonomy | RDC = Redesconto do Banco Central, clearing RDC, MES03. | Corrigido no seed e registry. | corrigido nesta rodada | Rodar seed/migration no ambiente alvo. |
| RDC0011/RDC0017 | Removidos do catalogo ativo v5.12. | Corrigido. | corrigido nesta rodada | Conferir se dados historicos continuam apenas como legado. |
| SLC0005 | Codigo atual tem `slc0005.ex`, teste e handler R1. | Documento `04` esta desatualizado neste ponto. | documento stale | Nao abrir como gap. Manter regressao. |
| Piloto/Reserva/Desdobro | LegadoSPB expunha `ConsisteSaldoReserva`, `FiltroDesdobroSLC0001`, `GeraDesdobroSLC0002`, `FiltroDesdobroCSD1001`, `GeraDesdobroCSD1002`; busca no Monetarie nao retornou equivalentes. | Falta superficie de produto/operacao. | gap real | Implementar endpoints/UI/servico de piloto e desdobro, com regra de reserva. |
| Alerta RDC | LegadoSPB expunha `ListarAlertasRDC`, `ManutAlertasRDC`. | Equivalente Monetarie nao encontrado nesta rodada. | gap real/nao provado | Mapear se substituido por outro modulo; se nao, portar. |
| STR0053 | Forte presenca estatica e testes locais no SPB. | Nao foi smokeado contra BACEN nesta rodada. | portado parcial | Rodar fluxo com massa controlada. |
| Idempotencia `IdentdInfSeggc` | Documento aponta regra; busca local mostra validacoes, mas nao foi provado indice/dedup unico. | Nao provado. | nao provado | Criar teste de duplicidade e conferir constraint. |

## Mocks, hardcoded e defaults

| Codigo doc | Item | Estado apos esta rodada | Classificacao |
| --- | --- | --- | --- |
| C-01/C-02/C-03/A-02 | Defaults BACEN/PIX env | Runtime agora fail-closed quando `BACEN_ENABLED=true`; Terraform adiciona `CERT_SECRET_PREFIX`; task PIX `:76` expoe a env. | corrigido e deployado em PIX homolog |
| CRIT-09 | `monetarie_spi.messages` fora do partition manager | Incluido no manager. | corrigido local |
| C-04 | `SPB_WEBHOOK_SECRET` fallback publico | Removido; teste novo versionavel criado. | corrigido |
| C-04 ampliado | `SECRET_KEY_BASE`, `DATABASE_URL`, `SPB_WEBHOOK_URL` prod hardcoded | Removidos do prod runtime. | corrigido |
| A-03 | Dual custody cria usuario com senha default | Removido fallback; senha explicita obrigatoria. | corrigido |
| C-05 | `Monetarie.Sta.Client.Mock` em lib/core | Ainda aberto; nao corrigido nesta rodada. | gap posterior |
| A-06 | e-financeira `stub_signature` | Ainda aberto; nao corrigido nesta rodada. | gap posterior |
| A-07 | `outbox_test_helper` em lib | Ainda aberto; nao corrigido nesta rodada. | gap posterior |
| A-08 | `MockSTAUploader` em STA lib | Ainda aberto; nao corrigido nesta rodada. | gap posterior |
| i18n | Strings hardcoded | Documento `03` lido; nao executado nesta rodada. | frente posterior |

## Evidencia de testes/validacoes

Validacoes executadas:

```text
infra/aws/greenfield: terraform validate -> Success
PIX homolog API smoke pos-deploy v76 -> 14 chamadas, 14 OK HTTP/aplicacao; CAMT.060 6 acoes com bacen.sent=true; catalogo 27/27
PIX balance truth probe -> raw_total_centavos=9160772444.16; exibicao correta R$ 91.607.724,44
pix/backend: mix format nos arquivos alterados -> OK
pix/backend: TRCK002 focused ExUnit -> 2 tests, 0 failures
pix/backend: MessageController catalog focused ExUnit -> 1 test, 0 failures
pix/frontend/admin: pnpm build -> OK, com warnings pre-existentes de chunk/import dinamico
PIX deploy -> pix-api task definition monetarie-pix-api-homolog:76, pix-admin-ui task definition monetarie-pix-admin-ui-homolog:6, ECS stable
spb/services/bacen_gateway: RSTR/RDC/dual-custody focused ExUnit -> 31 tests, 0 failures
spb/services/transaction_service: webhooks_runtime_requirements focused ExUnit -> 2 tests, 0 failures
spb/frontend-vue: pnpm build -> OK, com warning pre-existente de chunk grande
SPB balance UI recapture -> Conta Reserva/Conta PI/CIP/SELIC sem saldo inventado quando API retorna nulo
core/backend: mix format --check-formatted nos arquivos alterados -> OK
core/apps/banking: pnpm run type-check -> OK
core/apps/banking: pnpm run build -> OK, com warning pre-existente de chunk grande
Core/IB deploy -> core-api task definition monetarie-core-api-homolog:48, core-banking-ui task definition monetarie-core-banking-ui-homolog:12, ECS stable
Core/IB payment probe pos-deploy -> PIX 202 amount=1; TED UI corrigido 202 amount=100; TED direto 202 amount=100; status-poll PIX 404 permanece gap
sta/backend: MIX_ENV=test mix compile -> OK, com warnings pre-existentes
git diff --check -> OK apos este relatorio
```

Nao foi rodado `mix test` full porque aliases locais criam/migram Postgres e podem alterar estado. O teste focado do Core que toca banco nao completou no ambiente local por falha de autenticacao PostgreSQL do usuario `monetarie`; a validacao operacional equivalente foi feita por deploy homolog e probe Core/IB com mutacoes controladas.

## Brainstorm operativo embasado

Estes pontos nao sao fatos; sao hipoteses de trabalho para a atuacao extensa, cada uma exigindo prova antes de mudanca:

1. PIX deve ser conduzido por "anéis de protecao": primeiro congelar DICT/CID/PIBR/CAMT.060 com testes de regressao, depois atacar gaps de tela/timeline/batch sem alterar o transporte BACEN validado.
2. Batch/Multiliquidacao provavelmente precisa de desenho proprio, nao apenas portar controllers. O LegadoPIX tem .NET de multiliquidacao e conversoes de lote; o Monetarie tem tabelas/schema/proxy, mas falta contrato SPI. A decisao correta e mapear payload legado -> schema atual -> endpoint SPI -> evento NATS.
3. Timeline PIX deve ser resolvida por identidade de negocio: aceitar ID interno e E2E, normalizar para `message.id`, e fazer o historico refletir `message_history`. Criar `status_history` so se houver motivo de dominio, nao para mascarar contexto morto.
4. SPB piloto/desdobro deve ser tratado como fluxo operacional de cabine, nao so XSD. O legado mostra endpoints de consistencia de reserva e geracao de desdobro; a cabine Monetarie precisa reproduzir ergonomia e trilha de auditoria para operador.
5. RDC precisa de smoke de ponta a ponta apos seed corrigido. Catalogo correto evita erro semantico, mas nao prova fluxo.
6. i18n e hardcoded visual devem entrar depois da estabilizacao dos fluxos de dinheiro, para nao misturar risco de UX com risco de liquidacao/mensageria.

## Plano de atuacao imediato

### Onda 0 - deploy e guardrails

1. Concluido: task PIX `:76` contendo `CERT_SECRET_PREFIX`; smoke pos-deploy 27/27.
2. Concluido: Core API `:48` e Core Banking UI `:12` com contrato PIX/TED corrigido e probe pos-deploy.
3. Manter guardrail: `transaction_service` deve seguir sem fallback de `SECRET_KEY_BASE`, `DATABASE_URL`, `SPB_WEBHOOK_URL`, `SPB_WEBHOOK_SECRET`.
4. Rodar suites maiores somente com banco controlado; localmente o PostgreSQL de teste bloqueou o teste focado do Core por senha invalida.

### Onda 1 - PIX sem overlap nos fluxos BACEN validos

1. Criar regressao para DICT GetEntry, CID events, PIBR.001 e CAMT.060 sem trocar a implementacao validada.
2. Corrigir timeline: id inteiro/E2E, ACSP preso, contexto `transactions` vazio, ausencia de `status_history`.
3. Implementar Composite QR ou remover formalmente superficie 501.
4. Portar Batch/Multiliquidacao com matriz LegadoPIX -> Monetarie.
5. Implementar Scheduled dispatcher/scheduler.

### Onda 2 - SPB pilotos, reserva, redesconto, desdobro

1. Portar/implementar endpoints equivalentes a `ConsisteSaldoReserva`, `FiltroDesdobroSLC0001`, `GeraDesdobroSLC0002`, `FiltroDesdobroCSD1001`, `GeraDesdobroCSD1002`.
2. Implementar ou provar substituto para `AlertaRDC`.
3. Rodar smoke RDC com seed corrigido.
4. Validar STR0053/CAM0064/CAM0065/CAM0066/SLC0005 com massas controladas e estados R1/R2/R3.

### Onda 3 - catalogo, mocks e experiencia

1. Remover mocks/stubs restantes em lib ou isolar em `test/support`.
2. Resolver i18n/string hardcoded do documento `03`.
3. Capturar UI com `scripts/codex_capture_core_pix_spb.cjs` contra URLs reais e analisar cada screenshot invalido.

### Backlog anotado - SGCT/PIX Automatico

SGCT/PIX Automatico permanece registrado para atuacao posterior: routers/controllers SGCT, `pix_pixauto_router`, dispatcher webhook, recorrencia completa e APIs 9.9-9.13. A orientacao atual e deixar para depois, portanto nao entra nas ondas imediatas.
