{"record":{"id":"749e728ef27518be","repo":"BoundaryML/baml","slug":"class-not-found","errorCode":null,"errorMessage":"Class {} not found","messagePattern":"Class (.+?) not found","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"engine/baml-runtime/src/internal/prompt_renderer/scoped_ir.rs","lineNumber":40,"sourceCode":"}\n\nimpl<'ir> ScopedIr<'ir> {\n    pub fn new(\n        ir: &'ir internal_baml_core::ir::repr::IntermediateRepr,\n        ctx: &'ir RuntimeContext,\n    ) -> Self {\n        Self { ir, ctx }\n    }\n\n    fn find_class(\n        &self,\n        class_name: &str,\n    ) -> Result<FindResult<internal_baml_core::ir::ClassWalker<'ir>, &RuntimeClassOverride>> {\n        let class_override = self.ctx.class_override.get(class_name);\n        let class = self.ir.find_class(class_name);\n\n        match (class, class_override) {\n            (Err(_), None) => Err(anyhow::anyhow!(\"Class {} not found\", class_name)),\n            (Ok(class), None) => Ok(FindResult::OnlyIr(class)),\n            (Err(_), Some(class_override)) => Ok(FindResult::OnlyDynamic(class_override)),\n            (Ok(class), Some(class_override)) => Ok(FindResult::Overriden(class, class_override)),\n        }\n    }\n\n    fn find_enum(\n        &self,\n        enum_name: &str,\n    ) -> Result<FindResult<internal_baml_core::ir::EnumWalker<'ir>, &RuntimeEnumOverride>> {\n        let enum_override = self.ctx.enum_overrides.get(enum_name);\n        let r#enum = self.ir.find_enum(enum_name);\n\n        match (r#enum, enum_override) {\n            (Err(_), None) => Err(anyhow::anyhow!(\"Enum {} not found\", enum_name)),\n            (Ok(r#enum), None) => Ok(FindResult::OnlyIr(r#enum)),\n            (Err(_), Some(enum_override)) => Ok(FindResult::OnlyDynamic(enum_override)),\n            (Ok(r#enum), Some(enum_override)) => Ok(FindResult::Overriden(r#enum, enum_override)),","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/engine/baml-runtime/src/internal/prompt_renderer/scoped_ir.rs#L22-L58","documentation":"find_class in ScopedIR fails when the requested class name is absent from the IR and there is no RuntimeClassOverride. ScopedIR resolves names for prompt/output rendering; with neither a static definition nor a dynamic override the class cannot be resolved, so rendering aborts.","triggerScenarios":"Calling render_output_format / prompt rendering with a class (response model) name that does not exist in any loaded .baml file and has no class override in RuntimeContext.","commonSituations":"Typo in the class name; class deleted or renamed; class defined in a .baml file not picked up by the BAML project; invoking a function whose output type was removed; client-side dynamic classes not passed as overrides.","solutions":["Define the class in a .baml file within the project, or fix the name typo.","If the class is dynamic (tests/evals), supply a RuntimeClassOverride via the RuntimeContext.","Regenerate the client (baml-cli generate) so the runtime IR is current.","Verify the .baml file containing the class is inside the baml_src directory."],"exampleFix":"// before\nscoped.find_class(\"Outpt\")?; // typo\n// after\nscoped.find_class(\"Output\")?;","handlingStrategy":"try-catch","validationCode":"if scoped.find_class(class_name).is_err() {\n    eprintln!(\"Class {} missing from BAML schema\", class_name);\n}","typeGuard":"fn class_resolves(scoped: &ScopedIr, name: &str) -> bool {\n    scoped.find_class(name).is_ok()\n}","tryCatchPattern":"match scoped.find_class(class_name) {\n    Ok(result) => render(result),\n    Err(e) if e.to_string().contains(\"not found\") => {\n        // fall back to defaults or fix schema\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Generate types with baml-cli generate so compile-time checks catch missing classes.","Never hard-code class name strings; derive them from generated constants.","Verify class files live under baml_src and are committed."],"tags":["baml","schema","class","not-found"],"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"}