{"record":{"id":"90e5cb908136b93c","repo":"BoundaryML/baml","slug":"enum-does-not-exist-render-output-format","errorCode":null,"errorMessage":"Enum {} does not exist","messagePattern":"Enum (.+?) does not exist","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"engine/baml-runtime/src/internal/prompt_renderer/render_output_format.rs","lineNumber":180,"sourceCode":"    }\n\n    let name = Name::new_with_alias(field_name.to_string(), alias.value());\n    let desc = desc.value();\n    let r#type = field_walker.r#type();\n    let needed = needed.value().unwrap_or(false);\n\n    Ok(Some((name, r#type.clone(), desc, needed)))\n}\n\nfn find_enum_value(\n    enum_name: &str,\n    value_name: &str,\n    enum_walker: &Result<EnumWalker<'_>>,\n    overrides: &Option<&RuntimeEnumOverride>,\n    ctx: &RuntimeContext,\n) -> Result<Option<(Name, Option<String>)>> {\n    if enum_walker.is_err() && overrides.is_none() {\n        anyhow::bail!(\"Enum {} does not exist\", enum_name);\n    }\n\n    let value_walker = match enum_walker {\n        Ok(e) => e.find_value(value_name),\n        Err(_) => None,\n    };\n\n    let value_overrides = overrides.map(|o| o.values.get(value_name)).flatten();\n\n    if value_overrides.is_none() && value_walker.is_none() {\n        anyhow::bail!(\"Enum {} does not have a value: {}\", enum_name, value_name);\n    }\n\n    let mut skip = OverridableValue::Unset;\n    let mut alias = OverridableValue::Unset;\n    let mut desc = OverridableValue::Unset;\n    if let Some(attrs) = value_overrides {\n        match attrs.skip {","sourceCodeStart":162,"sourceCodeEnd":198,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/engine/baml-runtime/src/internal/prompt_renderer/render_output_format.rs#L162-L198","documentation":"Thrown by find_enum_value in the BAML runtime's output-format renderer when an enum referenced in a prompt/output schema neither exists in the IR nor has a runtime override. The renderer walks the intermediate representation (IR) to render enums for the LLM output contract; if the enum walker errored (enum not in the schema) and no RuntimeEnumOverride was supplied, it bails immediately.","triggerScenarios":"Rendering output format for a response model whose field type references an enum name not present in any BAML schema file, and no RuntimeEnumOverride was passed via RuntimeContext (e.g. test-case or client overrides).","commonSituations":"Typo in the enum name in a class field; enum defined in a file not included in the BAML source set; renaming/deleting an enum while tests or clients still reference it; relying on dynamic overrides but forgetting to provide them.","solutions":["Check the enum name referenced by the response model for typos and confirm it is defined in a .baml file included in the project.","If the enum is intentionally dynamic (test/eval overrides), pass a RuntimeEnumOverride containing that enum in the RuntimeContext.","Re-run baml-cli generate / refresh the runtime so the IR includes newly added enums.","If the enum was renamed, update all classes/enums referencing the old name."],"exampleFix":"// before (baml)\nclass Output {\n  category Category // Category not defined\n}\n// after\nenum Category { A B }\nclass Output {\n  category Category\n}","handlingStrategy":"validation","validationCode":"// before rendering, confirm every enum type used in output schema exists\n// (pseudo: iterate schema fields, check runtime.ir().find_enum(name).is_ok())\nif runtime.ir().find_enum(\"Category\").is_err() && override_for(\"Category\").is_none() {\n    panic!(\"Enum Category missing from schema and overrides\");\n}","typeGuard":"fn enum_exists(runtime: &BamlRuntime, name: &str) -> bool {\n    runtime.ir().find_enum(name).is_ok()\n}","tryCatchPattern":null,"preventionTips":["Run baml-cli generate in CI to surface schema reference errors early.","Keep all enum definitions inside baml_src and never reference names by hand.","When using dynamic overrides, always register overrides for every referenced enum."],"tags":["baml","schema","enum","missing-definition"],"backgroundTag":"resource-not-found","analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}