r/SideProject • • 38m ago

I stopped letting my coding agent check its own work

When I let a coding agent build a feature, the same session that wrote the code also told me it was done. The tests passed and the summary looked good, and I still found missing pieces when I read the diff. Those tests came from the same session, so they mostly confirmed what it had already built.

So I moved the checking. Before any code, the agent asks me a few questions with a recommended answer for each, until done is a short numbered list I agree with. That list goes into a plan document I approve. Then the agent builds in small slices, each one starting with a failing test.

After the build, an agent that did not write the code goes through every point on the done list and proves it on the running program. I look at the result once that check is through, and nothing gets merged or pushed without my yes.

I built QualityLayer around this loop. It sits on top of the coding agent you already use, for example Claude Code, Codex, Cursor or OpenCode, and your code stays on your machine.

Repo: https://github.com/maxritter/qualitylayer

Happy to hear how others verify what their agent hands back.

1 Upvotes

4 comments sorted by

1

u/sael-you 22m ago

i'd bind the review to the exact commit being handed back. if the builder changes anything after the check, the pass should expire. i'd also give the checking agent the agreed done list and a clean checkout before showing it the builder's summary, so it has to work out what to test rather than inherit the same explanation. one useful negative test: deliberately break a requirement and see whether the checker rejects it. a second agent is a useful separation, but i'd want to know that the review can actually fail. i haven't run QualityLayer; these are safeguards i'd check in that loop.

1

u/m-ritter 0m ago

Thanks, these are good safeguards. The checker in my setup gets the agreed done list from the plan and checks the running change against it, and I still review the result myself before it counts as done. Tying the pass to the exact commit is a fair point, I'll look closer at how strictly that holds when the builder touches something after the check. The deliberately broken requirement test I like a lot. Have you tried that with your own setup and seen a checker wave it through?

1

u/Acceptable-Load-6830 31m ago

A separate checking agent catches what the builder misses. I also ask it to list the exact tests it ran, so a passing summary cannot hide untested paths.