JuliusBrussee/caveman · error · ReplayRunError
cachebench: provider usage unavailable for %q
Error message
cachebench: provider usage unavailable for %q
What it means
ExtractProviderUsage could not find a usable token-usage object in the provider response body; failure code provider_usage_invalid. Without provider-counted usage the budget claim of the replay cannot be verified.
Source
Thrown at cacheengine/cachebench/replay.go:718
return ReplayResult{Evidence: evidence, ProviderResponse: append([]byte(nil), response.Body...)}, &ReplayRunError{
RequestID: record.RequestID, FailureCode: evidence.FailureCode,
Err: fmt.Errorf("cachebench: provider returned invalid request identity for %q", record.RequestID),
}
}
evidence.ProviderRequestID = response.ProviderRequestID
if response.StatusCode < 200 || response.StatusCode >= 300 {
evidence.FailureCode = "provider_http_status"
return ReplayResult{Evidence: evidence, ProviderResponse: append([]byte(nil), response.Body...)}, &ReplayRunError{
RequestID: record.RequestID, FailureCode: evidence.FailureCode,
Err: fmt.Errorf("cachebench: provider returned HTTP %d for %q", response.StatusCode, record.RequestID),
}
}
usage, ok := cacheengine.ExtractProviderUsage(record.Provider, response.Body)
if !ok {
evidence.FailureCode = "provider_usage_invalid"
return ReplayResult{Evidence: evidence, ProviderResponse: append([]byte(nil), response.Body...)}, &ReplayRunError{
RequestID: record.RequestID, FailureCode: evidence.FailureCode,
Err: fmt.Errorf("cachebench: provider usage unavailable for %q", record.RequestID),
}
}
evidence.ProviderUsageSHA256 = bodyDigest(usage.RawUsage)
evidence.ProviderTotalInputTokens = usage.TotalInputTokens
evidence.ProviderOutputTokens = usage.OutputTokens
if usage.TotalInputTokens > record.DeclaredInputTokens {
evidence.FailureCode = "provider_input_budget_exceeded"
return ReplayResult{Evidence: evidence, ProviderResponse: append([]byte(nil), response.Body...)}, &ReplayRunError{
RequestID: record.RequestID, FailureCode: evidence.FailureCode,
Err: fmt.Errorf("cachebench: provider input tokens %d exceed declared ceiling %d for %q", usage.TotalInputTokens, record.DeclaredInputTokens, record.RequestID),
}
}
if usage.OutputTokens > record.MaxOutputTokens {
evidence.FailureCode = "provider_output_budget_exceeded"
return ReplayResult{Evidence: evidence, ProviderResponse: append([]byte(nil), response.Body...)}, &ReplayRunError{
RequestID: record.RequestID, FailureCode: evidence.FailureCode,
Err: fmt.Errorf("cachebench: provider output tokens %d exceed request ceiling %d for %q", usage.OutputTokens, record.MaxOutputTokens, record.RequestID),
}View on GitHub (pinned to 766dce6b13)
Solutions
- Check the response body format matches the expected provider schema
- Capture the raw response evidence to diagnose the missing usage fields
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cacheengine/cachebench/replay.go:718 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@766dce6b13 (2026-08-18).
Data as JSON: /api/errors/98dc747c6bbcd6f8.
Report an issue: GitHub.