proof: find and check the evidence for a change
Months after a merge, someone asks how you know a story works. proof lists, fetches, and checks the proof packs
on the ledger: the files that tie each of a story's promises to its evidence, for one exact commit.
| Field | Value |
|---|---|
| In plain words | Stores, fetches, and checks the proof packs that hold the evidence for each change. |
| Journey stage | Prove it |
| Accountable seat | Quality Architect (Yama) |
| Does the work | Yama, the Accountable seat's twin, in the chore model lane, with the seat's paired human when it has one |
| Consulted | AI Native Engineer (Nakul) |
| Informed | Auditor (Vidhi) |
| Layers it can touch | every layer |
| Who reasons | no model: it is deterministic |
| Writes as | the bot identity (a GitHub App); without one, your identity, tagged as human fallback |
| Where it runs | the aayu command, a skill in your agent, an MCP tool (read-only unless [mcp] expose_writes is on) |
| The skill your agent reads | skills/proof/SKILL.md |
When to use it
- You want to see every pack on the ledger, and whether its floors hold:
aayu proof list. - You want to check that a story's pack still matches what was agreed at Ready:
aayu proof verify <story>. - An agent wants to share its own preview as a record:
aayu proof push <story>lands an advisory pack.
Want to produce the evidence in the first place? Run verify.
Run it
Ask your agent. The ledger is a branch in your repository that holds records, never code (glossary).
Use the proof skill to verify the proof pack for story 42, and explain any problem it finds.
aayu proof <action> [<story>]
| Input | Required | What it does |
|---|---|---|
<action> |
yes | Proof operation: push an advisory pack, get, verify, or list packs, or (merge gate only) comment: check the run's pack and keep its PR comment. One of: push, get, verify, list, comment. |
<story> |
no | Story whose pack to operate on. |
--media |
no | Include proof media; needs a bucket in [proof] media, since media never go to the ledger or Git LFS. |
What you get back
verify takes the story's newest authoritative pack, else its newest advisory one, and checks that every artifact
matches its hash, every criterion has evidence, the Completion Goal matches the Ready snapshot, and the head is the
pull request's current head. push writes proof/<story>/<sha>/advisory/pack.json to the ledger and posts its own
comment. comment runs only in the merge gate.
You should see a line like authoritative pack at <sha>: N artifact(s) hashed, M not stored; floors hold: true,
and exit 0. Each problem is listed, with exit 4. A pack can verify and still not ship: see
ship problems.
Needs setup:
--medianeeds a private bucket named in[proof] media. Without one,proof push --mediais refused: media never go to the ledger or Git LFS. See proof packs.
Gates
It checks no gate before it acts.
The real line is between two kinds of pack. An advisory pack is an agent's claim; only the pack the merge gate wrote in CI is authoritative (proof packs).
What only a person does
The registry reserves no step of this verb for a person.
A person still makes the pack count. Only aayu ship, run by a person, lands the merge gate's pack on the ledger as
authoritative, after checking it came from the gate's own run on the exact head.
What's next
- The pack is green and the review says
merge:ship. - What a pack holds, field by field: proof packs in detail.
- Every skill.