Skip to main content

Check whether an AI coding agent's delivered commit supports what it claims it completed.

Project description

Proofrail

Check whether an AI coding agent's delivered commit supports what it claims it completed.

Public alpha: available on PyPI, local and read-only, and not a hosted service.

Install and try the reconstructed incident

Requires Python 3.9 or newer:

pip install proofrail
proofrail verify --demo

The demo should finish with partially_verified: the deletion is supported, the workflow update is contradicted, the green-CI claim is unsupported, and merge status requires human review.

The reconstructed failure

An agent was asked to delete an obsolete bun.lockb file and update two workflow triggers to watch bun.lock.

The delivered commit deleted the obsolete file but omitted both workflow changes. CI still turned green because the old workflow was triggered by the deleted bun.lockb. The green check appeared to confirm the fix while actually exercising the configuration that should have been replaced.

Claim Proofrail result
Obsolete lockfile deletion verified
Workflow trigger update contradicted
Green run proves the new trigger unsupported
Merge status human_review_required
Overall result partially_verified

This fixture is a deterministic reconstruction of the real incident. It does not represent a failure caught from a live external user. Read the complete reconstructed example.

For a no-install source-checkout run and a real committed-range walkthrough, continue to the quick-start guide.

What Proofrail is

In short: Acceptance verification for AI-generated code changes.

AI agents can pass tests and report "done" even when part of the requested change never reached the final commit. Proofrail compares the agent's claims with an exact Git commit range and the available evidence, then reports each claim as verified, contradicted, unsupported, or requiring human review (human_review_required).

Why not just read the diff or ask another AI?

A diff shows what changed, but it does not tell you whether every completion claim is present or whether a passing check actually tested the claimed behavior.

A second AI can offer another interpretation. Proofrail instead applies deterministic checks to fixed artifacts: the claims, committed range, and submitted evidence. Its report shows which artifact supports each result and what remains unproven.

Proofrail complements code review and tests; it does not replace them.

For AI coding agents

Run Proofrail after implementation and before the agent reports "done." A diff shows what changed. Proofrail checks whether the agent's stated claims are supported by what changed.

Use the Proofrail acceptance skill to inspect an exact committed range, handle each claim status, and produce an evidence-bounded final report.

Claude Code users can copy the repository instructions in the Claude Code integration guide.

Example output

Overall verdict: partially_verified - some claims are supported, while others
are not or still need human review.

Use --format json for per-claim findings, evidence references, source hashes, and provenance limitations.

GitHub Actions usage

The composite action under .github/actions/proofrail-verify is currently repository-local dogfood infrastructure. It works within this repository's checkout; it is not installed by pip install proofrail and is not yet a reusable action for external repositories.

- uses: ./.github/actions/proofrail-verify
  id: proofrail
  with:
    case-directory: tests/fixtures/001-partial-workflow-fix
    format: json

Within this repository, the action writes JSON under .proofrail/results/, appends a Markdown report to the job summary, and exposes the verdict and JSON path as outputs. The included workflow uses read-only contents: read permissions. External CI should install proofrail from PyPI and invoke its CLI directly.

Core concepts

Proofrail separates five statements that are often conflated:

  1. Attempted — an agent tried an action.
  2. Executed — a command completed.
  3. Artifact changed — a final artifact has a measurable change.
  4. Claim supported — the artifact directly supports a completion claim.
  5. Outcome verified — relevant evidence demonstrates the requested behavior.

See the acceptance model for the full model.

What Proofrail proves

For supported inputs, Proofrail can deterministically inspect an exact local Git range, draft path-level claims, check claim freshness, prepare a case, evaluate artifact-level evidence, and apply a bounded acceptance policy. It can show that a final committed artifact matches or conflicts with a path-level claim.

What Proofrail does not prove

Proofrail does not authenticate authorship or timestamps, prove deployment state, browser rendering, external-system behavior, human intent, or that an execution command tested the claimed outcome. It does not run recorded commands, contact external services, or turn a green check into evidence by itself.

Project status

Proofrail is a Public alpha distributed on PyPI for local, read-only evaluation. It is not a hosted platform, a universal behavioral verifier, or a supported general-availability product. See project status for the current capabilities and limitations.

Pilot guidance

Use a controlled pilot to test whether Proofrail improves review quality in your environment. The pilot guide defines a three-repository evaluation and measurable future targets.

Development and contributing

Read the product doctrine, acceptance model, and agent instructions. The autonomous engineering process uses explicit step contracts and deterministic preflight before a bounded change is committed.

Repository orientation

  • src/proofrail_verifier/ — deterministic verifier, claim, policy, and Git-range code.
  • tests/fixtures/ — preserved regression fixtures.
  • tests/ — deterministic regression and integration coverage.
  • .github/actions/proofrail-verify/ — local GitHub Actions integration.
  • contracts/ — exact step contracts for deterministic preflight.

Project details


Download files

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

Source Distribution

proofrail-0.1.0a2.tar.gz (40.1 kB view details)

Uploaded Source

Built Distribution

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

proofrail-0.1.0a2-py3-none-any.whl (53.4 kB view details)

Uploaded Python 3

File details

Details for the file proofrail-0.1.0a2.tar.gz.

File metadata

  • Download URL: proofrail-0.1.0a2.tar.gz
  • Upload date:
  • Size: 40.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for proofrail-0.1.0a2.tar.gz
Algorithm Hash digest
SHA256 ee4761762971fe8da9ca945b6246fa0be6ef49272859b2076b605e20f1ce4e2d
MD5 b2a9b673907af0116f3a2ddb59ff8561
BLAKE2b-256 ff2475dfe9c847a037573a484ce9ed8e321c6ab5e24cdc3d9c396f88756d398b

See more details on using hashes here.

Provenance

The following attestation bundles were made for proofrail-0.1.0a2.tar.gz:

Publisher: publish-pypi.yml on DrDeese/Proofrail

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file proofrail-0.1.0a2-py3-none-any.whl.

File metadata

  • Download URL: proofrail-0.1.0a2-py3-none-any.whl
  • Upload date:
  • Size: 53.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for proofrail-0.1.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 17fd85568b4db2c7e1f8b3dee484394116aaa5c811583aa44b8ad49ea9d84a2b
MD5 41e3a767e04e9cbf9dd7fc34b5073d03
BLAKE2b-256 861c46b2d0a6fb9cd15dd9695a536c1afe23ae27674189d02d411e7365ce2e69

See more details on using hashes here.

Provenance

The following attestation bundles were made for proofrail-0.1.0a2-py3-none-any.whl:

Publisher: publish-pypi.yml on DrDeese/Proofrail

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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