{"record":{"id":"6e8d545d50526bd1","repo":"can1357/oh-my-pi","slug":"no-tasks-matched-the-requested-filters","errorCode":null,"errorMessage":"no tasks matched the requested filters","messagePattern":"no tasks matched the requested filters","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/metaharness/src/tb/cli.ts","lineNumber":348,"sourceCode":"\t\tstartedAt,\n\t\tfinishedAt: Date.now(),\n\t};\n}\n\nexport async function main(argv: string[]): Promise<void> {\n\tconst config = parseArgs(argv);\n\tif (config.help) {\n\t\tconsole.log(HELP);\n\t\treturn;\n\t}\n\tfs.mkdirSync(config.jobsDir, { recursive: true });\n\tconst tasksDir = await resolveDataset(config.dataset, path.join(config.jobsDir, \"_dataset\"));\n\tconst tasks = await loadTasks(tasksDir, { include: config.include, exclude: config.exclude });\n\tif (config.list) {\n\t\tfor (const task of tasks) console.log(task.name);\n\t\treturn;\n\t}\n\tif (tasks.length === 0) throw new Error(\"no tasks matched the requested filters\");\n\n\tconst providers = [...new Set(config.models.map(model => model.slice(0, model.indexOf(\"/\"))))];\n\tconst gateway: GatewayConfig = {\n\t\turl: config.gatewayUrl,\n\t\ttoken: config.gatewayToken,\n\t\tproviders,\n\t\topenrouterVariant: config.openrouterVariant,\n\t};\n\tawait probeGateway(config.gatewayUrl);\n\tconsole.log(`vmon: checking ${config.vmonUrl}`);\n\tawait preflightVmon(config.vmonUrl, config.vmonToken);\n\tconst vmon: VmonConfig = {\n\t\turl: config.vmonUrl,\n\t\ttoken: config.vmonToken,\n\t\tarch: \"x64\",\n\t};\n\tconst binaries = await prepareAgentBinaries({\n\t\tarches: [vmon.arch],","sourceCodeStart":330,"sourceCodeEnd":366,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/metaharness/src/tb/cli.ts#L330-L366","documentation":"After loading the dataset and applying include/exclude filters, main requires at least one task to run (unless --list was passed). If the filter set matches zero tasks, the run would silently do nothing, so it throws instead.","triggerScenarios":"Calling main with --include/--exclude patterns that match no task names in the resolved dataset, e.g. --include 'nonexistent-*' or an exclude that filters out everything.","commonSituations":"Task names renamed upstream in the Terminal-Bench repo; overly specific include globs; exclude patterns left over from a previous run; pointing --dataset at a different/older dataset.","solutions":["Run with --list to print available task names and adjust filters","Fix or remove --include/--exclude patterns so at least one task matches","Verify the dataset was resolved to the expected version (task names may differ)"],"exampleFix":"// before\ntb run --dataset ./tb-tasks --include 'old-task-name'\n// after\ntb run --dataset ./tb-tasks --list   # find real names\ntb run --dataset ./tb-tasks --include 'hello-world'","handlingStrategy":"validation","validationCode":"const tasks = await loadTasks(tasksDir, { include, exclude });\nif (tasks.length === 0) {\n  console.error(\"No tasks matched; available:\", (await loadTasks(tasksDir, {})).map(t => t.name));\n  process.exit(1);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run with --list first to confirm filter matches","Keep include/exclude globs minimal and tested","Re-verify patterns after dataset updates"],"tags":["cli","filters","empty-result"],"backgroundTag":"no-matching-tasks","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}