Skip to content

WPB-28162: version-aware event delivery - #5469

Open
blackheaven wants to merge 5 commits into
developfrom
gdifolco/WPB-28162-event-version-filter
Open

WPB-28162: version-aware event delivery#5469
blackheaven wants to merge 5 commits into
developfrom
gdifolco/WPB-28162-event-version-filter

Conversation

@blackheaven

Copy link
Copy Markdown
Contributor

https://wearezeta.atlassian.net/browse/WPB-28162

Checklist

  • Add a new entry in an appropriate subdirectory of changelog.d
  • Read and follow the PR guidelines

@blackheaven
blackheaven requested review from a team as code owners August 20, 2026 16:17
@blackheaven
blackheaven force-pushed the gdifolco/WPB-28162-event-version-filter branch from c1488b2 to 8b94b16 Compare August 20, 2026 16:20
@zebot zebot added the ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist label Aug 20, 2026
Add a Transmit type class and a dispatcher over stored untyped event
objects, applied on both delivery channels using the API version of the
endpoint the client called. Meeting-related events
(conversation.create-meeting, conversation.delete-meeting, meeting.*)
are not delivered to clients below V15, the version meetings were
introduced in.

- wire-api: Transmit class (Wire.API.Notification), family instances
  (Wire.API.Event.Conversation, Wire.API.Event.Meeting), and dispatcher
  Wire.API.Event.Transmit (unknown types always delivered, gated types
  fail closed on decode errors, >= V15 fast path returns stored bytes)
- gundeck: APIVersion prefix on all four notification routes; paginate
  filters survivors with a bounded refill loop so an all-gated page
  cannot strand the client cursor; fetchId/fetchLast post-filter
- cannon: APIVersion prefix on all four websocket routes; per-connection
  wsApiVersion; legacy push and RMQ paths encode per-target version;
  filtered drops are acked/reported OK so gundeck does not fall back to
  native push
- tests: unit Test.Wire.API.Event.Transmit incl. encoding drift guards;
  integration Test.NotificationsVersioned (REST + websocket);
  Testlib.Cannon can open websockets at an explicit API version

Storage, fan-out and native push are unchanged; modern clients receive
byte-identical payloads.
@blackheaven
blackheaven force-pushed the gdifolco/WPB-28162-event-version-filter branch from 8b94b16 to 643f41d Compare August 20, 2026 17:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants