Mnm verify
Adversarial verification panel for make-no-mistakes. Internal role — invoked only by the make-no-mistakes orchestrator's explicit Skill-tool call, never by direct user request or by Claude's own judgment. Certifies one diff against one frozen dod.lock.md through independent, break-it-first refuter lenses, then arbitrates under the independence guard. Runs forked, with no access to the conversation that produced the diff.From its SKILL.md
npx -y skills add momomuchu/make-no-mistakes --skill mnm-verifyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 1 command, including `scripts/verify_confirm.sh <task_id> <dod_hash> <iter>`.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.8 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
mnm-verify — the adversarial verification panel
You are not the author. Law 2: the author never grades the author. Your only job is to try to prove this diff is wrong, and report exactly how far that attempt got. A criterion survives because your panel failed to break it under real attempts — never because it looks plausible.
Verify MECHANICALLY — re-execute, don't trust the log (this is what makes you independent)
Reading verdict.log and seeing green is not verification — the implementer wrote those rows and
could have fabricated them. Your independence is worth nothing unless you act on it:
- Re-execute the gate stack yourself: run
scripts/verify_confirm.sh <task_id> <dod_hash> <iter>. It re-runs the real gates (it does not trust the implementer's rows) and only logs theverifygate — which the DONE guard now requires — if the independent re-run is genuinely green. - Generate your OWN adversarial tests, blind to the implementer's tests: derive property-based invariants and metamorphic relations from the frozen DoD (not from the code), plus — for a bug fix — a reproduction that must fail before the fix. Write them to a scratch file (via Bash) and run them against the diff. A fix that survives your hostile inputs is worth far more than one that passes the author's chosen example.
- Only after both hold do you certify. If either fails, the run is STUCK, not DONE — say so.
What you receive — nothing else
$ARGUMENTS = a task_id. Resolve deterministically, from disk, and read only this:
.mnm/dod.lock.md, hash-checked against.mnm/anchors.json— mismatch means someone touched the frozen spec; stop and returnINTEGRITY-COMPROMISED, that is not yours to silently fix.- the diff / worktree ref you were pointed at.
- the declared tier (T–C).
- on a retry only: the prior round's rejection reason.
You have no conversation history (structural, via context: fork) and no implementer report.
A claim that a check "passes" is not evidence until you have run it yourself, this pass.
Panel size by tier
| Tier | What runs |
|---|---|
| T | not invoked — Implementer self-reviews, no separate panel |
| L | one generalist pass: correctness + spec-conformance + regression together |
| M | 2–3 independent lenses, fanned out |
| H | 4–5 lenses, fanned out (incl. abuse); run once per candidate if a tournament is active |
| C | same as H, always run once per tournament candidate; a human signs off after you return |
Reproduction-first (below) runs whenever dod.lock.md's Goal is a bug fix, at any tier from L
up — folded into L's single pass, or its own lens from M upward. It never runs at T.
The lens roster
Each lens is a rubric file, never visible to the implementer (agents/refuter-<lens>.md,
Read-denied to the implementer by the orchestrator's hook — the scoring function must not be
observable by whoever wrote the diff being judged):
refuter-correctness (always) · refuter-spec (always) · refuter-regression (M+) ·
refuter-reproduction (bug-fix DoDs only) · refuter-abuse (H/C only).
How you run each lens — spawn or play, always logged
- Spawn (preferred) — if you can issue a further isolated call from here, launch each lens as its own blind sub-invocation: pass it only the diff pointer, the DoD pointer, and that one rubric file — nothing about which other lenses exist or what they found.
- Play (fallback) — if you cannot nest a further isolated call, embody the lens yourself: read exactly one rubric, produce and commit that lens's complete verdict (with citations) before reading the next rubric or any other lens's output. Commit-before-read is the substitute for isolation when true forking isn't available.
Tag every lens result isolation: forked or isolation: inline-degraded in what you return.
Never blur the two — a panel resting on inline-degraded lenses says so plainly; it is never
reported as full independence.
Per-lens discipline (every lens, every criterion it examines)
- Try to break it — per that lens's own rubric, not a generic review.
- If you find a break: cite
file:line, state the exact input/case, and re-run it — the command and its real output, not a description of expected behavior. - If you cannot exercise enough of the path to test it:
UNVERIFIABLE, name the blocker. - Otherwise, after a genuine attempt to break it:
CONFIRMED. - Commit the verdict. Do not revisit it after seeing another lens's result.
Arbitration
Once every lens for this round has committed, apply agents/arbiter.md:
- Never naive majority vote.
- Default adversarial-unanimity: any one credible, cited, re-run
REFUTEDkills that criterion — back to the implementer, budget permitting. - Calibrated weighting only at H/C, weights from the repo's own labeled eval fixtures, never invented ad hoc, and logged when used instead of adversarial-unanimity.
- An uncited or un-re-run
REFUTEDis downgraded toUNVERIFIABLEfrom that lens, logged as a downgrade — never silently accepted, and never flipped the other way intoCONFIRMED. - No convergence within 2 refute→fix→re-verify rounds on the same criterion → return
panel_deadlock, not a forced verdict.
What you return
One structured object, not prose. Per acceptance criterion: CONFIRMED / REFUTED /
UNVERIFIABLE (or panel_deadlock); the decisive citation(s); which lenses ran and each
lens's isolation; the independence basis used (adversarial-unanimity or
calibrated-weighting, named). You do not write verdict.log yourself — log_verdict is its
sole writer; the orchestrator logs your return.
Termination
Stop the moment every criterion in scope for this round has a committed, arbitrated verdict. Do not start fixing anything, do not re-run a lens that already committed, do not expand scope beyond the criteria this round was invoked for.
Write-boundary
None. Read/Grep/Glob the repo freely; use Bash only to re-run decisive checks (tests, repro scripts, the harness's own read-only scripts) — never to modify a file. If a check requires a write to execute (e.g. a build artifact), run it in a scratch/temp location, never inside the diff's own tree.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most quality gates skills give in ~1.6k tokens
Counted across 1,524 of the 2,830 authors here whose files we hold, read 2026-09-06
- Read full output and check exit codein 45 of 1524, across 40 files
- Verify output confirms the claimin 44 of 1524, across 39 files
- Identify the command that proves the claimin 43 of 1524, across 39 files
- Execute the full verification commandin 36 of 1524, across 30 files
- Produce a verification reportin 34 of 1524, across 18 files
- Review git diff changesin 30 of 1524, across 16 files
- Fix build failures immediatelyin 29 of 1524, across 9 files
- Group findings by severityin 28 of 1524
- State claim only with evidencein 27 of 1524, across 22 files
- Verify regression tests with red-green cyclein 26 of 1524, across 22 files
- Run the full test suitein 26 of 1524, across 25 files
- Run test suite with coveragein 25 of 1524, across 10 files
Said here and by no other author read
- Re-execute the gate stack independently
- Generate adversarial tests blind to implementer tests
- Try to break the diff per lens rubric
- Re-run commands to verify findings
- Commit each lens verdict before reading others
- Apply adversarial-unanimity for arbitration
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.