{"record":{"id":"ef42f4389e08bb0f","repo":"tinyhumansai/openhuman","slug":"no-channel-components-tracked-yet","errorCode":null,"errorMessage":"no channel components tracked yet","messagePattern":"no channel components tracked yet","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/platform/doctor/core.rs","lineNumber":695,"sourceCode":"                    Utc::now().signed_duration_since(dt).num_seconds()\n                });\n\n            if status_ok && age <= CHANNEL_STALE_SECONDS {\n                items.push(DiagnosticItem::ok(\n                    cat,\n                    format!(\"{name} fresh ({age}s ago)\"),\n                ));\n            } else {\n                stale += 1;\n                items.push(DiagnosticItem::error(\n                    cat,\n                    format!(\"{name} stale (ok={status_ok}, age={age}s)\"),\n                ));\n            }\n        }\n\n        if channel_count == 0 {\n            items.push(DiagnosticItem::warn(\n                cat,\n                \"no channel components tracked yet\",\n            ));\n        } else if stale > 0 {\n            items.push(DiagnosticItem::warn(\n                cat,\n                format!(\"{channel_count} channels, {stale} stale\"),\n            ));\n        }\n    }\n}\n\n// ── Environment checks ───────────────────────────────────────────\n\nfn check_environment(items: &mut Vec<DiagnosticItem>) {\n    let cat = \"environment\";\n\n    // git","sourceCodeStart":677,"sourceCodeEnd":713,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/platform/doctor/core.rs#L677-L713","documentation":"Doctor channel-health check: the component-status store contains zero channel components, so the fresh/stale loop over per-channel heartbeats had nothing to evaluate. Distinguishing this from a stale channel: no channel runtime ever registered, which on a fresh install with no channels connected is normal, but on a configured instance means the channels service is not spawning its workers.","triggerScenarios":"Thrown at src/openhuman/platform/doctor/core.rs:695 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["If no channels are configured, connect one in the UI and re-run doctor","Verify the channels service is enabled in the running ServiceSet","Inspect core logs for channel runtime startup failures if channels are configured but untracked"],"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-14T05:17:10.506Z"}