# Handoff definitivo - Monetarie AWS Homologação Core, PIX e SPB

Data: 2026-06-21
Conta AWS: `990933657879`
Região: `sa-east-1`
Acesso AWS: conta `990933657879`, região `sa-east-1`, com credenciais isoladas do ambiente Monetarie.
Escopo validado: Core, PIX, SPB, infraestrutura interna, OpenVPN, DNS privado, HSM RTM teste
Escopo pré-configurado: HSM RTM HML para PIX e SPB, IBM MQ HML para SPB
Evidências: `/Users/luizpenha/Desktop/monetarie-evidencias-aws-homolog-2026-06-21`
Última conferência documental e AWS: 2026-06-21 16:08 BRT
Último ciclo operacional validado em AWS: commit/tag `b72cc6a`
Observação sobre tags: após qualquer commit documental posterior, confirmar a tag ativa por `ecs describe-services` e `ecs describe-task-definition`.

Este documento e a memória raiz `CLAUDE.md` são a referência de continuidade para novas sessões com Codex, Claude ou qualquer outro agente. Ele substitui o estado anterior que dizia que nada havia sido aplicado na AWS.

## 1. Estado atual consolidado

O ambiente de homologação AWS da Monetarie foi criado, publicado internamente e validado empiricamente para Core, PIX e SPB.

Resultado comprovado em 2026-06-21:

- 15 serviços ECS em `running=1`, `desired=1`, rollout `COMPLETED`.
- 15 target groups do ALB interno com targets `healthy`.
- 23 hosts internos em `monetarie.internal` respondendo HTTP 200 em `/health`.
- Logins de API Core, PIX e SPB validados com usuário administrativo.
- 36 screenshots capturados por Playwright, com `invalid=0` no validador.
- Branding Monetarie validado nas telas capturadas.
- REDA visível na Central de Mensagens PIX.
- Monitor PIX validado com WebSocket aberto, sem estado offline, sem erro de console e sem resposta 4xx/5xx.
- TigerBeetle validado em runtime com imagem `ghcr.io/tigerbeetle/tigerbeetle:0.17.3`.
- NATS validado em runtime com imagem `nats:2.10-alpine`.
- HSM RTM teste `200.160.162.200:63351` validado com TCP OK e HTTP 200.
- HSM RTM HML da Monetarie pré-configurado para PIX e SPB com endpoint `cloudhsm-hml.priv.rtmcloud.net.br`, IP privado esperado `10.173.1.247` e vHSM `60042`; segredos em Secrets Manager, sem valores no Git.
- IBM MQ HML pré-configurado para SPB com VM `097514SP_MQ_HML`, IP `172.31.2.50`, `SPB01` em `QM.46026562.01` na porta `1514` e `MES01` em `QM.46026562.02` na porta `12522`, canal `APP.SVRCONN`.
- Validação via SSM na EC2 `rsfn-egress` em 2026-06-21 16:12 BRT: HSM HML DNS resolveu para `10.173.1.247`, TCP `443` OK, TCP `60042` falhou; MQ HML `172.31.2.50` falhou em `22`, `1514` e `12522`.
- DNS RSFN validado no Mac via VPN e dentro da VM de tradução RSFN.
- EC2 `bastion` identificada na VPC RTM para estudo posterior somente leitura de rotas e conectividade RSFN.

Ponto ainda aberto:

- As portas de serviço RSFN para `dict-h`, `dict-np-h`, `icom-h`, `icom-sec-h` e `arq-h` retornaram timeout a partir do Mac e também a partir da VM de tradução RSFN. DNS e HSM estão OK. A comunicação RSFN de serviço não deve ser marcada como concluída até haver liberação, rota ou validação conjunta RTM/RSFN.
- A API HSM HML `cloudhsm-hml.priv.rtmcloud.net.br:60042` e o IBM MQ HML `172.31.2.50` em `22`, `1514` e `12522` ainda não devem ser marcados como validados. Os testes TCP sem segredos a partir da EC2 `rsfn-egress` falharam nesses destinos.
- A próxima etapa aprovada é estudar a RSFN pela EC2 existente nomeada `bastion`, apenas em leitura, para comparar DNS, rotas, origem de saída e alcance TCP com a VM Monetarie RSFN.

## 2. Artefatos finais entregues

PDFs no Desktop:

- `/Users/luizpenha/Desktop/Relatorio_Interno_Monetarie_AWS_Homolog_Core_PIX_SPB_2026-06-21.pdf`
- `/Users/luizpenha/Desktop/Relatorio_Cliente_Monetarie_AWS_Homolog_Core_PIX_SPB_2026-06-21.pdf`
- `/Users/luizpenha/Desktop/Monetarie-Acessos-Operacionais-Homolog-2026-06-21.pdf`

Markdown restrito no Desktop:

- `/Users/luizpenha/Desktop/Monetarie-Acessos-Operacionais-Homolog-2026-06-21.md`

