Skip to main content

providence

ci

One versioned shape for "content + sha256(content)" evidence, and a checker that catches tampering.

receipt and invariant (two other tools in this portfolio) both already write proof-of-work to disk this way — a result, a hash of it, a timestamp. They arrived at two different envelope shapes for the same idea. providence names the shape underneath both, as one small, checkable spec, so a third or fourth tool doesn't reinvent it a third or fourth time.

This is a spec-and-checker, not a platform. It doesn't run checks, collect evidence, or replace receipt/invariant — it only answers "is this bundle what it claims to be."

$ providence check proof/
PASS  proof/ is a conformant Providence bundle

$ providence check proof/   # after someone hand-edits a file in it
FAIL  proof/manifest.json: items[0] (id=no_negative_payments): sha256 mismatch -- manifest says 6bc0..., no_negative_payments.json actually hashes to 9fab... (tampered or corrupted)

Full shape, and why it looks the way it does: SPEC.md.

Install

pip install providence-evidence

(providence and receipt were both already taken on PyPI — same story as invariant-verify/receipt-evidence in this portfolio. The installed command is still the short name, providence.)

Convert existing output

receipt and invariant don't need to change what they write — a converter reads each tool's real output and emits a Providence-conformant bundle from it:

providence convert-invariant proof/ providence-proof/   # invariant's --evidence dir
providence convert-receipt out/20260909T...-abcd.json providence-proof/   # a single receipt
providence check providence-proof/

What it checks

  1. The envelope has providence_version (currently 1), generated_at, tool.
  2. Every hash in the manifest matches the actual bytes of the file it claims to cover. A mismatch means the content changed after the manifest was written — that's the entire point.
  3. (Directory form) every file on disk is referenced by the manifest, and vice versa — no silently-orphaned or silently-missing evidence.

What this is not

Not a signature scheme — a sha256 proves content wasn't edited after the manifest was written, not who wrote it or that the manifest itself wasn't regenerated from scratch. Not a general JSON-schema validator — it checks Providence's specific envelope, nothing about your payload's own shape. Not a replacement for receipt or invariant — see SPEC.md's "Status" section for exactly what is and isn't unified today. Not a secret scanner — a bundle's payload validates identically whether it's been redacted or not; see SPEC.md's "Redaction and secrets" for whose job that actually is.

Tests

python3 tests/test_providence.py

Assert-based, no framework, no fixtures beyond what each test builds inline — including two tests that construct fixtures matching receipt's and invariant's real, current output byte-for-shape (not imported cross-repo, so this repo has zero dependency on either being installed) and round-trip them through convert_* → check_bundle to prove the converters work against real shapes, not just the canonical one.

Release files for providence-evidence 0.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 providence-evidence 0.1.0
File Size Uploaded
providence_evidence-0.1.0.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for providence-evidence 0.1.0
File Interpreter ABI Platform
providence_evidence-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 18.5 kB

Release files / providence_evidence-0.1.0.tar.gz

Download URL providence_evidence-0.1.0.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
aec28895fa9d422935d3aab2368e157b2702403eab6e1ac2ba42ec78c4010452
BLAKE2b-256 checksum
How to use checksums
16fe5ca5be3087849e924afa00fb109c24bb65b8b86b34e5445a1dc7462166ff
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 10, 2026.

Transparency log

Release files / providence_evidence-0.1.0-py3-none-any.whl

Download URL providence_evidence-0.1.0-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e8a8567cfef879107f6e217da922cb778a50981b7beb296a1a7e74115dcccbb2
BLAKE2b-256 checksum
How to use checksums
33db4c0e9b7410ae213ba4a9fcfedebc4c25ffc003b44af73fb01813c9222f6a
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 10, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.0

2 release files

0.1.1

2 release files

This release

0.1.0 This release

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