catch-report
The product claim is two brains: one does the work, another checks it. sno catch-report puts numbers on that
claim from records already on this machine. It changes nothing.
- Mutual review is every review the
peer-reviewskill recorded: a different model read the work and reported problems.sno catch-report runprints those numbers. - Self-check is an agent finding its own error inside one conversation.
sno catch-report selfreads the agents' own conversations (~/.claude/projects,~/.codex/sessions), picks the moments where an agent reacted to a failing command or test, or admitted a mistake, and asks that agent's own model (claude judges claude conversations, codex judges codex conversations) whether the agent found the error itself or was told. It then prints the two side by side.
Prerequisites: bash 4+, GNU date, find and grep, and jq. self also needs the claude and/or codex command
line, logged in.
Use
- To show the user what the two brains caught, run
sno catch-report brief --since 7d(or12h,30m,30d, or a date). It measures both and prints one page: a headline with the problems the second model caught and the moments in which the agents caught their own mistakes (kept apart, never added together), the second brain's numbers with its biggest catches quoted by title, the agents' own catches in their own words, and how to read the numbers. Tell the user first that the self-check part sends short excerpts of their conversations to their own claude or codex (100 by default, about four minutes, it costs tokens);--limit Nchanges that, and--agent claudeor--agent codexnarrows it.--agent cursorreads Cursor's conversations (~/.cursor/projects/*/agent-transcripts) instead and hascursor-agentjudge them; Cursor transcripts hold no tool output, so only its spoken admissions count there, and no per-message times, so a Cursor conversation updated in the period counts with its whole history. - Hand the page to the user as printed, headline first, in English: do not translate it or re-word it. Keep every number and the plausible range exactly as printed, keep the quotes, and keep the "How to read this" notes. Do not round up, do not add a claim the page does not make, and do not say the findings are "real problems" or whose work was wrong: the records hold no author and most findings are undecided. You may add one sentence on what stands out.
- When the page says the self-check could not be measured, say that; do not report a zero. The self-check count
is an estimate from a sample when there are more moments than
--limit, and only sees errors an agent said out loud within ten steps of a failure or in a known admission phrase (English and Chinese); quiet fixes are not seen. - For the details behind a number:
sno catch-report runprints the review records (reviews started, finished, refused and never finished; per reviewer model the high and medium findings andfix-now; verdicts; the five reviews with the mostfix-now; findings the owner has ruled on), andsno catch-report self --listprints each self-check moment with the model's verdict. Both take--stats FILEand--findings FILEfor records kept elsewhere. The records are~/.local/state/codex-review-stats.jsonland~/.local/state/codex-reviews/findings.jsonl. - To make the ruled column mean something, rule on findings with
review-findings.sh set <id> accepted|rejected|superseded(thepeer-reviewskill); this command never rules on anything.


