The evidence standard · evidence.v1

Proof that an action actually happened.

RootBlocks turns every governed action (a merge, a release, a measured metric) into a signed, append-only receipt. Anyone can verify one offline, with no account and no trust in us.

ed25519 signed 56 schemas offline verify Apache‑2.0
verify
$ npx rootblocks-verify receipts.jsonl --key pubkey.pem

Ledger:  4 entries
Key:     ed25519:199aa76…

   [0] attest.people-served-unique…   observed
   [1] attest.transactions-processed      observed
   [2] attest.data-points-managed         observed
   [3] attest.decisions-on-record         observed

4/4 verified
✓ VERIFIED · evidence.v1
Start here

Verify a receipt in 30 seconds

Hand a receipt and a public key to the verifier. It checks three things, all offline: the signature, conformance to this standard, and (for a ledger) that every entry holds.

Signature

Nothing was altered

The detached ed25519 signature is checked against the signer's public key. Change one character and it fails.

Schema

It's a real receipt

The document conforms to evidence.v1, the schema on this site, whose $id is the URL you read it at.

Inclusion

The whole ledger holds

For an append-only ledger, every entry passes. For a packed bundle, the archived bytes match the manifest too.

$ npx rootblocks-verify receipts.jsonl --key pubkey.pem
Anatomy

What's inside a receipt

A real attestation: a founder stating a published metric is genuine. It records how the number was measured, never the data itself, and rides beside a detached signature.

{
  "schemaVersion": "rootblocks.evidence/v1",
  "operationType": "attest",
  "status": "passed",
  "assurance": "observed",
  "actor": { "type": "human", "id": "DV-P33F…" },
  "provenance": {
    "attestor_datta_dv": "DV-P33F…",
    "subject": {
      "metric": "people_served…",
      "value": 1001465,
      "sourceSystem": "insttantt-db-prod",
      "method": "SELECT COUNT(DISTINCT…)"
    } }
  },
  "redaction": { "status": "not-needed" }
} + signature { ed25519, keyId, value }

operationType

What happened: run, code.merge, release, or attest. One vocabulary across the lifecycle.

actor · attestor_datta_dv

Who stands behind it, named by a Datta identity: a person, an org, or an agent.

subject

The claim itself: the value, the system of record, and the exact method, so a third party can reproduce it.

signature

A detached ed25519 signature over the canonical bytes. This is what makes the whole thing tamper-evident.

Assurance

How strongly is it backed?

A signature proves a receipt wasn't altered, not that its claim is true. Every receipt carries a seal for how strongly it's backed. The blocks fill as the proof gets stronger.

observedIt happened and was seen. A first-hand record, the weakest and most honest floor.
provenA deterministic check proved it. A test or regression re-established the property.
tracedBacked by an auditable trace. A full provenance chain stands behind the claim.
enforcedA gate actively enforced it. The property could not have been violated, the strongest seal.
Reference · 56 schemas

The machine-readable spec

Every schema is served at the exact URL it claims as its $id, so tools resolve it directly. Every receipt pins the major version rootblocks.evidence/v1: minors only ever add, so a receipt signed today still validates in ten years.

architecture

attestation

audit

buildpacks

bundle

cache

cicd

compatibility

components

construction

data

decisions

distribution

domains

evidence

evolution

extensions

golden

infra

observability

organization

predicates

project

recipes

registry

regression

release

security

semantic-engines

slices

source-audit

source-maps

source-projects

templates

testing

workflow