The bugs that reach production are the ones your harness was supposed to catch, but couldn't, including the ones sitting in code an agent already fixed and called done.
Across hundreds of real runs, half of all blockers were found in code a model had already fixed and verified.
syncade is open source. It runs on your machine, on accounts you already authenticated, against your repo.
then syncade --install-skill to get /syncade in your harness
Someone writes the code, independent developers review it, and push back for changes until no bugs are found. Only automated, and on demand. Every round spawns fresh CLI subprocesses in throwaway worktrees, because isolation is what makes a reviewer a reviewer instead of the author again, more politely.
Which means it composes. Gate a hook on it, branch a script on it, or just read it. No parsing prose to find out whether it passed.
And that is exactly the thing that is broken. A bug is the behavior nobody thought of, and every check in the loop is built out of what someone thought of, so this is not a coverage gap you close by adding gates. 378 of 407 blockers were raised in rounds where every mechanical check was green.
A second opinion only counts if it was formed independently. Every design decision here exists to keep the reviewers from inheriting the reasoning that produced the code, because a reviewer who has read your session is just the author again, more politely.
Two blockers in round one, on a branch where all 118 tests passed. That is the whole product.
illustrative run · real output is denser · replays automatically
Every number here is measured, and reproducible from the run corpus in .syncade/runs. Nothing below is a projection.
Every class in this table is defined by being the behavior nobody thought of, which is exactly why the test that would catch it was never written.
keyword-derived and overlapping; 130 blockers matched no bucket. Read it as the shape of the corpus, not a partition.
90 priced runs, valued at API rates. A clean single-round review lands nearer $2; the tail is multi-round loops where the producer rewrites code each round.
A preset sets the roster, the thinking budget and the round count in one flag. Underneath it, every actor in the loop is a config key in .syncade/config.toml — and every one of them can be overridden per run from the CLI, without editing a file.
Swap the producer, add a third reviewer, put a different lab in the judge's seat, or hand a slow repo a longer leash.
syncade drives the CLIs you already have authenticated. It makes no network calls of its own.
{{ s.d }}
{{ f.lead }} {{ f.a }}
That is the one thing that ever made any of us better at this. syncade is the whole process, not a second opinion: readers who weren't there, a verdict they don't get to write, and a developer that fixes what they found and comes back for another pass.
Release notes when a version ships, and the numbers behind them. Nothing else.
no spam · unsubscribe in one click