{"record":{"id":"b6e271446b14eb68","repo":"Fission-AI/OpenSpec","slug":"invalid-schema-field-in-config-must-be-non-empt","errorCode":null,"errorMessage":"Invalid 'schema' field in config (must be non-empty string)","messagePattern":"Invalid 'schema' field in config \\(must be non-empty string\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/core/project-config.ts","lineNumber":290,"sourceCode":"\n  try {\n    const content = readFileSync(configPath, 'utf-8');\n    const raw = parseYaml(content);\n\n    if (!raw || typeof raw !== 'object') {\n      console.warn(`openspec/config.yaml is not a valid YAML object`);\n      return null;\n    }\n\n    const config: Partial<ProjectConfig> = {};\n\n    // Parse schema field using Zod\n    const schemaField = z.string().min(1);\n    const schemaResult = schemaField.safeParse(raw.schema);\n    if (schemaResult.success) {\n      config.schema = schemaResult.data;\n    } else if (raw.schema !== undefined) {\n      console.warn(`Invalid 'schema' field in config (must be non-empty string)`);\n    }\n\n    // Parse context field with size limit\n    if (raw.context !== undefined) {\n      const contextField = z.string();\n      const contextResult = contextField.safeParse(raw.context);\n\n      if (contextResult.success) {\n        const contextSize = Buffer.byteLength(contextResult.data, 'utf-8');\n        if (contextSize > MAX_CONTEXT_SIZE) {\n          console.warn(\n            `Context too large (${(contextSize / 1024).toFixed(1)}KB, limit: ${MAX_CONTEXT_SIZE / 1024}KB)`\n          );\n          console.warn(`Ignoring context field`);\n        } else {\n          config.context = contextResult.data;\n        }\n      } else {","sourceCodeStart":272,"sourceCodeEnd":308,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/core/project-config.ts#L272-L308","documentation":"Warning from readProjectConfig: the config.yaml 'schema' field parsed via Zod failed (empty or not a string). The invalid schema value is ignored (config.schema stays unset, falling back to the default) and a warning names the field, rather than failing the whole config read.","triggerScenarios":"Thrown at src/core/project-config.ts:290 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set 'schema' to a non-empty schema name string","Remove the schema field to use the default schema"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6926ccb18afa4ff621112813e9968334576ee11a","analyzedAt":"2026-08-25T12:29:45.729Z","contentChangedAt":"2026-08-25T12:29:45.729Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}