CostRoot · cost regression · read-onlyILLUSTRATIVE — synthetic data, not a real scan
Cost/request rose 9.9× — here's what changed
+74 $/mo
Extrapolated from the observed after-window run-rate (40 calls over 0.3 days). Per-request: $0.001890 → $0.018630.
cost / request
$0.001890 → $0.018630
dup / retry rate
0.0% → 0.0%
What changed (ranked by $ impact)
cache
ttl
+$57/mo
cache hit-rate moved 90% -> 10% (cacheRead/(read+input+write)); holding model/tokens at after, the cache change raised cost/request
share of total Δ: +77%
· confidence high
model_selection
model_selection
+$55/mo
model mix shifted from [haiku 100%] to [sonnet 100%]; holding tokens/cache at after, the mix change raised cost/request
share of total Δ: +74%
· confidence high
Interaction residual —
the part the dimensions don't cleanly split (they interact):
$-38/mo. We show it rather than force a false-precise split.
When it changed
This change-point aligns with deploy 'deploy v2.1 (model router change)' on 2026-06-02 (within 1.0h). Temporal alignment only — the logs do not prove this deploy caused the change.
Per-dimension contribution = after_cost_per_request MINUS cost_per_request(after, with ONLY this dimension reset to its before value). Cost/request is cache-inclusive: input*P_in + cacheRead*P_in*0.1 + cacheWrite*P_in*1.25 + output*P_out, all prices frozen from the versioned table v2026-06-25. Dimensions interact, so contributions do NOT sum to the total change; the unattributed remainder is reported as interaction_residual rather than force-split.