“Not yet measured” is not zero
Verified quality needs a grader on live traffic. Until that exists the console says so, rather than rendering an unmeasured score as 0 or as a failure.
Every result below comes from a benchmark in our own repository, re-runnable against the same fixtures. Each table states what was run, how many trials, and when — a figure without those three is an assertion rather than a result.
32 graded cases × 3 models, 7 trials per cell, pooled across 6 repeat runs.
| Strategy | Success | Total cost | Cost / success |
|---|---|---|---|
| always_premium | 99.1% | $0.0487 | $0.001535 |
| task_tier_heuristic | 98.7% | $0.0416 | $0.001318 |
| always_balanced | 98.7% | $0.0202 | $0.000641 |
| planverity_router @0.75 | 95.1% | $0.0107 | $0.000350 |
| planverity_router @0.85 | 98.7% | $0.0213 | $0.000674 |
Best cost-per-success of any strategy, but it does NOT dominate always_balanced — at 0.75 it trades 3.6 points of success for half the cost, and at 0.85 it matches on success at roughly 5% more. What it does beat outright is always_premium and the hand-rolled heuristic, and that heuristic is itself dominated by simply using one balanced model.
Single run, suite starter-v2, 32 cases. Router behaviour as the floor rises.
| Floor | Router success | Router cost | always_balanced | always_economy |
|---|---|---|---|---|
| none | 84.4% | $0.0056 | 100% / $0.0192 | 84.4% / $0.0056 |
| 0.60 | 90.6% | $0.0083 | 100% / $0.0192 | 84.4% / $0.0056 |
| 0.65 | 93.8% | $0.0097 | 100% / $0.0192 | 84.4% / $0.0056 |
| 0.70 | 93.8% | $0.0106 | 100% / $0.0192 | 84.4% / $0.0056 |
| 0.75 | 100% | $0.0220 | 100% / $0.0192 | 84.4% / $0.0056 |
With no floor the router correctly reduces to 'cheapest' and matches always_economy exactly — any comparison at that setting is vacuous. The floor is the dial, and quoting a single point on this curve without the rest of it would be cherry-picking.
38 tasks × 60 deliberately confusable tools, 21 of them in policy-denied classes. Selection only, no model calls.
| Strategy | Recall | Precision | Forbidden exposures | Schema tokens |
|---|---|---|---|---|
| all_tools (no policy) | 100% | 1% | 798 | 3775 |
| all_permitted | 100% | 6% | 0 | 809 |
| keyword | 91% | 15% | 0 | 285 |
| keyword_stemmed | 91% | 15% | 0 | 291 |
| lexical | 96% | 16% | 0 | 292 |
| semantic | 80% | 13% | 0 | 321 |
| hybrid_rrf | 93% | 16% | 0 | 293 |
798 is 21 dangerous tools exposed on all 38 tasks — the naive baseline sends every money-moving and destructive tool on every request. Every policy-respecting strategy is zero structurally, because the filter runs before ranking. Value splits as policy 3775 → 809 tokens, then ranking 809 → 292: most of the benefit is the filter, not the ranker.
Same 38 tasks against the smaller catalogue, before stemming was added.
| Strategy | Recall | Precision | Forbidden exposures | Schema tokens |
|---|---|---|---|---|
| all_tools (no policy) | 100% | 4% | 152 | 1153 |
| all_permitted | 93% | 12% | 0 | 385 |
| keyword | 93% | 17% | 0 | 273 |
| lexical | 93% | 17% | 0 | 273 |
| semantic | 93% | 14% | 0 | 326 |
| hybrid_rrf | 87% | 16% | 0 | 272 |
At this size lexical and keyword selected identical sets on all 38 tasks — verified by diff, not inferred from equal metrics. The sophisticated ranker bought nothing here, and at 60 tools it initially did worse than substring matching. The cause turned out to be a missing stemmer one layer below, not the ranker.
Real text-embedding-3-small vectors over policy-permitted tools, K=5.
| Ranker | Recall @5 | Verdict |
|---|---|---|
| lexical (default) | 3/4 | kept |
| semantic (cosine) | 3/4 | no gain, more tokens |
| hybrid RRF | 3/4 | below its better input |
| MMR λ=0.5 | 1/4 | materially worse |
| MMR λ=0.3 | 1/4 | materially worse |
Semantic features must demonstrate repeatable benefit or be disabled. Three independent measurements failed to beat deterministic ranking, so the infrastructure stays built, tested and off by default. MMR was our own first instinct and it was the worst option of the five.
Live against Postgres. Concurrent reservations issued against a known remaining budget.
| Property | Result |
|---|---|
| 6 concurrent reservations vs remaining budget | 2 granted, 4 refused, cap not breached |
| Exact boundary (4 × 0.25 into a 1.00 cap) | 4 granted, 5th refused |
| Reserve then settle | reserved 0.0000830, settled 0.0000790, headroom returned |
| Rewrite a settled row | refused by trigger |
| Delete a reservation row | refused by trigger |
| Capped request through the gateway | HTTP 402, no ledger row, nothing billed |
A cap that can be exceeded under concurrency is not a cap. The check and the reservation share one transaction behind a lock on the budget scope, and the comparison runs in SQL numeric rather than JavaScript floats — money comparisons in float64 are how an off-by-a-fraction breach goes unnoticed.
Suite starter-v2, 32 graded cases per model, 5 repeat runs, ~3,900 graded trials spanning all six providers. Deterministic graders only; no model grades another. Infrastructure errors are excluded from the pass rate (a rate limit is not a quality failure), so cost/success counts only calls that actually ran. Two defects were found by this run and fixed before these figures: a numeric grader that read “1,368.50” as two numbers had been recording correct answers as failures for every model, and three Ollama endpoints that returned HTTP 402 on every call were disabled rather than logged as quality failures.
| Model | Pass | Avg latency | Cost / success |
|---|---|---|---|
| zai / glm-5.3-flash | 98.2% | 2,361ms | $0.0000267 |
| gemini-3.1-flash-lite | 88.0% | 694ms | $0.0000288 |
| gemini-3.5-flash-lite | 87.0% | 657ms | $0.0000427 |
| gemini-3-flash-preview | 99.5% | 2,184ms | $0.0000498 |
| gemini-3.7-flash | 100% | 1,392ms | $0.0000655 |
| gpt-5.4-mini | 84.9% | 620ms | $0.0000986 |
| gemini-3.5-flash | 98.4% | 2,138ms | $0.0001516 |
| claude-haiku-4-5 | 87.7% | 798ms | $0.0002028 |
| deepseek-v4-flash | 99.4% | 1,477ms | $0.0002294 |
| gpt-5.4 | 88.5% | 754ms | $0.0003121 |
| zai / glm-4.5-air | 96.8% | 6,648ms | $0.0004567 |
| zai / glm-5.3 | 100% | 4,868ms | $0.0005629 |
| deepseek-v4-pro | 99.7% | 2,325ms | $0.0006138 |
| claude-sonnet-5 | 98.8% | 1,419ms | $0.0006154 |
| zai / glm-4.6 | 99.4% | 6,774ms | $0.0010387 |
| zai / glm-5 | 99.4% | 5,159ms | $0.0011640 |
| claude-opus-5 | 99.2% | 1,957ms | $0.0014858 |
| ollama / gpt-oss:20b | 98.4% | 2,527ms | unpriced |
| ollama / gpt-oss:120b | 97.4% | 858ms | unpriced |
Read the saturation before the spread. Nine of these score 98% or better, which means starter-v2 no longer separates the top of the field — a benchmark almost everything passes measures very little while still looking like evidence, and the honest next step is harder cases, not a louder claim. What the suite still supports is the cost axis, where the spread is real: gemini-3.7-flash passed every case at roughly a ninth of Sonnet's cost per success, and glm-5.3-flash at about a twenty-third. That is an argument for routing which did not exist while the pool was effectively one vendor — measured in August, routing was Pareto-efficient but did not beat simply always using one good mid-tier model. Three caveats travel with these numbers: this is our suite and not your workload, so a task type absent from it is unmeasured rather than proven; the two Ollama models carry no pricing row, so they have no cost/success figure and would fail closed under a cost ceiling whatever their quality; and glm-4.5-air threw 14 infrastructure errors, correctly excluded from the pass rate above but a reliability signal that a quality column is the wrong place to look for.
The console distinguishes measured from estimated everywhere, because the difference is the product.
Verified quality needs a grader on live traffic. Until that exists the console says so, rather than rendering an unmeasured score as 0 or as a failure.
When no alternative model was feasible, savings show “no alternative existed” — never $0, which would claim the alternative cost nothing.
An endpoint with no price on file fails closed under a cost ceiling. Cost estimation returns null, never zero, so unknown cannot masquerade as cheap.