{"record":{"id":"676919ba6cfff496","repo":"tinyhumansai/openhuman","slug":"model-route-has-empty-model","errorCode":null,"errorMessage":"model route \"{}\" has empty model","messagePattern":"model route \"(.+?)\" has empty model","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/platform/doctor/core.rs","lineNumber":267,"sourceCode":"            ),\n        ));\n    }\n\n    // Reliability: fallback providers (legacy; ignored at runtime)\n    if !config.reliability.fallback_providers.is_empty() {\n        items.push(DiagnosticItem::warn(\n            cat,\n            \"reliability.fallback_providers is set but ignored (single backend)\",\n        ));\n    }\n\n    // Model routes validation\n    for route in &config.model_routes {\n        if route.hint.is_empty() {\n            items.push(DiagnosticItem::warn(cat, \"model route with empty hint\"));\n        }\n        if route.model.is_empty() {\n            items.push(DiagnosticItem::warn(\n                cat,\n                format!(\"model route \\\"{}\\\" has empty model\", route.hint),\n            ));\n        }\n    }\n\n    // Embedding routes validation\n    for route in &config.embedding_routes {\n        if route.hint.trim().is_empty() {\n            items.push(DiagnosticItem::warn(cat, \"embedding route with empty hint\"));\n        }\n        if let Some(reason) = embedding_provider_validation_error(&route.provider) {\n            items.push(DiagnosticItem::warn(\n                cat,\n                format!(\n                    \"embedding route \\\"{}\\\" uses invalid provider \\\"{}\\\": {}\",\n                    route.hint, route.provider, reason\n                ),","sourceCodeStart":249,"sourceCodeEnd":285,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/platform/doctor/core.rs#L249-L285","documentation":"Doctor warning from the model_routes loop: an [[model_routes]] entry has a hint but its `model` field is empty. Even if the hint matches during routing, the entry carries no model id to use, so resolution either falls through to defaults or produces an unusable route. The interpolated name is the entry's hint.","triggerScenarios":"Thrown at src/openhuman/platform/doctor/core.rs:267 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set the `model` field (e.g. \"gpt-4o-mini\", \"claude-sonnet-4\") on the named [[model_routes]] entry","Verify the provider referenced by the route actually serves that model id","Delete the entry if it is unused"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}