Evidence Bundles

What is in a WitnessOps proof bundle and how to verify it offline.

A proof bundle is the portable package that carries proof artifacts from runtime to independent reviewers.

1. Problem this page solves

Without packaging, proof artifacts are scattered across systems, exports, and operator notes.

A verifier needs a stable package with integrity boundaries. This page defines what is inside a WitnessOps bundle and how that package supports offline review.

2. What you should understand after reading

After this page, you should understand:

  • what a bundle contains
  • which artifacts are required vs conditional
  • how the bundle supports local/offline verification
  • where bundle limits begin

3. Mechanism-first artifact order

Read a bundle in this order:

OrderArtifact classTypical filesWhy it exists
1Receipt claimCLAIM.json, CLAIM.dsse.jsonDefines issuer-bound governed statement
2Referenced evidence artifactsartifacts/, referenced receipt/context filesCarries supporting material linked to the claim
3Signature trust materialtrust/org-signing-pubkey.pemAllows offline issuer signature checks
4Timestamp material (when claimed)CLAIM.dsse.sha256, TIMESTAMP.tsr, TIMESTAMP.meta.json, trust/tsa-cert-chain.pemBinds trusted time to the signed object
5Chain/inclusion material (when claimed)receipts/receipts.ndjson, ROOT.txt, trust/log-pubkey.pemSupports continuity and append-only publication checks
6Manifest/indexMANIFEST.jsonAnchors complete file inventory and digest integrity
7Verification structure metadatabundle layout + declared claim layersTells reviewer which checks are expected

Required vs conditional bundle layers

ArtifactStatusVerification role
MANIFEST.jsonrequiredDetects tampering or incomplete export
CLAIM.jsonrequiredDeclares governed assertion
CLAIM.dsse.jsonrequiredDefines canonical signed bytes
receipts/receipts.ndjsonrequiredProvides receipt continuity substrate
trust/org-signing-pubkey.pemrequiredEnables issuer signature validation
Timestamp and TSA filesconditionalRequired only when trusted-time claim is declared
Chain/log trust filesconditionalRequired only when publication/continuity claims are declared
CLAIM.intoto.jsonoptionalCompatibility with attestation tooling

4. Observed vs inferred

LayerWhat is availableConfidence boundary
Directly included artifactsFiles physically present in bundle with digests/signatures/checkpoint referencesTestable by local verifier
Derived claimsAssertions drawn from successful artifact checks (for example, “signed before time X”)Valid only when corresponding layer material is present and valid
Outside dependenciesOrigin conditions, upstream identity/scope correctness, capture context fidelityNot recreated by bundle bytes alone

5. Trust assumptions

A bundle preserves proof artifacts. It does not recreate every condition of original capture.

Trust assumptions that remain explicit:

  • bundle references are accurate representations of source capture context
  • upstream systems feeding identity/scope/policy were correct
  • runtime environment and key custody were trustworthy at issuance time
  • verifier trust roots are authentic

A bundle is not proof by itself. It is the transport surface for proof artifacts.

6. Next-page handoff

Next, read Verification to run the deterministic check sequence for the bundle layers defined here.

For artifact taxonomy context, see Proof Artifact Classes.