Skip to content

docs(agents): design relay-facing paths for the whole fleet at once - #2620

Merged
bradseiler merged 3 commits into
mainfrom
elrond/fleet-at-once-rule
Nov 5, 2026
Merged

bradseiler merged 3 commits into
mainfrom
elrond/fleet-at-once-rule

Conversation

@TheSentinel454

@TheSentinel454 TheSentinel454 commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

What

Adds one paragraph to the "Engineering standard" section of AGENTS.md: design every relay-facing path (connect, reconnect, renewal, poll, catch-up) for the whole fleet running it at once. It asks authors to state relay reads per client, reconnect from a cursor, jitter and cap backoff, and prefer event-driven refresh over short polls.

Why

A relay rollout, restart, or network blip makes every client run these paths in the same few seconds. Relay load tests keep finding the same class of defect: a path that is cheap for one client but heavy for the relay when every client runs it, for example per-channel replay filters (#2308), re-reading channels whose replay already completed (#2206), and a 60-second full channel-list poll (#2215).

This is the client-side half of the relay-side guidance proposed in block/buzz#9106. The paragraph is self-contained and does not cite that rule by number, so the two PRs can merge in either order.

What got simpler

Nothing in code. Reviewers get one stated rule instead of rediscovering the same reconnect cost in each review.

Validation

Docs-only. Checked the diff and that the two PRs linked from AGENTS.md (#2308, #2215) are merged.

🤖 Generated with Claude Code

A relay rollout or network blip makes every client reconnect, renew, and
catch up in the same few seconds. Add the client-side checks from block/buzz
Review-Proven Rule 9: count relay reads per client, reconnect from a cursor,
jitter and cap backoff, and prefer event-driven refresh over short polls.

Co-authored-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Luke Tornquist <[email protected]>
@TheSentinel454
TheSentinel454 marked this pull request as ready for review November 5, 2026 15:49
@TheSentinel454
TheSentinel454 requested a review from a team as a code owner November 5, 2026 15:49
TheSentinel454 and others added 2 commits November 5, 2026 10:53
Address review: skipping a reconnect repair read needs proven
continuity and full reconciliation of every touched projection.

Co-authored-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Luke Tornquist <[email protected]>
Address review: block/buzz Review-Proven Rule 9 is not on main yet, so
the paragraph no longer cites it. Drop the open #2206 citation, write
the 306-filter cost in the past tense now that #2308 combined filters,
and link the cited buzz-app PRs explicitly.

Co-authored-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Luke Tornquist <[email protected]>
@bradseiler
bradseiler merged commit dd864f5 into main Nov 5, 2026
42 checks passed
@bradseiler
bradseiler deleted the elrond/fleet-at-once-rule branch November 5, 2026 16:48
johnmatthewtennant added a commit that referenced this pull request Nov 5, 2026
Signed-off-by: John Tennant <[email protected]>

* origin/main: (47 commits)
  fix(messages): pass verified labels to the forward recipient picker (#2633)
  feat(messages): forward a message to a person (#2167)
  docs(agents): design relay-facing paths for the whole fleet at once (#2620)
  Route debug sessions through the credential helper (#2541)
  perf(search): skip no-op slow-search resets on each keystroke (#2605)
  perf(agents): dedupe channel members only for dm connection setup (#2603)
  perf(search): keep the search tab row across palette keystrokes (#2588)
  perf(sidebar): skip the hidden actions menu in solo and team headers (#2582)
  perf(search): rank each palette name once per render (#2606)
  perf(sidebar): skip re-rendering unchanged animated channel rows (#2572)
  feat(settings): follow the system clock and let people hide message times (#2440)
  feat(plugins): repository access rules for Git imports (#2484)
  feat(desktop): add Settings to the macOS app menu (#2594)
  Preserve and renew external app approval (#2464)
  fix(direct-messages): show verified identity in new message recipient search (#2585)
  Offer plugin updates from the Buzz shell (#2491)
  fix(messages): keep decoded images across virtualized remounts (#2474)
  Keep /leave commands out of channel history (#2476)
  fix(agents): ask before switching or closing drops unsaved edits (#2503)
  fix(agents): keep the Model settings row full width (#2577)
  ...
wpfleger96 added a commit that referenced this pull request Nov 5, 2026
…-service

* origin/main:
  fix(messages): pass verified labels to the forward recipient picker (#2633)
  feat(messages): forward a message to a person (#2167)
  docs(agents): design relay-facing paths for the whole fleet at once (#2620)
  Route debug sessions through the credential helper (#2541)
  perf(search): skip no-op slow-search resets on each keystroke (#2605)
  perf(agents): dedupe channel members only for dm connection setup (#2603)
  perf(search): keep the search tab row across palette keystrokes (#2588)
  perf(sidebar): skip the hidden actions menu in solo and team headers (#2582)
  perf(search): rank each palette name once per render (#2606)
  perf(sidebar): skip re-rendering unchanged animated channel rows (#2572)
cheng-block added a commit to cheng-block/buzz-app that referenced this pull request Nov 5, 2026
…ettings-shift-esc

* upstream/main: (40 commits)
  feat(conversation): let plugin rows manage messages without visiting a channel (block#2512)
  feat(github): make side-panel link opening optional (block#2629)
  feat(messages): show a blurred thumbnail until an image loads (block#2556)
  fix(relay): give large roster and read-state reads a 30s deadline (block#2627)
  fix(user-status): show a status emoji's :name: on hover where the full status shows (block#2384)
  fix(inbox): keep the list's place when returning in the same session (block#2134)
  fix(messages): pass verified labels to the forward recipient picker (block#2633)
  feat(messages): forward a message to a person (block#2167)
  docs(agents): design relay-facing paths for the whole fleet at once (block#2620)
  Route debug sessions through the credential helper (block#2541)
  perf(search): skip no-op slow-search resets on each keystroke (block#2605)
  perf(agents): dedupe channel members only for dm connection setup (block#2603)
  perf(search): keep the search tab row across palette keystrokes (block#2588)
  perf(sidebar): skip the hidden actions menu in solo and team headers (block#2582)
  perf(search): rank each palette name once per render (block#2606)
  perf(sidebar): skip re-rendering unchanged animated channel rows (block#2572)
  feat(settings): follow the system clock and let people hide message times (block#2440)
  feat(plugins): repository access rules for Git imports (block#2484)
  feat(desktop): add Settings to the macOS app menu (block#2594)
  Preserve and renew external app approval (block#2464)
  ...

Signed-off-by: Cheng Peng <[email protected]>
Co-authored-by: Cursor <[email protected]>
johnmatthewtennant added a commit that referenced this pull request Nov 5, 2026
…thumbnails

* origin/main: (120 commits)
  feat(conversation): let plugin rows manage messages without visiting a channel (#2512)
  feat(github): make side-panel link opening optional (#2629)
  feat(messages): show a blurred thumbnail until an image loads (#2556)
  fix(relay): give large roster and read-state reads a 30s deadline (#2627)
  fix(user-status): show a status emoji's :name: on hover where the full status shows (#2384)
  fix(inbox): keep the list's place when returning in the same session (#2134)
  fix(messages): pass verified labels to the forward recipient picker (#2633)
  feat(messages): forward a message to a person (#2167)
  docs(agents): design relay-facing paths for the whole fleet at once (#2620)
  Route debug sessions through the credential helper (#2541)
  perf(search): skip no-op slow-search resets on each keystroke (#2605)
  perf(agents): dedupe channel members only for dm connection setup (#2603)
  perf(search): keep the search tab row across palette keystrokes (#2588)
  perf(sidebar): skip the hidden actions menu in solo and team headers (#2582)
  perf(search): rank each palette name once per render (#2606)
  perf(sidebar): skip re-rendering unchanged animated channel rows (#2572)
  feat(settings): follow the system clock and let people hide message times (#2440)
  feat(plugins): repository access rules for Git imports (#2484)
  feat(desktop): add Settings to the macOS app menu (#2594)
  Preserve and renew external app approval (#2464)
  ...

Signed-off-by: John Tennant <[email protected]>

# Conflicts:
#	src-tauri/src/relay.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants