Your checks, when the agent stops.
Prism runs your typecheck, lint and the tests the change reaches. The receipt gives one verdict, and its lens checks flag changed code no test covers and callers the change left behind.
Prism receipt: changed 1 file, 5 dependents, 2 tests reach it — NO-SHIP
Proven 2 scoped test files · typecheck ✓
Failed test ✗ Failed Tests 1
Your own checks, scoped to the change.
Prism never invents a command. It reads your package.json and runs what is there. A failure counts only when this change caused it.
Your typecheck
The first of typecheck, types or check:types in your package.json.
Your lint
The first of lint, lint:check or oxlint.
The tests that reach it
Only the test files the change reaches, with vitest, jest or bun. Otherwise your own test script, run in full.
One character, caught.
The agent wrote + where it meant *. The types still line up, so the typecheck passes. The test that reaches computeTotals fails, and the receipt says NO-SHIP.
Lenses add their checks.
Every receipt also runs the lens checks on the change. Here the tests pass, but the QA lens finds two callers the change did not update.
Prism receipt: changed 1 file, 5 dependents, 2 tests reach it — SHIP
Proven 2 scoped test files · typecheck ✓ · test ✓
Finding src/billing/totals.ts — dependents_not_in_diff: src/billing/totals.ts changes computeTotals; not edited: src/billing/credit-note.ts, src/billing/invoice.ts → Fix this before shipping. (high risk)
Read a receipt in four lines.
One word first: SHIP, NOT PROVEN or NO-SHIP.
Why, in a few words. NOT PROVEN always names one of nine reasons.
How many files changed, what depends on them, which tests reach them, and what passed.
For NOT PROVEN, the quickest command that would prove the change.
Three verdicts.
The checks this change reaches pass.
Typecheck, lint and the tests that reach the change all passed.
Next: Commit and push.Something is missing, and Prism says what.
No test reaches a file, a check timed out, or dependencies are missing.
Next: Run the Prove it command, or add the missing test.A check this change broke.
A test, the lint or the typecheck failed because of this change, or it touched an off-limits path. Checks that were already failing are kept apart.
Next: Fix it before you commit. Your agent sees the same receipt.Check the branch, too.
Where hooks are available, the receipt prints when the agent stops. Otherwise the rule asks the agent to call receipt before it says it is done; prism install turns that tool on. Before a push, prism review --fail-on high exits 1 on a risky branch, and prism receipts show 1 --as markdown gives text for the pull request.
Prism receipt: changed 1 file, 5 dependents, 2 tests reach it — SHIP
Proven 2 scoped test files · typecheck ✓ · test ✓
Nine reasons for NOT PROVEN
Every NOT PROVEN names one, so you know what to do next.
| Reason | Means |
|---|---|
untested | A changed file has no test reaching it. |
no_node_modules | Tests reach it, but dependencies are not installed. |
unknown_runner | Tests reach it, but no known runner could run them. |
skipped_offline | Checks were not asked for. |
still_running | Checks were still running; ask again and the receipt shows them. |
timeout | A check ran past its time limit. |
already_failing | Every check that reaches it was failing before this session. |
unsupported_language | Only files in languages Prism can’t check yet changed. |
superseded | A newer change replaced this one before its checks finished. |
no_session | No session start was recorded, so the change set was never established. |
Try it in your repo.
Install Prism, then connect every agent on this machine. Open the agent again.