{"record":{"id":"d24fda025224ec90","repo":"mastra-ai/mastra","slug":"run-experiment-failed-no-data-provided","errorCode":"RUN_EXPERIMENT_FAILED_NO_DATA_PROVIDED","errorMessage":"Failed to run experiment: Data array is empty","messagePattern":"Failed to run experiment: Data array is empty","errorType":"error_code","errorClass":"MastraError","httpStatus":null,"severity":"error","filePath":"packages/core/src/evals/run/index.ts","lineNumber":675,"sourceCode":"}\n\nfunction isAgentScorerConfig(scorers: any): scorers is AgentScorerConfig {\n  return (\n    typeof scorers === 'object' &&\n    !Array.isArray(scorers) &&\n    ('agent' in scorers || ('trajectory' in scorers && !('workflow' in scorers) && !('steps' in scorers)))\n  );\n}\n\nfunction validateEvalsInputs(\n  data: RunEvalsDataItem<any>[],\n  scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig,\n  target: Agent | Workflow,\n  gates?: MastraScorer<any, any, any, any>[],\n): void {\n  const hasGates = !!gates && gates.length > 0;\n  if (data.length === 0) {\n    throw new MastraError({\n      domain: 'SCORER',\n      id: 'RUN_EXPERIMENT_FAILED_NO_DATA_PROVIDED',\n      category: 'USER',\n      text: 'Failed to run experiment: Data array is empty',\n    });\n  }\n\n  // Tracks whether any data item carries per-turn gates/scorers, which (like\n  // top-level scorers/gates) satisfies the \"at least one scorer or gate\" rule.\n  let hasAnyTurnAssertions = false;\n\n  for (let i = 0; i < data.length; i++) {\n    const item = data[i];\n    if (!item || typeof item !== 'object' || (!('input' in item) && !('inputs' in item) && !('turns' in item))) {\n      throw new MastraError({\n        domain: 'SCORER',\n        id: 'INVALID_DATA_ITEM',\n        category: 'USER',","sourceCodeStart":657,"sourceCodeEnd":693,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/core/src/evals/run/index.ts#L657-L693","documentation":"`validateEvalsInputs` (called by `runEvals`) requires a non-empty dataset before launching an experiment. If the `data` array has length 0, a MastraError with id RUN_EXPERIMENT_FAILED_NO_DATA_PROVIDED (category USER) is thrown. Running an eval on zero examples would produce an empty experiment, so the library refuses up front.","triggerScenarios":"Calling `mastra.runEvals({ data: [], scorers, target })` (or equivalent run-experiment API) with an empty array; a data-loading step that filtered out all rows before the call.","commonSituations":"Loading eval data from a file/DB whose filter matched nothing (wrong path, stale table, wrong date range); slicing or paginating data incorrectly; building the dataset conditionally so it can be empty in CI; JSONL/CSV parse failures swallowed upstream resulting in zero items.","solutions":["Pass a non-empty `data` array to runEvals — check `data.length > 0` before calling","Fix the upstream data-loading query/file so it actually returns rows","Log the dataset size right after loading to catch silently-empty sources","Fail fast in CI with an explicit assertion that the eval dataset exists"],"exampleFix":"// before\nawait mastra.runEvals({ data: loaded.filter(x => x.skip !== true), scorers, target });\n// after\nconst data = loaded.filter(x => x.skip !== true);\nif (data.length === 0) throw new Error('Eval dataset is empty: check data file/query');\nawait mastra.runEvals({ data, scorers, target });","handlingStrategy":"validation","validationCode":"function assertNonEmptyDataset(data) {\n  if (!Array.isArray(data) || data.length === 0) {\n    throw new Error('runEvals requires a non-empty data array');\n  }\n}\nassertNonEmptyDataset(data);\nawait mastra.runEvals({ data, scorers, target });","typeGuard":null,"tryCatchPattern":"try {\n  await mastra.runEvals({ data, scorers, target });\n} catch (e) {\n  if (e instanceof MastraError && e.id === 'RUN_EXPERIMENT_FAILED_NO_DATA_PROVIDED') {\n    console.error('Eval data was empty — check the loader/query that produced the dataset');\n  } else throw e;\n}","preventionTips":["Check data.length immediately after loading and before expensive target setup","Log dataset size in CI so silently-empty loads are visible","Avoid swallowing errors in data loaders that can produce empty arrays"],"tags":["evals","experiment","validation","empty-input"],"backgroundTag":"empty-dataset","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}