Commit Graph

82 Commits

Author SHA1 Message Date
Vincent Koc 6922ddd936 fix(qa): isolate runner discovery facades (#117203) 2026-08-01 13:40:11 +08:00
Yuval Dinodia e8d546c8da fix(buzz): reconnect silently skips retained inbound messages (#116925)
* fix(buzz): page reconnect history instead of dropping older messages

On reconnect the Buzz gateway asked the relay for a single capped page of
room history and treated EOSE as a complete recovery. Any backlog larger
than the per-room replay limit was never requested again, so those messages
never reached handleBuzzInbound, the agent, or the session transcript, and
nothing reported the loss.

The room subscription now records how much history its first page returned
and, when that page filled the limit, pages older history through the relay
until it is exhausted. Each page is dispatched through the existing bounded
replay queue and the next page waits for queue capacity, so recovery stays
memory bounded. A room whose backlog cannot be paged past a single
timestamp is now reported instead of dropped silently.

Membership tracking moves to room-membership-tracker.ts because buzz-bus.ts
was already at the 700 line ceiling.

* fix(buzz): hold dispatch capacity while a history page is in flight

Catch-up asked the replay queue whether capacity existed and then issued the
relay query, but nothing held those slots. Live room events arriving while
the query was in flight could consume them, so admitting the page afterwards
could report overflow, which closes the dispatch queue and drops every
queued message before forcing a reconnect. A busy room with slow inbound
handlers could repeat that instead of finishing recovery.

Capacity is now reserved rather than sampled. reserveCapacity resolves with a
reservation that owns its slots until released, page events are admitted
through that reservation, and the reservation is released once the page is
enqueued. Live enqueues keep the full pending limit and are never rejected
earlier because a reservation is outstanding. An overflow reported through a
reservation means the relay exceeded the page it was asked for, so it is
reported as a history error instead of tearing down the session.

* fix(buzz): bound reconnect history pages

* fix(buzz): preserve replay reservations

* test(buzz): cover catch-up settlement paths

* fix(buzz): drain saturated history ranges

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-01 08:28:03 +08:00
Peter Steinberger 9e4381eb1c refactor(channels): unify bundled channel setup contracts (#117106)
* refactor(channels): canonicalize bundled setup contracts

* test(matrix): use scoped environment fixtures
2026-07-31 16:57:29 -07:00
Shakker c5979d05ef fix: repair Buzz plugin packaging (#116865)
Restore standalone Buzz npm and ClawHub packaging by using the shipped QA runner SDK surface and generated dependency lock workflow.

Prepared head SHA: 58d0a52c61
Co-authored-by: Shakker <165377636+shakkernerd@users.noreply.github.com>
Reviewed-by: @shakkernerd
2026-07-31 15:32:16 +01:00
Shakker 5cd00cfbaa fix: reserve Buzz relay subscription capacity (#116799) 2026-07-31 13:40:34 +01:00
Shakker a382e6be8a fix: retain Buzz metadata changes during startup 2026-07-31 13:40:34 +01:00
Shakker ec72e23984 fix: resolve Buzz directory CI failures 2026-07-31 13:40:34 +01:00
Shakker 429e83bd23 fix: exclude archived Buzz rooms from peer snapshots 2026-07-31 13:40:34 +01:00
Shakker 8f3c611951 fix: reconnect Buzz rooms after membership notifications 2026-07-31 13:40:34 +01:00
Shakker b3c4ea0291 docs: explain Buzz archived room handling 2026-07-31 13:40:34 +01:00
Shakker bfa0b7e607 test: cover Buzz archived room subscription changes 2026-07-31 13:40:33 +01:00
Shakker ac63627114 fix: rebuild Buzz subscriptions after room archive changes 2026-07-31 13:40:33 +01:00
Shakker 34f815e395 fix: exclude archived Buzz rooms from discovery 2026-07-31 13:40:33 +01:00
Shakker 08ac5b987f fix: cancel Buzz turns during reconnect 2026-07-31 13:40:33 +01:00
Shakker ed8ba5c6bb fix: drain Buzz replay work before reconnect 2026-07-31 13:40:33 +01:00
Shakker 132e39bff6 fix: bound Buzz replay dispatch 2026-07-31 13:40:33 +01:00
Shakker dcf09b5089 fix: avoid duplicate Buzz subscription closes 2026-07-31 13:40:33 +01:00
Shakker f94aa3aa9d fix: bound Buzz reconnect history 2026-07-31 13:40:33 +01:00
Shakker c307ee1544 test: normalize Buzz abort rejection reasons 2026-07-31 13:40:33 +01:00
Shakker e260dfd0ed refactor: keep Buzz profile subscriptions immutable 2026-07-31 13:40:33 +01:00
Shakker da0428526f test: type Buzz subscription stubs safely 2026-07-31 13:40:33 +01:00
Shakker 137c2d8d8a refactor: share Buzz inbound kind checks 2026-07-31 13:40:33 +01:00
Shakker 60c81f3f0a refactor: keep Buzz relay session type private 2026-07-31 13:40:33 +01:00
Shakker 8879fc4cd0 fix: bound Buzz profile synchronization 2026-07-31 13:40:33 +01:00
Shakker befa225e3f fix: bound Buzz profile subscription readiness 2026-07-31 13:40:33 +01:00
Shakker fe3f1983cc fix: reconnect after Buzz directory stalls 2026-07-31 13:40:33 +01:00
Shakker f1e049b086 fix: bound Buzz relay session setup 2026-07-31 13:40:33 +01:00
Shakker a8d2b9be1e fix: clean up failed Buzz subscription opens 2026-07-31 13:40:33 +01:00
Shakker 4b7dbb2f77 fix: bound Buzz directory refresh lifecycle 2026-07-31 13:40:33 +01:00
Shakker a70f547787 fix: recycle stalled Buzz relay queries 2026-07-31 13:40:33 +01:00
Shakker 21f4e45a3b fix: verify Buzz relay membership identity 2026-07-31 13:40:33 +01:00
Shakker 70753c2199 fix: guard Buzz subscription send failures 2026-07-31 13:40:33 +01:00
Shakker 09fd1917e2 fix: defer Buzz query cleanup until EOSE 2026-07-31 13:40:33 +01:00
Shakker 98e60d0b4a fix: require real EOSE across Buzz 2026-07-31 13:40:32 +01:00
Shakker b48984792f fix: use real Buzz relay EOSE 2026-07-31 13:40:32 +01:00
Shakker 828f88c5ca fix: serialize Buzz profile subscription replacement 2026-07-31 13:40:32 +01:00
Shakker 0ddcbfa170 refactor: tighten Buzz directory bounds 2026-07-31 13:40:32 +01:00
Shakker 6c7a96e588 fix: budget Buzz relay subscriptions 2026-07-31 13:40:32 +01:00
Shakker 4ea1ba33d5 fix: refresh Buzz room names after metadata edits 2026-07-31 13:40:32 +01:00
Shakker d81db8b59f perf: avoid unnecessary Buzz directory refreshes 2026-07-31 13:40:32 +01:00
Shakker 370270f9e7 fix: keep Buzz live subscriptions room scoped 2026-07-31 13:40:32 +01:00
Shakker 68002f9be8 fix: retain synchronous Buzz directory query cleanup 2026-07-31 13:40:32 +01:00
Shakker beb9d2120b fix: restore Buzz relay type imports 2026-07-31 13:40:32 +01:00
Shakker dbd9c2f18c refactor: keep Buzz directory helpers private 2026-07-31 13:40:32 +01:00
Shakker 3c78fe00f3 docs: document Buzz directory identities 2026-07-31 13:40:32 +01:00
Shakker 3f15172577 feat: label Buzz senders and rooms from relay profiles 2026-07-31 13:40:32 +01:00
Shakker ec3b7a5f1d feat: expose Buzz sender and room directory 2026-07-31 13:40:32 +01:00
Shakker f8700e2835 refactor: share Buzz membership snapshot queries 2026-07-31 13:40:32 +01:00
Shakker b9eec01e77 refactor: share Buzz authenticated relay setup 2026-07-31 13:40:32 +01:00
Shakker 33340b853d feat: maintain Buzz directory state on the active bus 2026-07-31 13:40:32 +01:00