{"record":{"id":"24ae84cd1494f4c9","repo":"n8n-io/n8n","slug":"no-scenarios-to-build","errorCode":null,"errorMessage":"No scenarios to build","messagePattern":"No scenarios to build","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"warning","filePath":"packages/@n8n/instance-ai/evaluations/cli/build-mcp-manifest.ts","lineNumber":517,"sourceCode":"\t\t\tconst file = join(workflowDir, `${slug}.json`);\n\t\t\tif (!existsSync(file)) {\n\t\t\t\tconsole.log(`  [${slug}] skip: scenario file missing`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcasesBySlug.set(slug, testCaseSchema.parse(readJson(file, `test case ${slug}`)).conversation);\n\t\t}\n\t}\n\t// Drop cases with no user turn to build from (e.g. `replay`-seeded only).\n\tfor (const [slug, conv] of [...casesBySlug]) {\n\t\tif (!conv.some((t) => t.role === 'user' && t.text.trim().length > 0)) {\n\t\t\tconsole.log(`  [${slug}] skip: no user turn to build from`);\n\t\t\tcasesBySlug.delete(slug);\n\t\t}\n\t}\n\targs.slugs = [...casesBySlug.keys()];\n\tif (args.slugs.length === 0) {\n\t\tthrow new Error(\n\t\t\targs.tier ? `No scenarios match --tier \"${args.tier}\"` : 'No scenarios to build',\n\t\t);\n\t}\n\n\tconst projectScopes = uniqueProjectScopes([\n\t\targs.buildCwd ? resolve(args.buildCwd) : undefined,\n\t\trepoRoot,\n\t\trepoRoot ? undefined : process.cwd(),\n\t]);\n\t// Removed on process exit by the staging module itself.\n\tconst mcpConfigPath = stageMcpConfigFromClaudeJson(args.mcpServerName, projectScopes);\n\n\tconst tasks: Array<{ slug: string; iteration: number }> = [];\n\tfor (const slug of args.slugs) {\n\t\tfor (let i = 1; i <= args.iterations; i++) {\n\t\t\ttasks.push({ slug, iteration: i });\n\t\t}\n\t}\n","sourceCodeStart":499,"sourceCodeEnd":535,"githubUrl":"https://github.com/n8n-io/n8n/blob/5ac6606e81f67bb9534255570cd4e86fd8101eee/packages/@n8n/instance-ai/evaluations/cli/build-mcp-manifest.ts#L499-L535","documentation":"After loading test cases and filtering out cases with no user turn to build from (e.g. replay-seeded only), if the final build list is empty and no --tier was specified, the CLI throws. This is the non-tier variant of the empty-list guard at line 516. It indicates that no actionable test cases survived loading and filtering.","triggerScenarios":"Running with explicit slugs that do not exist as files, an empty workflow directory, all loaded cases being replay-seeded only (no user turns), or a langtracer suite returning zero cases.","commonSituations":"Slug typos in positional arguments. Empty or newly created workflow directory. All cases filtered out because they have no user turns (only seed/assistant turns). The langtracer suite is empty or all cases were excluded by slug filtering.","solutions":["List available slugs: ls packages/@n8n/instance-ai/evaluations/data/workflows/","Check that positional slug arguments match filenames (without .json extension)","Review console output for 'skip:' lines explaining why individual cases were dropped","If using --source langtracer, verify the suite has cases with user turns"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Verify slugs exist as files before running:\nimport { existsSync, readdirSync } from 'fs';\nconst available = new Set(readdirSync(workflowDir).filter(f => f.endsWith('.json')).map(f => f.replace('.json', '')));\nconst missing = args.slugs.filter(s => !available.has(s));\nif (missing.length > 0) console.warn(`Slugs not found: ${missing.join(', ')}`);\nif (args.slugs.length > 0 && args.slugs.every(s => !available.has(s))) {\n  throw new Error('No scenarios to build — none of the requested slugs exist');\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["List available slugs before specifying positional arguments","Review 'skip:' log lines to understand why cases were dropped","Ensure test cases have at least one user turn to build from"],"tags":["cli","validation","scenarios","build-mcp-manifest"],"backgroundTag":null,"analyzedSha":"5ac6606e81f67bb9534255570cd4e86fd8101eee","analyzedAt":"2026-08-12T05:26:35.080Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}