Perfis OpenVPN no Desktop:

- `/Users/luizpenha/Desktop/Monetarie-RSFN-OpenVPN.ovpn`
- `/Users/luizpenha/Desktop/Monetarie-RSFN-OpenVPN-Gabriel-Cardoso.ovpn`

Observação sobre o documento de acessos: ele é restrito ao ambiente de homologação, foi gerado por solicitação explícita do usuário, contém senhas iniciais administrativas de teste, está fora do repositório e deve permanecer com permissão local `600`. Não anexar este documento ao pacote do cliente e não transportar esse padrão para produção ou ambiente que trafegue dinheiro real.

Arquivos HTML correspondentes:

- `/Users/luizpenha/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/Relatorio_Interno_Monetarie_AWS_Homolog_Core_PIX_SPB_2026-06-21.html`
- `/Users/luizpenha/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/Relatorio_Cliente_Monetarie_AWS_Homolog_Core_PIX_SPB_2026-06-21.html`

Geradores versionados:

- `scripts/codex_capture_core_pix_spb.cjs`
- `scripts/codex_generate_enterprise_report.cjs`

Documentos deste handoff:

- `docs/handoff/2026-06-21-monetarie-aws-homolog-handoff.md`
- `docs/handoff/2026-06-21-rsfn-bastion-study.md`
- `docs/handoff/2026-06-21-rtm-hsm-pix-spb-validation.md`
- `docs/handoff/2026-06-21-hsm-mq-hml-preconfig.md`
- `docs/architecture/2026-06-21-monetarie-aws-homolog-architecture.md`
- `docs/architecture/diagrams/aws-homolog-topology.mmd`
- `docs/architecture/diagrams/core-pix-spb-runtime.mmd`
- `docs/architecture/diagrams/rsfn-egress-flow.mmd`

## 3. Regras absolutas de continuidade

1. Usar somente credenciais AWS da conta `990933657879`, região `sa-east-1`.
2. Não usar credenciais padrão do Mac.
3. Não alterar bastion, rotas, VPCs, configurações ou recursos da Lerian. A exceção autorizada agora é estudo somente leitura na EC2 existente nomeada `bastion`.
4. Não criar DNS sem sufixo `-h` para homologação. O domínio correto é `monetarie.internal`.
5. Não usar `.local`. O navegador do usuário deve acessar `.internal` com VPN ativa.
6. Não recriar `spi-h`. O correto para RSFN é `dict-h`, `dict-np-h`, `icom-h`, `icom-sec-h` e `arq-h`.
7. TigerBeetle deve permanecer em `0.17.3`.
8. Secrets reais e de produção devem permanecer no AWS Secrets Manager. Não gravar senha, token, chave privada ou credencial real em Markdown, Terraform variables, `.env` ou relatório. A única exceção vigente é o documento restrito de acessos de homologação no Desktop, fora do Git, com permissão `600`, porque o usuário pediu explicitamente para registrar as senhas iniciais de teste.
9. O relatório do cliente não deve expor falhas, bloqueios, timeouts, detalhes de correção, tokens, segredos, topologia sensível de rede ou pendências técnicas.
10. O relatório interno deve ser honesto e empírico. Não marcar RSFN de serviço como validada enquanto as portas DICT, ICOM e ARQ estiverem em timeout.
11. O Core nunca assina TED, PIX, SPB, DICT, ICOM-SPI ou qualquer mensagem operacional BACEN. O Core publica eventos via NATS. Assinatura, decifragem e validação dessas mensagens pertencem às cabines PIX e SPB.

Wrapper seguro para AWS CLI:

```bash
awsmon() {
  env -u AWS_ACCESS_KEY_ID -u AWS_SECRET_ACCESS_KEY -u AWS_SESSION_TOKEN \
    AWS_REGION=sa-east-1 aws "$@"
}
```

## 4. Onde o trabalho parou

O trabalho parou com:

- Core, PIX e SPB publicados na AWS e validados por API, ALB, ECS, Route 53 interno e screenshots.
- Relatórios interno e cliente gerados e conferidos.
- OpenVPN funcional para acesso ao ambiente interno.
- VM de tradução RSFN funcional para OpenVPN, BIND, Squid e HSM RTM teste.
- DNS RSFN corrigido dentro da própria VM de tradução por `systemd-resolved` apontando para o BIND local.
- Portas de serviço RSFN ainda pendentes por timeout.
- Perfil OpenVPN de Gabriel Cardoso criado, instalado na VM RSFN e disponibilizado no Desktop.
- Documento restrito de endpoints, usuários, senhas iniciais de homologação e configurações criado em Markdown e PDF no Desktop.
- HSM RTM HML e IBM MQ HML pré-configurados em Terraform e documentados em `docs/handoff/2026-06-21-hsm-mq-hml-preconfig.md`.
- Validação sem segredos registrada: HSM HML `:443` abre; HSM HML `:60042` e MQ HML `172.31.2.50` ainda falham a partir da EC2 `rsfn-egress`.

