Lalit Maganti wanted a proper SQLite formatter, linter, and language server. He had wanted one for eight years. In January 2026, he started building it with AI assistance and finished in three months, shipping syntaqlite with editor extensions, packaging across multiple ecosystems, and comprehensive documentation. The project is real, polished, and useful. But the most interesting part of his account is not what succeeded. It is the month he lost.
The first month was what Maganti calls “vibe-coding”: letting the AI generate code, accepting what looked plausible, and pushing forward. The code was technically correct. Tests passed. And then the whole thing collapsed under its own weight. Without a maintained understanding of the codebase’s architectural decisions and the implicit constraints that accumulated over time, the AI had no way to keep things consistent. A complete rewrite followed. The second approach was tighter: Maganti stayed in control of all design decisions and used AI purely for implementation. That is the version that shipped.
AI performance correlates almost directly with how objectively you can verify correctness. His best result was generating over 400 SQLite grammar rules, a purely mechanical task where correctness is immediately checkable. His worst result was designing a pleasant API, where there is no test, no metric, and no way for the model to get signal on whether it is heading in the right direction. The model produced technically functional code that was architecturally incoherent, because it had no way to know what “good” looked like at the design level.
This is not a complaint about AI capability. It is a description of a structural property of the tools. LLMs can verify local consistency, not global coherence. A function that compiles and passes its tests is locally consistent. An API that feels right to use across a large project requires global coherence that only someone who has been living in the codebase can assess. When you outsource design to the model, you are not just losing control of one decision. You are losing the accumulated context that makes the next decision sensible.
If you can write a test for it, or verify it with a type checker, or confirm it with a compiler, AI will do it well and probably faster than you will. If the output requires judgment about something that cannot be reduced to a pass/fail check, you need to own that decision yourself. “AI is an incredible force multiplier for implementation, but it is a dangerous substitute for design” is how Maganti puts it. Three months of evidence backs that up.