{"record":{"id":"64a83d9abc89cb3a","repo":"zeroclaw-labs/zeroclaw","slug":"git-channel-provider-provider-requires-the-pr","errorCode":null,"errorMessage":"git channel provider `{provider}` requires the `provider-gitea` feature","messagePattern":"git channel provider `(.+?)` requires the `provider-gitea` feature","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-channels/src/git/channel.rs","lineNumber":130,"sourceCode":"                else {\n                    anyhow::bail!(\n                        \"git channel provider `{provider}` requires \\\n                         channels.git.<alias>.api_base_url - the instance's API base \\\n                         URL including /api/v1, e.g. `https://git.example.org/api/v1` \\\n                         (or `https://gitea.com/api/v1` for the public Gitea service). \\\n                         No default host is assumed because API requests carry the \\\n                         access token\"\n                    );\n                };\n                Ok(Box::new(super::providers::gitea::GiteaProvider::new(\n                    api_base_url.to_string(),\n                    cfg.access_token.clone(),\n                    cfg.proxy_url.clone(),\n                )))\n            }\n            #[cfg(not(feature = \"provider-gitea\"))]\n            {\n                anyhow::bail!(\n                    \"git channel provider `{provider}` requires the `provider-gitea` feature\"\n                );\n            }\n        }\n        other => anyhow::bail!(\n            \"unknown git channel provider `{other}` (supported: github, gitea, forgejo)\"\n        ),\n    }\n}\n\npub struct GitChannel {\n    cfg: GitConfig,\n    /// The alias key under `[channels.git.<alias>]` this handle is bound\n    /// to. Used to scope peer-group lookups and session keys.\n    alias: String,\n    /// Resolves inbound external peers from canonical state at message-time.\n    /// No cache (see AGENTS.md \"ABSOLUTE RULE — SINGLE SOURCE OF TRUTH\").\n    peer_resolver: Arc<dyn Fn() -> Vec<String> + Send + Sync>,","sourceCodeStart":112,"sourceCodeEnd":148,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-channels/src/git/channel.rs#L112-L148","documentation":"build_provider selected gitea or forgejo, but this build of zeroclaw-channels was compiled without the provider-gitea cargo feature, so the shared Gitea/Forgejo implementation is cfg'd out and the channel refuses to start at construction.","triggerScenarios":"provider = \"gitea\" or \"forgejo\" in config on a build of zeroclaw-channels without features = [\"provider-gitea\"] (e.g. default-features = false downstream builds).","commonSituations":"Minimal downstream builds that trimmed provider features; switching a channel config to gitea/forgejo on a binary built only with provider-github.","solutions":["Enable the feature where you depend on the crate: zeroclaw-channels = { version = \"...\", features = [\"provider-gitea\"] } (covers both gitea and forgejo)","Or use the stock zeroclaw binary whose feature set includes it","Or switch the channel to a provider that is compiled in"],"exampleFix":"# before\nzeroclaw-channels = { version = \"0.7\", default-features = false }\n\n# after\nzeroclaw-channels = { version = \"0.7\", default-features = false, features = [\"provider-gitea\"] }","handlingStrategy":"validation","validationCode":"// Inside a crate that depends on zeroclaw-channels: make the requirement explicit\n// zeroclaw-channels = { version = \"0.7\", features = [\"provider-gitea\"] }\n// Then guard config at load time:\nif matches!(cfg.provider.as_str(), \"gitea\" | \"forgejo\") {\n    anyhow::bail!(\"rebuild with --features provider-gitea or change channels.git.<alias>.provider\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["When trimming default features, re-enable provider-gitea if any channel uses gitea or forgejo","Add a CI check that validates git channel configs against the compiled feature set"],"tags":["git","gitea","forgejo","cargo-feature","build-config"],"backgroundTag":"missing-feature-flag","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}