An earlier draft of the plan said the budget enforcer would pick a bridge’s spend up “for free”. That was wrong, and checking it was what made this phase exist. Cost events are written in exactly two places, both on the model-adapter path — and a bridge spawns a CLI and never touches an adapter. No events would exist, and the enforcer would have had nothing to enforce against.
The good news is that the numbers were already arriving, and being thrown away. The streaming result event the bridge already parses carries the total cost, a full usage breakdown, and per-model costs with the canonical model id. The struct it unmarshals into simply had no fields for them.
So the phase is honest about its own size: add three fields to a struct we already unmarshal, and write a cost event. Cheap — but explicit work rather than something inherited, which is exactly the distinction the earlier draft blurred.
What it unlocks is out of proportion to its size. Until spend is recorded, the spend brake cannot fire at all, because there is nothing for it to measure. This is the phase that arms it — and it is why a bridge stopped by its own overspend became possible, rather than a bridge stopped by a sibling’s.