{"record":{"id":"7e5d1f0953be35a9","repo":"windmill-labs/windmill","slug":"no-schedule-or-manual-root-in-f-f-to-start-a-bo","errorCode":null,"errorMessage":"No schedule or manual root in f/${f} to start a bounded run from.","messagePattern":"No schedule or manual root in f/(.+?) to start a bounded run from\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"cli/src/commands/pipeline/pipeline.ts","lineNumber":769,"sourceCode":"      throw new Error(\n        `--from '${opts.from}' isn't a \\`// pipeline\\` script — it appears in the local graph only as a macro consumer (lineage). Mark it \\`// pipeline\\` to run it.`,\n      );\n    }\n    if (!resolved.startsWith(\"script:\")) {\n      throw new Error(\n        `--from '${opts.from}' is an asset, not a runnable — start a run from a script (assets are produced, not run).`,\n      );\n    }\n    if (!fromEligible.has(resolved)) {\n      throw new Error(\n        `--from '${opts.from}' can't start a run: row-backed event triggers (kafka/mqtt/nats/postgres/sqs/gcp/email) and input-only entrypoints (webhook/data_upload) fan out per-event or need caller-supplied input — bind it with --upload to run it.`,\n      );\n    }\n    start = resolved;\n  } else if (starts.size === 1) {\n    start = [...starts][0];\n  } else if (starts.size === 0) {\n    throw new Error(\n      `No schedule or manual root in f/${f} to start a bounded run from.`,\n    );\n  } else if ((opts.to ?? []).length === 0) {\n    // Multiple roots, no `--from`, no `--to` → run the whole pipeline.\n    runAll = true;\n  } else {\n    throw new Error(\n      `f/${f} has ${starts.size} possible starts — pass --from <script> when using --to. Candidates: ${scriptsOf(starts).sort().join(\", \")}`,\n    );\n  }\n\n  // Resolve --to end node(s): split on comma, resolve each. An unresolved or\n  // ambiguous token is a hard error — silently ignoring it would run a\n  // different subset than the user asked for.\n  const toTokens = (opts.to ?? []).flatMap((t) => t.split(\",\")).map((t) => t.trim()).filter(\n    Boolean,\n  );\n  const ends: string[] = [];","sourceCodeStart":751,"sourceCodeEnd":787,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/cli/src/commands/pipeline/pipeline.ts#L751-L787","documentation":"Empty-start guard in the pipeline run command: no --from was given, and the folder's graph contains zero eligible roots (schedule or manual runnable) to start a bounded run from — every entry point is an event trigger or input-only entrypoint that the CLI can't auto-start. The input at fault is the folder's graph composition; without a startable root there is nothing to run.","triggerScenarios":"Thrown at cli/src/commands/pipeline/pipeline.ts:769 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass an explicit --from <script> naming a runnable script to start from","Bind an input-only entrypoint with --upload so it becomes runnable in this invocation","Add a schedule or make one script manually runnable so a default root exists"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}