Skip to main content
b7n0de, Verified AI Work, pink rabbit mascot over the B7N0DE wordmark

proofbundle

CI demo reproducible PyPI Python License: MIT DOI

Portable evidence for AI work, verifiable offline. Integrity, not truth

One file. No verification server. No network required.

Quick start · What it proves · Current release · Adoption review · Documentation

Current release

What changed, entry by entry, is in the CHANGELOG; what is in the cut and what moved out of it is in docs/release_scope. The version is on the PyPI badge above and not in this text, so this section cannot go stale.

The closing audit verdict of the last release was FIX_FIRST, not WITHSTANDS_DEEPGATE. The findings that stayed open are published in RESTRISIKO_600.md with the scope each statement of that round holds over, and the artefacts of the round are in audit_artifacts/600.

Quick start

Install the core verifier.

python -m pip install proofbundle

Requires Python 3.10 or newer. The core installs two dependencies, cryptography and rfc8785.

Download a real example receipt and verify it offline.

curl -fsSL \
  https://raw.githubusercontent.com/b7n0de/proofbundle/main/examples/example_bundle.json \
  -o receipt.json

proofbundle verify receipt.json

The command uses the local file only. Its exit code is part of the public contract.

0  verified
1  verification failed
2  malformed input or usage error
3  relying party policy not met

That table is the contract of proofbundle verify. The statement-style commands (decision verify, outcome verify, relation-statement verify) carry their own exit contract in their own --help, and the meanings differ, until 6.2.0 sets one contract for all of them.

Run the tamper demo.

python -m pip install "proofbundle[eval]"
proofbundle demo

The demo checks an honest receipt, multiple tampered variants, and a sample swap. It exits nonzero if a tamper is accepted.

For a guided walkthrough, see docs/DEMO.md. For Inspect, see docs/INSPECT_HAPPY_PATH.md.

What a receipt proves

A verified receipt can establish A verified receipt does not establish
A stated key signed these exact bytes The real world identity or honesty of the key holder
The signed content has not changed The truth of the reported score or finding
A supplied Merkle inclusion or sample opening is valid That the evaluation design was good
A declared threshold, provenance field, or relation is present and bound That the computation itself was correct
A supplied relying party policy was met That no omitted run or cherry picked result exists unless the chosen profile makes that claim testable

This boundary is the product. proofbundle makes a claim attributable and tamper evident without turning the claim into truth.

Read the full threat model and the project wide non claims.

Choose the path that matches your task

Task Install Start here
Verify an existing receipt offline proofbundle Quick start, SPEC.md
Emit an evaluation receipt or preregistration proofbundle[eval] docs/DEMO.md, EVAL_CLAIM.md
Integrate with Inspect AI proofbundle[inspect] docs/INSPECT_HAPPY_PATH.md
Add a signed agent review disclosure to a PR or issue proofbundle 5.1.0 release notes, conformance/agent_review
Verify RFC 3161 or OpenTimestamps evidence proofbundle[anchors] docs/ANCHORS.md
Verify ML-DSA-44 witness cosignatures proofbundle[pq] docs/ANCHORS.md
Explore the TEE attestation bridge proofbundle[experimental] docs/EXPERIMENTAL_ENCLAVE.md

How it works

evaluation, review, decision, or action
                    │
                    ▼
      canonical statement and commitments
                    │
                    ▼
       signature and optional Merkle proofs
                    │
                    ▼
           one portable receipt file
                    │
                    ▼
        proofbundle verification offline
                    │
                    ▼
   separate verification axes and policy result

The verifier checks only the evidence supplied to it. Trust anchors, expected subjects, currentness information, and policy requirements come from the relying party.

Capabilities and maturity

proofbundle is a beta project. Shipped does not mean that every profile has the same maturity.

Capability What it provides Maturity
Core receipt verification Ed25519 signatures, RFC 6962 and RFC 9162 Merkle inclusion, strict parsing, offline verification Shipped
Evaluation receipts Metric and threshold claims, provenance, salted commitments, optional per sample audit Shipped
Selective disclosure SD-JWT with key binding for hiding selected values while preserving verifiability Shipped
Agent review receipts Signed self declarations for AI involvement and review in PRs and issues agent-review/v0.2 experimental in 6.0.0 and the default; agent-review/v0.1 legacy, still readable and byte-pinned. Self declared assurance only
Inspect, pytest, and Hugging Face bridges Opt in adapters for existing evaluation workflows Shipped
External time evidence RFC 3161, OpenTimestamps, and a bring your own anchor interface Experimental, the [anchors] extra
Decision receipts A gate's verdict over named evidence, bound to the receipts it judged, never a claim that the verdict was correct Shipped
Outcome, relation, run ledger, trust pack, and verification summary predicates Typed evidence graphs and relying party policy inputs Experimental
TEE attestation bridge RATS and EAT based enclave evidence Preview, experimental
Independent Rust cross-verifier (tools/pb_verify_rs) A second implementation that cross-checks the conformance corpus differentially; not part of the wheel or the sdist Experimental in 6.0.0 and advisory only: agreement on recorded vectors, no conformance promise; own milestone 6.1

