Skip to content

Fix cross-pod membership notification fanout#1291

Merged
tlongwell-block merged 1 commit into
mainfrom
max/membership-notification-redis
Jun 25, 2026
Merged

Fix cross-pod membership notification fanout#1291
tlongwell-block merged 1 commit into
mainfrom
max/membership-notification-redis

Conversation

@tlongwell-block

Copy link
Copy Markdown
Collaborator

Summary

  • publish relay-signed membership notifications through Redis using the existing nil-UUID global-event sentinel
  • preserve local echo suppression before local fanout
  • add coverage that global membership pubsub fanout reaches only matching #p subscribers

Root cause

ACP harnesses subscribe globally to kind 44100/44101 membership notifications with #p=[agent_pubkey], then dynamically subscribe to newly-added channels from that notification timestamp. The relay stored those notifications globally but only fanned them out to local WebSocket subscribers. In a multi-pod deployment, an add-member write handled by pod A did not reach an agent harness connected to pod B, so the harness never subscribed to the new channel and missed subsequent mentions.

Test plan

  • ./bin/cargo fmt --check --package buzz-relay
  • ./bin/cargo test -p buzz-relay handlers::event::tests::pubsub_fanout -- --nocapture
  • pre-push hooks on git push

Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co>
@tlongwell-block tlongwell-block merged commit e1c51d7 into main Jun 25, 2026
29 checks passed
@tlongwell-block tlongwell-block deleted the max/membership-notification-redis branch June 25, 2026 20:09
tellaho pushed a commit that referenced this pull request Jun 25, 2026
…ebar

* origin/main:
  fix(sidebar): non-selectable channel names + copy/leave context menu actions (#1260)
  fix(runtime): sweep node wrapper processes hosting managed agent shims (#1296)
  fix(buzz-agent): follow symlinks when discovering skill directories (#1295)
  chore: add grab-emoji.sh to register Slack emoji in Buzz (#1292)
  Fix cross-pod membership notification fanout (#1291)
  fix(buzz-acp): strengthen agent communication rules in base prompt (#1293)
  chore(release): release Buzz Desktop version 0.3.34 (#1289)
  feat(desktop): refresh Agents tab live on inbound relay sync (#1256)
  fix(buzz-acp): inject Codex network allowlist for relay hostname at spawn time (#1287)

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>

# Conflicts:
#	desktop/src-tauri/src/commands/agent_models.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant