# Handoff: Subida para Produção do Monetarie (Core/PIX/SPB)

Data: 2026-07-07. Este é o documento único de retomada. Leia ele + os 3 artefatos
abaixo e continue de onde paramos, sem perder contexto.

## Comando para colar na próxima sessão

```
Retome a subida para PRODUÇÃO do Monetarie (Core/PIX/SPB). Leia, nesta ordem:
1. docs/handoff/2026-07-07-subida-producao-handoff.md (este handoff, fonte de verdade)
2. docs/plans/2026-07-07-subida-producao-monetarie-design.md (design validado)
3. docs/plans/2026-07-07-subida-producao-monetarie-plano.md (plano de execução, 6 fases)
4. docs/reports/2026-07-07-mapa-coop-scd.md (mapa coop->SCD, com decisões do dono)
5. docs/reports/2026-07-07-mapa-onz-avivpay.md (mapa OnZ/AvivPay, com decisões do dono)

Continue a FASE 1 (higiene de código) a partir da Task 1.2, via subagent-driven
(um subagent fresco por onda + revisão spec depois qualidade), ou executing-plans.
Tarefas rastreadas: #43-#53. Já concluída: 1.1 coop->SCD i18n (commit 9bdb5a0d).
Decisões do dono JÁ estão nos dois mapas (seção "Decisões do dono aprovadas").
Ondas de money-path (1.5 backend contábil, 1.9 reconciliação, 1.10 MGMT->camt.060):
revisão dupla estrita, TigerBeetle/money_unit intactos, balancete ao centavo.
NÃO deployar prod ainda: Fase 1 valida em HML, imagens promovidas por digest depois.
Fase 0 (spikes PKCS#11 do HSM prod + acessos de rede 10.50 com a RTM) segue pendente
por fora, é bloqueante do go-live PIX na Fase 6, não bloqueia a Fase 1.
```

## O que é este trabalho

Subir Core, PIX e SPB em produção na conta AWS 990933657879 (sa-east-1), VPC 10.50,
espelhando a topologia de homologação, com estado inicial LIMPO (sem os dados de teste
de HML), código higienizado (sem coop/OnZ/homolog), trilhas de auditoria funcionais e
certificados de produção validados por eco assinado no BACEN.

## Artefatos já produzidos (commitados em `main`)

| Artefato | Arquivo | Commit |
|---|---|---|
| Design | `docs/plans/2026-07-07-subida-producao-monetarie-design.md` | `1d4bb1bc` |
| Mapa coop->SCD | `docs/reports/2026-07-07-mapa-coop-scd.md` | `85be7ddf` |
| Mapa OnZ/AvivPay | `docs/reports/2026-07-07-mapa-onz-avivpay.md` | `85be7ddf` |
| Plano de execução | `docs/plans/2026-07-07-subida-producao-monetarie-plano.md` | `9874e666` |
| Onda 1 (i18n) | 5 locales `core/apps/admin/src/i18n/locales/*` | `9bdb5a0d` |

## Decisões travadas com o dono (não re-perguntar)

