
A software factory of three coding-agent seats, separated by what each is allowed to do. The coordinator plans and sequences but never writes code and never decides whether work is correct. The implementer builds one work item at a time and hands off a commit with the exact commands and their real output. The verifier writes its acceptance checks from the specification before it sees any code, checks out each handoff into a clean tree, rebuilds it and re-runs it, and holds a veto no other seat can override. The mandates never mention payments. They describe how seats take work, hand it off and refuse it, and a linter derives its banned vocabulary from the specification itself rather than a hand-written list, so a mandate cannot quietly learn the problem. Point them at a different domain and they still describe a working factory. That was the design goal. For the judged run I dispatched one message and said nothing else. The band produced 57 commits over 24 hours, of which 30 are the implementer's and 26 the verifier's. My single commit is the room log. The verifier rejected work repeatedly and the rejections changed the code; one exchange has the implementer reproducing the verifier's own repro against HEAD to show a blocking finding had already been fixed. Stage 1 claims its stage with 147 of 147 checks passing in an isolated container with no outbound network, verified against a fresh clone rather than my working directory. The folder deliberately fails the stage 2 suite, which is how you can tell it holds stage one's answer and not a later one. An open-weights roster of three different model families was measured first and retired on arithmetic: it built all four stages of the practice track and passed every check, then cost $24.53 on a shared counter. That rehearsal also caught three real defects in the factory itself, including commits silently reverting to my own authorship.
6 Oct 2026

Most nutrition apps ask you to log, weigh and count. Plate One asks one question — what's on your plate? — and answers with one thing to add. You say it out loud; you never type. The conversation is an AssemblyAI Voice Agent running over a single WebSocket: Universal-3 Pro speech-to-text, the LLM, the spoken reply, and turn detection including barge-in. Measured end to end, the median from the moment you stop speaking to the first sound of the answer is 762 ms; turns that call the recommendation engine add its round trip on top, and the app shows that number live. The part we care most about is what the model is not allowed to do. The recommendation comes from a pure deterministic function running on the device — the same rules whether you are online or not — registered as the agent's tools through AssemblyAI's client-side tool calling. The model decides when to ask, what to ask, and how to phrase the answer. It never chooses the food. get_recommendation returns the engine's options, and choose_patch refuses any addition the engine did not just offer, so a hallucinated suggestion cannot reach the screen and cannot get past your dietary preferences. Your plate is then drawn: Gemini writes a sentence, Cloudflare Workers AI draws the picture, and both are built from catalogue ids alone — no words you said ever reach the image model. Pick a different suggestion and the plate redraws with it. There are no accounts and nothing to sign into. The AssemblyAI key never reaches the browser; a Cloudflare Worker mints a short-lived token instead. Nothing you eat is stored on any server — your meals, your history and your preferences stay on your device. If the network is gone or the conversation fails, building a meal by hand still works, offline and free, forever.
30 Sep 2026