zeroclaw-labs/zeroclaw · error · anyhow::Error

git channel `events` routing table ignores every event type;

Error message

git channel `events` routing table ignores every event type; nothing would ever be delivered

What it means

listen() compiles the channels.git.<alias>.events routing table into an event filter plan and checks plan.any(): if the table filters out every possible event type, no event could ever be delivered, which is treated as a misconfiguration and bails instead of silently polling forever.

Source

Thrown at crates/zeroclaw-channels/src/git/channel.rs:517

                        "issues": plan.issues,
                        "comments": plan.comments,
                        "review_comments": plan.review_comments,
                        "releases": plan.releases,
                        "workflow_runs": plan.workflow_runs,
                        "events_backbone": self.cfg.events_backbone,
                    },
                })
            ),
            "git channel polling"
        );
        if repos.is_empty() {
            anyhow::bail!(
                "git channel has no repositories to poll; set `repos` or grant the \
                 provider access to at least one repository"
            );
        }
        if !plan.any() {
            anyhow::bail!(
                "git channel `events` routing table ignores every event type; \
                 nothing would ever be delivered"
            );
        }

        let filter = EventFilter {
            bot_login: &bot_login,
            mention_handle: &mention_handle,
            mention_only: self.cfg.mention_only,
            listen_to_bots: self.cfg.listen_to_bots,
        };
        let mut state = PollState::new(chrono::Utc::now());

        loop {
            for repo in &repos {
                match self.poll_repo(repo, &filter, &plan, &mut state, &tx).await {
                    Ok(true) => {}
                    Ok(false) => return Ok(()),

View on GitHub (pinned to 88bb9c8533)

Solutions

  1. Enable at least one event type in the events table (use the channel's documented event keys, e.g. issues, pull_request, push)
  2. Check for a blanket ignore/disable entry overriding your selections
  3. Validate the events config against the documented schema before deploy

Example fix

# before
[channels.git.mine.events]
# every type disabled → listen() bails

# after
[channels.git.mine.events]
issues = true
pull_request = true
Defensive patterns

Strategy: validation

Validate before calling

// Rust — lint the routing table before listen()
let plan = EventFilterPlan::compile(&cfg.events)?;
if !plan.any() {
    anyhow::bail!("events routing table enables no event types; nothing would be delivered");
}

Prevention

When it happens

Trigger: An events table whose entries all resolve to ignore/none — every event type explicitly disabled, or a table using unrecognized keys so nothing matches.

Common situations: Copy-pasted events config that disables everything while intending to enable a subset; renamed event keys that no longer match the schema; a blanket ignore-all entry left in place.

Related errors


AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23). Data as JSON: /api/errors/f8e76fc0fca0bfc6. Report an issue: GitHub.