Skip to content

feat(board): show asks and their forge mirror state on boards (RIG-5173) - #2292

Merged
mattwilkinsonn merged 1 commit into
compass-ux/5177-board-badgesfrom
compass-comms/rig-5173-board-asks
Oct 16, 2026
Merged

mattwilkinsonn merged 1 commit into
compass-ux/5177-board-badgesfrom
compass-comms/rig-5173-board-asks

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) #2290
  3. "feat(board): show asks and their forge mirror state on boards (RIG-5173)" (this PR)
  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

Stack

What

This is the board-asks half of T5. Design: docs/designs/agent/compass-agent-status-record/design.md §T5, §D5, §D6 "Delivery".

  • ListAgentBoards fills each board's asks from AsksByAuthor(viewer = caller, …). A board lists every pending ask plus asks answered in the last 24h, pending first, at most 20. An ask in a channel the caller can't see is left out.
  • Each ask gets mirror_state and mirror_url. The URL is set only when the mirror is done. Mirror rows for all listed boards are fetched in one batched lookup. When an ask has several rows, the agent's automatic row wins, then the newest row.
  • The UpdateAgentBoard response fills the same fields.
  • A board write re-drives the agent's open mirror rows through MirrorDriver.DriveAgent (OpenForgeMirrors, then a drive and a recheck schedule per row), in the agent's tenant context.
  • Spec: the ListAgentBoards requirement now covers asks, with a scenario for an ask in a channel the caller can't see. The mirroring requirement now covers the re-drive on a board write.

Tests

  • Comms pgtests:
    • TestListAgentBoardsIncludesVisibleAsks: viewer clipping and order.
    • TestListAgentBoardsOmitsOldAnsweredAsk
    • TestListAgentBoardsIncludesForgeMirrorStates: done with a URL, failed without one.
    • TestBoardWriteDrivesAgentMirrors: uses a recording driver.
  • Server pgtest TestForgeMirrorDriveAgentDeliversOpenAskRow.
  • Red check: with the ask fill stubbed out, the visible-asks and mirror-state tests fail.

Review

  • Round 1: 1 medium. Per-board mirror queries, now one batched lookup.
  • Round 2: 1 medium. The spec said "newest first", but the design (§D5 UI: "Asks, pending first") and T4's query put pending asks first. The spec wording was fixed.
  • Both are resolved.

Gates:

  • golangci-lint 0 issues (default and pgtest tags);
  • nilaway clean;
  • unit tests;
  • pgtest internal/comms, server;
  • rumdl;
  • the pre-push moon ci passed 80 of 80.

@rigel-mintaka
rigel-mintaka changed the base branch from compass-comms/rig-5181-ask-mirror to compass-ux/5177-board-badges October 13, 2026 15:33
@linear-code

linear-code Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

RIG-5173

RIG-5172

@rigel-mintaka rigel-mintaka changed the title feat(board): agent board RPCs, roster summary and board events (RIG-5172) feat(board): show asks and their forge mirror state on boards (RIG-5173) Oct 13, 2026
@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-comms-rig-5173-board.compass-eng-docs.pages.dev

Deployed from compass-comms/rig-5173-board-asks at e48fecd.

Changed pages:

@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Review loop, head d356d42b8c24

Round Findings Status
1 1 medium: per-board mirror queries fixed: one batched AskForgeMirrors per list or update
2 1 medium: spec said "newest first" while the query and design put pending first fixed: spec matches design §D5/§D9

All clear. CI is green on this head. The pre-push moon ci passed 80 of 80.

@rigel-mintaka
rigel-mintaka marked this pull request as ready for review October 13, 2026 16:05
@mattwilkinsonn
mattwilkinsonn added this pull request to stack #2242 October 15, 2026 02:19
@rigel-mintaka
rigel-mintaka force-pushed the compass-comms/rig-5173-board-asks branch from d356d42 to 1079648 Compare October 15, 2026 03:49
@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Rebased onto #2290 c94a2da after the line moved onto main. New head 1079648; the diff over its base is unchanged (7 files). Focused pgtests pass; pre-push moon ci 80/80.

@rigel-mintaka
rigel-mintaka force-pushed the compass-comms/rig-5173-board-asks branch from 1079648 to 1e8efc4 Compare October 15, 2026 05:53
@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Rebased with the line onto main 309cd3f. New head 1e8efc4, on #2290 c13888b; jj interdiff vs 1079648 is empty. Pre-push moon ci 80/80.

@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Rebased with the line onto main 33db616. New head 75ad4ce on #2290 32ddd1d; jj interdiff vs 1e8efc4 is empty. Pre-push moon ci 80/80.

@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Head note, 1d3ec69a

- ListAgentBoards fills each board's asks the caller can see: pending, plus
  answered in the last 24h, pending first, at most 20.
- Each ask carries its forge mirror state and URL.
- A board write re-drives the agent's pending or failed mirrors.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@rigel-mintaka
rigel-mintaka force-pushed the compass-comms/rig-5173-board-asks branch from 1d3ec69 to e48fecd Compare October 16, 2026 02:23
@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

Rebased with the line onto main 888ac07. New head e48fecd on #2290 cad170c. git range-diff against 1d3ec69 shows one hand edit: go/internal/comms/board_asks_pgtest_test.go now passes t.Context() to NewComms, matching the ctx parameter main added. The rest of the patch is identical. Gates on the rebased line: go vet with pgtest, golangci-lint with and without pgtest (0 issues), nilaway, and proto drift all clean. pgtest: comms, runnerhub, server, store and mirror ok. Pre-push moon ci passed. The remaining review-loop delta is a mechanical one-argument change, so no new round.

@rigel-mintaka

Copy link
Copy Markdown
Contributor Author

CI is green at e48fecd: 11 pass, 0 fail, 0 pending. Attempt 2 failed in pgtest setup on an external cache.nixos.org substitution error, recorded on RIG-5463; attempt 3 passed. The review round on the rebase delta (1d3ec69 → e48fecd, where NewComms now takes ctx) ran 4 lenses with 0 findings.

@mattwilkinsonn
mattwilkinsonn merged commit 8e52da0 into main Oct 16, 2026
49 of 63 checks passed
@mattwilkinsonn
mattwilkinsonn deleted the compass-comms/rig-5173-board-asks 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