Próxima sessão deve começar por:

1. Ler este handoff e `CLAUDE.md`.
2. Confirmar VPN ativa.
3. Rodar `cat ~/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/logs/validation-summary-current.json`.
4. Estudar a RSFN pela EC2 `bastion` em modo somente leitura, sem alterar bastion, rotas, security groups, TGW ou recursos da Lerian.
5. Só gerar novo relatório cliente se Core, PIX e SPB continuarem com `invalid=0` nas screenshots.

## 5. Topologia AWS criada e validada

### 5.1 Conta, região e estado Terraform

- Conta: `990933657879`
- Usuário validado: `arn:aws:iam::990933657879:user/vulciaws`
- Região: `sa-east-1`
- Terraform state: `infra/aws/greenfield`
- Bucket de state: `monetarie-tfstate-990933657879`
- Ambiente: `homolog`
- `terraform plan -var app_image_tag=b72cc6a -detailed-exitcode` executado em 2026-06-21 16:08 BRT com resultado `No changes`.

### 5.2 VPCs e conectividade

App VPC:

- VPC: `vpc-0db1cc5e57331fe0d`
- CIDR: `10.40.0.0/16`
- Private subnets:
  - `subnet-04b9e2d0a45cc0bd0`
  - `subnet-0bf6a55a583b7d03e`
  - `subnet-00c17f7c483d32439`
- Data subnets:
  - `subnet-099d9f93f93bb7a36`
  - `subnet-075f04af50d67cc79`
  - `subnet-05c7be7b7d86718a4`

RTM VPC existente:

- VPC: `vpc-0d5ecd0df0976bcb9`
- CIDR: `192.168.0.0/16`
- VM Monetarie RSFN: `192.168.40.10`
- OpenVPN EIP: `52.67.167.212`
- Client CIDR OpenVPN: `10.250.0.0/22`
- EC2 existente `bastion`:
  - ID: `i-06be52454b879cbbb`
  - Estado: `running`
  - IP privado: `192.168.19.59`
  - Uso nesta próxima etapa: estudo somente leitura de rotas, DNS e conectividade RSFN.

Conexão entre app e RTM:

- VPC peering App para RTM: `pcx-035032773d2f617e4`
- Rotas app privadas para `192.168.40.0/24`.
- Rotas RTM e app configuradas de forma aditiva para esta VM de tradução.
- Não foi alterado bastion existente e não foi alterada configuração da Lerian.
- Qualquer uso do `bastion` neste projeto deve começar por coleta somente leitura e comparação com a VM Monetarie RSFN. Não aplicar alteração sem autorização explícita.

### 5.3 DNS interno

Zona privada:

- Nome: `monetarie.internal`
- Zone ID: `Z07255101LW0TK32G8LU2`

Registros relevantes:

- `coreadmin-h.monetarie.internal`
- `coreapi-h.monetarie.internal`
- `core-api-h.monetarie.internal`
- `corebanking-h.monetarie.internal`
- `coremerchant-h.monetarie.internal`
- `ib-h.monetarie.internal`
- `merchant-h.monetarie.internal`
- `pixadmin-h.monetarie.internal`
- `pixapi-h.monetarie.internal`
- `pix-api-h.monetarie.internal`
- `spbadmin-h.monetarie.internal`
- `spbapi-h.monetarie.internal`
- `spb-api-h.monetarie.internal`
- `docs-h.monetarie.internal`
- `nats-h.monetarie.internal`
- `tigerbeetle-h.monetarie.internal`
- `npcadmin-h.monetarie.internal`
- `npcapi-h.monetarie.internal`
- `npc-api-h.monetarie.internal`
- `staadmin-h.monetarie.internal`
- `staapi-h.monetarie.internal`
- `sta-api-h.monetarie.internal`
- `backoffice-h.monetarie.internal`
- `clstapi-h.monetarie.internal`
- `clst-api-h.monetarie.internal`

Observação: `tigerbeetle-h` é o nome canônico. Não usar `tb-h` como novo alias sem decisão explícita.

Conferência de 2026-06-21 12:41 BRT: a zona privada contém os registros técnicos da própria zona e aliases de aplicação com sufixo `-h`. Não foi encontrado alias de aplicação de produção como `coreadmin.monetarie.internal` sem `-h`.

### 5.4 ALB interno

- DNS AWS: `internal-monetarie-internal-homolog-755178618.sa-east-1.elb.amazonaws.com`
- Todos os hosts internos passam pelo ALB interno HTTP.
- Validação: `http-host-validation-current.json` registrou 23 hosts com HTTP 200.

### 5.5 Aurora

