JuliusBrussee/caveman · error

cachebench: trace request %q has incomplete native request

Error message

cachebench: trace request %q has incomplete native request

What it means

Error "cachebench: trace request %q has incomplete native request" thrown in JuliusBrussee/caveman.

Source

Thrown at cacheengine/cachebench/simulate.go:92

		return ProviderReport{}, err
	}
	return evaluateSimulatedTrace(ctx, engine, trace, target), nil
}

func validateTrace(trace Trace) error {
	seen := make(map[string]bool, len(trace.Requests))
	var previous time.Time
	for index, request := range trace.Requests {
		if strings.TrimSpace(request.ID) == "" || seen[request.ID] {
			return fmt.Errorf("cachebench: trace request %d empty or duplicate ID", index)
		}
		seen[request.ID] = true
		if request.At.IsZero() || (!previous.IsZero() && request.At.Before(previous)) {
			return fmt.Errorf("cachebench: trace request %q has invalid time order", request.ID)
		}
		previous = request.At
		if len(request.Native.Body) == 0 || strings.TrimSpace(request.Native.Provider) == "" || strings.TrimSpace(request.Native.Model) == "" || strings.TrimSpace(request.Native.Epoch) == "" {
			return fmt.Errorf("cachebench: trace request %q has incomplete native request", request.ID)
		}
		if request.StableSegmentCount < 0 || request.StableSegmentCount > len(request.Prefix) || !validPrefix(request.Prefix) {
			return fmt.Errorf("cachebench: trace request %q has invalid prefix", request.ID)
		}
		if request.DeclaredInputTokens <= 0 || request.DeclaredInputTokens < request.Native.PrefixTokens || request.MaxOutputTokens <= 0 {
			return fmt.Errorf("cachebench: trace request %q has invalid billed-token budget", request.ID)
		}
	}
	return nil
}

func validPrefix(prefix []PrefixSegment) bool {
	if len(prefix) == 0 {
		return false
	}
	total := 0
	for _, segment := range prefix {
		if !validBoundedText(segment.ID, 1024, false) || segment.Tokens <= 0 || segment.Tokens > math.MaxInt-total {

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Complete the native request fields on the trace request.

When it happens

Trigger: Thrown at cacheengine/cachebench/simulate.go:92 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/9c22813a094e490f. Report an issue: GitHub.