Every subagent used to inherit the biggest model at the highest reasoning effort, because nothing said otherwise. Three read-only file-mapping agents burned 9.88M cached tokens proving it. What the measurements found next was the opposite of the obvious answer — and the same instrument that justified the project is the one that ended it.
Claude Code lets you pin a model and a reasoning-effort level per subagent, but only if a definition file exists for that agent. None existed. So every spawned agent silently inherited the orchestrator's settings — the largest model, the highest effort. That is the right setting for building and the wrong one for looking things up, and nothing in the setup could tell the two apart.
Rather than argue about it, measure it. A ledger walked the session transcripts and found that three read-only file-mapping agents had consumed 9.88 million cached-read tokens at the top tier, 54% of all subagent spend that session, to answer questions of the form "which files does this touch." That number is what the routing layer exists to cut, and it is recorded in the policy so the change can be judged against it rather than argued about again.
The rule that came out of it: route by what the work EMITS, not by which endpoint or agent it happens to run in. And when the emit-class is ambiguous, a tie-breaker — route by failure visibility. Route down where a miss surfaces loudly and cheaply before anything is built on it; hold where a miss is silent. That second clause is the interesting one, because it is what makes two lanes with identical task shapes, both read-only investigation, correctly land on opposite tiers.
Then the measurements arrived, and the obvious answer turned out to be backwards. Putting the cheaper model on the retrieval lanes did not save anything. At matched effort, on identical fixtures, nine runs per arm, the expensive model scored the same or better AND finished for fewer tokens — because it needed fewer round trips, and a subagent re-reads its entire context on every single round trip. A low price per token does not make a model cheap per completed task. The effort dial inverted too: a premium effort tier scored worse than the middle one at more than twice the cost, which retired a lane outright, and the cheapest tier failed in one repeatable shape across two model families — it finds every file and then miscounts the totals.
A policy nobody checks is a wish, so two guards close the loop. One fires at session start and compares the live configuration against the policy document itself — not a sidecar copy, because two copies of a truth disagreeing is the exact failure it exists to catch. The other fires when a subagent finishes and records what that lane actually cost. It stores raw token counts and prices them only at read time: an earlier ledger baked a dollar column from a price table that silently mismatched one model, and froze an error it can never recompute.
And then the project closed, on its own evidence. The same ledger that found the 9.88 million showed that every subagent on the machine put together is 8.3% of what it spends; the orchestrating session is the other 91.7%. Routing the subagents perfectly is worth about one percent. The lanes are pinned, the guards are in place, and the work stopped there — because the instrument that told you the project was worth starting is the one honest enough to tell you when it is done.