Commit Graph

83 Commits

Author SHA1 Message Date
Ayaan Gazali
11069c3df5 fix(channels): config validation rejects documented channels.<id>.configWrites on 13 channels (#117206) 2026-08-01 15:33:16 +08:00
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