How It Works

Evidence Bundles

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

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

1. Problem this page solves

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

A verifier needs one stable package with clear integrity boundaries. This page explains 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 and which are conditional
  • how the bundle supports local or offline verification
  • where the 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 the issuer-bound governed statement
2Referenced evidence artifactsartifacts/, referenced receipt or context filesCarries the supporting material linked to the claim
3Signature trust materialtrust/org-signing-pubkey.pemAllows offline issuer signature checks
4Timestamp material, when claimedCLAIM.dsse.sha256, TIMESTAMP.tsr, TIMESTAMP.meta.json, trust/tsa-cert-chain.pemBinds trusted time to the signed object
5Chain or inclusion material, when claimedreceipts/receipts.ndjson, ROOT.txt, trust/log-pubkey.pemSupports continuity and append-only publication checks
6Manifest or indexMANIFEST.jsonAnchors the full file inventory and digest integrity
7Verification structure metadatabundle layout + declared claim layersTells the reviewer which checks are expected

Required vs conditional bundle layers

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

4. Observed vs inferred

LayerWhat is availableConfidence boundary
Directly included artifactsFiles physically present in the bundle with digests, signatures, and checkpoint referencesTestable by a local verifier
Derived claimsAssertions drawn from successful artifact checks, for example “signed before time X”Valid only when the matching layer material is present and valid
Outside dependenciesOrigin conditions, upstream identity or 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 accurately represent the source capture context
  • upstream systems feeding identity, scope, and policy were correct
  • the 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.

Evidence Bundles | WitnessOps