Skip to content

feat(ui): board summary badges in the sidebar and FleetPane (RIG-5177) - #2290

Merged
mattwilkinsonn merged 4 commits into
mainfrom
compass-ux/5177-board-badges
Oct 16, 2026
Merged

mattwilkinsonn merged 4 commits into
mainfrom
compass-ux/5177-board-badges

Conversation

@rigel-mintaka

@rigel-mintaka rigel-mintaka commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

This PR is part of a stack containing 4 PRs:

  1. main
  2. "feat(ui): board summary badges in the sidebar and FleetPane (RIG-5177)" (this PR)
  3. feat(board): show asks and their forge mirror state on boards (RIG-5173) #2292
  4. feat(ui): add the agent board panel and tasks search over ListAgentBoards (RIG-5409) #2300
  5. feat(mirror): agent forge_mirror_messages tool with real-session attribution (RIG-5174) #2319

Summary

  • Show each agent's board summary in the UI. adaptRosterEntry reads RosterEntry.board, and the agentBoardChanged stream event updates it. AgentLeaf shows a halt mark (data-halt done, blocked or awaiting_user) and a waiting-on-you count. FleetPane shows "N waiting on you".
  • adaptAgentBoard maps the full wire board to domain types. Unknown enum values map to undefined, or to "unknown" for ref kind.
  • An event board carries no derived refs (design D7), so the client cannot recompute waiting-on-you. After each agentBoardChanged the stream re-reads GetRoster(OWNER) and takes the server summary for that agent. An agent the re-read does not list belongs to someone else, so its waiting count drops to zero. A failed re-read reports through onError and keeps the event summary.
  • A presenceChanged delta now merges into the existing entry, so it no longer drops the board summary.
  • Stacked on feat(board): agent board RPCs, roster summary and board events (RIG-5172) #2285, which fills RosterEntry.board on the server. The board panel and the tasks search provider follow in RIG-5409.

Verification

  • moon run compass-ui:typecheck, compass-ui:stylelint: pass. Biome: warnings only (one new complexity warning on decodeEvent, one case over the limit).
  • moon run compass-ui:test on the feat(board): agent board RPCs, roster summary and board events (RIG-5172) #2285 base: 1606 pass, 0 fail.
  • Mutation checks: each fix reverted turns its test red (event recount, presence replace, unknown ref kind, event not applied, board-event roster re-read, missing roster entry, re-read after teardown).
  • Pre-push moon ci: green.

Risks

Low. UI only. Each board event costs one GetRoster(OWNER) read; board writes are rare next to messages. Rollback: revert.

Compatibility

Additive. New re-exports from @compass/client for the board types. No wire or API change.

Documentation

None: the design record already describes these surfaces.

Spec-impact: none
Refs RIG-5177

@trunk-io

trunk-io Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

😎 This pull request was merged.

@linear-code

linear-code Bot commented Oct 13, 2026

Copy link
Copy Markdown

RIG-5177

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-ux-5177-board-badges.compass-eng-docs.pages.dev

Deployed from compass-ux/5177-board-badges at cad170c.

@rigel-mintaka
rigel-mintaka force-pushed the compass-ux/5177-board-badges branch from 278d863 to 1ec9d4e Compare October 13, 2026 15:18
@rigel-mintaka
rigel-mintaka changed the base branch from main to compass-server/rig-5172-board-rpc October 13, 2026 15:18
@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Review result

Notes

Earlier rounds and their fixes:

  • High: the waiting-on-you count stayed stale after agentBoardChanged (an event board carries no derived refs). Fixed in 750e1657: the stream re-reads GetRoster(OWNER) after each board event. The PR is now stacked on feat(board): agent board RPCs, roster summary and board events (RIG-5172) #2285, which fills RosterEntry.board.
  • Medium: an agent missing from the re-read kept its cached count. Fixed in 1ec9d4ea: its count drops to zero.
  • Medium: a re-read that resolves after teardown still applied state. Fixed in d6429c15: the signal is checked before applying.
  • Low: onError docs did not mention re-read failures, and a helper comment ran 3 lines. Both fixed.

Gates

