# Handoff 2026-06-27 (sessao 2) — Consolidacao "tudo pendente pra main sem regressao"

Mandato do dono: full deep audit do repo, consertar a timeline do detalhe de transacao,
commitar a camt.060 (que vivia so na imagem), reconciliar as memorias, e **levar tudo o
que estava pendente para `main` sem deixar problema, coisa faltando, nem regredir problema
antigo**. Tudo provado empiricamente (BACEN e verdade), pt-br sem travessao de IA, AWS
sempre `AWS_PROFILE=vulcimonetarie` (conta 990933657879).

## Estado vivo no fim da sessao
- **origin/main = `d65f8aee`**.
- **pix-api = task-def `:71`**, digest `sha256:93c05f1d96917e528ac42a40aeb707612bafe6460be2cc502cf13adec9b2b594` (tag `homolog-057081e6`).
- **core-api = task-def `:43`**, digest `sha256:8479c4eef40a6abd381deb34f6d6d7484aa483404ca52c3f8c8dbbfa202a48c2` (tag `homolog-f0ad563c`).
- spb-api `:18` (2 conteineres: spb-api + spb-mq-sidecar, IBM_MQ_ENABLED=true). 15/15 ECS healthy.

## Achado critico (o "problema antigo" tinha voltado ao vivo)
A cabine PIX tinha DUAS linhagens paralelas. Toda a remediacao (liquidacao de saida
ACSC->status 4, ponte de netting `SettlementObligationWorker`, CID full-sync por cursor,
DICT 2.11.0 com 24 desvios, remocao camt.035/056) vivia SO na branch `f0ebf6bf`, NAO
mergeada. O rebuild pix-api `:62/:63/:70` foi feito da arvore main-lineage
(`fix/core-etl-visibility`/`f64c0d91`), que NAO continha esses 11 commits. Resultado provado
no `:70` ao vivo: `SettlementObligationWorker` ausente, `StatusUpdater @status_settled=7`
(sem mapeamento ACSC) -> as 12 transacoes de saida seguiam presas em ACSP. A liquidacao,
dada como "provada viva no :60", tinha regredido no rebuild posterior.

## O que foi feito (tudo em main + deploy + validado)
### PIX (merge `ce1d98bd`, commit de trabalho `057081e6`)
- **Mergeada a branch `f0ebf6bf` inteira em `main`** (merge limpo, interseccao pix/ x core/ = vazia) -> restaura liquidacao/netting/CID/DICT no codigo e no vivo.
- **camt.060 reconciliada**: havia duas implementacoes divergentes (a `:70` provada 6/7 com `<Document>` herdando o xmlns do `<Envelope>`; e a de `f0ebf6bf` com xmlns explicito). Adotei a versao PROVADA `:70` por inteiro (camt060.ex + spi_client build_camt060_request, byte-identica) sobre a base `f0ebf6bf`, resolvendo a contradicao do xmlns EMPIRICAMENTE: a versao sem xmlns explicito e a que ACKa e retorna 6/7 (meter xmlns mudaria o digest XMLDSig provado). Exposto `request_opts/2` + 12 testes (verdes).
- **Timeline do detalhe**: `PaymentController.history` aceita id INTEIRO **ou** EndToEndId (`resolve_message/1`) e sintetiza o status atual da mensagem quando `message_history` esta vazia (nunca fica em branco quando a tx existe). A linha PDNG inicial ja existia em `f0ebf6bf`; a liquidacao restaurada faz o ciclo avancar gravando ACSP->ACSC.
- Tambem: Accept inclui `application/problem+xml`; monitor pula linha de `/cids/events` vazio.

### Core (merge `d65f8aee`, commit `f0ad563c`)
- **Regressao 100x do Track B corrigida**: `V2.AccountController.transactions` devolvia base_units (subcentavos) nas 3 fontes enquanto o front formata /100. Adicionado `cents/1` (div 100, mesma regra do `balance/2`). `transactions_self` delega.

### Infra/SPB (commit `1f9d5e50`)
- `locals.tf rtm_hsm_base_url` -> endpoint HSM vivo (`https://monetarie-hsm-hml.priv.rtmcloud.net.br`).
- `037_backfill_operations`: `sender_ispb` default -> Monetarie `46026562` (era CloudWalk `18189547`).

## Evidencias empiricas (ao vivo)
- pix-api `:71` (rpc): `SettlementObligationWorker` + `CycleScheduler` LOADED; camt.035 raise; DICT 2.11.0 presente; camt.060 saldo-atual assinado no HSM + **ACK BACEN `sent:true`**; as 7 acoes montam reqd/prtry/data corretos; `resolve_message` resolve por id inteiro E e2e.
- **Front pixadmin (VPN)**: `/transactions/39` "Historico de Status" renderiza 2 eventos (ACSP SYSTEM + ACSC BACEN); rede = `GET /api/v1/payments/39/history => 200` com id INTEIRO 39. Screenshot: `~/Desktop/monetarie-evidencias-sessao-2026-06-27/pix-timeline-tx39-2026-06-27.png`.
- core-api `:43` (rpc): entrada R$2.000.000,00 = base_units 20000000000 -> API agora 200000000 centavos (era 100x).
- DB mon_pix: 12 OUTBOUND (10 ACSP, 2 ACSC), message_history 24, `transactions` vazia, `status_history` inexistente (mas `transaction_status_history` existe), cid_events 2790, dict keys 1162.

## Pendencias documentadas (sem regressao introduzida; NAO rushei p/ nao criar problema novo)
1. **ecs.tf sidecar SPB**: o `:18` (sidecar spb-mq + IBM_MQ_ENABLED=true) foi registrado a mao; o task-def no Terraform e generico (for_each de 1 conteiner). Codificar o sidecar condicional exige casar byte-a-byte o conteiner vivo + ciclo de `terraform plan`. O vivo funciona; codificar e tarefa deliberada de infra.
2. **Tela banking `/accounts/:id/statement`**: o `StatementController` + use case `Statements` ainda leem a tabela `transactions` VAZIA pos-ETL (dados em account_entries). Repoint e um trabalho de subsistema (opening balance + statement engine + unidades), nao a regressao 100x ja corrigida.
3. **10 transacoes ACSP legadas**: presas de antes do fix; precisam reconciliacao contra o status real do BACEN (nao marcar settled as cegas).
4. Checkout local `/Users/luizpenha/monetarie` segue em `fix/core-etl-visibility` com 6 arquivos PIX uncommitted SUPERADOS (pode `git checkout -- pix/`).

## Branches
- `fix/pix-camt060-verifier-spi-msg-audit` = `057081e6` (pushed, mergeada em main).
- `fix/core-money-100x` = `1f9d5e50` (mergeada em main).
