{"record":{"id":"42824c0e4b63f76c","repo":"zeroclaw-labs/zeroclaw","slug":"line-channel-requires-the-channel-line-feature","errorCode":null,"errorMessage":"LINE channel requires the `channel-line` feature","messagePattern":"LINE channel requires the `channel-line` feature","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-channels/src/orchestrator/mod.rs","lineNumber":9655,"sourceCode":"                    let alias = alias.clone();\n                    Arc::new(move || {\n                        cfg_arc\n                            .read()\n                            .channels\n                            .line\n                            .get(&alias)\n                            .and_then(|ln| ln.sender_name.clone())\n                            .filter(|s| !s.is_empty())\n                    })\n                };\n                Ok(Arc::new(\n                    LineChannel::from_config(ln, alias, peer_resolver, sender_name_resolver)\n                        .with_persistence(config_arc.clone()),\n                ))\n            }\n            #[cfg(not(feature = \"channel-line\"))]\n            {\n                anyhow::bail!(\"LINE channel requires the `channel-line` feature\");\n            }\n        }\n        \"voice-call\" => {\n            #[cfg(feature = \"channel-voice-call\")]\n            {\n                let (alias, vc) = config\n                    .channels\n                    .voice_call\n                    .iter()\n                    .next()\n                    .context(\"Voice Call channel is not configured\")?;\n                Ok(Arc::new(VoiceCallChannel::new(alias.clone(), vc.clone())))\n            }\n            #[cfg(not(feature = \"channel-voice-call\"))]\n            {\n                anyhow::bail!(\"Voice Call channel requires the `channel-voice-call` feature\");\n            }\n        }","sourceCodeStart":9637,"sourceCodeEnd":9673,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-channels/src/orchestrator/mod.rs#L9637-L9673","documentation":"Raised by build_channel_by_id in the \"line\" arm when the binary was compiled without the `channel-line` feature. Like Lark, LINE uses an inner cfg block: the arm body collapses to the bail when the feature is absent. The enabled arm calls LineChannel::from_config(ln, alias, peer_resolver, sender_name_resolver).with_persistence(...) using [channels.line] config.","triggerScenarios":"start_channels / build_channel_by_id selecting \"line\" from an [channels.line] block or agent binding in a build lacking --features channel-line.","commonSituations":"Default-feature builds (line is in channels-full only); deployments where the Messaging-Line binding was added to config but the daemon image was built with a minimal channel set; channel-line is a pure cfg gate with no extra deps, so it is often overlooked in hand-written feature lists.","solutions":["Rebuild with cargo build --release --features channel-line","Or use --features channels-full","Or remove [channels.line] and \"line\" bindings","Verify with zeroclaw_channels::listing::is_channel_type_compiled(\"line\")"],"exampleFix":"# before\n cargo build --release\n\n # after\n cargo build --release --features channel-line","handlingStrategy":"validation","validationCode":"use zeroclaw_channels::listing::is_channel_type_compiled;\n\nif !is_channel_type_compiled(\"line\") {\n    eprintln!(\"rebuild with --features channel-line or remove [channels.line]\");\n}","typeGuard":"fn line_available() -> bool {\n    zeroclaw_channels::listing::is_channel_type_compiled(\"line\")\n}","tryCatchPattern":"match build_channel_by_id(&config_arc, \"line\") {\n    Ok(ch) => { /* use */ }\n    Err(e) if e.to_string().contains(\"requires the `channel-line` feature\") => {\n        // skip; rebuild hint\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["channel-line is cfg-gate only (no deps) — cheap to include in shared build profiles","After enabling, remember LINE also needs sender_name/persistence config in from_config"],"tags":["rust","cargo-features","feature-gate","zeroclaw","channels","line"],"backgroundTag":"cargo-feature-not-enabled","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}