Fonte integral · conversa de origem

Plano mestre completo

Planejar nova VPS de odds

Original preservado + decisões posteriores explícitas

O plano abaixo é a referência completa recebida no início. A execução atual usa as alterações registradas a seguir e os resultados comprovados em TEST.

O que mudou desde o plano original

Estas diferenças evitam retomar decisões já substituídas, como escolher SQLite ou testar uma casa de cada vez.

No plano original / históricoDiretriz atual e motivo
Piloto de 3 fontes, depois 10 e 24Testar 10–20 casas em paralelo, preservando prioridades já definidas; aprovar subconjuntos.Decisão do dono nesta conversa.
Histórico completo em servidor dedicadoCRU seletivo de estudo pode ir aos cerca de 16 TB locais, com hash/ACK; sem contratação como pré-condição.Decisão do dono sobre finalidade do CRU e armazenamento disponível.
Fundação V1 como base de produtoFable V4 é a fronteira a integrar; V1 saudável não prova compatibilidade.Contratos vigentes do Fable e recibos TEST.
24 fontes lógicas no catálogo inicial23 nativas no pacote Linux; Bet365 própria em standby; OddsAlerts externa e Papi pausada aparecem separadamente.Cadastro e decisões operacionais atuais.
Soak do piloto após entrada da fonteJanela conjunta proposta de 24–48h em TEST antes do aceite do lote, seguida de observação em RUN.Proposta de execução revisada para preservar aprovação por entrega.
Benchmark para escolher SQLite ou PostgreSQLPostgreSQL desde a primeira produção, mantendo SQLite apenas em controles/estudos que já o utilizam.Correção explícita do dono na conversa original.
Hermes poderia usar wrappers de restart permitidosAssistente observa e propõe; mudanças operacionais dependem das autorizações do dono e comandos auditados.Limites reafirmados depois do plano inicial.
Quarentena e seleção de observação do contrato USOS-2 inicialReconciliar os campos/regras com Fable V4; preço inválido não desfaz identidade já confirmada, e Papi pausada não vira fallback automático.Contrato V4 vigente e decisões atuais. Não promover regras de negócio históricas silenciosamente.

Plano mestre — VPSNOVA: serviço de odds pré-live e assistente operacional Hermes

1. Objetivo, limites e fontes de verdade

A nova VPS será um nó único inicialmente, preparado para expansão, responsável por:

Ficam fora da primeira entrega:

A referência conceitual do contrato será USOS_V2_PROPOSTA.md, corrigindo as ambiguidades identificadas na revisão. O corpus bruto do PACIFICADORPROP será evidência e conjunto golden; o harmonizador antigo não será promovido a runtime.

2. Gate 0 — segurança e preparação obrigatória

Antes de instalar aplicações:

  1. Rotacionar credenciais expostas

    • Revogar o token Hostinger enviado no chat.
    • Rotacionar a chave pessoal Bitwarden em Settings → Security → Keys → Rotate API Key.
    • Nenhuma das duas credenciais expostas poderá ser usada nem no bootstrap.
    • Criar depois credenciais específicas de machine account no Bitwarden Secrets Manager.
  2. Resolver a raiz Git local

    • F:\PROGRAMADOR\VPSNOVA será um repositório novo, privado e autônomo.
    • Como hoje a pasta ainda resolve para o repositório-pai perigoso F:\PROGRAMADOR, nenhum comando Git ou documento importante será gravado ali antes da autorização específica para criar a raiz isolada.
    • Após a criação, git rev-parse --show-toplevel deverá retornar exatamente F:\PROGRAMADOR\VPSNOVA.
    • O remoto canônico será um repositório privado no GitHub.
  3. Atualizar e proteger a VPS

    • Aplicar atualizações pendentes e reiniciar antes do runtime.
    • Criar usuários separados: admin, deploy, odds, hermes e backup.
    • Instalar chave SSH e validar uma segunda sessão independente.
    • Instalar Tailscale e validar acesso e console de emergência.
    • Só depois desativar login de root e autenticação por senha.
    • UFW com política deny de entrada; SSH e API somente pela tailnet.
    • Nenhum dashboard ou banco escutando publicamente.
  4. Migrar oddsbet.tech para Cloudflare

    • Como a zona não possui serviço ativo, executar a migração no início.
    • Exportar/inventariar primeiro todos os registros da Hostinger.
    • Cadastrar a zona na Cloudflare, comparar registros e trocar nameservers.
    • Validar propagação e manter procedimento de reversão.
    • Reservar:
      • hermes.oddsbet.tech
      • ops.oddsbet.tech
      • memory.oddsbet.tech
    • Os três serão publicados apenas via Cloudflare Tunnel + Access; o túnel usa conexões de saída e não exige portas web abertas na origem. Cloudflare Tunnel
  5. Hostinger MCP somente no plano administrativo

    • Instalar no computador administrativo, não dentro da VPS de produção.
    • Habilitar apenas hostinger-domains-mcp, hostinger-dns-mcp e hostinger-vps-mcp.
    • Não habilitar billing, reach ou hosting.
    • Preferir OAuth interativo para ações manuais; automação futura usa token novo vindo do Bitwarden.
    • Toda alteração DNS passa antes por inventário, validação e diff. MCP oficial da Hostinger

