Pattern 15

Price the lane before you migrate it

Problem. Token consumption climbs even after efficiency work, because every saving gets reinvested in more agent work — Jevons, applied to your own subscription. At the ceiling, the instinctive fix is structural: migrate the execution tier to cheaper open-weight models, buy a GPU, stand up a second inference stack. Plans of that shape are expensive to be wrong about, and the headline per-token price lists that motivate them hide everything that decides the outcome.

Pattern. Instrument before migrating. Walk the transcripts and split consumption three ways: by lane (orchestrator versus dispatched subagents), by token class (fresh input, cache writes, cache reads, output), and by model. Then pull the configuration levers the measurement exposes, cheapest first, one variable at a time, each as a registered trial with a kill criterion and an instrument the weekly audit reads. In this workspace that meant three moves before any migration: always-on orchestration became opt-in (the evidence for selective triggering over always-on is strong), maximum reasoning effort was scoped to judgment lanes only (output was ~11% of cost, so effort is a quality dial, not a cost lever), and execution dropped one rung within the provider's own ladder as a measured trial. The migration project stays gated on the re-measure: it opens only if spend still exhausts after the cheap levers land.

Why this beats the obvious. The obvious move nearly shipped here. Measurement killed it in an afternoon, three ways. The workload's cost was 88% input-side and ran at a 95% cache-hit rate, with cache reads priced at a tenth of input — a subsidy the migration would silently forfeit, since open-weight endpoints cache weakly or not at all. The local GPU could not serve a single day's execution volume. And the per-subagent provider routing the design assumed did not exist in the harness, so the split would have required an unaudited third-party proxy in front of a live session credential. None of those facts is visible on a price list; all of them came out of a two-second transcript walk. The measured configuration changes captured most of the saving with zero integration risk, and the trial that remained changes one variable behind the existing review gate, with rework marked in the session record so the kill metric cannot be quietly rationalised away.

Cost. The instrument itself, and the honesty it demands: a rework marker convention that only works if every escalation is recorded, a baseline that must be re-verified rather than remembered, and one-variable-at-a-time patience, which means the full ladder takes weeks. The meter that proves the upgrade worked is the same meter that will prove it didn't.

Where it lives: samples/scripts/tier_metrics.py (the lane-split instrument with its four advisory checks and selftest), consumed by the audit's checks-as-code the same way as the Pattern 11 machinery. Pattern 9 is the parent instinct (context as a budget) applied here to the model ladder; Pattern 11 supplies the trial discipline: falsifiable hypothesis, review date, kill criterion.

Seen in 2 of 8 teardowns · Practise: learn/05

All patterns · Markdown source on GitHub