Proof · a record of what your software promises

Prove your software does what you promised.

Proof writes down what your code promises, in words your engineers sign, and holds every commit to them.We find where your code breaks its promises, and hand you the failing test.

public on buger/jsonparser123 promises signed7 breaks fixed upstream1 miss published

example · a payments service promisecodetestknown issue affects implemented by implemented by implemented by implemented by verified by verified by verified by verified by verified by SYS-REQ-011 · SIGNED amounts are stored in minor units SYS-REQ-012 · SIGNED a refund never exceeds the captured amount SYS-REQ-018 · SIGNED an idempotency key replays the same response SYS-REQ-023 · SIGNED a webhook is retried with backoff for 24 hours SYS-REQ-031 · SIGNED a declined card is never charged twice code · go refund.go commit code · go idempotency.go code · go webhook.go code · go charge.go test · go TestAmountsInMinorUnits test · go TestRefundNeverExceedsCapture test · go TestIdempotentReplay test · go TestWebhookRetryBackoff test · go TestDeclinedCardNotRecharged --- FAIL: TestRefundNeverExceedsCapture KI-07 · OPEN refund exceeded captured amount validated by a person register example · payments affects SYS-REQ-011 · SIGNED amounts are stored in minor units SYS-REQ-012 · SIGNED a refund never exceeds the captured amount SYS-REQ-018 · SIGNED an idempotency key replays the same response code · go refund.go commit test · go TestAmountsIn MinorUnits test · go TestRefundNever ExceedsCapture test · go TestIdempotent Replay KI-07 · OPEN refund exceeded captured amount validated by a person register

A commit touches refund.go. The map shows the promises it carries.

Public receipt

What it found on a real repository.

buger/jsonparser: a Go JSON parser, 5,600 stars, ten years old. Everything below is public and re-runnable.

portal.reqproof.com/projects/jsonparser
The live map of jsonparser: a known-issue card on the left, the three requirement cards it affects in the middle, and the test files and code files that verify and implement them on the right, joined by labelled edges.
The live map of jsonparser, centred on one known issue: the promise it breaks, the code that implements it, the tests that check it.
123

promises signed by the maintainer

7

breaks fixed upstream, each with a test that failed on main

1

miss published, MISS-001

KI-3: Set() on an array-index path under an object parent could drop a sibling value. The promise said it replaces one value and touches nothing else. The test that failed on main is in the register, and it stays.

The finding

A promise breaks. You get the test.

A finding is a test that fails on your main, with the promise it breaks attached. You run it, watch it fail, fix, watch it pass.

01 · said, in plain words Set() replaces one value, nothing else. the promise, in one sentence 02 · signed A requirement, signed by the maintainer. the promise now exists outside the code 03 · broken A test that fails on main. set_spec_test.go · Reproduces: KI-3 a person validates it before it reaches you 04 · fixed upstream A pull request, merged. the same test passes on the merge commit 05 · the test stays In the suite, on every commit after. removing it fails the gate

Fig. 01 · One finding, start to finish. The test stays in your suite, so this class of break cannot come back without the gate saying so.

What you keep

What you walk away with.

Four things, in your repo, under your licence.

01

The promises, written down and signed

Every promise your component makes, recovered from the code and signed by your engineers.

02

A register of known breaks

Each with a test that fails on current main, validated by a person before you see it.

03

A map you can ask

Touch a function or a promise and see what else moves. Your engineers, your CI and your agents ask the same map.

04

A gate on every commit

The map is asked on every change. A broken promise blocks the merge.

If we stepped away tomorrow, nothing you rely on stops.

The map

Touch one function. See what moves.

Change is safe when you can see what a change touches before you merge it.

the promise a refund never exceeds the captured amount written in a design doc nothing checks it this component every service on that path every customer at once blast radius your ci green every test you already have, passing the promise a refund never exceeds the captured amount written in a design doc nothing checks it this component every service on that path every customer at once your ci green every test you already have, passing

Fig. 02 · The blast radius of one unwritten promise. Example. The promise lives in prose, so no check can fail on it, and the failure surfaces where your customers are.

How the map works →

Accountability

Who checks the checker.

Machines check everything, every time. People decide what a machine must not decide alone. That line is written down, and you can move it.

Agents

Do the crunching: every check, every commit, at a volume no person could reach.

A person

Validates every finding before it reaches you, and signs the promises, the bar, and our misses.

Your engineers

Sign the promises. Anything an agent drafts is marked as a draft, and an agent cannot approve its own requirement.

1 · counted against code ci green every line your tests touch, executed 2 · counted against the promises ci green covered by a test that can fail promises no test can fail on 1 · counted against code ci green every line your tests touch, executed 2 · counted against the promises ci green a test that can fail promises no test can fail on

Fig. 03 · CI is green in both pictures. The second one only exists once the promises are written down.

Who it is for

Who feels this first.

The CTO who signs releases

“We ship ten times faster now. Review did not get ten times faster. I sign off on releases I cannot personally vouch for.”

What Proof gives you: a map and a gate you keep. You sign a release that was already held to its promises.

The engineer sent to check us

“I open the register looking for slop.”

What Proof gives you: a live map, a published miss, tests that fail on main. Re-run them, then tell your CTO.

The platform owner

“One bug in routing, auth or billing hits every customer at once.”

What Proof gives you: the shared path as signed promises. A break is a failing test on that path.

The engineer who ships with agents

“My agents write most of the code now. I need something they cannot drift from.”

What Proof gives you: a written record of what the code promises. Agents can read it and cannot approve it on their own.

Start

Start with one component.

Pick the one you would least like to be asked about. We onboard it with your engineers, then the map and the gate are yours.

Private early access: a few teams a month, onboarded personally by Leonid. Private code stays private; we countersign your NDA before reading a line.

Leonid Bugaev · founder
signs the bar and the published misses