{"record":{"id":"1c715b933ad193e3","repo":"Fission-AI/OpenSpec","slug":"failed-to-read-metadata-ioerror-message","errorCode":null,"errorMessage":"Failed to read metadata: ${ioError.message}","messagePattern":"Failed to read metadata: (.+?)","errorType":"exception","errorClass":"ChangeMetadataError","httpStatus":null,"severity":"error","filePath":"src/utils/change-metadata.ts","lineNumber":109,"sourceCode":" * @returns The validated metadata, or null if no metadata file exists\n * @throws ChangeMetadataError if the file exists but is invalid\n */\nexport function readChangeMetadata(\n  changeDir: string,\n  projectRoot?: string\n): ChangeMetadata | null {\n  const metaPath = path.join(changeDir, METADATA_FILENAME);\n\n  if (!fs.existsSync(metaPath)) {\n    return null;\n  }\n\n  let content: string;\n  try {\n    content = fs.readFileSync(metaPath, 'utf-8');\n  } catch (err) {\n    const ioError = err instanceof Error ? err : new Error(String(err));\n    throw new ChangeMetadataError(\n      `Failed to read metadata: ${ioError.message}`,\n      metaPath,\n      ioError\n    );\n  }\n\n  let parsed: unknown;\n  try {\n    parsed = yaml.parse(content);\n  } catch (err) {\n    const parseError = err instanceof Error ? err : new Error(String(err));\n    throw new ChangeMetadataError(\n      `Invalid YAML in metadata file: ${parseError.message}`,\n      metaPath,\n      parseError\n    );\n  }\n","sourceCodeStart":91,"sourceCodeEnd":127,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/utils/change-metadata.ts#L91-L127","documentation":"Error \"Failed to read metadata: ${ioError.message}\" thrown in Fission-AI/OpenSpec.","triggerScenarios":"Thrown at src/utils/change-metadata.ts:109 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"}