{"record":{"id":"6526a82dfe39b742","repo":"JuliusBrussee/caveman","slug":"cachebench-replay-request-q-needs-s-billed-toke","errorCode":null,"errorMessage":"cachebench: replay request %q needs %s billed-token metadata","messagePattern":"cachebench: replay request %q needs (.+?) billed-token metadata","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cacheengine/cachebench/replay.go","lineNumber":379,"sourceCode":"\t}\n\tif len(records) > limits.MaxRequests {\n\t\treturn ReplayPreflight{}, fmt.Errorf(\"cachebench: replay population %d exceeds request limit %d\", len(records), limits.MaxRequests)\n\t}\n\tif timeScale <= 0 || math.IsNaN(timeScale) || math.IsInf(timeScale, 0) || timeScale > 1000 {\n\t\treturn ReplayPreflight{}, errors.New(\"cachebench: time scale must be greater than zero and at most 1000\")\n\t}\n\tseen := make(map[string]bool, len(records))\n\ttiming := map[string]bool{}\n\ttokens := map[string]bool{}\n\tvar previous time.Time\n\tvar declaredInput, declaredOutput, worstCase, scheduled int64\n\tfor index, record := range records {\n\t\tif seen[record.RequestID] {\n\t\t\treturn ReplayPreflight{}, fmt.Errorf(\"cachebench: duplicate replay request %q\", record.RequestID)\n\t\t}\n\t\tseen[record.RequestID] = true\n\t\tif record.Schema != TraceSchema {\n\t\t\treturn ReplayPreflight{}, fmt.Errorf(\"cachebench: replay request %q needs %s billed-token metadata\", record.RequestID, TraceSchema)\n\t\t}\n\t\tif _, err := record.NativeRequest(); err != nil {\n\t\t\treturn ReplayPreflight{}, fmt.Errorf(\"cachebench: replay request %d: %w\", index, err)\n\t\t}\n\t\tat, err := time.Parse(time.RFC3339Nano, record.At)\n\t\tif err != nil || !previous.IsZero() && at.Before(previous) {\n\t\t\treturn ReplayPreflight{}, fmt.Errorf(\"cachebench: replay request %q has invalid time order\", record.RequestID)\n\t\t}\n\t\tif limits.RequireGroundedTiming && record.TimingBasis != TimingGrounded {\n\t\t\treturn ReplayPreflight{}, fmt.Errorf(\"cachebench: replay request %q timing basis %q is not globally grounded\", record.RequestID, record.TimingBasis)\n\t\t}\n\t\ttiming[record.TimingBasis] = true\n\t\tif limits.RequireProviderTokens && record.TokenBasis != TokenProviderCounted {\n\t\t\treturn ReplayPreflight{}, fmt.Errorf(\"cachebench: replay request %q token basis %q is not provider-counted\", record.RequestID, record.TokenBasis)\n\t\t}\n\t\ttokens[record.TokenBasis] = true\n\t\tif record.DeclaredInputTokens <= 0 || record.DeclaredInputTokens < record.PrefixTokens || record.MaxOutputTokens <= 0 || !requestBudgetMatchesBody(record) {\n\t\t\treturn ReplayPreflight{}, fmt.Errorf(\"cachebench: replay request %q has invalid billed-token budget\", record.RequestID)","sourceCodeStart":361,"sourceCodeEnd":397,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/cacheengine/cachebench/replay.go#L361-L397","documentation":"Error \"cachebench: replay request %q needs %s billed-token metadata\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at cacheengine/cachebench/replay.go:379 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include the required billed-token metadata on the replay request."],"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-15T22:17:37.221Z"}