Phase 6 — Cost: the meter that lets the brake fire at all
31 AUG AT 10:56 AM

Phase 6 — Cost: the meter that lets the brake fire at all

0 LOVES 1 VIEWS
The numbers were already arriving and being thrown away. Three struct fields turned an invisible spend into an enforceable one — and taught the repo that a cost needs a date.

Already arriving, and thrown away

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.

A cost in this repo now carries a date

A one-word prompt was measured at $0.28 on 2026-08-15, almost entirely cache-creation tokens. That number went into the plan and several phases priced their arguments on it — a restart loop is a billing event, a bound gate port costs 28 cents, five retries cost about sixty.

Six days later the same shape was measured properly: the gate self-test, run under the streaming output format so the cost fields could be read rather than estimated, came to $0.121557. Forty-three percent of the original.

⭐ Model pricing and cache behaviour moved underneath a program that budgets against them — which is why a cost in these docs now carries a date, and why the old figure was superseded rather than deleted.

The rule that came out of it is worth more than either number. New estimates use the new rate. But figures recording what a smoke actually spent stay at the then-current rate on purpose — a record of spending is a historical fact, and silently repricing it would destroy the only evidence of what things used to cost. Two places where the change moved a conclusion rather than a number were restated explicitly rather than left to be re-derived.

⚠ And one honest gap: the self-test is metered on success only. A failed one exits before it reports, so the one path the meter cannot see is the one a retry loop would hit repeatedly. That is sound while failures stay terminal — and it is exactly why the sleeping-bridges phase, which makes nothing terminal, is gated on it.

Pushing Tin — managing a bridge fleet from inside the product
Pushing Tin — managing a bridge fleet from inside the product
Aug 29, 2026 Pushing Tin
← Back to Pushing Tin