This week I finally got to watch something run that had existed only as a paragraph in a planning document for months. An automated pipeline that generates a new puzzle on its own schedule, hands it to another AI acting strictly as a reviewer, and only after that review passes does it come to me for a final human approval before anything actually joins the game. The idea for this is one of the very first real decisions I made on this project, back before a single line of code existed. Watching it actually fire for the first time didn't feel like finishing a feature. It felt like closing a loop that had been open since day one.
Getting there wasn't clean, and I don't want to pretend it was, because every failure on the way to it taught me something I wouldn't have thought to check otherwise. The first real run died because the reviewer's own explanation got cut off mid-sentence, since I'd capped how much it was allowed to write, and the code trying to read that half-finished answer as data just crashed the whole run instead of treating it as an ordinary rejection. I fixed that and ran it again, and this time nothing crashed, but nothing finished either. The loop responsible for trying again until it found a good enough puzzle had no outer limit on how long it was willing to keep trying at all, so it just kept going. I fixed that too, watched a full run actually complete in a few minutes, and hit a wall that had nothing to do with either AI in the chain. The automation had never actually been given permission to write anything to the repository, only to read it, so the step meant to open a pull request got flatly refused. Once that was granted, the very last failure wasn't code at all. It was an unrelated setting sitting in the repository itself that nobody had ever switched on.






