fix(buzz): publish native agent directory metadata - #9
Conversation
Publish and reconcile signed kind-10100 directory records from the native Buzz gateway, including bounded ACK handling, authorization-safe policy projection, NIP-OA condition verification, and channel-removal refresh.
Live pilot acceptance — 2026-08-13Both cumulative-runtime pilots passed against the Peakhunter relay and Buzz Desktop consumer. Reinhold (Linux Gateway)
Habeler (macOS Gateway)
Scope boundaryInline-code addressed-name text still activates Hermes through the existing raw-content mention predicate. That is the separately tracked #8 and is not changed by this directory-publication PR. The pilots used cumulative candidates solely to preserve production-only fixes. The upstream review branch remains the focused one-commit change stacked on NousResearch#74823. |
|
CI follow-up: Slice 6 exposed an upstream test-fixture ordering bug unrelated to the Buzz implementation. Separate commit |
|
✅ CI follow-up resolved. Run |
Why
A native Hermes Buzz Gateway can be fully operational yet absent from Buzz's agent directory because the adapter never publishes kind 10100. That breaks the visible agent badge/owner metadata and makes an agent undiscoverable after it is removed from a channel.
This is the directory-publication half of #6. It is intentionally stacked on NousResearch#74823, which adds live joined-channel discovery.
Architecture
home_channelindependent from inbound observation.Public projection
The record includes:
name/display_nameagent_type: hermes-gatewaycapabilities: [chat]statusrespond_to/respond_to_allowlistchannel_add_policy: owner_onlyAn empty effective authorization policy is represented as Buzz's supported empty allowlist rather than a broader or unknown wire value.
Safety
allow_all_usersis not advertised when runtime authorization does not honor it.Tests
Independent local verification:
Command covered:
Focused pre-commit rerun:
Additional gates:
py_compile: passedgit diff --check: passedThe full
tests/gatewaysuite completed with 4,447 passing, 23 skipped, and seven failures that reproduce on the unchanged base checkout (optional Discord/WeCom dependency state plus an existing session-home fixture issue); none touch the changed Buzz files.Live evidence
Before this patch, Habeler had no kind-10100 event and disappeared from add-member discovery after channel removal. Publishing the exact projection manually restored:
Agent type → hermes-gatewayCapabilities → chatThis patch turns that proven recovery into the native adapter lifecycle.
Dependency and rollout
Peakhunter:fix/buzz-dynamic-channels/ upstream PR fix(buzz): discover newly joined channels dynamically NousResearch/hermes-agent#74823main.Tracking
Live pilot acceptance
Both Linux and macOS cumulative-runtime pilots passed. See the PR comment for exact sanitized evidence.