Summary
After upgrading from 0.7.7 to 0.7.8-beta.6, every Discord bot connects successfully (discord bot connected), emits the Ready event, and then falls completely silent. No further gateway events are received — no GUILD_CREATE, no MESSAGE_CREATE, and no shard heartbeat log lines.
Rolling back to 0.7.7 immediately restores normal operation.
Environment
- Version:
openab-0.7.8-beta.6 (clean upstream tag, no local patches)
- Build:
cargo build --release on Linux x86_64, Rust stable
- Deployment: 8 agent services on a single VPS, each binding its own Discord bot token (codex-acp + claude-agent-acp ACP backends)
- Discord intents:
GUILD_MESSAGES | MESSAGE_CONTENT | GUILDS (default)
Reproduction
- Build 0.7.8-beta.6 release binary from tag.
- Deploy via systemd drop-in to a single service (isolated canary) pointing to the new binary.
- Start service. Observe logs for 10 minutes.
Observed
Journal for the 10-minute window contains only 6 lines total:
```
INFO openab: config loaded agent_cmd=codex-acp pool_max=5 discord=true slack=false reactions=true
INFO openab: starting discord adapter channels=11 users=0 trusted_bots=7 allow_bot_messages=Mentions allow_user_messages=Mentions
INFO openab: discord bot running
INFO start:start_connection{start_shard=0 end_shard=0 total_shards=1}:initialize:boot{shard_info=[ShardId(0), ShardId(1)]}: serenity::gateway::bridge::shard_manager: Telling shard queuer to start shard 0
INFO run: serenity::gateway::bridge::shard_runner: [ShardRunner ShardInfo { id: ShardId(0), total: 1 }] Running
INFO openab::discord: discord bot connected user=
```
After the final discord bot connected, the process stays alive but emits zero subsequent log lines — no GUILD_CREATE for any of the server's guilds, no heartbeat ACK, no MESSAGE_CREATE even when explicit @-mentions target the bot in allowed channels.
Expected on 0.7.7 in the same environment: GUILD_CREATE within seconds, subsequent MESSAGE_CREATE as users post, periodic heartbeat activity.
Isolation
- Tested with zero local patches (direct
cargo build --release from openab-0.7.8-beta.6 tag).
- Same bot token, same config.toml, same Discord intents as 0.7.7 deployment.
- No crashes, no OOM, no panic — process stays alive, just silent.
- Reproduced across all 8 service instances (identical symptom).
- Rollback to 0.7.7 binary with identical config → gateway events resume within seconds.
Suspected area
src/adapter.rs was rewritten between 0.7.7 and 0.7.8-beta.2 (#429) — the handle_message path was wrapped in tokio::spawn and the streaming-edit model was overhauled with use_streaming() gating. src/adapter.rs was not touched between beta.6 and beta.7, so 0.7.8-beta.7 likely shows the same behavior (haven't verified yet — will report back after building beta.7).
Worth investigating whether something in the new adapter flow or shard runner interaction is preventing serenity from delivering events after Ready. Could also be a subtle deadlock between the watch channel used for streaming and the spawned handle_message tasks.
Impact
Every multi-bot deployment that upgrades past 0.7.8-beta.2 is likely affected. Staying on 0.7.7 for the time being.
Happy to run diagnostics / patches against my environment to help isolate further.
Summary
After upgrading from 0.7.7 to 0.7.8-beta.6, every Discord bot connects successfully (
discord bot connected), emits the Ready event, and then falls completely silent. No further gateway events are received — noGUILD_CREATE, noMESSAGE_CREATE, and no shard heartbeat log lines.Rolling back to 0.7.7 immediately restores normal operation.
Environment
openab-0.7.8-beta.6(clean upstream tag, no local patches)cargo build --releaseon Linux x86_64, Rust stableGUILD_MESSAGES | MESSAGE_CONTENT | GUILDS(default)Reproduction
Observed
Journal for the 10-minute window contains only 6 lines total:
```
INFO openab: config loaded agent_cmd=codex-acp pool_max=5 discord=true slack=false reactions=true
INFO openab: starting discord adapter channels=11 users=0 trusted_bots=7 allow_bot_messages=Mentions allow_user_messages=Mentions
INFO openab: discord bot running
INFO start:start_connection{start_shard=0 end_shard=0 total_shards=1}:initialize:boot{shard_info=[ShardId(0), ShardId(1)]}: serenity::gateway::bridge::shard_manager: Telling shard queuer to start shard 0
INFO run: serenity::gateway::bridge::shard_runner: [ShardRunner ShardInfo { id: ShardId(0), total: 1 }] Running
INFO openab::discord: discord bot connected user=
```
After the final
discord bot connected, the process stays alive but emits zero subsequent log lines — no GUILD_CREATE for any of the server's guilds, no heartbeat ACK, no MESSAGE_CREATE even when explicit @-mentions target the bot in allowed channels.Expected on 0.7.7 in the same environment:
GUILD_CREATEwithin seconds, subsequentMESSAGE_CREATEas users post, periodic heartbeat activity.Isolation
cargo build --releasefromopenab-0.7.8-beta.6tag).Suspected area
src/adapter.rswas rewritten between 0.7.7 and 0.7.8-beta.2 (#429) — thehandle_messagepath was wrapped intokio::spawnand the streaming-edit model was overhauled withuse_streaming()gating.src/adapter.rswas not touched between beta.6 and beta.7, so 0.7.8-beta.7 likely shows the same behavior (haven't verified yet — will report back after building beta.7).Worth investigating whether something in the new adapter flow or shard runner interaction is preventing serenity from delivering events after Ready. Could also be a subtle deadlock between the watch channel used for streaming and the spawned
handle_messagetasks.Impact
Every multi-bot deployment that upgrades past 0.7.8-beta.2 is likely affected. Staying on 0.7.7 for the time being.
Happy to run diagnostics / patches against my environment to help isolate further.