- Cluster: `monetarie-core-homolog`
- Endpoint: `monetarie-core-homolog.cluster-cb00agagqtcs.sa-east-1.rds.amazonaws.com`
- Engine: Aurora PostgreSQL `16.6`
- Modo: Serverless v2
- ACU: mínimo `0.5`, máximo `4.0`
- MultiAZ: `false`
- Writer único: `monetarie-core-homolog-writer`
- Backup: 7 dias
- Criptografia: KMS do domínio core
- Banco inicial: `mon_core`
- Demais bases lógicas esperadas no cluster: `mon_pix`, `mon_spb`, `mon_npc`, `mon_sta`, `mon_clst`

### 5.6 Redis

- Cluster: `monetarie-gf-redis-node-homolog`
- Engine: Redis `7.1.0`
- Classe: `cache.t4g.micro`
- Nós: 1
- Endpoint: `monetarie-gf-redis-node-homolog.v2mdsw.0001.sae1.cache.amazonaws.com`
- Porta: `6379`

### 5.7 EC2 runtime

Instâncias Monetarie em uso:

- `monetarie-core-ecs-homolog`
  - ID: `i-09faef032d3f3e820`
  - Tipo: `t4g.small`
  - IP: `10.40.78.11`
  - Uso: capacity EC2 para workloads que precisam de runtime especifico.
- `monetarie-nats-1-homolog`
  - ID: `i-04d3eb5ed0a4f5207`
  - Tipo: `t4g.micro`
  - IP: `10.40.64.10`
  - Runtime validado: `monetarie-nats::nats:2.10-alpine::Up`.
- `monetarie-tigerbeetle-homolog`
  - ID: `i-0e62f373860bc11b3`
  - Tipo: `t4g.small`
  - IP: `10.40.64.20`
  - Runtime validado: `monetarie-tigerbeetle::ghcr.io/tigerbeetle/tigerbeetle:0.17.3::Up`.
- `monetarie-rsfn-egress-homolog`
  - ID: `i-0692fbf5e0dd6d350`
  - Tipo: `t4g.micro`
  - IP privado: `192.168.40.10`
  - IP público OpenVPN: `52.67.167.212`
  - Uso: BIND, Squid, OpenVPN, SNAT e validação HSM/RSFN.

## 6. ECS e serviços publicados

Cluster:

- `monetarie-greenfield-homolog`

Serviços validados:

| Serviço | Running | Task definition atual |
|---|---:|---|
| `backoffice` | 1/1 | `monetarie-backoffice-homolog:3` |
| `clst-api` | 1/1 | `monetarie-clst-api-homolog:4` |
| `core-admin-ui` | 1/1 | `monetarie-core-admin-ui-homolog:3` |
| `core-api` | 1/1 | `monetarie-core-api-homolog:8` |
| `core-banking-ui` | 1/1 | `monetarie-core-banking-ui-homolog:3` |
| `core-merchant-ui` | 1/1 | `monetarie-core-merchant-ui-homolog:3` |
| `docs-portal` | 1/1 | `monetarie-docs-portal-homolog:3` |
| `npc-admin-ui` | 1/1 | `monetarie-npc-admin-ui-homolog:3` |
| `npc-api` | 1/1 | `monetarie-npc-api-homolog:4` |
| `pix-admin-ui` | 1/1 | `monetarie-pix-admin-ui-homolog:3` |
| `pix-api` | 1/1 | `monetarie-pix-api-homolog:11` |
| `spb-admin-ui` | 1/1 | `monetarie-spb-admin-ui-homolog:3` |
| `spb-api` | 1/1 | `monetarie-spb-api-homolog:5` |
| `sta-admin-ui` | 1/1 | `monetarie-sta-admin-ui-homolog:3` |
| `sta-api` | 1/1 | `monetarie-sta-api-homolog:4` |

Observações da revisão de 2026-06-21 16:08 BRT:

- Todos os serviços acima foram revalidados via `ecs describe-services`, com `desired=1`, `running=1`, `pending=0` e rollout `COMPLETED`.
- O ciclo operacional validado usa a tag `b72cc6a` nas imagens das aplicações.
- O commit `f48d6ea` ajustou a estratégia de deploy do `core-api` para homologação de baixo custo:
  - `deployment_minimum_healthy_percent = 0`;
  - `deployment_maximum_percent = 100`;
  - motivo: a capacity EC2 única de homologação não comporta duas tasks `core-api` de 1 GiB simultaneamente durante troca de revisão.

ECR repositories existem para:

- `monetarie/backoffice`
- `monetarie/clst-api`
- `monetarie/core-admin-ui`
- `monetarie/core-api`
- `monetarie/core-banking-ui`
- `monetarie/core-merchant-ui`
- `monetarie/docs-portal`
- `monetarie/npc-admin-ui`
- `monetarie/npc-api`
- `monetarie/pix-admin-ui`
- `monetarie/pix-api`
- `monetarie/spb-admin-ui`
- `monetarie/spb-api`
- `monetarie/spb-mq-sidecar`
- `monetarie/sta-admin-ui`
- `monetarie/sta-api`

