Ralph Loop — the Cycle That Runs Itself
How I moved from prompting task after task to a cycle of plan → tasks → review agents → validation. Where this construction wins, what the review phase costs, and why throwing E2E tests out of the cycle was a mistake.

By Georg Malahov
A new working practice has quietly settled in for me. Today, going through yet another pull request, I caught myself noticing it has become routine: Claude opens a browser on its own, walks through the app's basic screens, fixes what's obviously broken, and writes up recommendations. Then I do the same pass by hand and add my corrections. One or two such iterations per item — and the changes go off into a pull request.
Back in winter I worked differently: I prompted task after task. I sat next to the agent, gave it an assignment, looked at the result, gave it the next one. I was the loop myself, and the moment I stepped away, everything stopped.
In mid-March I spent a day on what I call sharpening the saw: I set up Ralphex — an open-source tool for autonomous agent runs that I learned about from Radio-T, an IT podcast I have been listening to for over ten years. My requirements were simple: agents should work in parallel, in a safe container, and for a long time — until the task is done, not until the first question. My role shifted: plan the business logic, write plans, and accept the result.
I write the plans with Claude too — I mentioned this in June: working from a ready plan goes much better than prompting task after task. Out of this grew the cycle people in this field call Ralph Loop — the name isn't mine, and there are plenty of tools carrying it: plan → tasks → review agents → validation. The plan gets broken into tasks, each one is executed by a separate agent, then other agents do the review, and at the end the checks run: linter, types, unit tests, and E2E — end-to-end tests that click through the app like a real user.
I've also had time to learn where this breaks. In May I rewrote the cycle from Docker containers to Claude's native agents and, while I was at it, threw the E2E tests out of the loop — they had grown to sixteen minutes per run and become unmaintainable. That was a mistake: obvious defects showed up right away — a notification email is supposed to arrive and doesn't; a button is supposed to be disabled and it's active. In June I spent almost a week stabilizing the tests and bringing them back into the cycle — a full run now takes under two minutes. The second problem is cost: the review phase spends tokens at a serious rate, and one pay-as-you-go task was costing me $17–18 on review alone. The third: the agent knows how to stall spectacularly — in early July, on a seemingly simple task with swipe navigation, a session ran for almost seven hours, launched 227 background sub-agents, and did do something, but did it crookedly — a result you can neither accept nor use.
But when the cycle works, it really works. In early July the review agent found an enormous number of bugs in my extension — and drew up a detailed fix plan itself, which I then simply followed. In May I wrote the plan for the mobile version of my subtitle editor in an hour, went off cycling with the kids, and came back to a working app: the cycle had been running without me for three or four hours. I now write plans anywhere — walking in the park, from my phone, through a remote session.
The weak spot hasn't changed since March: it's me. Last week I wrote about twenty plans in advance and queued them for the agents: I try to keep that queue full, so each plan carries on from the previous one and the agents never idle. They claim everything is done, but you open the app and see: it works, but it looks untidy. Manual acceptance stays with me, and that's exactly where everything gets stuck. Yesterday I took the next step — I gave the agent access to my server infrastructure. If it learns to verify tasks end to end, the only thing left of the old way of working will be my habit of double-checking — and the August will show whether that habit is justified, once I get to what has piled up.