{"record":{"id":"e39678c611eb63de","repo":"JuliusBrussee/caveman","slug":"cachebench-empty-trace","errorCode":null,"errorMessage":"cachebench: empty trace","messagePattern":"cachebench: empty trace","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cacheengine/cachebench/simulate.go","lineNumber":71,"sourceCode":"\t\t\"deterministic provider-cache simulation; no provider request was sent\",\n\t\t\"declared fixture token counts are modeled, not provider-counted\",\n\t\t\"request equivalence proves cache metadata preserved prompt semantics; it does not prove task quality\",\n\t\t\"97% gate is benchmark evidence only, never production or verified savings\",\n\t}\n\treturn report, nil\n}\n\n// EvaluateTrace runs one caller-built trace, including custom Provider/Driver\n// profiles, through the same cache and safety gate used by built-in scenarios.\nfunc EvaluateTrace(ctx context.Context, engine *cacheengine.Engine, trace Trace, target Target) (ProviderReport, error) {\n\tif engine == nil {\n\t\treturn ProviderReport{}, errors.New(\"cachebench: nil cache engine\")\n\t}\n\tif err := validateTarget(target); err != nil {\n\t\treturn ProviderReport{}, err\n\t}\n\tif len(trace.Requests) == 0 {\n\t\treturn ProviderReport{}, errors.New(\"cachebench: empty trace\")\n\t}\n\tif err := validateTrace(trace); err != nil {\n\t\treturn ProviderReport{}, err\n\t}\n\treturn evaluateSimulatedTrace(ctx, engine, trace, target), nil\n}\n\nfunc validateTrace(trace Trace) error {\n\tseen := make(map[string]bool, len(trace.Requests))\n\tvar previous time.Time\n\tfor index, request := range trace.Requests {\n\t\tif strings.TrimSpace(request.ID) == \"\" || seen[request.ID] {\n\t\t\treturn fmt.Errorf(\"cachebench: trace request %d empty or duplicate ID\", index)\n\t\t}\n\t\tseen[request.ID] = true\n\t\tif request.At.IsZero() || (!previous.IsZero() && request.At.Before(previous)) {\n\t\t\treturn fmt.Errorf(\"cachebench: trace request %q has invalid time order\", request.ID)\n\t\t}","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/cacheengine/cachebench/simulate.go#L53-L89","documentation":"Error \"cachebench: empty trace\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at cacheengine/cachebench/simulate.go:71 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a non-empty trace."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"27d5a3981a347890211bb1bf2439e5c821a63bc9","analyzedAt":"2026-08-15T09:26:11.751Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}