Skip to content

fix(buzz): discover joined rooms and support room-scoped free response - #80038

Open
coldcrippy wants to merge 3 commits into
NousResearch:mainfrom
coldcrippy:fix/buzz-channel-always-listen
Open

fix(buzz): discover joined rooms and support room-scoped free response#80038
coldcrippy wants to merge 3 commits into
NousResearch:mainfrom
coldcrippy:fix/buzz-channel-always-listen

Conversation

@coldcrippy

Copy link
Copy Markdown

Summary

  • preserve upstream joined-channel membership discovery from fix(buzz): discover newly joined channels dynamically #74823 (original commit credited to SHL0MS)
  • use one discovery path for WebSocket membership events and periodic polling
  • seed each newly discovered room/DM before dispatch and reject pre-discovery events
  • support canonical free_response_channels for room-scoped mention bypass while preserving self-echo and author allowlists

Verification

  • scripts/run_tests.sh tests/gateway/test_buzz_adapter.py tests/gateway/test_buzz_websocket.py -q — 81 passed
  • ruff check + git diff --check — clean
  • independent immutable-candidate review on a5851b1c2c0f3c09706a19ca279da93967f6355e — CLEAN

@alt-glitch alt-glitch added type/bug Something isn't working comp/plugins Plugin system and bundled plugins area/config Config system, migrations, profiles P3 Low — cosmetic, nice to have needs-decision Awaiting maintainer decision before any implementation sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades labels Aug 6, 2026
@ScaleLeanChris

Copy link
Copy Markdown
Contributor

Tested current head a5851b1c2c0f3c09706a19ca279da93967f6355e in an isolated live Hermes gateway against a real Buzz relay over the WebSocket transport.

Automated check:

  • pytest tests/gateway/test_buzz_adapter.py -q: 34 passed
  • No source or test modifications were made.

Live acceptance:

  1. Joined-room discovery: a room joined after gateway startup produced subscribed to new conversation, and the adapter began receiving live events without a restart.
  2. Pre-discovery boundary: an addressed message created before the agent joined was seeded but never dispatched or answered after discovery.
  3. Room-scoped free response: an unmentioned message in a configured free_response_channels room was dispatched and received the requested reply.
  4. Ordinary mention gating: an unmentioned message in a normal room was not dispatched and received no reply; the following explicit @Fly message was dispatched and answered.
  5. Authorization remained independent: the live probes required the sender to pass the existing user allowlist. The free-response exemption did not bypass that gate.

Temporary room and authorization settings were restored after the run. The candidate gateway reconnected cleanly afterward.

The discovery handoff worked “Just in Time”: history stayed behind the cursor, while the first live message after subscription was handled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/config Config system, migrations, profiles comp/plugins Plugin system and bundled plugins needs-decision Awaiting maintainer decision before any implementation P3 Low — cosmetic, nice to have sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants