{"record":{"id":"be321da69c0079e9","repo":"zeroclaw-labs/zeroclaw","slug":"embedding-route-with-empty-hint","errorCode":null,"errorMessage":"embedding route with empty hint","messagePattern":"embedding route with empty hint","errorType":"console","errorClass":"DiagItem","httpStatus":null,"severity":"warning","filePath":"crates/zeroclaw-runtime/src/doctor/mod.rs","lineNumber":1267,"sourceCode":"                cat,\n                format!(\n                    \"model route \\\"{}\\\" uses invalid model_provider \\\"{}\\\": {}\",\n                    route.hint, route.model_provider, reason\n                ),\n            ));\n        }\n        if route.model.is_empty() {\n            items.push(DiagItem::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(DiagItem::warn(cat, \"embedding route with empty hint\"));\n        }\n        if let Some(reason) = embedding_provider_validation_error(&route.model_provider) {\n            items.push(DiagItem::warn(\n                cat,\n                format!(\n                    \"embedding route \\\"{}\\\" uses invalid model_provider \\\"{}\\\": {}\",\n                    route.hint, route.model_provider, reason\n                ),\n            ));\n        }\n        if route.model.trim().is_empty() {\n            items.push(DiagItem::warn(\n                cat,\n                format!(\"embedding route \\\"{}\\\" has empty model\", route.hint),\n            ));\n        }\n        if route.dimensions.is_some_and(|value| value == 0) {\n            items.push(DiagItem::warn(","sourceCodeStart":1249,"sourceCodeEnd":1285,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-runtime/src/doctor/mod.rs#L1249-L1285","documentation":"The empty-hint check applied to `embedding_routes`, using `trim()` so whitespace-only hints are caught too. An embedding route without a usable hint cannot be selected, so doctor warns about it during config semantic checks.","triggerScenarios":"An `[[embedding_routes]]` entry with `hint = \"\"`, `hint = \"   \"`, or the field missing; doctor prints `embedding route with empty hint`.","commonSituations":"Embedding route tables added by copy-paste with placeholder hints; whitespace introduced during templating.","solutions":["Set a non-empty (non-whitespace) hint on the embedding route","Or remove the unused route entry","Re-run `zeroclaw doctor` to confirm embedding route checks pass"],"exampleFix":"# before\n[[embedding_routes]]\nhint = \"   \"\nmodel_provider = \"openai\"\n\n# after\n[[embedding_routes]]\nhint = \"docs\"\nmodel_provider = \"openai\"","handlingStrategy":"validation","validationCode":"fn validate_embedding_routes(cfg: &Config) -> Vec<String> {\n    cfg.embedding_routes\n        .iter()\n        .filter(|r| r.hint.trim().is_empty())\n        .map(|r| \"embedding route with empty hint\".to_string())\n        .collect()\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use meaningful hint strings when adding embedding routes","Check routes with `zeroclaw doctor` after any config edit"],"tags":["zeroclaw","doctor","config","embedding-routes","hint"],"backgroundTag":"embedding-route-misconfigured","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}