Skip to main content

ProofOfContext

The memory that stops AI agents — and engineers in fresh sessions — from silently contradicting decisions your team already made: the wrong database, a banned dependency, an architecture call quietly reversed.

brain.md and the decision log are the source of truth. ProofOfContext records a project's decisions once, feeds them to a fresh agent before it writes, and enforces them when code lands.


Not a security scanner. A scanner asks "is this code insecure?" from a shared rule library. ProofOfContext asks "does this contradict a decision we made?" — Postgres-not-Mongo, one billing source of truth, stdlib-only core. Those aren't vulnerabilities and aren't in anyone's library; they live in your team's head. Security is a library problem; architectural intent is a memory problem.

Trust

Nothing is taken on faith: the package ships as readable source, makes no network calls, and sends no telemetry — and every one of those claims comes with a command you can run against your installed copy to verify it. See TRUST.md.

Install

The CLI is pure standard library — no runtime dependencies — and runs on Python 3.8+, tested through 3.14. End-of-life interpreters are supported deliberately: the stdlib-only core makes them nearly free to keep, and the repos that most need a decision gate are often pinned to older Pythons.

pipx install proofofcontext   # recommended: puts `poc` on your PATH everywhere
# or: pip install proofofcontext

For development, install from source instead:

git clone https://github.com/prove-ai/proof-of-context.git
cd proof-of-context
pip install -e .

Uninstall leaves zero trace:

rm -f .git/hooks/pre-commit && rm -rf .context/ && pip uninstall proofofcontext

(Details and what each piece is in TRUST.md.)

Commands

poc init              scaffold .context/ + a pre-commit hook (with human approval)
poc decide [flags]    record one human-approved decision (appended to the log)
poc context "<task>"  emit a paste-ready context package for a fresh agent session
poc why "<question>"  answer "why did we decide X?" from the decision log
poc check <path>...   fail if a file contradicts a recorded decision (deterministic, offline)
poc evaluate "<rule>" advisory KEEP / REVISIT / RETIRE verdict on a rule (never blocks)
poc skill [refresh]   keep the generated Claude skills in sync with .context/
poc stats             summarize the decision-collision ledger

# operational assumptions — beliefs about the codebase, recomputed from real git history
poc assume scan <repo>     compute the assumption portfolio (coupling, stability, debt)
poc assume show "<pair>"   render one belief's claim card (trend, sparkline, real-SHA evidence)
poc assume update <repo>   recompute the assumptions new commits touched; report the move
poc assume verify "<pair>" re-derive a belief's confidence from git a second way to prove it

Try it

Follow docs/GETTING-STARTED.md — a 5-minute first run. You install poc, open the governed example in examples/billing-service/, and watch an AI-written MongoDB change get blocked at git commit because it contradicts the team's recorded PostgreSQL decision — then fix it and watch the commit pass. It's the real workflow, not a script.

How it works

Team memory lives in .context/ (brain.md, decisions.md, ledger.jsonl, graph.md). poc check runs deterministically and offline — token matching with comments and strings ignored, no LLM, no network, no per-commit cost — so it runs identically in a pre-commit hook, in CI (GitHub Action), and by hand. Nothing is written to .context/ without a human accept / edit / reject step.

Docs

Repo layout

The repo root is the product: the proofofcontext/ package, the poc CLI, .context/ (this repo's own decision memory — the tool dogfoods itself), demo-sample/, docs/, and the web pitch (app.py, deployed to Render via render.yaml / Dockerfilepip install .[web]).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

proofofcontext-0.3.0.post1.tar.gz (83.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

proofofcontext-0.3.0.post1-py3-none-any.whl (87.5 kB view details)

Uploaded Python 3

File details

Details for the file proofofcontext-0.3.0.post1.tar.gz.

File metadata

  • Download URL: proofofcontext-0.3.0.post1.tar.gz
  • Upload date:
  • Size: 83.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for proofofcontext-0.3.0.post1.tar.gz
Algorithm Hash digest
SHA256 764305421fe4477b58888a7a7c4bd366cee3e7daa7cf978c27f590cf8304d24a
MD5 3cca3a10c245c6a49f62f33debc43f27
BLAKE2b-256 0d3af8888e8ea7efca92042adabca025f3ef43f8a32b135b2d9592a3103d8248

See more details on using hashes here.

File details

Details for the file proofofcontext-0.3.0.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for proofofcontext-0.3.0.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 3d26a63c713418190126b35c0bf90152b5a288481dd041c0f55da11aabc32438
MD5 7434e01f115f7d0ebfa828eee2baafcf
BLAKE2b-256 a31f67c02e553d2d5a83f109b18ccf32744596977d3e8a4ee2e87adef227d4c7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page