## 7. Correções aplicadas durante a sessão

### 7.1 Branding e nomenclatura

- Padronização visual para Monetarie em Core, PIX e SPB.
- Login SPB e PIX alinhados ao padrão visual do Core.
- Logo e favicon Monetarie aplicados onde era necessário no escopo validado.
- A validação visual bloqueia:
  - marca legada visível;
  - ausência de logo Monetarie;
  - termos técnicos como `msg_type`, `error_code`, `monetarie.spi_messages`, `NaN`, `undefined`;
  - strings cruas de i18n;
  - textos de homologação/local/secrets expostos em tela.

### 7.2 Core

- `core/apps/admin/nginx.conf`
  - Proxy ajustado para `core-api-h.monetarie.internal`.
- `core/apps/admin/src/assets/logo-monetarie-light.png`
  - Logo visual restaurado para o admin.
- Core admin seed/admin
  - Usuário `admin@monetarie.com.br` validado por API e por tela.
- `core/backend/lib/monetarie/use_cases/fees.ex`
- `core/backend/lib/monetarie/use_cases/fees/packages.ex`
  - Corrigido tratamento de `institution_id` nulo.
  - Endpoints de tarifas Core validados com HTTP 200.

### 7.3 PIX

- `pix/backend/config/runtime.exs`
  - Cookie `Secure` configuravel para ambiente HTTP interno.
  - `SETTLEMENT_CHECK_ORIGIN` configuravel para WebSocket.
- `infra/aws/greenfield/ecs.tf`
  - `PIX_COOKIE_SECURE=false` em homolog HTTP interno.
  - `SETTLEMENT_CHECK_ORIGIN=http://pixadmin-h.monetarie.internal`.
  - Secrets RSA do PIX injetados no task definition.
- `infra/aws/greenfield/kms-secrets.tf`
  - Secrets criados para `auth/mon_pix/rsa_private_key` e `auth/mon_pix/rsa_public_key`.
- `pix/frontend/admin/src/services/auth.ts`
  - Tratamento explícito de indisponibilidade do Web Crypto em origem HTTP interna.
- `pix/frontend/admin/src/stores/auth.ts`
  - Fallback controlado de login sem RSA apenas quando Web Crypto não está disponível na origem.
- `pix/backend/apps/shared/lib/shared/auth/jwt_auth.ex`
  - Ajuste de verificação JWT HMAC.
- `pix/backend/apps/settlement_service/lib/settlement_service_web/channels/user_socket.ex`
  - Validação de token do socket alinhada ao plug HTTP.
- Resultado:
  - `/api/v1/auth/public-key` validado HTTP 200.
  - Login PIX validado.
  - `/api/v1/auth/me` validado por cookie.
  - Monitor PIX validado com WebSocket aberto.
  - REDA validada em `pix-09-messages.png`.

### 7.4 SPB

- `spb/frontend-vue/nginx.conf`
  - Proxy ajustado para `spbapi-h.monetarie.internal`.
- Login SPB validado por API com usuário `admin@monetarie.com.br`, role `super_admin`.
- Telas admin e operador capturadas e aprovadas no validador visual.

### 7.5 Infra AWS

- Terraform aplicado para VPC app, ALB interno, Route 53 privado, Aurora, Redis, ECS, ECR, NATS, TigerBeetle, VM RSFN/OpenVPN e SSM.
- Recursos minimizados para homologação:
  - Aurora Serverless v2 `0.5` a `4` ACU, cluster único.
  - Redis `cache.t4g.micro`, um nó.
  - NATS `t4g.micro`.
  - TigerBeetle `t4g.small`.
  - VM RSFN `t4g.micro`.
- `core-api` ficou em EC2 capacity quando necessário por requisito runtime/TigerBeetle.

### 7.6 VM RSFN/OpenVPN

- VM dedicada criada na VPC RTM existente, sem mexer em bastion ou recursos Lerian.
- OpenVPN ativa com EIP `52.67.167.212`.
- BIND configurado para forward zone `rsfn.net.br`.
- Squid ativo para proxy controlado.
- Correção operacional aplicada em `systemd-resolved`:
  - DNS global `127.0.0.1`;
  - Domains `~rsfn.net.br ~monetarie.internal`;
  - `DNSSEC=no`.
- Persistência dessa correção adicionada no template:
  - `infra/aws/greenfield/scripts/rsfn-egress-user-data.sh.tftpl`.

### 7.7 OpenVPN Gabriel Cardoso

- Perfil criado para Gabriel Cardoso.
- Arquivo local: `/Users/luizpenha/Desktop/Monetarie-RSFN-OpenVPN-Gabriel-Cardoso.ovpn`.
- Arquivo remoto na VM RSFN: `/opt/monetarie/openvpn/monetarie-rsfn-gabriel-cardoso.ovpn`.
- CN do certificado: `gabriel-cardoso`.
- Fingerprint SHA256: `58:E8:03:58:FC:CD:84:B8:B7:3B:05:3B:86:E3:3D:8A:DB:26:EC:C5:20:0C:FE:85:33:8C:70:BC:F0:AA:2C:FD`.
- Arquivo local validado com permissão `600`.

