{"record":{"id":"4c4a98ee94a7a730","repo":"windmill-labs/windmill","slug":"runnable-runnableid-not-found-in-backend-folder","errorCode":null,"errorMessage":"Runnable ${runnableId} not found in backend folder or raw_app.yaml","messagePattern":"Runnable (.+?) not found in backend folder or raw_app\\.yaml","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/src/commands/app/app_metadata.ts","lineNumber":895,"sourceCode":"  }\n\n  // Read the runnable from its separate YAML file (new format)\n  const runnableFilePath2 = path.join(\n    appFolder,\n    APP_BACKEND_FOLDER,\n    `${runnableId}.yaml`\n  );\n\n  let runnable: any;\n  try {\n    runnable = await yamlParseFile(runnableFilePath2);\n  } catch {\n    // Fall back to reading from raw_app.yaml (old format)\n    try {\n      const appFilePath = path.join(appFolder, \"raw_app.yaml\");\n      const appFile = (await yamlParseFile(appFilePath)) as RawAppFile;\n      if (!appFile.runnables?.[runnableId]) {\n        log.warn(\n          colors.yellow(`Runnable ${runnableId} not found in backend folder or raw_app.yaml`)\n        );\n        return undefined;\n      }\n      runnable = appFile.runnables[runnableId];\n    } catch {\n      // No YAML at all - in the new backend-folder format a code-only runnable\n      // (no .yaml sibling) is treated as inline. We can still infer its schema.\n      runnable = { type: \"inline\" };\n    }\n  }\n\n  // Determine language and current schema. Two cases:\n  // - Old format: the YAML carries an `inlineScript` block with language + schema\n  // - New format: the YAML only declares `type: inline` and the language is\n  //   derived from the code file's extension (the inlineScript is reconstructed\n  //   from sibling files at load time).\n  let language: SupportedLanguage | undefined;","sourceCodeStart":877,"sourceCodeEnd":913,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/cli/src/commands/app/app_metadata.ts#L877-L913","documentation":"Lookup miss in inferRunnableSchemaFromFile: the runnable id resolves to neither a standalone <id>.yaml under the app's backend folder (new format) nor an entry in raw_app.yaml's runnables map (old format). The code logs this warning and returns undefined, excluding the runnable from schema inference.","triggerScenarios":"Thrown at cli/src/commands/app/app_metadata.ts:895 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the runnable id spelling in the app YAML against the actual file name in the backend folder","Ensure the runnable's YAML file exists in APP_BACKEND_FOLDER or is listed in raw_app.yaml","Re-sync or re-create the app so backend files are materialized"],"exampleFix":null,"handlingStrategy":"fallback","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"}