Skip to content

Verification certificates

A certified derivation's answer is only as trustworthy as the system that produced it - until someone downstream can check it themselves. A certificate is a signed, exportable statement of what the verification oracle certified for one derivation: the verdict, the gates that ran (and any that were skipped, and why), the certified estimate, the content-addressed identity of the code and data, and who certified it, when. Anyone holding the certificate and the certifier's public key can verify it offline, with no running system and no access to your data - the point of a certificate is that trust travels with the file.

How it is issued and verified

Tamper-evidence is a detached Ed25519 signature over the certificate's canonical JSON bytes. The signature travels in an envelope beside the payload:

{
  "schema": "elbi.certificate/v1",
  "certificate": { "...the signed payload...": "..." },
  "signature": { "algorithm": "ed25519", "value": "<base64>" }
}

The signing key is a 32-byte seed persisted at .elbi/certificate.key (created on first use, mode 0o600), with the base64 public key written beside it as certificate.key.pub for distribution - or point ELBI_CERTIFICATE_KEY at a path of your choosing for an app or CI deployment. Because the signing public key rides inside the signed payload too, an attacker who edits a certificate and re-signs it with their own key produces a document that is self-consistent on its own terms - this is why verification against a separately distributed public key matters: only a verifier who already knows the real key can catch a re-signed forgery. A verification run with no public key pinned only proves the document is internally self-consistent, not that it came from a key you trust.

A certificate is only ever issued for a derivation with an actual verified claim: one the oracle checked and returned a real verdict for. A derivation that merely ran without error, with no claim ever declared, has nothing to certify and is not issued one.

Using it

The app shows JSON and PDF download links on a certified derivation's detail page, and inline in the chat view beside a verified finding. Over HTTP:

GET  /api/certificates/{name}        the signed certificate, as JSON
GET  /api/certificates/{name}/pdf    the certificate rendered as a one-page PDF
POST /api/certificates/{name}        verify a certificate against this derivation
                                      (400 if the signature is invalid, 409 if it is
valid but stale), the sync gate a pull/push
                                      round trip uses to reject a tampered or
                                      out-of-date file

The CLI verifies (and issues) certificates fully offline, with no project or running system needed to check one someone sent you:

elbi certificate issue <name>                     # sign the newest certified run
elbi certificate verify <file> --public-key <key> # verify against a trusted key
elbi certificate chain                            # verify the hash-chained audit log
elbi certificate public-key                       # print this project's public key

The audit log

Alongside certificates, a project can keep a hash-chained, append-only log of every served invocation: each line carries the SHA-256 of the line before it, so editing, reordering, or dropping a record breaks the chain. elbi certificate chain (or its HTTP equivalent) verifies it offline and reports a head hash you can anchor externally - the one gap a chain cannot see on its own is truncation of its own newest records, which is exactly what an external anchor catches. See Serving over MCP for how the audit sink is wired into a running server.

What this is not

A certificate is not part of the Open Derivation Spec: the spec explicitly leaves signatures and certification governance out of scope, as a deployment concern, so there is no plan to standardize the certificate format there. The PDF is a human-readable companion for an auditor, not a second source of truth - always verify the JSON certificate (or its embedded signature) for anything that matters; the PDF exists so a person can glance at a finding without running a tool. And the audit log is a separate integrity mechanism: a certificate proves one derivation's result was checked and signed; the audit log proves the sequence of invocations that produced it was not tampered with after the fact. Neither substitutes for the other.