"A number you wrote down before you built it is the only thing that can tell you you're failing."
Why Write Budgets Down
The 10–40 second disaster happened partly because no one had written down what "fast enough" meant. Without a number, every individual decision looks reasonable — of course cleanup should be smart, of course it should use the good brain — and the total quietly becomes unusable. A latency budget is a commitment made before the temptations arrive. It converts "this feels slow" into "this exceeds the budget by 8 seconds," which is an argument that ends debates instead of starting them.
Firekeeper's Budgets
hotkey -> recording starts under 150 ms (after warm start)
first partial transcript under 1.5 s (normal speech)
final STT, short utterance under 1 s
final STT, 30 s dictation under 3 s (Apple Silicon)
cleanup, ordinary dictation under 2 s (warm local model)
# Each stage owns a number. The sum is the product.
Note that the budgets are per-stage. That matters: a single end-to-end number tells you that you're slow but not where, and a slow stage can hide behind a fast one. Per-stage budgets mean a regression names itself — when cleanup blows past 2 seconds, you don't go hunting through the mic code.
The Benchmark Harness Makes It Real
Budgets you don't measure are wishes. Firekeeper ships a small benchmark CLI that runs recorded clips through each engine and model and prints the transcript plus the latency, so "which is faster" is data instead of vibes. The same discipline applies to cleanup lanes: if you can't measure the per-stage cost on your own machine, you'll rediscover the 40-second bug the next time an innocent-looking reuse creeps in.