# Alinhamento SCD + replay — EXECUÇÃO (2026-06-27)

Continuação de `2026-06-27-scd-flow-alignment-RESUME.md`. Plano:
`~/.claude/plans/swirling-seeking-sketch.md`. Branch `fix/scd-flow-alignment`
(rebaseada em origin/main `7b3a088b`).

## Etapas vencidas (código, commitado + testado local)

| Fase | Commit | O quê | Verificação |
|---|---|---|---|
| 1 | `3ec769c5` | `interest`→receita 7.1.1.10.01.10.213; capital país/exterior (não PF/PJ); moduledoc/bridge/mapper SCD; doctest | `mix test` afetados **116/0** (accounting_bridge 30/0, journal_entry 30/0, handlers/inbound/posting) |
| 2 | `b1908e4f` | saldo devedor: wallet flag `debits_must_not_exceed_credits` true→false; `BalanceGuard.verify_with_overdraft/3` + `overdraft_limit/1`; pipeline desacoplado do flag (gate por `client_liability`); 5 guards + judicial | `balance_guard_test` **12/0** (inclui descoberto com facility) |
| 3 | `41de7088` (+ fix `107b5572`) | replay popula `transactions`; devedoras → ativo `1.6.1.20.01.10.213` (0 quarentena); partições históricas; reset inclui transactions/overdraft; `PartitionMaintenance.create_partition_if_not_exists/3` público | `remigrate_transactions_test` **4/0** (partição + insert no formato da migração) |

Falhas pré-existentes no suite (entities_cnpj_alfa_chk, webhooks.encrypted_secret, FK banks/users) são rot de fixture (o alias `test` não roda seeds.exs), não desta mudança.

## Etapas vencidas (execução AWS, conta 990933657879)

1. **`autbank_src` recarregado na Aurora viva** (`mon_core`): CTAS no `monbank_tmp` local → `pg_dump -n autbank_src` (79M gzip) → S3 `monetarie-etl-reload-990933657879` → presigned URL → `curl | gzip -d | sed '/transaction_timeout/d' | psql` no task core-api. Conferido: **ai=1606, ac=1606, aw=1606, tx=258959**. (O `sed` tira o `SET transaction_timeout` que o pg_dump do PG17 emite e a Aurora PG16 rejeita.)
2. **Imagem nova buildada+pushada** (ARM64): `:46` digest `8d89a3a7…` (Fase 1-3) e depois `:47` digest `6fa2a0d5…` (com o fix do chunk). Deploy `update-service` → `wait services-stable` → rollout COMPLETED.
3. **`dry_run` validou**: 258.959 movimentos, **0 unmapped**, `balances_ok: true`, **total R$961.178,02** (já com as 2 devedoras), Disponib = Obrig + tarifas + IOF + juros.
4. **Defeito #1 corrigido** (1ª run, `MatchError {:error,:not_found}` em `resolve_cosif_accounts!`): a folha `1.6.1.20.01.10.213` (Cheque Especial, seed 033) não existia no live. Semeadas 3 contas ATIVO `1.6.1.20.01.*` na Aurora (subgrupo Cheque Especial).
5. **Defeito #2 corrigido** (2ª run, `postgresql ... 95000 parameters > 65535` na Fase 2): a linha de `transactions` tem ~19 campos; chunk 5000 = 95k params. Reduzido para 3000 (commit `107b5572`, rebuild `:47`).
6. **3ª run em andamento** (task-def `:47`, via `rpc spawn` + `/tmp/remig.out`).

## GOTCHAS desta execução
- Backup só carrega na Aurora por um host na VPC; Mac sem VPN (Aurora inalcançável). Caminho = S3 presigned + `curl` no task core-api (tem psql/curl/gzip; **sem aws cli**).
- pg_dump do PG17 emite `SET transaction_timeout` → Aurora PG16 rejeita → `sed '/transaction_timeout/d'`.
- `bin/monetarie rpc 'spawn(fn -> ... end)'` roda no nó BEAM vivo (sobrevive à sessão do exec); `nohup &` lançado pelo exec MORRE quando a sessão fecha.
- Background Bash poller é morto cedo (~timeout); usar a tool **Monitor** (loop silencioso até `/tmp/remig.out`).
- TB é append-only: cada run cria ids de conta novos (seq não reseta) e carteiras TB novas; as antigas ficam órfãs (bloat de homolog, ok).

## PENDENTE
- Reconciliação final da 3ª run (alvo: 1606 contas, R$961.178,02, 0 quarentena, devedoras em 1.6.x, transactions ~259k, A=P+Resultado). SQL pronto em scratchpad `verify_cosif.sh`.
- **Fase 4**: relatório (`scripts/etl_remigration_report.cjs`, atualizar números) + **prints do admin** — BLOQUEADO pela VPN do Mac (admin é `.internal`). Recapturar painel 961.178,02, balancete com ativo 1.6.x, razão, extrato devedor, uma transação no detalhe.
- Limpar o objeto S3 `monetarie-etl-reload-990933657879/autbank_src.sql.gz` (dado real do cliente) após confirmar a migração.
- Seed 033 (overdraft cosif) não estava no live; avaliar rodá-lo ou incorporar a `scd_cosif_plan.exs` para não depender do patch manual das 3 contas.
- Mergear `fix/scd-flow-alignment` na origin/main após validação.
