Executable evidence contracts

Claims are cheap. Make them executable.

Proofspec turns the important statements in a README, release, product page, or agent completion message into versioned checks with evidence policies, claim dependencies, receipts, and an honest CI gate.

git clone https://github.com/christian140903-sudo/proofspec.git
PROOFSPEC / CLAIM GRAPHRUN 019f…
package-identity · all(2)Package metadata matches the release.2/2 observations satisfied · receipts chained
release-manifest · at_least(2)The manifest records version and test count.direct: verified · dependency: verified
public-release · all(1)The release is visible to everyone.blocked until the registry observation verifies
usefulness-reviewed · infoA human judged the broader usefulness.manual evidence stays unknown
70 / 70automated tests
98.05%line coverage
5report formats
4 + 2 + 1MCP tools · resources · prompt
20 / 22 / 24Node CI matrix ↗

From sentence to gate

A claim graph, not a confidence score.

Each claim states exactly what matters, how much evidence it needs, which earlier claims it depends on, and what its evidence cannot establish.

01 / SPECIFY

Write the narrow claim

Version the statement, severity, evidence policy, tags, limitations, and dependencies in proofspec.json.

02 / OBSERVE

Run bounded checks

Read file, public HTTP, Git, npm, or manual state through Postcondition's constrained verifier surface.

03 / RESOLVE

Evaluate the graph

all, any, and threshold policies resolve direct state. Unverified dependencies block downstream claims.

04 / SHIP

Carry the receipts

Fail CI when required claims need attention, then export reviewer-friendly reports with a hash-chained local ledger.

Evidence policies

Unknown is a result, not an error to hide.

Proofspec computes what the available evidence can establish without converting ambiguity into success.

all

Every check matters.

Any violation fails. If none fail but one remains unknown, the claim remains unknown.

any

One route is enough.

One satisfied observation verifies. Without one, an unresolved route keeps the result unknown.

at_least(n)

Meet a threshold.

Verify at the threshold, stay unknown if unresolved evidence could reach it, and fail only when it cannot.

Live public observation

Do not trust the badge. Ask GitHub.

This check reads the public Actions API for Proofspec's latest CI run. It verifies workflow state only; it does not turn a green build into a broader quality claim.

api.github.com/repos/…/proofspec/actionsREADY
workflownot checked
statusnot checked
conclusionnot checked
commit

One run, five views

Evidence for machines and reviewers.

The same evaluated report becomes a CI input, release artifact, visual dependency map, or code-scanning result.

JSON

Canonical run

Claims, evidence, receipt hashes, graph state, summary, and report digest.

MARKDOWN

Human review

Readable claim tables, limitations, dependencies, and full evidence receipts.

HTML

Standalone audit

Escaped, responsive, no-index report with no hosted service required.

MERMAID

Claim graph

Dependency edges and visible status classes for architecture discussions.

SARIF

Code scanning

Non-verified claims appear in interfaces teams already use for findings.

Precise evidence. Explicit limits.

  • A satisfied verifier proves only its configured observation, not the broadest reading of the prose.
  • No arbitrary shell commands, credential headers, or action execution are part of the verifier surface.
  • Manual evidence remains unknown; an agent's own statement is not external proof.
  • The local receipt chain detects mutation but is not an externally signed transparency log.
  • Root-relative paths are redacted from reports; generated artifacts still need review before publication.

Read the security model → · Read every limitation →

The verification stack

Soul remembers why. Postcondition checks the world. Proofspec audits what you say.

Proofspec composes Postcondition's constrained observations into public claim contracts. Soul supplies durable memory and provenance; Agent Invariants protects runtime conditions. Each component stays narrow enough to inspect.