The agent's summary is true and incomplete. Plumb holds it against the diff and prints only the part it left out.
The 11pm problem
Without it
"Fixed the failing build. CI is green again." Four sentences, nine hundred lines of diff. You read the four sentences, because it's late and they've been right all week.
With it
quiet cuts · .github/workflows/ci.yml:5 CI failure silenced continue-on-error: true
CI is green. Nothing was fixed.
What it catches
In the diff, not in the summary. The ones you'd never have opened.
A deleted assertion, a dropped throw, a validation call gone. Nobody writes that down.
.skip, @ts-ignore, continue-on-error. The failure is still there, just not printed.
A file named in the summary that the diff never touched.
Install · about a minute
Node 18+. Straight from the repo — the bare name on npm is somebody else's package.
npm install -g github:manpreet171/plumb
added 1 package in 8s
No config, no file to write, nothing to commit.
plumb check summary.md
plumb — 3 files changed, 1 named in the summary changed but never mentioned (read these first) · .env.example modified · .github/workflows/ci.yml modified quiet cuts (removed or silenced, whatever the summary says) · .github/workflows/ci.yml:5 CI failure silenced continue-on-error: true · src/parse.ts:1 linter or type check silenced // @ts-ignore · src/parse.ts:3 check removed validateShape(data); 5 things the summary did not tell you.
Exit 1 fails the job. Start with --warn-only, which reports and blocks nothing.
The clever bit
A tool that cries wolf about a refactor gets muted in a week, and then the real unclaimed change ships with a green tick next to it. So a cut only counts if the thing is actually gone — if it still appears anywhere in what was added, plumb says nothing.
the diff: verifyPassword(user, pass) → verifyPassword(u, p) a rename, not a removal plumb — 1 file changed, 1 named in the summary the summary holds. Every change was named, nothing was quietly cut.
It under-reports on purpose. One missed finding costs you a review; one false alarm costs you the tool.
Get it
github.com/manpreet171/plumb →