Skip to content

feat(auditoria): ponto de verificação assinado para a partida fria (#46, opção D) - #94

Open
Vinny1313 wants to merge 2 commits into
developfrom
feature/46-ponto-verificacao-assinado
Open

Vinny1313 wants to merge 2 commits into
developfrom
feature/46-ponto-verificacao-assinado

Conversation

@Vinny1313

Copy link
Copy Markdown
Collaborator

Refs #46. Rascunho: nada foi executado ainda.

O que muda

Na partida fria (processo novo, sem cache), a primeira gravação verificava a trilha inteira sob o lock exclusivo (~1 s com 100 mil entradas; com vários processos nascendo juntos, fila e lock expirado). Agora a trilha tem um arquivo ao lado, <trilha>.checkpoint, com contagem, último hash, kid e o SHA-256 dos bytes já verificados, assinado por HMAC (com prefixo de domínio, para não se confundir com entrada da cadeia). A partida fria calcula o SHA-256 do trecho antigo, compara com o ponto e verifica só o que veio depois.

O que NÃO muda

  • verificar() e resumo() continuam percorrendo a trilha inteira.
  • Qualquer dúvida cai na verificação completa de hoje: ponto ausente, assinatura inválida, chave desconhecida, arquivo menor que o ponto, bytes diferentes, acréscimo inválido.
  • Sem chave configurada não se grava ponto (não há como autenticá-lo).
  • O ponto é regravado a cada 1000 entradas (CHECKPOINT_INTERVALO) e nunca levanta erro.

Limites de segurança (a documentar no ADR 0002)

  • Quem não tem a chave não forja o ponto; trocar bytes do trecho antigo muda o SHA-256 e invalida o ponto.
  • Voltar arquivo e ponto juntos para uma versão antiga é indistinguível de truncar a trilha: continua coberto só pela âncora externa, como já era.

Estado e riscos

  • Testes não executados: a máquina de desenvolvimento não tem Python. 13 testes novos em engenharia/tests/test_audit_checkpoint.py; as contagens esperadas foram calculadas à mão e podem precisar de ajuste. O CI é a primeira execução.
  • Mexe no núcleo de integridade e o congelamento é 11/11. Precisa da revisão independente do Iohan. Se não houver tempo, adiar para a Sprint 3 é aceitável.
  • Duplica o laço de verificação do acréscimo de _avancar, de propósito, para não alterar código já revisado; unificar depois.
  • ADR 0002 ainda não atualizado.
  • Benchmark: benchmark_auditoria_contencao.py ganhou --sem-ponto; a medição antes/depois está planejada para o computador do estágio.

🤖 Generated with Claude Code

Vinny1313 and others added 2 commits November 9, 2026 10:17
…, opção D)

Rascunho: testes ainda não executados localmente (sem Python na máquina); depende do CI e da revisão.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… ponto de verificação (#46)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Vinny1313 added a commit that referenced this pull request Nov 9, 2026
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@Vinny1313
Vinny1313 marked this pull request as ready for review November 9, 2026 14:25
Vinny1313 added a commit that referenced this pull request Nov 9, 2026
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant