Skip to content

Route PRs to reviewers and track review status - #3293

Draft
ravarora2 wants to merge 17 commits into
mainfrom
rarora/review-configuration
Draft

ravarora2 wants to merge 17 commits into
mainfrom
rarora/review-configuration

Conversation

@ravarora2

@ravarora2 ravarora2 commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Why

Communities need to route PRs to configured reviewers and see whether each review needs work, awaits the author, or is done.

What

Add an optional Review Configuration plugin with repository settings, named review lanes, agent assignments, instructions, and routing rules. Separate Submit PR and Pull requests pages share Back navigation. Submit uses a full GitHub PR URL and assigns the first saved reviewer in each matching lane.

The table shows GitHub status, internal review status, delivery, reviewers, and thread links. The submitter can remind reviewers or delete a submission. Closed, merged, loading, and unavailable PRs cannot be reminded. Deletion preserves conversations; resubmission creates new threads with current routing.

How

Reuse existing signed relay artifacts, agent choices, the durable outbox, and shared controls. Routing supports all/any rules on title, labels, file count, and paths. Saved assignments remain unchanged when repository configuration changes.

Add the standard pr_review_status_update tool with exactly one argument: status, either done or wait_author. The host supplies the review thread outside model arguments. The tool resolves the current assignment and checks the caller. Signed status messages persist reports and notify the thread; the dashboard accepts only reports from the assigned reviewer for the current request. Remind resets lanes to Needs review and resumes interrupted notification batches from their original browser profile.

The plugin fetches the tool's description and schema through agents.describeTool and appends them to review requests. It keeps no documentation copy. Incoming reports update the table without polling; Reload reconciles shared submission changes and missed reports. Bounded report reads fail visibly if incomplete. No SQL migration, scheduled reminder, or GitHub write is added.

Risk

This POC assumes one active review per PR, with sequential re-reviews in saved lane threads. It does not distinguish an old turn's late call after a new review starts. Native Codex thread sessions and shared HarnessKit supply review context. Standalone MCP supports a host-set BUZZ_REVIEW_THREAD on a process dedicated to one thread; legacy ACP launchers must pass these variables per thread session. The local ACP runner uses a separate lab patch for that handoff, which is not shipped by this app PR. Other adapters and channel-wide sessions refuse updates without trusted context.

Review authorization is checked by the tool and dashboard; the relay retains its generic signature and channel-access rules. Channel readers can see saved instructions. Older clients must be updated for this lifecycle. Deleted records count toward the 100-record list limit. Browser GitHub reads use the public API; private PRs require signed-in desktop gh. Routing rejects incomplete metadata and supports up to 3,000 files and 100 labels.

Testing

  • TypeScript and required pre-push unit/design checks passed on the final app branch. The full pre-merge Vitest run passed 20,923 tests with 25 skipped.

  • Real local relay, browser UI, and built standalone MCP: submit → wait_author → live table update → Remind → Needs review → done through the same MCP process. Duplicate status was idempotent; a model-supplied PR argument was rejected. The delivered request contained tool-owned documentation. GitHub metadata was a controlled fixture; signing, storage, tool calls, and notifications were real.

  • Two actual Codex reviewers used the patched thread-scoped ACP lab runner to recover completed work and save their own done reports. Both signed reports were read back and the table showed Done. This verifies reporting; one lane was configured for acknowledgment only.

  • Light/dark, wide/narrow, and enlarged-text checks covered the table, keyboard Reload, focus, and a horizontally scrollable table without page overflow. Shared owners include FullPageSurface, PanelHeader, Field/Input/Button, IconButton, AlertDialog, LoadingRegion, and Avatar.

  • Earlier live checks covered matching lanes, unknown repositories, repeated submission, delete/resubmit with new threads, Back/Forward, and closure after table load preventing reminders. GitHub fixture states were not changed.

  • Independent review covered runtime context, reporting, notification recovery, and snapshot/live reconciliation. Human final-flow confirmation and native-app acceptance remain pending; keep this draft.

To try: enable Review Configuration, select a test channel, and register a repository with reviewer lanes and rules. Submit a test PR. Use a supported reviewer runtime; its request explains the status-only tool. Check Pull requests, then Remind and verify the status resets in the same thread.

Generated with Codex

ravarora2 and others added 3 commits November 11, 2026 12:34
Save channel-scoped repository and lane settings through the existing
signed relay artifact path. Keep configuration separate from review
execution and preserve drafts on failed saves or reconnects.

Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Use the shared agent inventory and keep unavailable selections visible.
Expose refresh and partial discovery errors so users can recover.

Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Persist reviewer instruction snapshots and thread links. Recover interrupted delivery through the existing outbox without creating duplicate review threads.

Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
@ravarora2 ravarora2 changed the title Add review configuration with lane reviewer assignments Configure review lanes and submit PRs to reviewer threads Nov 12, 2026
ravarora2 and others added 3 commits November 12, 2026 12:16
Preview title, label, file-count, and path rules before sending. Keep new submissions to lane threads, retain legacy recovery, and collapse saved PR details.

Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Group agents and routing rules within each lane. Require a rule for new or edited lanes and preserve readable legacy settings.

Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
@ravarora2 ravarora2 changed the title Configure review lanes and submit PRs to reviewer threads Configure review lanes and route PRs to reviewer threads Nov 12, 2026
ravarora2 and others added 11 commits November 12, 2026 13:52
…iewers

Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Preserve the upstream session and tool-operation APIs alongside the review
thread context and tool-documentation API.

Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: maincourse <37ce551b493d4a998caf030929c47bce0b6a0e43f1178b3a63c4151d7c16b76e@buzz.block.builderlab.xyz>
Signed-off-by: Ravneet Arora <rarora@squareup.com>
@ravarora2 ravarora2 changed the title Configure review lanes and route PRs to reviewer threads Route PRs to reviewers and track review status Nov 12, 2026

This branch has not been deployed

No deployments
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.

1 participant