Go-live da Nero: checklist com prova

Para: Dev, Adm — Conferido em 2026-10-18.

A Nero só recebe a chave key_live_ depois de cumprir esta lista na operação nero-br-hml (operação Teste). Cada item tem uma prova: algo que se mostra (saída de teste, log, métrica, imagem do painel), não uma promessa. Item sem prova conta como não feito.

O que é

Este checklist complementa o Checklist de go-live, que vale para qualquer operador, com o que é específico da bet. Os números N1 a N34 são os da Nero e se mantêm estáveis, inclusive nos itens retirados. Copie para o tracker da Nero, preencha a coluna "Prova" e anexe ao registro de go-live.

Quando usar

Na semana anterior ao pedido da operação Real, e de novo no dia do corte (seção 5).

Como funciona

1. Credencial e rede

# Item Prova
N1 Credencial do Dracma legível só pelo usuário Linux do nero_payments (0400), entregue pelo ops da Nero stat -c '%a %U' <arquivo> mostra 400 e o usuário do nero_payments; busca por key_live_ no repositório e na imagem sem resultado
N2 Egress para o Dracma só do usuário do nero_payments Regra nftables versionada e teste: curl ao host do Dracma a partir de outro usuário falha
N3 Lista de IPs de saída (NAT, DR) registrada na operação Imagem do painel com a lista e GET /v1/ping com 200 a partir de cada IP. A lista fica registrada mas hoje não é aplicada às chamadas; o teste prova a conectividade, não um bloqueio
N4 O Dracma não publica IPs de saída do webhook; se vierem por contrato, o Caddy os aplica só na rota do webhook Sem lista, registre a data em que o suporte confirmou isso. Com lista, trecho do Caddyfile versionado e curl à rota a partir de IP fora da lista recusado no Caddy
N5 NTP ativo e alerta de desvio maior que 5 s via GET /v1/ping chronyc tracking e regra de alerta versionada
N6 Retirado: o Dracma não emite certificado de cliente hoje Não há prova a anexar (Rede, allowlist e mTLS)
N7 Rotação de chave e de segredo de webhook ensaiadas no sandbox sem parar Log do ensaio: dois segredos ativos, webhooks ok durante a troca, chave antiga revogada

2. Depósito

# Item Prova
N8 external_id = dep_<uuidv7> igual ao deposit_id e à Idempotency-Key, gravado no outbox antes do POST Teste: matar o processo entre o commit do intent e a chamada; o worker retoma com a mesma chave e cria 1 depósito
N9 Valor convertido para a menor unidade sem float Teste de unidade com 50, 50.5, 0.01, 50.001 (recusa) e 1e3 (recusa)
N10 Exigências de GET /v1/currencies respeitadas: player.name e player.email do cadastro quando exigidos; em hml só .test, .invalid ou .example Teste: jogador sem e-mail recebe "complete o cadastro" sem chamada ao Dracma; depósito com e-mail .test cria 201
N11 O front mostra o expires_at devolvido pelo Dracma Imagem da tela e teste do mapeamento
N12 Crédito só em paid lido por fetch-back, idempotente por external_id Receita 1: 1 crédito; reentrega do mesmo evento: continua 1
N13 Webhook forjado (assinado com o segredo de sandbox) para depósito pending não credita Teste com a verificação de assinatura mais o fetch-back: 200, 0 créditos
N14 under_review não credita; returned aparece como failed Receitas 2 (PAYER_MISMATCH) e 3 (AMOUNT_MISMATCH)
N15 paid_amount num depósito terminal (pago depois de expirar ou cancelar) abre needs_decision e não credita (D8) Teste de unidade do aplicador com um objeto expired e paid_amount

3. Saque

# Item Prova
N16 Reserva antes do POST /withdrawals, na mesma transação do intent wdr_<uuidv7> Teste: falha de rede no POST; a reserva continua, o worker repete com a mesma chave, 1 saque
N17 Reserva devolvida só em rejected, failed ou cancelled confirmados, ou em 4xx Receita 8 (reject e fail): devolução exatamente 1 vez; 503 da queda simulada não devolve
N18 player.ip do jogador em todo saque Log do corpo enviado (sem dado pessoal) com o campo presente; saque dentro do limite sai approved
N19 Chave PIX normalizada e pix_type legado mapeado Teste de unidade (evp para random, telefone em +55...)
N20 Mensagens ao jogador genéricas em bloqueio (sem revelar lista nem motivo) Imagem das mensagens para player_blocked e destination_blocked
N21 returned e recalled abrem needs_decision, sem recrédito automático (D7, D18) Receita 8 (return): caso na fila, carteira intacta
N22 409 idempotency_key_reused no envio abre needs_decision, reserva mantida (D12) Teste de unidade do tratamento de resposta

4. Recuperação, reconciliação e operação

# Item Prova
N23 Job de GET /events a cada 5 minutos, cursor persistido, mesmo aplicador do webhook Teste: receptor desligado durante um pay; o job credita 1 vez em até 5 minutos
N24 Reconciliação diária com digest e assinatura conferidos Relatório de um dia de sandbox comparado nos dois lados, zero divergência, header guardado
N25 Fila needs_decision no backoffice com as permissões payments.decisions.*, step-up e motivo (D11) Imagem da tela e teste de permissão (papel sem concessão não decide)
N26 Alertas de Webhook, eventos e reconciliação ativos Regras versionadas e disparo de teste de cada uma
N27 Logs sem segredo, sem Dracma-Signature inteiro, sem CPF completo nem chave PIX em claro; Dracma-Trace-Id em toda chamada Amostra de log revisada e busca pelos valores proibidos sem resultado
N28 Suíte de conformidade verde contra nero-br-hml Saída do go test -v com todos os casos do conjunto base em PASS, com a data

5. Dia do corte

# Item Prova
N29 Front em prd sem Dracma configurado responde 503 payment_provider_not_configured e o resto da bet funciona (D5) Teste em hml com a credencial removida
N30 Rotas legadas de gateway removidas (404) curl em cada rota da lista de Estados no front
N31 Primeira transação real de valor mínimo (depósito e saque), acompanhada pelos dois lados, do POST à linha da reconciliação Registro com os external_id, os trace_id e a linha do relatório do dia
N32 Caixa inicial conferido em GET /v1/balances e alerta de caixa baixo ativo Imagem e regra de alerta
N33 Decisões do dono registradas: D1 (saques antigos), D6, D7, D8, D12 e D18 Link para o registro de decisão
N34 Registro de go-live assinado pelos responsáveis da Nero e do Dracma Documento assinado

Dinheiro real

O item N31 move dinheiro real. Use o valor mínimo da operação, com um jogador interno, e acompanhe o dinheiro nos dois livros antes de liberar o tráfego.

Exemplos

A prova de cada item de depósito e saque são as Receitas por caminho. O roteiro do primeiro dia está em Primeiros passos no sandbox.

Erros e casos de borda

  • Um item sem prova volta para a coluna "a fazer", mesmo que o código esteja certo.
  • Prova antiga (de antes de uma mudança de regras, de PSP ou de segredo) não vale: refaça.
  • Se o Dracma mudar o contrato (campo novo, estado novo), repita os itens N12, N14, N21 e N28.

Veja também