{"record":{"id":"b9dfa697275d1ad6","repo":"mastra-ai/mastra","slug":"experiment-no-items","errorCode":"EXPERIMENT_NO_ITEMS","errorMessage":"Cannot run experiment: dataset \"${this.id}\" has no items at version ${targetVersion}","messagePattern":"Cannot run experiment: dataset \"(.+?)\" has no items at version (.+?)","errorType":"error_code","errorClass":"MastraError","httpStatus":null,"severity":"error","filePath":"packages/core/src/datasets/dataset.ts","lineNumber":395,"sourceCode":"\n    const dataset = await datasetsStore.getDatasetById({ id: this.id, filters: this.#scope });\n    if (!dataset) {\n      throw new MastraError({\n        id: 'DATASET_NOT_FOUND',\n        text: `Dataset not found: ${this.id}`,\n        domain: 'STORAGE',\n        category: 'USER',\n      });\n    }\n\n    // Validate that dataset has items before creating experiment record\n    const targetVersion = config.version ?? dataset.version;\n    const items = await datasetsStore.getItemsByVersion({\n      datasetId: this.id,\n      version: targetVersion,\n    });\n    if (items.length === 0) {\n      throw new MastraError({\n        id: 'EXPERIMENT_NO_ITEMS',\n        text: `Cannot run experiment: dataset \"${this.id}\" has no items at version ${targetVersion}`,\n        domain: 'STORAGE',\n        category: 'USER',\n      });\n    }\n\n    const experimentId = crypto.randomUUID();\n\n    if (experimentsStore) {\n      await experimentsStore.createExperiment({\n        id: experimentId,\n        datasetId: this.id,\n        datasetVersion: targetVersion,\n        targetType: config.targetType ?? 'agent',\n        targetId: config.targetId ?? 'inline',\n        totalItems: items.length,\n        name: config.name,","sourceCodeStart":377,"sourceCodeEnd":413,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/core/src/datasets/dataset.ts#L377-L413","documentation":"Thrown by Dataset.startExperimentAsync when the datasets store returns zero items for the dataset at the resolved target version. An experiment with no items to run would produce empty results, so Mastra refuses to start it. The target version defaults to the dataset's current version unless config.version is given.","triggerScenarios":"Calling startExperimentAsync on a dataset whose items were never added, or at a config.version that predates any items (or after items were all removed from that version).","commonSituations":"Typo in version number; dataset created but items not yet inserted; items deleted from an old version; pointing at version 1 of a dataset whose data only exists in version 2; empty dataset in a fresh environment.","solutions":["Check the dataset actually has items at the target version (listItems / getItemsByVersion) before starting","Omit config.version to use the dataset's current version, or pass the correct version that contains items","Add items to the dataset at the desired version before creating the experiment"],"exampleFix":"// before\nawait dataset.startExperimentAsync({ version: 3, targetId: 'myAgent' });\n// after\nconst items = await dataset.getItemsByVersion({ datasetId: dataset.id, version: 3 });\nif (items.length > 0) await dataset.startExperimentAsync({ version: 3, targetId: 'myAgent' });","handlingStrategy":"validation","validationCode":"const items = await datasetsStore.getItemsByVersion({ datasetId: dataset.id, version: config.version ?? dataset.version });\nif (!items.length) throw new Error(`Dataset ${dataset.id} has no items at version ${config.version ?? dataset.version}`);","typeGuard":"function hasItems<T>(items: T[] | undefined | null): items is T[] { return Array.isArray(items) && items.length > 0; }","tryCatchPattern":"try {\n  await dataset.startExperimentAsync(config);\n} catch (e) {\n  if (isMastraError(e) && e.id === 'EXPERIMENT_NO_ITEMS') {\n    console.warn(`Skipping experiment: no items at version ${config.version ?? 'current'}`);\n  } else throw e;\n}","preventionTips":["Seed items before starting experiments; assert item count in setup","Default to the dataset's current version unless you specifically need a historical one","Add an integration check that every experiment version has items"],"tags":["storage","dataset","experiment","empty-data"],"backgroundTag":"dataset-empty-at-version","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}