### 7.8 Documentação restrita de acessos de homologação

- Markdown: `/Users/luizpenha/Desktop/Monetarie-Acessos-Operacionais-Homolog-2026-06-21.md`.
- PDF: `/Users/luizpenha/Desktop/Monetarie-Acessos-Operacionais-Homolog-2026-06-21.pdf`.
- Ambos com permissão `600`.
- O documento contém endpoints, usuários, senhas iniciais administrativas de teste e configurações de homologação por solicitação explícita do usuário.
- Não versionar, não anexar ao relatório cliente e não usar como padrão para produção.

## 8. Evidências empíricas principais

Resumo consolidado:

```json
{
  "aws_account": "990933657879",
  "ecs_services": 15,
  "ecs_ok": true,
  "target_groups": 15,
  "targets_healthy": 15,
  "target_total": 15,
  "hosts": 23,
  "hosts_ok": 23,
  "logins_ok": true,
  "core_fee_ok": true,
  "pix_public_key_ok": true,
  "rsfn_dns_ok": true,
  "hsm_http_ok": true,
  "pix_monitor_websocket_ok": true,
  "rsfn_egress_dns_ok": true,
  "rsfn_egress_hsm_ok": true,
  "rsfn_egress_service_port_ok_count": 0,
  "rsfn_egress_service_port_total": 5
}
```

Arquivos de evidência:

- `logs/validation-summary-current.json`
- `logs/aws-caller-identity-current.json`
- `logs/aws-ecs-services-current.json`
- `logs/aws-target-health-current.json`
- `logs/aws-route53-monetarie-internal.json`
- `logs/aws-rds-current.json`
- `logs/aws-redis-current.json`
- `logs/aws-ec2-current.json`
- `logs/runtime-ssm-validation-current.json`
- `logs/http-host-validation-current.json`
- `logs/api-login-validation-current.jsonl`
- `logs/core-fee-endpoints-current.json`
- `logs/pix-auth-public-key-current.json`
- `logs/pix-monitor-websocket-current.json`
- `logs/rsfn-dns-local-validation-current.json`
- `logs/rsfn-port-validation-current.json`
- `logs/rsfn-egress-ssm-validation-current.json`
- `logs/hsm-rtm-validation-current.json`
- `logs/screenshot-metadata.json`

Screenshots:

- Diretório: `/Users/luizpenha/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/screenshots`
- Quantidade: 36
- Sistemas:
  - Core: 12 telas
  - PIX: 11 telas
  - SPB: 13 telas
- Resultado: `invalid=0`

## 9. Como revalidar sem reinventar

### 9.1 Validar resumo final

```bash
cat "$HOME/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/logs/validation-summary-current.json"
```

### 9.2 Validar ECS

```bash
awsmon ecs describe-services \
  --cluster monetarie-greenfield-homolog \
  --services backoffice clst-api core-admin-ui core-api core-banking-ui core-merchant-ui docs-portal npc-admin-ui npc-api pix-admin-ui \
  --query 'services[].{serviceName:serviceName,desired:desiredCount,running:runningCount,pending:pendingCount,taskDefinition:taskDefinition,deployments:deployments[].{status:status,rolloutState:rolloutState}}'

awsmon ecs describe-services \
  --cluster monetarie-greenfield-homolog \
  --services pix-api spb-admin-ui spb-api sta-admin-ui sta-api \
  --query 'services[].{serviceName:serviceName,desired:desiredCount,running:runningCount,pending:pendingCount,taskDefinition:taskDefinition,deployments:deployments[].{status:status,rolloutState:rolloutState}}'
```

### 9.3 Validar target groups

```bash
awsmon elbv2 describe-target-groups \
  --query 'TargetGroups[?starts_with(TargetGroupName, `mon-`)].{name:TargetGroupName,arn:TargetGroupArn}'
```

Para cada target group, validar:

```bash
awsmon elbv2 describe-target-health --target-group-arn "<arn>"
```

### 9.4 Recapturar screenshots

```bash
CORE_PASSWORD=$(awsmon secretsmanager get-secret-value --secret-id monetarie/homolog/admin/core/initial_password --query SecretString --output text)
PIX_PASSWORD=$(awsmon secretsmanager get-secret-value --secret-id monetarie/homolog/admin/pix/initial_password --query SecretString --output text)
SPB_PASSWORD=$(awsmon secretsmanager get-secret-value --secret-id monetarie/homolog/admin/spb/initial_password --query SecretString --output text)

EVIDENCE_DIR="$HOME/Desktop/monetarie-evidencias-aws-homolog-2026-06-21" \
CORE_URL='http://coreadmin-h.monetarie.internal' \
PIX_URL='http://pixadmin-h.monetarie.internal' \
SPB_URL='http://spbadmin-h.monetarie.internal' \
CORE_LOGIN='admin@monetarie.com.br' \
PIX_LOGIN='admin@monetarie.com.br' \
SPB_LOGIN='admin@monetarie.com.br' \
CORE_PASSWORD="$CORE_PASSWORD" PIX_PASSWORD="$PIX_PASSWORD" SPB_PASSWORD="$SPB_PASSWORD" \
SYSTEMS='core,pix,spb' node scripts/codex_capture_core_pix_spb.cjs
```