Fundacionais:
1. Infra: mesma conta, ADOTAR a VPC de produção 10.50 existente via data sources (padrão da 10.45 de HML). Não criar VPC.
2. Dados: produção NASCE VAZIA de negócio. Só base de sistema (admin, grupos/permissões, COSIF, diretório de instituições, tabelas de referência). Zero conta/saldo/cliente/chave. Migração de clientes é plano separado, posterior.
3. mTLS do PIX: resolver via HSM (PKCS#11 do RTM). Chave do PIC nunca sai do HSM. Exige spike de validação com a RTM (Fase 0.1).
4. Limpezas grandes (coop e OnZ): map-first (mapas aprovados).

Forks (nos mapas):
- Segregação contábil ato-cooperativo: REMOVER inteira (COSIF, revisão contábil, balancete ao centavo).
- MGMT Query: readequar para camt.060 REAL (parser camt.054 na cabine + merge com pacs locais).
- Reconciliação de tesouraria: readequar para reconciliar contra a NOSSA cabine (diferenças reais).
- CaixaAviv: RENOMEAR para Caixa Institucional (não é integração OnZ, é a caixa que segrega receita de tarifas PIX no TB), remover operador hardcoded.
- views/cooperative/* órfã: REMOVER; endpoints /cooperative/* vivos: manter via ALIAS.
- Papel `conselheiro`: remover.

Diferenças de PROD vs HML (design seção 3): Aurora PostgreSQL 17.9 (não 16), NATS 3 nós, TigerBeetle cluster 3 nós EC2 0.17.3 `TB_POOL_SIZE=3` 1-por-AZ, MQ Linux prod 172.31.1.50.

## Pré-condições já validadas ao vivo

- VPC prod 10.50 existe: `vpc-0da523dbdbac50b5d` (`monbank-rtm-prod`), subnets `monbank-rtm-prod-1a/1b/1c` (10.50.1/2/3.0/24). Adotável via data sources.
- Aurora PostgreSQL 17 disponível em sa-east-1 (17.4 a 17.9). Usar 17.9.

## Certificados (locais, não commitar chave privada)

Nossos, produção ICP-Brasil (só públicos; privadas no HSM prod), em `~/Desktop/Certificados Prod/`:
- `Certificado PIA P003.cer` (assinatura PIX, HSM), `Certificado PIC P002.cer` (mTLS PIX, HSM PKCS#11).
- `MONETARIE ... S.A.cer` e `... S.A 2 .cer` (P001, SPB). ISPB 46026562, AC VALID SPB v5, val. jun/2026-jun/2027.

Peers/diretórios do BACEN (ISPB 00038166), em `~/Downloads/`:
- `ISPB-00038166-PIA-P515.cer` (verifica assinatura BACEN PIX), `ISPB-00038166-PIC-P514.cer` (`*.pi.rsfn.net.br`, pin mTLS), `ISPB-00038166-SPB-P060.cer`, `ISPB-00038166-MES-P061.cer`.
- `Ativados-SPB (1).zip` e `Ativados-MES (1).zip` (um .cer por ISPB, registry de participantes).
- Importar a CADEIA ICP-Brasil completa (Raiz v5/v10/v11/v12 + AC SERPRO SSLv1/Final SSL + CSPB-1/CSPB-6 + AC VALID SPB v5) no truststore, zero margem de erro (Fase 0.3).

Atenção validade: SPB-P060 e MES-P061 vencem 2026-09-01.

## Estado da Fase 1 (higiene) e rastreamento

Tarefas #43-#53 (uma por onda). Ondas coop são SEQUENCIAIS (não paralelizar):
- #43 1.1 coop->SCD i18n: CONCLUÍDA (commit `9bdb5a0d`, build + 264 testes verdes). Nota: `es.ts` é locale incompleto, não tocado; `docCouncil` i18n órfã removida (a opção real de doc de conselho profissional/KYC vive hardcoded em `views/providers/NextcodeProviderView.vue:91`, não tocada, revisar numa onda de views).
- #44 1.2 types, #45 1.3 rotas+RBAC front, #46 1.4 remover subárvore órfã (desacoplar useInstitution.ts antes), #47 1.5 backend+alias (money-path COSIF), #48 1.6 testes/varredura, #49 1.7 OnZ limpeza mecânica, #50 1.8 CaixaAviv->Institucional, #51 1.9 reconciliação (money-path), #52 1.10 MGMT->camt.060 (money-path), #53 1.11 dedup menus + homolog: PENDENTES.

## Fase 0 (bloqueante do go-live PIX, por fora do loop de código)

- 0.1 Spike PKCS#11 do HSM de produção: validar com a RTM que o HSM prod expõe PKCS#11 para assinatura (PIA) e mTLS (PIC); locate-all dos UIDs. SEM isso, o ENVIO PIX não sobe.
- 0.2 Acessos de rede da origem 10.50: HSM prod, MQ `172.31.1.50`, RSFN (DICT/ICOM/ARQ). CONNECT + auth.
- 0.3 Truststore ICP-Brasil de produção (cadeia completa, `openssl verify` dos 8 certs).

## Pendências abertas com o dono

- Confirmar e-mail do admin inicial: `admin@monetarie.com` (como pedido) vs `admin@monetarie.com.br` (domínio institucional). Só trava na Fase 4.

## Gotchas de operação (para a próxima sessão)

- Estou em `main`. Commits do dia foram pushados para `origin main`. O commit `9bdb5a0d` (onda 1) pode ainda não estar pushado: conferir e pushar após a revisão.
- AWS: sempre `AWS_PROFILE=vulcimonetarie AWS_REGION=sa-east-1` (conta 990933657879). Wrapper `awsmon` no CLAUDE.md raiz.
- Deploy ECS: script `scratchpad/deploy_svc.sh` registra task-def preservando env/secrets/sidecar; depois `ecs update-service`. spb-api tem sidecar `spb-mq-sidecar` (conferir 2 containers).
- rpc em cabine: `bin/monetarie_pix rpc "Code.eval_string(Base.decode64!(...))"` via `ecs execute-command`; migrar via `rpc`, não `eval`; ECS exec não herda secrets.
- Fronts: PIX `pix/frontend/admin` (npm), SPB `spb/frontend-vue` (Vuetify, token localStorage `admin_token`), Core `core/apps/admin` (pnpm workspace `@monetarie/admin`). Login PIX admin `admin@monetarie.com.br`; SPB idem; senha em Secrets Manager `monetarie/homolog/admin/{core,pix,spb}/initial_password`.
- HML atual no ar: pix-api:126, pix-admin-ui:34, spb-api:33, spb-admin-ui:10, core-api:88.
- Regras: BACEN é verdade, achar NOSSO defeito e PROVAR empiricamente, zero inferência; docs pt-br sem travessão de IA; segredos só no Secrets Manager; regra #11 (screenshot para validar tela).