The full predicate inventory and maturity labels live in docs/predicates/README.md.

Security and trust

  • The verifier uses cryptography for Ed25519 and rfc8785 for canonicalization. It does not implement its own cryptographic primitives.
  • Correctness is checked against external RFC 6962 vectors and a real Sigstore Rekor proof, not only against the project's own receipts.
  • The test suite sits behind a mutation gate and property based parser fuzzing.
  • The receipt signature is Ed25519 and is not post quantum. Post quantum coverage today is limited to witness side ML-DSA-44 cosignatures, plus an experimental ML-DSA path in the renewal layer (pqsig.py, EXPERIMENTAL, ADR 0006), which renews a receipt rather than signing its payload. A post quantum payload signature is on the roadmap and not yet built. Detail in docs/ANCHORS.md.
  • Releases are built once, carry SLSA build provenance, and are published through PyPI Trusted Publishing, where PyPI records PEP 740 attestations for the same bytes.
  • A second, independent verifier written in Rust cross-checks the conformance corpus. It is advisory: differential agreement on the recorded vectors, not a correctness proof of either implementation, and it does not ship in the package.
  • The conformance corpus includes positive controls and counter proofs. Read what it does and does not establish in CONFORMANCE.md.
  • The 30 minute adversarial adoption path is in docs/REVIEWERS.md.
  • Security reports follow SECURITY.md.
  • Release specific audit artefacts and residual risks remain visible rather than being folded into a single green status.

OpenSSF Scorecard

OpenSSF Scorecard

The aggregate score is a live heuristic, not a product verdict. Several checks score zero for reasons that are written down rather than hidden, one sentence per check, in docs/SCORECARD.md. The OpenSSF self assessment walks the Best Practices criteria honestly.

Standards and interoperability

proofbundle is a small offline receipt layer that complements, rather than replaces, systems such as in-toto, Sigstore, SCITT, transparency logs, trusted execution environments, and independent reproduction.

Documentation

Reader Start here
New user docs/GLOSSARY.md, docs/DEMO.md
Adopter or security reviewer docs/REVIEWERS.md, THREAT_MODEL.md
Implementer SPEC.md, CONFORMANCE.md
Integrator INTEGRATIONS.md, docs/INSPECT_HAPPY_PATH.md
Relying party docs/POLICY_PROFILES.md, docs/TRUST_ANCHORS.md
Standards or research reader INTEROP.md, docs/RELATED_WORK.md
Release reviewer CHANGELOG.md, docs/PRE_TAG_AUDIT.md

Scope

proofbundle is not a hosted transparency service, a complete in-toto client, a trusted execution environment, a consensus system, or a compliance product by itself.

It is the portable, standards oriented receipt layer between an evidence producer and a relying party.

Roadmap, stated as not yet built. A post quantum payload signature, and a CLI flag to select the content root algorithm, jcs-sha256-v1 is the signed default today.

Citation

Machine readable citation metadata is in CITATION.cff.

The archival software record uses concept DOI 10.5281/zenodo.21110642. The Technical Note uses concept DOI 10.5281/zenodo.21230466; its latest published revision is 6.0.0, version DOI 10.5281/zenodo.22730162, deposited 2026-09-12. The preceding revision 5.0.0 has version DOI 10.5281/zenodo.22209091.

Contributing

Read CONTRIBUTING.md and the Code of Conduct.

Good first issues use the good-first-issue label. Security findings follow SECURITY.md.

The verifier core aims to remain small, dependency light, and auditable.

License

MIT, see LICENSE.


proofbundle is part of b7n0de, Verified AI Work · b7n0de.com

Metadata

Release files for proofbundle 6.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for proofbundle 6.1.0
File Size Uploaded
proofbundle-6.1.0.tar.gz 2.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for proofbundle 6.1.0
File Interpreter ABI Platform
proofbundle-6.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.3 MB

Release files / proofbundle-6.1.0.tar.gz

Download URL proofbundle-6.1.0.tar.gz
Size 2.7 MB
Tags Source
SHA-256 checksum
How to use checksums
d63554915940ce42420bf4e3922ea60bb18296a50fff312986fb38a13b30893a
BLAKE2b-256 checksum
How to use checksums
4984fd545bb030a268e1b0d289f22856f0b270fb064ea016c979c8d6e45a2513
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / proofbundle-6.1.0-py3-none-any.whl

Download URL proofbundle-6.1.0-py3-none-any.whl
Size 582.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f43164161952d78afa19bdbdc324a74f104103f417f8f7c7e8734cad72235b3b
BLAKE2b-256 checksum
How to use checksums
b20331de892fee7f11cd0ee5b1c73e19818f58e02a3395db773b5d2a02997de1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release history Release notifications | RSS feed

6.2.0

2 release files

This release

6.1.0 This release

2 release files

6.0.0

2 release files

5.1.0

2 release files

5.0.0

2 release files

4.0.0

2 release files

3.8.0

2 release files

3.7.0

2 release files

3.6.3

2 release files

3.6.2

2 release files

3.6.1

2 release files

3.6.0

2 release files

3.3.0

2 release files

3.2.3

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.3

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page