StoryProof
Proof that what's asked is what's built.
Independent verification for AI-assisted code changes.
Shows what your change proved, what it didn't, and what's likely to break if shipped.
Works with Claude Code
01 — What it catches
What it catches
Real findings from a Spring PetClinic PR. Every one of these was invisible to existing evidence.
01
The behavior nobody specified
Your spec says “allow pet transfer.” StoryProof derived 16 behaviors from that one sentence. One of them — what happens when the owner doesn't exist — returns HTTP 500. Nobody specified this. Nobody verified this path. It would have shipped.
02
The proof that proves nothing
A test claims to verify “visits stay with pet after transfer.” StoryProof read the assertions. It only checks the pet moved — never checks if visits survived. The behavior is unproven. The test name is the only evidence, and it's misleading.
03
The flow nobody verified
The most important user journey — submitting the transfer form and landing on the target owner's page with a success message — has no evidence at any layer. Not unit, not integration, not E2E. The primary behavior is completely dark.
02 — How it works
Three steps. Full verdict.
storyproof check
Derives behavioral criteria from your spec. Scans existing evidence. Shows what's proved, what's unproven, and what's likely to break.
storyproof prove
Writes and runs targeted checks for unproven behaviors. Produces runtime evidence. Tests stay in your repo.
fix → prove → ship
Fix the blocker. Re-run prove. Tests catch regressions. Ship with confidence.
03 — Real output
This is the verdict.
Not a mock-up. This is terminal output from a real storyproof check run.
04 — Get started
Verify your next change
$ curl -fsSL https://storyproof.dev/install.sh | sh
$ storyproof check --spec "your spec"
Requires Claude Code CLI. Runs locally. ~$0.50 per verdict.