3. Arquitetura de execução

collector-<fonte> ─┐
collector-<fonte> ─┼─> ingest-core ─> estado/deltas ─> api-read ─> Tailscale ─> backend do painel
OddsPapi ─ resolver┘        │
                            └─> raw comprimido ─> compactação horária ─> S3

systemd/watchdogs ─> saúde e reinícios determinísticos
Hermes ─> diagnóstico, insights, diffs e remediações allowlisted

Runtime híbrido

Serviços

Catálogo das 24 fontes

O registry canônico conterá os aliases comprovados:

Altenar/EstrelaBet, DataBet/Pitaco, BetConstruct/VBet, NGX/Lottu, Betano, Bet365, BaseHub/EnergiaBet, BrasilBet, Superbet, Betnacional, BWIN/Sportingbet, Kaya/WJ, FSSB/Betão/7K, SA Esportes/Lance de Sorte, BetBy/Betboom, BetMGM, Esporte da Sorte, KTO, Brazino777, Sporty, Milhão, Pinnacle, BetMexico/Aposta.bet e Matchbook.

4. Contrato USOS-2 e API pública interna

Identidades

A identidade do mercado será uma tupla estruturada, não um label:

marketKey será uma representação derivada dessa tupla. Os campos estruturados permanecem autoritativos.

outcomeKey será derivado de lado/designação estruturada e nunca apenas do texto exibido.

Observações de odds

Cada outcome conterá observations[]. Cada observação inclui:

Política de seleção:

  1. usar a observação própria mais recente e válida;
  2. se ela não existir, permitir OddsPapi como fallback;
  3. marcar sempre fallbackUsed, origem e idade;
  4. preservar ambas quando existirem, sem sobrescrever divergências;
  5. nunca arredondar preços no pipeline intermediário.

Observações com decimal <= 1, overround fora de [1.00, 1.25], LABEL_FALLBACK ou baixa confiança ficam preservadas em quarentena, mas não viram observação efetiva.

Frescor

Endpoints v1

Regras de transporte:

O contrato será entregue em JSON Schema, modelos Python, OpenAPI, exemplos golden e consumidor de referência.

5. Persistência, retenção e benchmark

Escolha SQLite versus PostgreSQL

A implementação terá uma interface de persistência única e migrations equivalentes. O benchmark decidirá mecanicamente:

SQLite WAL será aceito somente se, sob replay a quatro vezes a carga esperada e até oito fontes simultâneas:

Se qualquer limite falhar, se o resultado for inconclusivo ou se mais de oito fontes forem promovidas, a primeira produção usa PostgreSQL.

Retenção

6. Hermes, memória e painéis

Hermes

Permissões:

Memória compartilhada

Observabilidade

7. Desenvolvimento, documentação e deploy sem sobreposição

Depois do gate Git, F:\PROGRAMADOR\VPSNOVA conterá:

Fluxo multidev:

Deploy inicial:

  1. Exigir commit limpo e revisado.
  2. Construir imagens imutáveis e manifest com commit/tag/hashes.
  3. Adquirir lock exclusivo de deploy na VPS.
  4. Rejeitar deploy concorrente ou release divergente.
  5. Instalar em /opt/vpsnova/releases/<commit>.
  6. Testar migrations e canário.
  7. Promover atomicamente current.
  8. Manter previous para rollback.
  9. Registrar operador, horário, release e resultado.
  10. Migrar depois para GitHub Actions reutilizando exatamente o mesmo pipeline e mantendo promoção manual.

8. Rollout das fontes

Estados oficiais por fonte:

  1. catalogued: inventário/raw identificado.
  2. structured_only: parser passa corpus golden e schema.
  3. network_ready: transporte direto funciona a partir da nova VPS.
  4. runtime_ready: serviço contínuo e soak individual de 24 horas.
  5. panel_ready: contrato e simulador passam sem perda.
  6. prod_enabled: promoção explícita e monitorada.

Regras:

9. Testes e critérios de aceite

Segurança

Contrato e dados

Desempenho e operação

Aceite final da primeira fase

A primeira fase estará pronta quando:

Premissas finais