@rigel-mintaka
rigel-mintaka marked this pull request as ready for review October 13, 2026 16:07
@mattwilkinsonn
mattwilkinsonn added this pull request to stack #2242 October 15, 2026 02:19
@rigel-mintaka
rigel-mintaka force-pushed the compass-ux/5177-board-badges branch from d6429c1 to c94a2da Compare October 15, 2026 03:23
@rigel-mintaka
rigel-mintaka force-pushed the compass-ux/5177-board-badges branch from c94a2da to c13888b Compare October 15, 2026 05:57
@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Review result

  • reviewedSha: c13888b09d3ea6de52945be001bbeb803539c96e
  • reviewedBase: 9e017e779ccf5ef3dc1a0c4d5a74c754a4ea2a66
  • Result: all-clear (0 high, 0 medium open)

Notes: Pure rebase by the board line owner onto main 309cd3f (base #2285 9e017e7). jj interdiff c94a2da to this head is empty, and c94a2da was itself an empty-interdiff rebase of the reviewed d6429c1. UI suite at this head: 1606 pass, 0 fail. The prior all-clear at d6429c1 carries.

Gates: latest CI run green at this head; pre-push hooks passed.

Base automatically changed from compass-server/rig-5172-board-rpc to main October 15, 2026 17:52
@mattwilkinsonn
mattwilkinsonn force-pushed the compass-ux/5177-board-badges branch from 32ddd1d to bfd7187 Compare October 15, 2026 17:52
@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Review result

  • reviewedSha: bfd718725c1c5326dea51f30dd009cfeaad45768
  • reviewedBase: 12489a0ced3a5eaf20a732350804255e600535c1
  • Result: all-clear (0 high, 0 medium open)

Notes: Rebased by compass-comms onto main 22d9fc0 after #2275 and #2285 merged. Interdiff is empty against 32ddd1d and against c13888b. All checks on bfd7187 pass. The prior all-clear at d6429c1 carries.

Gates: latest CI run green at this head; pre-push hooks passed.

rigel-mintaka and others added 4 commits October 15, 2026 21:54
Adapt the board summary from the roster and the AgentBoardChanged
stream event. AgentLeaf shows a halt dot and a waiting-on-you count,
and FleetPane shows the count. An event board carries no derived refs,
so it updates focus, task count, halt and freshness but keeps the
server's waiting-on-you count. A presence delta no longer drops the
summary. The board panel and task search need ListAgentBoards and
follow in a separate change.

Spec-impact: none
Refs RIG-5177

Co-authored-by: Matt Wilkinson <matt@rigel.build>
… (RIG-5177)

An AgentBoardChanged carries no derived refs, so the client cannot
recompute waiting-on-you. Re-read GetRoster after the event and take
the server summary for that agent. A failed re-read reports through
onError and keeps the event summary until the next read.

Spec-impact: none
Refs RIG-5177

Co-authored-by: Matt Wilkinson <matt@rigel.build>
…ng on no one (RIG-5177)

An agent absent from the caller's OWNER roster is not the caller's, so
nothing on its board waits on the caller. A board re-read that finds no
entry now clears the waiting count instead of keeping the cached one.
Document that onError also reports a failed board re-read.

Spec-impact: none
Refs RIG-5177

Co-authored-by: Matt Wilkinson <matt@rigel.build>
A GetRoster re-read can resolve after the stream aborts. Check the
signal before applying it, so no state reaches onState after teardown.

Spec-impact: none
Refs RIG-5177

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@rigel-mintaka
rigel-mintaka force-pushed the compass-ux/5177-board-badges branch from bfd7187 to cad170c Compare October 16, 2026 02:23
@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Review result

  • reviewedSha: cad170c32a5c7b111355e47d037d09a9bda351f8
  • reviewedBase: 888ac07e7f9ef6d4a53ea4a03b3bb5ba2bb701bb
  • Result: all-clear (0 high, 0 medium open)

Notes: Pure rebase by compass-comms onto main 888ac07 (the merged RIG-5186 line). git range-diff 12489a0..bfd7187 888ac07..cad170c shows = for all 4 commits; the interdiff against bfd7187 is empty. The prior all-clear at cad170c carries.

Gates: latest CI run green at this head; pre-push hooks passed.

@mattwilkinsonn
mattwilkinsonn merged commit cf33dca into main Oct 16, 2026
17 checks passed
@mattwilkinsonn
mattwilkinsonn deleted the compass-ux/5177-board-badges branch October 16, 2026 23:11
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