Build in public ~5 min read
Knowing when to restart
We spent 72 hours patching our AI agent fleet. 133 commits. Most of them fixing the symptoms of the previous fix.
Chapter TOC 4 chapters
Three opinions, same brief
We spent 72 hours patching our AI agent fleet. 133 commits. Most of them fixing the symptoms of the previous fix.
I know that pattern. You fix a bug. The fix exposes another one. You patch that. Now something else is slightly off. The system still runs. The calendar still fills. So you keep going. The commits look like progress if you only count them. They look like interest payments if you look at what they actually change.
I did the thing I tell clients to do and hate doing myself: I stopped.
Not one opinion. Three. I sent the same brief to three different AI models. Same system. Same ask. No cross-talk between them. I wanted them to tear the thing apart independently, not negotiate a polite middle ground.
One model can be wrong in a confident way. Three models, same brief, no shared context after the handoff. If they all land in the same place, I take that more seriously than my own desire to keep patching because patching feels like work.
They came back unanimous: stop patching.
The foundation is the problem, not the bugs sitting on top of it. Every fix was landing on a moving target. So every fix quietly created the next one. That is not a streak of bad luck. That is architecture telling you it is done being patched. You can keep painting. The wall is still moving underneath the paint.
"Still technically works" is the trap
That is a hard verdict to accept when the thing still technically works.
And "still technically works" is exactly how you bleed weeks. The demos still go through. The agents still produce output. Nothing is on fire in the way that makes you cancel the day. You just keep spending 72-hour blocks and 133 commits on a surface that will not hold paint.
The calendar fills with "fixes." The underlying shape does not change. From the outside it can even look healthy: activity, commits, iterations. From the inside it is the same interest cycle with a different ticket number.
I have watched this from the other side, sitting with clients who did not want to hear it either. Restarting feels like admitting the first version was worthless. It is not. It is refusing to keep paying interest on a structure that cannot stop generating interest.
V1 did its job. V1 also told us, through 133 commits of symptom-chasing, that its foundation is not the place to keep investing.
Rebuild without going dark
The call: rebuild the core while keeping the old one running.
No big-bang rewrite. No going dark. No heroic weekend where you unplug everything and hope the new stack boots clean on Monday. That fantasy is how rewrites become outages. We are not taking that bet.
Retire the old system one proven piece at a time. Prove a piece. Cut traffic to it. Leave the rest alone until the next piece is ready. If a piece is not ready, the old one stays. That is the whole design. Boring on purpose. Reversible on purpose.
The old fleet stays up. The new core grows underneath and beside it, not in a vacuum that only works if everything lands on the same day. It is slower to say out loud than "we rewrote it." It is faster than another 133 commits on top of a foundation three models already called broken.
Speed that only exists in the commit log is not speed. It is motion.
What restarting actually means
Restarting is not a branding exercise. It is not a post about courage. It is a cost decision.
You can keep patching. You will keep producing commits. You will keep shipping "fixes." The system will keep technically working. And the interest will keep compounding. Every fix still lands on a moving target. Every fix still seeds the next one.
Or you stop, take the verdict, and rebuild the core while the old one still serves. One proven piece at a time. No big bang. No going dark. No claim that v1 was worthless — only that paying more interest on it is a choice, and we are done making that choice.
I did not enjoy the audit. I enjoy less the idea of another 72 hours and another pile of commits that only paper over the same foundation.
So we rebuild. The old fleet stays up until each replacement is proven. That is the restart. Not a funeral for v1. Just a refusal to keep paying interest on it.