{"record":{"id":"99ea4a930b560811","repo":"Fission-AI/OpenSpec","slug":"change-changename-not-found-available-change","errorCode":null,"errorMessage":"Change '${changeName}' not found. Available changes:\n  ${available.join('\\n  ')}","messagePattern":"Change '(.+?)' not found\\. Available changes:\n  (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/commands/workflow/shared.ts","lineNumber":221,"sourceCode":"\n  // Validate change name format to prevent path traversal\n  const lookupError = validateChangeLookupName(changeName);\n  if (lookupError) {\n    throw new Error(`Invalid change name '${changeName}': ${lookupError}`);\n  }\n\n  // Check directory existence directly\n  const changePath = path.join(changesDir, changeName);\n  const exists = fs.existsSync(changePath) && fs.statSync(changePath).isDirectory();\n\n  if (!exists) {\n    const available = await getAvailableChanges(projectRoot, changesDir);\n    if (available.length === 0) {\n      throw new Error(\n        `Change '${changeName}' not found. No changes exist. Create one with: ${newChangeHint}`\n      );\n    }\n    throw new Error(\n      `Change '${changeName}' not found. Available changes:\\n  ${available.join('\\n  ')}`\n    );\n  }\n\n  return changeName;\n}\n\n/**\n * Validates that a schema exists and returns available schemas if not.\n *\n * @param schemaName - The schema name to validate\n * @param projectRoot - Optional project root for project-local schema resolution\n */\nexport function validateSchemaExists(schemaName: string, projectRoot?: string): string {\n  const schemaDir = getSchemaDir(schemaName, projectRoot);\n  if (!schemaDir) {\n    const availableSchemas = listSchemas(projectRoot);\n    throw new Error(","sourceCodeStart":203,"sourceCodeEnd":239,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/commands/workflow/shared.ts#L203-L239","documentation":"Error \"Change '${changeName}' not found. Available changes:\n  ${available.join('\\n  ')}\" thrown in Fission-AI/OpenSpec.","triggerScenarios":"Thrown at src/commands/workflow/shared.ts:221 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6926ccb18afa4ff621112813e9968334576ee11a","analyzedAt":"2026-08-25T12:29:45.729Z","schemaVersion":2},"datasetVersion":"2026-08-25T16:17:27.014Z"}