JuliusBrussee/caveman · error

cachebench: invalid replay provider usage evidence

Error message

cachebench: invalid replay provider usage evidence

What it means

Error "cachebench: invalid replay provider usage evidence" thrown in JuliusBrussee/caveman.

Source

Thrown at cacheengine/cachebench/replay.go:878

	return validBoundedText(value, 256, true)
}

func validateReplayEvidence(record ReplayEvidenceRecord) error {
	if record.Schema != ReplayEvidenceSchema || !validBoundedText(record.RequestID, 512, false) || !validSHA256(record.TraceBodySHA256) || !validSHA256(record.WireBodySHA256) || !validBoundedText(record.Provider, 64, false) || !validBoundedText(record.Model, 512, false) || !validBoundedText(record.Epoch, 1024, false) || !validTimingBasis(record.TimingBasis) || !validBoundedText(record.TokenBasis, 128, false) || record.TimeScale <= 0 || record.TimeScale > 1000 || !validBoundedText(record.Reason, 1024, false) || record.ScheduleDriftMilliseconds < 0 || record.ScheduleToleranceMilliseconds <= 0 || record.HTTPStatus < 0 || record.HTTPStatus > 999 || !validProviderRequestID(record.ProviderRequestID) {
		return errors.New("cachebench: invalid replay evidence")
	}
	scheduled, scheduledErr := time.Parse(time.RFC3339Nano, record.ScheduledAt)
	started, startErr := time.Parse(time.RFC3339Nano, record.StartedAt)
	completed, completedErr := time.Parse(time.RFC3339Nano, record.CompletedAt)
	if scheduledErr != nil || startErr != nil || completedErr != nil || completed.Before(started) || record.TimingFaithful != (record.TimingBasis == TimingGrounded && record.TimeScale == 1 && record.ScheduleDriftMilliseconds <= record.ScheduleToleranceMilliseconds) || absDuration(started.Sub(scheduled)).Milliseconds() != record.ScheduleDriftMilliseconds {
		return errors.New("cachebench: invalid replay timing evidence")
	}
	if record.LatencyMilliseconds < 0 {
		return errors.New("cachebench: negative replay latency")
	}
	if record.ProviderUsageSHA256 != "" {
		if !validEvidenceSHA256(record.ProviderUsageSHA256) || !validEvidenceSHA256(record.ProviderEvidenceSHA256) || record.ProviderTotalInputTokens <= 0 || record.ProviderOutputTokens < 0 {
			return errors.New("cachebench: invalid replay provider usage evidence")
		}
	} else if record.ProviderTotalInputTokens != 0 || record.ProviderOutputTokens != 0 {
		return errors.New("cachebench: replay token counters lack provider usage evidence")
	}
	if record.Applied != (record.Decision == cacheengine.DecisionApply) || record.Applied && len(record.OptimizerIDs) == 0 {
		return errors.New("cachebench: inconsistent replay engine decision")
	}
	switch record.Attribution {
	case cacheengine.AttributionNone, cacheengine.AttributionCausal, cacheengine.AttributionAffinity, cacheengine.AttributionOrganic:
	default:
		return errors.New("cachebench: invalid replay attribution")
	}
	if record.Success {
		if record.HTTPStatus < 200 || record.HTTPStatus >= 300 || !validEvidenceSHA256(record.ProviderEvidenceSHA256) || !validEvidenceSHA256(record.ProviderUsageSHA256) || record.ProviderTotalInputTokens <= 0 || !validBoundedText(record.QualityVerifier, 256, false) || !validEvidenceSHA256(record.QualityEvidenceSHA256) || record.FailureCode != "" {
			return errors.New("cachebench: incomplete successful replay evidence")
		}
	} else if !validReplayFailureCode(record.FailureCode) {
		return errors.New("cachebench: failed replay evidence needs known failure_code")

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Provide valid provider usage evidence for the replay.

When it happens

Trigger: Thrown at cacheengine/cachebench/replay.go:878 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/9ac731339692f2b0. Report an issue: GitHub.