Pular para o conteúdo

ehopent · roadmap

Construção ao vivo

O roadmap mora no código, não num quadro paralelo. Toda tarefa marcada como pronta aponta para arquivos que precisam existir — o CI derruba o build se este painel mentir.

tarefas concluídas

77/94

sprints completos

13/23

Sprint atual

S11

Atualizado em 2026-09-22

  1. S0

    Fundação

    Esqueleto seguro: repo, CI com SAST e SCA, domínio tipado, portões de segurança.

    Completo
    100%
    • S0-1Monorepo tipado (core, engine, roadmap, api, web)package.jsonpackages/core/src/index.tspronto
    • S0-2CI: lint, typecheck, teste e SCAO CodeQL saiu em 29/09: a licença gratuita só cobre código aberto. A varredura de código volta com motor de licença aberta (S7-6)..github/workflows/ci.ymlpronto
    • S0-3Modelo de certeza: confirmado, provável, descartado, não-testadopackages/core/src/certainty.tspackages/core/src/finding.test.tspronto
    • S0-4Portão de consentimento assinado, preso à origem e revogávelpackages/core/src/consent.tspackages/core/src/consent.test.tspronto
    • S0-5Portaria anti-SSRF de alvopackages/core/src/target.tspackages/core/src/target.test.tspronto
    • S0-6Redação de evidência e sanitização de logpackages/core/src/redaction.tspackages/core/src/redaction.test.tspronto
    • S0-7Mapa de jurisdições com negação por padrãopackages/core/src/scope.tspackages/core/src/scope.test.tspronto
    • S0-8Esquema Postgres com trilha append-onlyO schema.sql original nunca rodou; refeito e ligado no S10 (ADR 0004). RLS por requisição é o S10-6.apps/api/src/db/migrations/0001_inicial.sqlpronto
    • S0-9Auth OIDC com MFA verificada contra provedor externoVerificamos o token do provedor; não emitimos credencial. Em produção o processo não sobe sem OIDC_ISSUER.apps/api/src/auth/oidc.tsapps/api/src/auth/oidc.test.tsapps/api/src/config.test.tspronto
  2. S1

    Motor passivo

    Ler o que já é público e levantar sinal, sem tocar na maçaneta.

    Completo
    100%
    • S1-1Orquestrador passivo com orçamento de requisiçõespackages/engine/src/passive/runner.tspackages/engine/src/passive/runner.test.tspronto
    • S1-2Check de cabeçalhos de segurançapackages/engine/src/checks/securityHeaders.tspronto
    • S1-3Catálogo de segredos expostos em bundlepackages/engine/src/checks/exposedSecrets.tspackages/engine/src/checks/exposedSecrets.test.tspronto
    • S1-4Arquivos públicos que não deviam estar públicospackages/engine/src/checks/exposedFiles.tspronto
    • S1-5Impressão digital de backend para teste de RLSpackages/engine/src/checks/backendFingerprint.tspronto
    • S1-6CORS e cookies frouxospackages/engine/src/checks/corsAndCookies.tspronto
    • S1-7Prova auto-verificável no domínio do donopackages/engine/src/checks/exposedFiles.tspackages/core/src/target.tspronto
    • S1-8Sonda nos apps próprios (Fase 0)6 apps varridos em 22/09: 1 com falha confirmada, 5 com sinal provável. A sonda achou um furo no próprio motor (config Firebase minificada escapava) — corrigido.tools/sonda.tstools/sonda.targets.tsdocs/sonda/2026-09-22.mdpronto
  3. S2

    Verificador self-serve e i18n

    O dono cola a URL e recebe valor grátis, em 5 idiomas. Legal em qualquer país.

    Completo
    100%
    • S2-1API de varredura com portaria de consentimentoapps/api/src/routes/scans.tsapps/api/src/routes/scans.test.tspronto
    • S2-2Tela A: colar o link e verificar de graçaapps/web/src/app/[locale]/verificar/page.tsxpronto
    • S2-3Tela B: posse e consentimento, recusar e aceitar com o mesmo pesoapps/web/src/components/ScanConsole.tsxpronto
    • S2-4Tela C: resultado honesto com prova e prompt de correçãoapps/web/src/components/ResultReport.tsxpronto
    • S2-5i18n em 5 idiomas desde o inícioapps/web/messages/pt.jsonapps/web/messages/en.jsonapps/web/messages/es.jsonapps/web/messages/de.jsonapps/web/messages/fr.jsonpronto
    • S2-6security.txt e página /security publicadasapps/web/public/.well-known/security.txtapps/web/src/app/[locale]/security/page.tsxpronto
    • S2-7Painel de sprints vivo, verificado no CIapps/web/src/app/[locale]/sprints/page.tsxpackages/roadmap/src/verify.tspronto
    • S2-8Contrato de i18n: toda chave do motor traduzida nos 5 idiomasParidade de chave e de variável ICU. Check novo sem tradução derruba o build.apps/web/src/i18n/messages.test.tspronto
  4. S3

    Relatório, billing e preço

    Monetizar: scan profundo pós-consentimento, relatório de US$ 49 (US$ 99 até 28/09), selo e reteste.

    Completo
    100%
    • S3-1Worker ativo com bateria real de RLS, só com token de consentimentoTeste ativo de RLS no Supabase e endpoints sem auth. Guarda nome e contagem, nunca o conteúdo. Um teste prova que nada roda sem consentimento válido.packages/engine/src/active/runner.tspackages/engine/src/active/runner.test.tspackages/engine/src/checks/supabaseRls.tspackages/engine/src/checks/supabaseRls.test.tspackages/engine/src/checks/openEndpoint.tspronto
    • S3-2Tela D: consentimento do scan profundo, revogávelRecusar e aceitar com o mesmo peso; o texto exibido é o texto registrado.apps/web/src/components/DeepConsent.tsxpronto
    • S3-3Tela E: paywall honesto, preço completo antes do cliqueapps/web/src/app/[locale]/precos/page.tsxapps/api/src/routes/billing.tspronto
    • S3-4Tela F: relatório pago, com o que ficou fora do escopoapps/web/src/components/ReportView.tsxapps/api/src/services/reportService.tspronto
    • S3-5Billing, oferta anual no checkout e cancelamento em 1 cliquePreço confirmado tem de bater com o catálogo; cancelamento é DELETE direto, sem funil de retenção. Desconto só no anual.packages/core/src/billing.tspackages/core/src/billing.test.tsapps/api/src/routes/billing.tsapps/api/src/routes/billing.test.tspronto
    • S3-6PDF do relatório e selo verificável com dataSelo assinado, datado, conferível sem login — nunca afirma "seguro". Relatório exporta em PDF com folha de impressão clara.packages/core/src/badge.tspackages/core/src/badge.test.tsapps/api/src/routes/badge.tsapps/web/src/components/BadgeChecker.tsxapps/web/src/app/[locale]/selo/page.tsxapps/web/src/app/globals.csspronto
  5. S4

    Monitor recorrente

    LTV: vigia o app a cada mudança e avisa quando algo novo abrir.

    Completo
    100%
    • S4-1Agendamento e fila de verificação leve diáriaO monitor roda só a varredura PASSIVA: recorrente e ativo juntos são a receita do tráfego indesejado. Um alvo fora do ar é reagendado, não trava a fila.apps/api/src/services/monitorService.tsapps/api/src/services/monitorService.test.tsapps/api/src/plugins/scheduler.tspronto
    • S4-2Alertas e histórico de 90 e 180 diasAlerta só nasce quando algo ABRE — diff por digital entre execuções. Retenção aparada por plano a cada gravação.packages/core/src/monitor.tspackages/core/src/monitor.test.tsapps/web/src/components/MonitorPanel.tsxapps/web/src/app/[locale]/monitor/page.tsxpronto
    • S4-3Gatilho de deploy e webhook no plano PlusWebhook passa pela mesma portaria anti-SSRF que um alvo e recebe só chave e severidade, nunca evidência. Pedir no Essential é 400, não silêncio.apps/api/src/routes/monitors.tsapps/api/src/routes/monitors.test.tspronto
  6. S5

    Infra de e-mail

    Entregabilidade e anti-phishing: sem isto o aviso vira spam ou parece golpe.

    Completo
    100%
    • S5-1Contrato de DNS (SPF, DKIM, DMARC) e verificador da postura realnpm run email:dns lê o DNS real e imprime o que falta, na ordem. Publicar os registros é P4.packages/disclosure/src/dns.tspackages/disclosure/src/dns.test.tstools/email-dns.tsdocs/email/runbook.mdpronto
    • S5-2Conformidade bulk sender em código: unsubscribe 1 clique, reclamação < 0,3%, supressão, lint do proibidoassertMayDisclose lança com o motivo exato. Sem provedor configurado o envio é 503, nunca silencioso.packages/disclosure/src/compliance.tspackages/disclosure/src/compose.tspackages/disclosure/src/compose.test.tsapps/api/src/routes/disclosure.tsapps/api/src/routes/disclosure.test.tspronto
    • S5-3Warmup: rampa determinística com teto diário aplicado pelo portãoExecutar a rampa ao longo de 4 semanas é P5; o código recusa o envio que passar do teto.packages/disclosure/src/warmup.tspackages/disclosure/src/compliance.test.tspronto
    • S5-4BIMI: SVG Tiny P/S do monograma validado e publicado; registro DNS geradoCertificado VMC/CMC é compra — P6.packages/disclosure/src/bimi.tsapps/web/public/bimi.svgtools/write-bimi.tspronto
    • S5-5Templates de aviso com prova auto-verificável e CTA para o grátisCopy pronta, sem preço e sem prazo curto. O envio depende de S5 e S6.docs/disclosure/templates.mdpronto
  7. S6

    Disclosure autorizado

    Ligar o Motor 1: aviso por prova, trilha de consentimento e 90 dias. Brasil, depois EUA.

    Completo
    100%

    TravaSó liga depois de S2 mostrar munição real E parecer jurídico local por escrito.

    • S6-1Motor passivo em escala: fila com orçamento GLOBAL de plataformaTeto de concorrência, por minuto e por dia — impede que "em escala" vire tráfego que pareça ataque. Autenticado; cada alvo passa pela portaria anti-SSRF. O ENVIO só liga com o parecer (gate do S6).packages/engine/src/queue/budget.tspackages/engine/src/queue/scanQueue.tspackages/engine/src/queue/queue.test.tsapps/api/src/routes/queue.tsapps/api/src/routes/queue.test.tspronto
    • S6-2Portão de país no envio, com negação por padrãopackages/core/src/scope.tspackages/core/src/scope.test.tspronto
    • S6-3Trilha de envio append-only: a defesa jurídica do Motor 1Cada estágio grava (preview/sent/suppressed/blocked/unsubscribed/complained): quem autorizou, país, parecer, prova, prazo, e o motivo quando NÃO foi. E-mail só por hash. Rota /v1/disclosures/trail responde a um regulador.packages/disclosure/src/trail.tspackages/disclosure/src/trail.test.tsapps/api/src/routes/disclosure.tspronto
  8. S7

    Robustez

    Blindagem: isolamento reforçado, pen-test da própria plataforma, observabilidade.

    Completo
    100%
    • S7-1Worker efêmero por job, sob gVisor, sem banco — dois portões de consentimentoFlags de endurecimento travados por teste. Instalar runsc no host é P7.packages/engine/src/worker/container.tspackages/engine/src/worker/worker.test.tsapps/worker/Dockerfiledocker-compose.ymldocs/adr/0003-worker-efemero-dois-portoes.mdpronto
    • S7-2Pen-test automatizado da própria plataforma, verde no CISSRF, IDOR, adulteração de token, entrada hostil, cabeçalhos, CORS, limite de taxa. Pen-test humano externo é P8.apps/api/src/pentest/attack-surface.test.tsapps/api/src/pentest/hardening.test.tsdocs/pentest/2026-09-22.mdpronto
    • S7-3Observabilidade: request-id, log sanitizado, /metrics protegido, retenção agendadaVarredura sem relatório pago expira em 7 dias. Consentimento e auditoria nunca expiram: são a defesa jurídica.apps/api/src/plugins/observability.tsapps/api/src/routes/ops.tsapps/api/src/services/retention.tsapps/api/src/services/retention.test.tspronto
    • S7-4Limite de taxa e orçamento por alvopackages/engine/src/http/budget.tspackages/engine/src/http/budget.test.tspronto
    • S7-6Varredura de código no CI com motor de licença aberta: alerta novo reprova o buildO CodeQL rodou em 29/09 e foi desligado no mesmo dia (licença gratuita só cobre código aberto). No lugar, o motor do S18-1: 4 alertas conhecidos na ehopent, todos alarme falso com o motivo registrado..github/workflows/ci.ymltools/varrer-codigo.tstools/codigo-conhecidos.jsonpronto
    • S7-5Expressões do motor resistem a HTML hostil (ReDoS em passive/snapshot.ts, achado do CodeQL)Leitura em passada única: a página hostil de 350 KB caiu de ~13 s para milissegundos. De quebra: fechamento "</script >" e src sem aspas, que o motor perdia.packages/engine/src/passive/snapshot.tspackages/engine/src/passive/snapshot.test.tspronto
  9. S8

    Login

    O dono entra, e a sessão dele chega à API: teste profundo, relatório completo e monitor deixam de responder 401.

    Completo
    100%
    • S8-1Telas de entrar e cadastrar (Clerk) nos 5 idiomas, com a identidade da marcaSem chave configurada o site segue inteiro e a tela diz que o login não está disponível.apps/web/src/components/auth/AuthScreen.tsxapps/web/src/components/auth/clerkTheme.tsapps/web/src/app/[locale]/entrar/[[...entrar]]/page.tsxapps/web/src/app/[locale]/cadastro/[[...cadastro]]/page.tsxpronto
    • S8-2Token de sessão (com aud da API) em toda chamada autenticada; CSP aberta só para a instânciaHost do Clerk lido da chave publicável e validado — chave adulterada não injeta fonte na CSP.apps/web/src/components/auth/ApiAuth.tsxapps/web/src/lib/clerk.tsapps/web/src/lib/clerk.test.tspronto
    • S8-3Segundo fator do Clerk (claim fva) reconhecido pela APIMFA no Clerk é recurso do plano Pro: produção exige o upgrade antes de abrir.apps/api/src/auth/oidc.tsapps/api/src/auth/oidc.test.tspronto
    • S8-4Fluxo autenticado ponta a ponta com conta real (entrar → teste profundo → selo)Teste real revelou e fechou 3 defeitos (token sem fva, POST vazio, 401 sem motivo no log). MFA desligado só no local, por decisão do dono.docs/login/2026-09-24-fluxo-real.mdapps/web/src/lib/api.tspronto
  10. S9

    Relatório honesto

    O relatório completo responde a toda pergunta que o gratuito deixou em aberto — nunca parece limpo por omissão.

    Completo
    100%
    • S9-1Prováveis do passivo entram no relatório profundo como confirmado, descartado ou não testadoAchado no teste real de 24/09: 2 prováveis no gratuito, 0/0/0 no completo. RLS agora registra "testado e fechado"; queda ou tabela além do teto = inconclusivo, não descarta.packages/engine/src/active/reconcile.tspackages/engine/src/active/reconcile.test.tsapps/api/src/routes/deepReport.test.tspackages/engine/src/checks/supabaseRls.test.tspronto
    • S9-2Relatório em três listas: corrigir, ainda sem resposta, testado e descartado — lista vazia diz "nada a corrigir"apps/web/src/components/ReportView.tsxapps/web/src/i18n/messages.test.tspronto
    • S9-3Relatório conferido com o app real do donoFirebase e chave Google aparecem como não testados — não há teste ativo para eles ainda.docs/relatorio/2026-09-25-s9-app-real.mdpronto
    • S9-4Gravidade e certeza separadas: fora do confirmado, "alta se confirmado" com ponto vazado; fato vem antes de perguntaSubstitui o teto "provável no máximo média" (parecer externo, 28/09). O alerta do monitor só conta o confirmado na "pior gravidade".packages/core/src/finding.tsapps/web/src/lib/severityLabel.tsapps/web/src/lib/severityLabel.test.tsapps/web/src/components/ui.tsxpronto
  11. S10

    Banco de dados

    Nada se perde num reinício: conta, autorização, relatório e monitor vivem no Postgres, com as travas no próprio banco.

    Completo
    100%
    • S10-1Esquema alinhado ao que a API guarda, em migrações versionadas (ADR 0004)O schema.sql antigo nunca rodou e não batia com as portas: id do Clerk é texto, e metade dos repositórios não tinha tabela.apps/api/src/db/migrations/0001_inicial.sqlapps/api/src/db/migrate.tsdocs/adr/0004-postgres-alinhado-as-portas.mdpronto
    • S10-2Adaptador Postgres dos 10 repositórios, provado pela MESMA bateria de contrato do adaptador em memóriaA bateria achou uma divergência real: a memória deixava trocar a data de revogação. Corrigido nos dois.apps/api/src/repositories/postgres.tsapps/api/src/repositories/contract.test.tspronto
    • S10-3Travas no banco: autorização, auditoria e trilha de envio não se apagam nem se reescrevemapps/api/src/db/invariants.test.tsapps/api/src/db/migrations/0002_papeis.sqlpronto
    • S10-4API usa o banco quando há DATABASE_URL; produção recusa subir sem ele; CI roda contra Postgres realapps/api/src/db/pool.tsapps/api/src/config.test.ts.github/workflows/ci.ymlpronto
    • S10-5Conferido com o dono: relatório reabre depois de reiniciar a APIdocs/relatorio/2026-09-25-s10-reinicio.mdpronto
    • S10-7Tela "Meus relatórios": lista do dono e reabrir cada relatórioAchado ao planejar o S10-5: quem pagava e fechava a aba não tinha como ver o relatório de novo.apps/web/src/components/ReportsList.tsxapps/web/src/components/SavedReport.tsxapps/api/src/routes/deepReport.test.tsapps/api/src/db/migrations/0003_relatorios_por_dono.sqlpronto
    • S10-6RLS por requisição (defesa em profundidade além da checagem de dono na API)Feito em 05/10 (ADR 0006): RLS com FORCE nas 8 tabelas com dono; cada consulta leva o dono da requisição; sem dono, o banco não devolve nada; o agendador do monitor é o único "sistema"; produção não sobe com superusuário. Testado como ehopent_api, inclusive pela API inteira.apps/api/src/db/migrations/0006_trava_por_dono.sqlapps/api/src/db/contexto.tsapps/api/src/db/travaPorDono.test.tsdocs/adr/0006-trava-por-dono-no-banco.mdpronto
  12. S11

    Cobrança

    O teste profundo e o monitor só rodam para quem pagou — e o dinheiro entra de verdade.

    Planejado
    0%
    • S11-1Provedor de pagamento ligado (checkout, webhook assinado, Pix e cartão)a fazer
    • S11-2Teste profundo e monitor exigem assinatura ou relatório pagoHoje qualquer pessoa logada roda o teste profundo de graça.a fazer
  13. S12

    Termos e privacidade

    O cliente sabe o que autoriza e o que fazemos com os dados dele, antes do primeiro teste.

    Planejado
    0%
    • S12-1Termos de uso e política de privacidade (LGPD) nos 5 idiomas, aceitos no cadastroa fazer
  14. S13

    Hospedagem

    O site, a API e o banco no ar, no domínio, com o teste profundo isolado.

    Em andamento
    33%
    • S13-1Deploy de web, API e Postgres no domínio, com backup do bancoa fazer
    • S13-2Worker de varredura sob runsc no host de produçãoDepende do P7.a fazer
    • S13-3Etapa 1 no ar: ehopent.com com página de apresentação e lista de espera (sem varredura), português e inglês30/09: Cloudflare (Worker + D1), cabeçalhos de segurança em toda resposta, sem cookies nem estatística, contato@ehopent.com encaminhado. O motor da ehopent roda no próprio site: 0 achados. Aviso de privacidade v1 a revisar pela advogada.apps/landing/src/index.tsapps/landing/src/lista.test.tsapps/landing/wrangler.jsoncapps/landing/migrations/0001_lista_de_espera.sqlapps/landing/textos.mjspronto
  15. S14

    Teste profundo que resolve

    O relatório pago entrega o que o documento de negócio promete: correção passo a passo, instrução para a IA do dono e reteste.

    Em andamento
    60%
    • S14-1Instrução para a IA do dono em cada achado do relatório pago (confirmado pede correção; sem resposta pede conferência)apps/web/src/lib/fixPrompt.tsapps/web/src/lib/fixPrompt.test.tsapps/web/src/components/ReportView.tsxpronto
    • S14-2Passo a passo concreto por tipo de achado, para leigo17 tipos × 5 idiomas no ar (relatório pago, resultado grátis e arquivo para a IA); falta o dono conferir.fazendo
    • S14-3Reteste com 1 clique: cada achado aparece como corrigido ou ainda abertopackages/core/src/retest.tspackages/core/src/retest.test.tsapps/web/src/components/RetestPanel.tsxdocs/relatorio/2026-09-25-s14-reteste.mdpronto
    • S14-4Cobertura nova do teste profundo (Firebase, chave Google, rotas do próprio app)Escopo a fechar com o dono antes de construir.a fazer
    • S14-5Relatório em arquivo para a IA do dono ler inteiro (todos os pontos, o que corrigir e o que conferir)Pedido do dono em 25/09: em vez de copiar e colar ponto a ponto.apps/web/src/lib/aiBrief.tsapps/web/src/lib/aiBrief.test.tsdocs/relatorio/2026-09-25-s14-arquivo-ia.mdpronto
  16. S17

    Gabarito do motor

    Confiança com número, não com palavra: o motor roda contra sites de resposta conhecida e cada alarme falso ou falha perdida aparece.

    Em andamento
    67%
    • S17-1Gabarito sintético no CI: alarme falso, falha perdida, gravidade ou certeza errada derrubam o buildNasceu do falso "ALTA" do Firebase no XM Report (25/09).packages/engine/src/gabarito/gabarito.tspackages/engine/src/gabarito/casos.tspackages/engine/src/gabarito/gabarito.test.tspronto
    • S17-2Gabarito com apps reais do dono: npm run gabarito:reais compara com a verdade conferida por foratools/gabarito-reais.tstools/gabarito-reais.jsonpronto
    • S17-3Verdade conferida para 10+ apps do dono (hoje: 1 de 11 listados)8 publicados + 3 locais (Cerne, BuskDent, tomox-monai).fazendo
    • S17-5Gabarito de apps locais sem abrir exceção na proteção anti-SSRF do produto, com identificação do app antes do testeA identificação nasceu de um erro evitado: a porta 8080 era o Adminer de outro projeto, não o tomox-monai.tools/gabarito-local.tstools/gabarito-local.jsontools/gabarito-comum.tspronto
    • S17-6Gabarito de laboratório: 46 casos (teste grátis e profundo), rótulos revisados por especialista externo em 08/10, erros do motor registrados à vistaPlacar em 28/09: 32 de 46 certos; 14 erros conhecidos (8 falhas perdidas, 4 alarmes falsos, 1 gravidade, 1 certeza). Erro novo ou erro que some derruba o build.packages/engine/src/gabarito/casos-laboratorio.tspackages/engine/src/gabarito/gabarito.tspackages/engine/src/gabarito/gabarito.test.tspronto
    • S17-4Reclassificar cada tipo de achado com base no que o gabarito mostrarAté 05/10: 10 dos 11 erros corrigidos contra as nossas respostas (46 de 47). 08/10: as respostas certas foram revisadas por especialista externo (Luiz Fernando Dubiela, docs/juridico/2026-10-08-revisao-tecnica-aprovada.pdf) e o motor passou a segui-las: nenhum crítico automático por prefixo; tecnologia identificada é inventário; estado inconclusivo; leitura sem login só é falha se o dado for privado. Gabarito revisado: 48 de 49 (falta o .env.production, que entra no perfil autorizado); código 20 de 20, 1 pendente (C16).fazendo
  17. S15

    PDF com a marca

    Um documento que o dono baixa ou envia a um profissional — gerado pelo servidor, com a identidade da ehopent e o selo verificável.

    Completo
    100%
    • S15-1PDF gerado no servidor: capa, contagem honesta, três listas, selo com link e QR de verificaçãoapps/web/src/pdf/ReportDocument.tsxapps/web/src/pdf/buildReportPdf.test.tsapps/web/src/app/api/relatorios/[id]/pdf/route.tsdocs/relatorio/2026-09-28-s15-pdf-real.mdpronto
  18. S16

    Parcerias de segurança

    Recomendar ferramentas de segurança que resolvem o que o relatório encontrou, com comissão por indicação — sem conflito com o diagnóstico.

    Planejado
    0%
    • S16-1Decidir o modelo: quais parceiros, como a indicação aparece, e a regra que separa diagnóstico de vendaIdeia do dono em 25/09.a fazer
  19. S18

    Análise do código do cliente

    O relatório pago olha também o código e as bibliotecas do app, não só o site no ar — com acesso só de leitura que o próprio dono concede.

    Completo
    100%
    • S18-1Motor de análise de código com licença que permite uso comercial em código privado (decisão em ADR)Opengrep (LGPL) com 9 regras nossas, OSV-Scanner (Apache) e Gitleaks (MIT), versão e soma travadas. Gabarito de código: 20 de 21 casos certos.docs/adr/0005-analise-de-codigo-com-licenca-aberta.mdtools/ferramentas.jsontools/baixar-ferramentas.mjspackages/code-engine/src/executar.tspackages/code-engine/regras/ehopent.yamlpackages/code-engine/src/gabarito-codigo.test.tspronto
    • S18-2Acesso ao código: o dono conecta o repositório só para leitura (ou envia o código), revogávelTestado de ponta a ponta em 01/10 com o App de teste ehopent-dev (só leitura) no repositório fabioballada/ehopent: conexão, análise e cópia apagada. O App de produção (ehopent, no domínio) vem na etapa 3 do lançamento.apps/api/src/routes/github.tsapps/api/src/routes/github.test.tsapps/api/src/services/githubApp.tspackages/code-engine/src/repositorio.tsapps/web/src/components/CodePanel.tsxpronto
    • S18-3Bibliotecas com falha conhecida, pela base pública de vulnerabilidadesDetecção pronta (OSV-Scanner, com a primeira versão que corrige); entra no relatório no S18-5.packages/code-engine/src/leitura.tspackages/code-engine/src/leitura.test.tspronto
    • S18-4Segredos no código e no histórico do repositório, sempre mascaradosGitleaks com --redact; o leitor recusa segredo não mascarado e não guarda autor nem e-mail do commit. Entra no relatório no S18-5.packages/code-engine/src/executar.tspackages/code-engine/src/executar.test.tspronto
    • S18-5Relatório único: site + código + bibliotecas, com conferência de alarme falso e arquivo para a IA do donoFeito em 5 passos (01 a 05/10): (1) teste e exemplo num bloco à parte; (2) cada ponto com por que importa, como conferir e passo a passo, nos 5 idiomas; (3) botão "Baixar para a sua IA"; (4) análise guardada (só o local de cada ponto) e comparada com a anterior pela regra do reteste; (5) PDF único: o relatório do site leva a análise do código escolhida. Ponto de código é sempre "provável — a conferir".packages/code-engine/src/local.tsapps/web/src/components/CodePoints.tsxapps/web/src/lib/codeAiBrief.tspackages/code-engine/src/comparar.tsapps/api/src/db/migrations/0005_analises_de_codigo.sqlapps/web/src/pdf/buildReportPdf.tsxpronto
  20. S19

    Isolamento entre clientes do app

    Responder a pergunta que mais importa num app feito com IA: um cliente do app consegue ver os dados de outro?

    Travado
    0%

    TravaSó começa com escopo escrito aprovado pela advogada, autorização específica do cliente e validação de especialista externo (decisão do dono, 28/09).

    • S19-1Escopo escrito do teste, aprovado pela advogadatravado
    • S19-2Teste com contas de teste que o próprio dono cria, validado por especialista externotravado
  21. S20

    Firebase no teste profundo

    O Firebase deixa de sair sempre como "não testado": o teste autorizado responde se as regras protegem os dados.

    Travado
    0%

    TravaAprofunda o teste ativo: só começa com escopo escrito aprovado pela advogada e validação de especialista externo (decisão do dono, 28/09).

    • S20-1Teste autorizado das regras do Firestore, Realtime Database e Storage, só leitura, pelo mesmo portão de consentimentoParte do S14-4. Travado em 29/09 pela regra da advogada e do especialista.travado
    • S20-2Casos do Firebase no gabarito de laboratório (aberto, fechado, inconclusivo)travado
  22. S21

    Revisão humana

    Um plano acima do relatório automático: especialista de segurança confere o relatório antes de ele chegar ao cliente.

    Planejado
    0%

    TravaDepende de especialista externo contratado (P9).

    • S21-1Fila de revisão: o relatório pago espera o especialista, que confirma, descarta ou comenta cada pontoa fazer
    • S21-2Relatório e selo dizem "revisado por especialista", com nome e dataa fazer
  23. S22

    Placar público do motor

    Mostrar com número o quanto o motor acerta, e a meta — confiança que o concorrente não mostra.

    Travado
    0%

    TravaDecisão do dono (05/10): não publicar o placar agora — para o leigo, "36 de 47" soa como "paga por algo que falha". O placar segue interno (o CI trava se o motor piorar); a meta é chegar a 45 de 47 ou 47 de 47 (S17-4). Só volta se o dono decidir.

    • S22-1Página pública com o placar do gabarito, gerada do próprio gabarito e conferida pelo CITravado em 05/10 por decisão do dono.travado

