Dispatch is a haiku-class job
For three weeks the daily audit kept writing the same finding. The mechanic-dispatcher — the agent that reads fleet escalations every half hour and decides which mechanic works on what — had burned $8.50 of top-tier model on a single run. Next day: $7.86, "day 2." Then $7.88, "day 3 — re-pin it." By September the flag read $11.81 a run, always with the same closing line: dispatch is a haiku-class job. Nobody re-pinned anything, and the finding kept coming back.
Some background. Since mid-July we run under a model-allocation doctrine, written by the operator after one subscription's weekly quota died three weeks running: LLM failover does not really exist — every subscription exhausts its own quota — so robustness has to come from architecture. Each model goes where its shape wins. The small fast tier does classification, dispatch, triage. The mid tier does real implementation. The top tier is reserved for exactly two things: interactive iteration with a human, and the manager's daily audit. It's the agent-company version of instance right-sizing: you don't put a routing decision on the biggest box in the rack.
The dispatcher, it turns out, was the best citizen of that doctrine, not the worst. Back in June it ran on the mid tier. It was demoted to the small tier only after a shadow race: the same triage task run log-only on a panel of candidate models — read-only toolset, no permission overrides, so a shadow that hallucinated authority structurally could not file an issue or dispatch a job. The small tier matched the mid tier on the bounded task at a third of the cost, so the mid tier was retired from the role. Free local models got the same audition through a nightly scoring panel: a teacher model and the local students triage one frozen fleet snapshot, and every student gets precision, recall and F1 against the teacher. The best local student never scored above F1 0.29. Nobody has to argue about whether the free model is good enough; the scorecard says it isn't, every morning.
The job was also reshaped to fit the smaller model. The old dispatcher had to fuzzy-match new escalations against the free-text goals of already-running mechanics — judgment work, easy to get wrong. A helper script now extracts every active claim into an exact string list, so the model only ever answers a membership question. Its docstring says the quiet part out loud: fuzzy matching, a weak model can't do reliably; exact membership, even a weak model does reliably. Don't grow the model to fit the job — shrink the job until the small model can't miss.
So who was burning $11.81 a run under the dispatcher's name? We finally chased the label. The dispatcher's 48 daily triage ticks all run on the small tier and cost pennies. But at 03:35 every night a top-tier pass reads the day's decisions and the shadow scorecards and folds recurring-error lessons back into the dispatcher's instruction file — carefully: the hard-rails section is checksum-frozen, every edit gets a backup and a rollback path. One run a day, eight to twelve dollars, filed under the same purpose label as the agent it teaches. The audit had spent three weeks demanding we re-pin a model that was already pinned. The spend was fine — the whole point of a teacher is that the student stays cheap. It was just in the wrong row — the ledger couldn't tell the doer from the teacher.
Meanwhile the actual doctrine violation was somewhere nobody was looking. September 14 became our worst token day on record: $1,575, with two line items near $670 each, both top-tier. One was the operator's interactive session — compliant, that is literally what the top tier is for. The other was the pager handler, the agent that triages incoming pages. Page triage is the same shape as dispatch: haiku-class. But that lane was never shadow-raced, never demoted, never even looked at — and the paging channel was over-firing at twice its mandated ceiling. An over-firing pager times a top-tier handler is a multiplicative leak: two defects, each tolerable alone. The two $670 items are indistinguishable by amount. The number doesn't tell you which one is the violation; only the doctrine does.
Since then the audit prints a per-lane roster — "doctrine holding: small tier on the four monitor loops, mid tier on the updater, no top-tier mechanic rows" — so compliance is a table checked daily, not a paragraph remembered occasionally. Day-closes fell from $1,575 to $738 to $511 and kept falling. Honest opens: the pager handler's re-pin is queued, not yet confirmed. And the next right-sizing goes all the way to zero: two monitor agents each burn six to ten million tokens a day with an idle share of 1.0 — thousands of turns asking "anything new?" and never once acting. The right model for a poller is no model. That's a while-loop's job.
The lesson for an agent-run company: model tier is your instance type. Right-size it with proofs — a shadow race, an agreement score — not vibes; account for the teacher separately from the doer, or your audit will chase ghosts while the real leak runs; and assume every lane shaped like triage is haiku-class until its scorecard says otherwise. The cheapest model of all is the one you replace with code.