Repository navigation
Conversation
…m over BPS-lite Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cue roster is not sent twice Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…stream and drops its frames unpunished Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he owner's alone, kind and owner on every delivery Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🔵 Needs a closer look
It introduces a large, intricate protocol specification with multiple deliberate open design points and cross-SWIP dependencies that warrant final human editorial and technical review.
0 open findings
What changed in this PR
This PR adds SWIP-87, the second step of the Broadcast Pub/Sub (BPS) family, specified as a strict extension of SWIP-74 (BPS-lite). It gives a BPS-lite channel's admin a signed control plane: a roster feed naming additional publishers and an end-of-stream (EOS) feed to close the channel attributably. It is the "roster slice" of SWIP-60, lifted out so it can be implemented and conformance-tested independently. The change is purely a new specification document — no code.
Changes:
- Adds two
Kindvalues (EOS = 3,ROSTER = 4) and one payload message (Roster) on the existingBroadcastframe, with no change toJoin,Ack, orCohortSpec. - Defines broker/subscriber rules: pending streams for rostered addresses, per-publisher and per-service-kind cursors, delivery to publisher streams, roster-based revocation (no grace period, dropped-not-punished), and channel end via signed
EOS. - States three rules to be carried back to SWIP-60 (roles change only by rejoining; revocation closes streams without punishment; cursor table bounded by the roster).
| File | Description |
|---|---|
SWIPs/swip-87.md |
New Draft Standards Track SWIP specifying the admin roster and EOS control plane over BPS-lite, including wire format, validation, revocation, bounds, outcomes, WebSocket bridge, and conformance. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
SWIP-87: BPS explicit multi-publisher — the admin's roster and end of stream over BPS-lite.
Stacked on SWIP-74 BPS-lite (#111): this PR's base is
swip-bps-lite, so the diff isSWIPs/swip-87.mdalone.The admin of a BPS-lite channel names who else may publish by publishing a roster on a feed of its own, and can end the channel with an EOS. It is the roster slice of SWIP-60 (#104), with nothing else of it: two more
Kindvalues (EOS = 3,ROSTER = 4) and one payload message (Roster). No new frame, and no change toJoin,Ackor the cohort spec. A cohort is multi-publisher iff its admin ever publishes a roster.What the SWIP specifies:
Three rules are to be carried back to SWIP-60: roles change only by rejoining; revocation closes the revoked streams with no grace period and no punishment; and the cursor table is bounded by the roster.
Implementation: ethersphere/bee#5661 (draft, stacked on bee #5626).
Open points are marked (?) in the text.
🤖 Generated with Claude Code