Esperando o dono

O que engenharia não fecha sozinha. Fica fora da conta dos sprints de propósito: aqui a bola tem dono.

  • P1

    Clerk: instância de produção, domínio e plano Pro (MFA)

    Provedor escolhido (Clerk) e instância de desenvolvimento ligada em 24/09. Falta, para produção: criar a instância de produção no domínio, repetir a customização do token de sessão (aud ehopent-api + email) e assinar o Pro — sem ele não há segundo fator e o teste profundo fica fechado.

  • P2

    Assinatura de revisor nativo em EN, ES, DE e FR

    As cinco traduções estão completas e travadas por teste de contrato. O que falta é um humano nativo assinar as strings de segurança e consentimento — texto jurídico que soa estranho vira suspeita de golpe, e nenhum teste mede isso.

    trava S6
  • P4

    Criar security.ehopent.com e publicar SPF, DKIM e DMARC (none → quarantine → reject)

    O contrato e o verificador estão prontos: `npm run email:dns` imprime os registros exatos e mede o que está publicado. Publicar no DNS e subir o DMARC ao longo de 6–8 semanas é do dono do domínio.

    trava S6
  • P5

    Iniciar o warmup (EMAIL_WARMUP_STARTED_AT) e o provedor (Postmark/SES)

    A rampa e o teto diário estão em código e o portão os aplica. Contratar o provedor, configurar PTR/TLS/webhook de reclamação e deixar as 4 semanas correrem é operação.

    trava S6
  • P6

    Comprar o certificado VMC/CMC para o BIMI

    O SVG está no perfil certo e validado por teste. O certificado exige marca registrada e é compra anual — decisão de custo.

  • P7

    Instalar o runsc (gVisor) no host e apontar SCAN_WORKER=container

    A jaula está em código e testada (flags, protocolo, dois portões). O runtime é instalação no servidor; sem ele o deep scan responde 503 visível, nunca roda fora da jaula em silêncio.

  • P8

    Contratar pen-test humano externo da plataforma

    O automatizado cobre a classe de ataque que o motor procura nos outros e fica verde no CI. Lógica de negócio e criatividade adversarial são de gente — e o laudo externo é o que se mostra a cliente e auditor.

  • P3

    Parecer jurídico americano

    O portão de país já nega os EUA por padrão, e só um parecer assinado muda isso. É advogado, não é engenharia.

    trava S6

Como ler este painel

O percentual conta apenas tarefa pronta. Em andamento não vira número — pela mesma razão que provável não vira falha confirmada.