O script deve terminar sem `Validação bloqueada`. Se bloquear, não gere relatório de aprovação.

### 9.5 Regenerar relatórios

```bash
EVIDENCE_DIR="$HOME/Desktop/monetarie-evidencias-aws-homolog-2026-06-21" \
REPORT_MODE=internal node scripts/codex_generate_enterprise_report.cjs

EVIDENCE_DIR="$HOME/Desktop/monetarie-evidencias-aws-homolog-2026-06-21" \
REPORT_MODE=client node scripts/codex_generate_enterprise_report.cjs
```

O gerador bloqueia se a validação Core/PIX/SPB estiver incompleta.

### 9.6 Revalidar PIX monitor

Arquivo esperado:

- `logs/pix-monitor-websocket-current.json`

Critérios:

- `hasOffline=false`
- `consoleErrors=[]`
- `responseErrors=[]`
- pelo menos um WebSocket com `closed=false`

### 9.7 Revalidar RSFN/HSM

Local:

```bash
cat "$HOME/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/logs/rsfn-dns-local-validation-current.json"
cat "$HOME/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/logs/rsfn-port-validation-current.json"
cat "$HOME/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/logs/hsm-rtm-validation-current.json"
```

VM RSFN via SSM:

```bash
awsmon ssm send-command \
  --instance-ids i-0692fbf5e0dd6d350 \
  --document-name AWS-RunShellScript \
  --parameters commands='["/opt/monetarie/bin/validate-rsfn.sh || true"]'
```

Não considerar RSFN serviço como OK até DICT, ICOM e ARQ conectarem nas portas de validação.

## 10. Relatório do cliente

O relatório cliente foi propositalmente limitado ao que é adequado para repasse externo:

- Core, PIX e SPB;
- telas validadas;
- logins administrativos;
- estado operacional de serviços;
- branding Monetarie;
- monitor PIX;
- HSM como componente acessível quando pertinente.

Não constam no relatório cliente:

- timeouts RSFN;
- detalhes de correção;
- secrets;
- tokens;
- output completo de Terraform;
- IDs internos sensíveis além do necessário;
- discussões de falha;
- detalhes sobre Lerian, bastion ou rotas internas.

## 11. Diagramas e arquitetura

Arquivos Mermaid criados:

- `docs/architecture/diagrams/aws-homolog-topology.mmd`
- `docs/architecture/diagrams/core-pix-spb-runtime.mmd`
- `docs/architecture/diagrams/rsfn-egress-flow.mmd`
- SVGs renderizados no mesmo diretório para anexos e revisões sem depender de Mermaid CLI.

Documento de arquitetura para acompanhar o relatório cliente:

- `docs/architecture/2026-06-21-monetarie-aws-homolog-architecture.md`

## 12. Pendências reais

### 12.1 RSFN portas de serviço

Status:

- DNS local via VPN: OK.
- DNS dentro da VM RSFN: OK.
- HSM RTM teste: TCP OK e HTTP 200.
- TCP DICT, DICT NP, ICOM, ICOM SEC e ARQ: timeout.

Destinos testados:

- `dict-h.pi.rsfn.net.br:16522`
- `dict-np-h.pi.rsfn.net.br:16532`
- `icom-h.pi.rsfn.net.br:16522`
- `icom-sec-h.pi.rsfn.net.br:17522`
- `arq-h.pi.rsfn.net.br:1130`
- `200.160.162.200:63351`

Não alterar bastion nem configuração Lerian para resolver isso sem autorização explícita. A próxima etapa permitida é estudar a EC2 `bastion` somente em leitura, porque ela está na VPC RTM e pode revelar diferença de rota, DNS, origem de saída ou política de rede em relação à VM Monetarie RSFN.

Roteiro inicial do estudo pela `bastion`, sem alteração:

- confirmar identidade da instância, VPC, subnet, route table efetiva e security groups;
- comparar DNS de `dict-h`, `dict-np-h`, `icom-h`, `icom-sec-h` e `arq-h`;
- comparar `ip route`, origem de saída e caminho até os IPs resolvidos;
- testar apenas conectividade TCP controlada para as portas de homologação já mapeadas;
- registrar resultado com timestamp, comando, origem, destino, porta e resposta;
- só propor mudança depois de isolar a diferença entre `bastion`, VM Monetarie RSFN e Mac via OpenVPN.

