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
cache hit-rate
90% → 10%
dup / retry rate
0.0% → 0.0%
calls / session
1 → 1
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.
Read-only · prompt bodies hashed (no PII stored) · prices frozen from table v2026-06-25, verify against live Bedrock rates before quoting. The logs prove WHAT changed and WHEN, not WHY.
See the standing-waste sample Apply for a free Bedrock cost-leak scan