Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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.

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.0a1.tar.gz (39.5 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.0a1-py3-none-any.whl (52.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: proofrail-0.1.0a1.tar.gz
  • Upload date:
  • Size: 39.5 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.0a1.tar.gz
Algorithm Hash digest
SHA256 1b75519a4281bdb065af6a0b979239015033c6bbdbb958319eb2a0288ad45031
MD5 60fff62febb674694906f311a5dd1400
BLAKE2b-256 454e2cde8d416af18986c406224d3efc95219a11166c4cf08078aec26eef7791

See more details on using hashes here.

Provenance

The following attestation bundles were made for proofrail-0.1.0a1.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.0a1-py3-none-any.whl.

File metadata

  • Download URL: proofrail-0.1.0a1-py3-none-any.whl
  • Upload date:
  • Size: 52.9 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.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 4ca5660e806954d391bc8844c98f17c1e2e9735f2af4910e01406acef6ce9d05
MD5 c01350b0d485a77a131eecdc89da2850
BLAKE2b-256 bc045568f4324181806c9a09e4b4fd851050417a26a89249c64baa5193c2c2cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for proofrail-0.1.0a1-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