### 12.2 HSM RTM real de homologação

O endpoint de teste HTTP está acessível e a integração correta está documentada em `docs/handoff/2026-06-21-rtm-hsm-pix-spb-validation.md`. A pré-configuração HML da Monetarie está documentada em `docs/handoff/2026-06-21-hsm-mq-hml-preconfig.md`.

Regra obrigatória: o Core não assina mensagens BACEN. Para TED, PIX, SPB, DICT e ICOM-SPI, o Core publica eventos via NATS e a assinatura fica na cabine responsável.

Já foi pré-configurado para PIX e SPB:

- endpoint HML `cloudhsm-hml.priv.rtmcloud.net.br`;
- IP privado esperado `10.173.1.247`;
- vHSM `60042`;
- `cryptoUser` e token em Secrets Manager.

Ainda é necessário, para assinatura real nas cabines PIX e SPB:

- UIDs de chave privada/pública;
- liberação da API TCP `60042` pela RTM para a origem AWS definida;
- contrato completo do Swagger/Postman da Ecoscard/RTM;
- testes reais de `get-session-credential`, `sign-rsa`, `signature-verify-rsa`, `cipher/rsa/encrypt` e `cipher/rsa/decrypt` nas cabines PIX e SPB.

Não gravar essas credenciais em documentação.

### 12.3 Seeds externos formais

As telas e APIs de Core, PIX e SPB foram validadas empiricamente no ambiente atual. Se o cliente fornecer CSVs formais adicionais de participantes, certificados, ISPBs ou cadastros, eles devem ser aplicados por rotina idempotente e revalidados por captura, API e relatório novo.

### 12.4 Bastion RTM

Instância localizada em 2026-06-21:

- Nome: `bastion`
- ID: `i-06be52454b879cbbb`
- Estado: `running`
- VPC: `vpc-0d5ecd0df0976bcb9`
- Subnet: `subnet-0a00cc821bc642306`
- IP privado: `192.168.19.59`
- Security group: `sg-0c96368cda8e679cf`

Esta instância não foi alterada durante o deploy da Monetarie. Ela será usada apenas para estudo comparativo de conectividade RSFN se o usuário mantiver a autorização explícita.

Estudo complementar iniciado:

- Documento: `docs/handoff/2026-06-21-rsfn-bastion-study.md`
- Resultado: `bastion` não resolve `*.rsfn.net.br`, mas a falha principal não é apenas DNS, pois TCP e ICMP por IP direto para `200.218.*` falharam tanto da `bastion` quanto da VM Monetarie RSFN.
- HSM RTM teste `200.160.162.200:63351` continuou OK nas duas instâncias.
- TGW e Direct Connect mostram rotas e BGP ativos para o caminho, mas a rede `200.218.*` não respondeu a partir das origens AWS testadas.

## 13. Checklist para próxima sessão

1. Ler `CLAUDE.md`.
2. Ler este handoff.
3. Confirmar `aws sts get-caller-identity` retornando a conta `990933657879`.
4. Confirmar VPN conectada.
5. Abrir `coreadmin-h.monetarie.internal`, `pixadmin-h.monetarie.internal`, `spbadmin-h.monetarie.internal`.
6. Confirmar `validation-summary-current.json`.
7. Se mexer em qualquer frontend, rerodar screenshots estritos.
8. Se mexer em PIX, rerodar WebSocket monitor.
9. Se mexer em Terraform RSFN, validar DNS na VM e no Mac.
10. Se gerar relatório cliente, garantir que não há termos internos de falha, timeout, bloqueio, correção ou RSFN no HTML cliente.
11. Para investigação RSFN pela `bastion`, começar em modo somente leitura e registrar evidência antes de qualquer proposta de alteração.

## 14. Não fazer

- Não usar credenciais padrão do Mac.
- Não alterar recursos da Lerian.
- Não alterar `bastion` sem autorização explícita.
- Não criar registros de produção sem `-h`.
- Não trocar `dict-h` por `spi-h`.
- Não mudar TigerBeetle para outra versão.
- Não marcar tela como validada sem screenshot e metadado.
- Não marcar RSFN como concluída só por DNS ou ICMP.
- Não expor senha, token, JWT ou chave privada em Markdown, logs de relatório ou PDF versionado. A exceção já autorizada é o documento restrito de acessos de homologação no Desktop, fora do Git e com permissão `600`.
- Não gerar relatório cliente com pendências técnicas.

## 15. Fonte de verdade de evidências

Todos os números deste documento foram extraídos dos arquivos em:

`/Users/luizpenha/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/logs`

O arquivo mais importante para status consolidado é:

`/Users/luizpenha/Desktop/monetarie-evidencias-aws-homolog-2026-06-21/logs/validation-summary-current.json`

Se houver divergência entre a memória conversacional e os logs, os logs devem prevalecer.
