Skip to content

One review per PR: assigned-only seats + the 1h unclaimed fallback #15415

Description

@neo-kimi-phoebe

Context

Operator ruling (2026-07-18, broadcast MESSAGE:e70bbdae): ONE review per PR. Empirical anchor: PR #15389 (~200 lines) received THREE full Cycle-1 reviews in 8 minutes (Opus, Fable, Kimi) — a seat-crossing resolution that made two seats compose where one would have sufficed, burning ~3× reviewer cost on a compact diff. The operator's verdict: "not exactly efficient… could become skill substrate."

The current substrate already says half of this: pull-request-workflow.md §6.2 routes to exactly one primary-reviewer chosen by the author. What it does NOT say is the other half: peers who were NOT assigned must not review — and the exception that keeps reviews from starving.

The Problem

The review-seat market is unregulated on the demand side. Three gaps:

  1. No assigned-only rule. Nothing forbids a peer from opening a full review on a PR that already has a requested reviewer (or a mid-flight review). The feat(fleet): composeOperatorMessage — the wire's first write verb, transport-stamped (#15379) #15389 crossing happened because a lead-role seat-offer and a second seat's independent acceptance raced within seconds — both legitimate under current text.
  2. No unclaimed-fallback. Without a timed fallback, "assigned-only" risks the opposite failure: a requested reviewer goes silent and no one else may step in. Existing timers cover adjacent cases (4h primary-silence → author reassigns; ~2h no-cross-family → author invites one) but not "the request was never answered and the PR sits."
  3. Seat truth scatters into A2A. Who-reviews-what currently lives in broadcast subjects; the PR's native reviewRequests field is the authoritative surface but the discipline to keep them 1:1 is uncodified.

The Architectural Reality

The Fix

One ticket, three small substrate edits (skill text only — no mechanism):

  1. pull-request-workflow.md §6.2 — codify the ONE-review rule: the author requests exactly one primary-reviewer (unchanged); a peer reviews a PR only when (a) they are the requested reviewer, or (b) the request has gone unanswered for ≥ 1 hour (the unclaimed fallback — after which any cross-family peer may self-assign by requesting themselves via manage_pr_reviewers and noting the timeout on the PR). Reviewers check reviewRequests + existing reviews at review-START (not lane-discovery); finding a mid-flight or landed full review means yield, not compose.
  2. pr-review intake gate (pre-review-intake-lane-gate.md): add the same two-condition eligibility check to the reviewer's pre-flight — assigned OR ≥1h unclaimed — with the check-at-start freshness discipline (the claim can go stale in minutes, per ticket-create: A2A claim sweep as the last step before create_issue #12856).
  3. Seat truth on the PR: route every seat through the native reviewRequests field; A2A wakes point at the field rather than carrying seat truth themselves (the wake says "use /pr-review on PR #N", the field says who).

Acceptance Criteria

  • pull-request-workflow.md §6.2 carries the ONE-review rule (assigned-only + ≥1h unclaimed fallback + check-at-start yield discipline)
  • The pre-review intake gate carries the same eligibility check
  • The substrate names reviewRequests as the seat-truth surface (A2A as pointer, not carrier)
  • No new mechanism introduced — text-only codification (if the fix wants a mechanical guard, that's a follow-up ticket, not this one)

Out of Scope

  • Mechanical enforcement (a CI/hook guard rejecting second full reviews) — evaluate only after the text lands.
  • Changes to the 4h primary-silence / 7-day-open fallbacks (existing, adjacent, untouched).
  • Same-family delta reviews on stacked PRs (already governed separately).

Related

Live latest-open sweep: checked latest 20 open issues at 2026-07-18T03:45Z; no equivalent found. A2A in-flight sweep: no [lane-claim] on review-routing codification scope; the ruling broadcast is the only signal.

Origin Session ID: 7a752066-e9f0-4682-b03c-9fc7d4d71711

Retrieval Hint: "one review per PR assigned-only unclaimed fallback review routing codification"

Metadata

Metadata

Labels

aienhancementNew feature or requestmodel-experienceIssues related to Model Experience (MX), agent workflows, and AI friction

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions