evidence.v1 · ed25519

O recibo, explicado

Toda mudança governada produz um recibo assinado: evidence.v1. Esta página é o detalhe completo: o que ele contém, por que é assinado do jeito que é, e como qualquer pessoa o verifica sem confiar em nós.

O recibo, anotado

// evidence.v1, um merge governado { "schema": "evidence.v1", "operationType": "code.merge", "actor": { "agent": "claude-code", "session": "7f3a" }, "provenance": { "decision": "DEC-214", "pr": 477 }, "checks": { "typecheck": "pass", "test": "pass:142", "scope": "src/payments/*" }, "redaction": "none", "sig": "ed25519:46367c53", "keyId": "sha256:", "ledger": "#9f2a" }
Verifique um recibo offline, só com a chave pública: $ rootblocks verify receipt.json --key rootblocks.pub ✓ signature valid · ledger #9f2a · not tampered

Entregue este arquivo para qualquer pessoa. Ela não precisa de nós para verificá-lo.

  • operationType o evento governado: um merge, uma execução, um release.
  • actor.agent qual agente produziu a mudança, e sua sessão.
  • provenance.decision a decisão humana que autorizou essa mudança. A âncora da trilha.
  • checks os gates e o escopo de caminhos aplicado, como de fato rodaram.
  • redaction o que foi omitido do recibo, declarado, para que a ausência também seja auditável.
  • sig / keyId / ledger ed25519 sobre bytes canônicos, a chave de assinatura, a posição no ledger somente de anexação.

Por que ed25519

As assinaturas são feitas sobre os bytes canônicos do recibo, então qualquer mudança em qualquer campo quebra a assinatura. Não há espaço para um recibo que diz uma coisa e prova outra.
ed25519 é um esquema de assinatura moderno e amplamente auditado: chaves pequenas, assinaturas pequenas, assinatura determinística, e sem necessidade de uma autoridade certificadora. A verificação é uma única operação de chave pública que roda em qualquer lugar, inclusive em máquinas isoladas da rede.
A chave privada é gerada por instalação e nunca sai do host do daemon. Cada recibo carrega seu keyId, então rotação e revogação são parte do formato de evidência, não uma reflexão tardia.

Por que a verificação offline importa

Um auditor, um cliente ou um regulador não deveria precisar confiar na RootBlocks para checar sua evidência. O rootblocks verify pega um recibo e a chave pública, e responde com matemática, não com nossa palavra.
Essa é a diferença entre um log e evidência. Um log vive dentro de um sistema que pode editá-lo. Um recibo é assinado em um ledger somente de anexação e se verifica em qualquer lugar, em qualquer máquina, sem conta e sem rede.

Uma política, na íntegra

policy: payments-tier scope: allow: ["src/payments/**", "test/payments/**"] deny: ["**/secrets/**", "infra/**"] gates: [ typecheck, test, lint ] # all required allowedTools: [ Edit, Read, "Bash(npm *)" ] limits: { maxFiles: 40, maxRuntime: "20m" } onGateFail: block # no commit, no receipt

Modos de falha

Daemon fora do ar configurável por política: fail-closed (agentes não conseguem mergear sem prova) ou fail-open (roda, marca como observado, reconcilia depois).
Plano de controle fora do ar os recibos são escritos primeiro localmente, no ledger somente de anexação, que é o que roda hoje. A sincronização com a nuvem (chegando com os design partners) retoma ao reconectar.
Gate falha sem commit, sem recibo. A própria tentativa fica registrada como evidência.

O que sai da sua infraestrutura

Sai
Nunca sai
hashes de conteúdo
código-fonte
assinaturas ed25519
diffs
metadados de checks (passou/falhou)
prompts do agente
IDs de decisão e de PR
conteúdo dos arquivos

Chaves, e o que a assinatura prova

Gerada por instalação, na primeira execução. A chave privada nunca sai do host do daemon.
Rotação cada recibo carrega seu keyId, então rotação e revogação já fazem parte do formato de evidência. O procedimento de reancoragem vem com o programa enterprise.
Nós provamos que essa execução, sob essa política, ficou vinculada a essa decisão humana ratificada. Não certificamos o raciocínio interno do agente, que é exatamente por que ancoramos a evidência na decisão humana, não na narrativa do modelo.
checks.* + provenance.decision mapeia para a Cláusula 8 da ISO 42001 (controle operacional) e SOC 2 CC8.1 (gestão de mudanças).