mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
The agent connected to a single relay, so a message stored only on relay B (because relay A rate-limited the write) was invisible to it — the split-brain. Relays don't gossip (verified against damus RelayPool.swift, NIP-01/65/17, nostr-tools SimplePool): clients must publish-to-many AND subscribe-to-many + dedup by event id. The harness now spawns one background task per relay sharing one event stream, fans out commands to all, and dedups in next_event() via a bounded seen-id ring (like damus seenEvents). Proven live: agent on [damus,nos.lol] receives a kind-9 published ONLY to nos.lol (agent_multi_relay_subscribe_no_split_brain), plus the existing encrypted-receive test now runs against a comma relay list.