JuliusBrussee/caveman · error

cachebench: replay request %q token basis %q is not provider

Error message

cachebench: replay request %q token basis %q is not provider-counted

What it means

Error "cachebench: replay request %q token basis %q is not provider-counted" thrown in JuliusBrussee/caveman.

Source

Thrown at cacheengine/cachebench/replay.go:393

			return ReplayPreflight{}, fmt.Errorf("cachebench: duplicate replay request %q", record.RequestID)
		}
		seen[record.RequestID] = true
		if record.Schema != TraceSchema {
			return ReplayPreflight{}, fmt.Errorf("cachebench: replay request %q needs %s billed-token metadata", record.RequestID, TraceSchema)
		}
		if _, err := record.NativeRequest(); err != nil {
			return ReplayPreflight{}, fmt.Errorf("cachebench: replay request %d: %w", index, err)
		}
		at, err := time.Parse(time.RFC3339Nano, record.At)
		if err != nil || !previous.IsZero() && at.Before(previous) {
			return ReplayPreflight{}, fmt.Errorf("cachebench: replay request %q has invalid time order", record.RequestID)
		}
		if limits.RequireGroundedTiming && record.TimingBasis != TimingGrounded {
			return ReplayPreflight{}, fmt.Errorf("cachebench: replay request %q timing basis %q is not globally grounded", record.RequestID, record.TimingBasis)
		}
		timing[record.TimingBasis] = true
		if limits.RequireProviderTokens && record.TokenBasis != TokenProviderCounted {
			return ReplayPreflight{}, fmt.Errorf("cachebench: replay request %q token basis %q is not provider-counted", record.RequestID, record.TokenBasis)
		}
		tokens[record.TokenBasis] = true
		if record.DeclaredInputTokens <= 0 || record.DeclaredInputTokens < record.PrefixTokens || record.MaxOutputTokens <= 0 || !requestBudgetMatchesBody(record) {
			return ReplayPreflight{}, fmt.Errorf("cachebench: replay request %q has invalid billed-token budget", record.RequestID)
		}
		input, output := int64(record.DeclaredInputTokens), int64(record.MaxOutputTokens)
		if input > limits.MaxDeclaredBilledTokens-worstCase || output > limits.MaxDeclaredBilledTokens-worstCase-input {
			return ReplayPreflight{}, fmt.Errorf("cachebench: replay declared billed-token ceiling exceeds limit %d", limits.MaxDeclaredBilledTokens)
		}
		declaredInput += input
		declaredOutput += output
		worstCase += input + output
		if !previous.IsZero() {
			gap, err := scaledReplayGap(at.Sub(previous), timeScale)
			if err != nil || gap > limits.MaxGap {
				return ReplayPreflight{}, fmt.Errorf("cachebench: replay gap before %q exceeds limit %s", record.RequestID, limits.MaxGap)
			}
			if int64(gap) > math.MaxInt64-scheduled {

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Use a provider-counted token basis for the replay request.

When it happens

Trigger: Thrown at cacheengine/cachebench/replay.go:393 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15). Data as JSON: /api/errors/6a579c22853c523b. Report an issue: GitHub.