LearnNewsExamplesServices
Frontmatter
id11609
titleAdd role-first lane pickup before review intake
stateClosed
labels
documentationenhancementaiarchitecturemodel-experience
assigneesneo-gpt
createdAtMay 19, 2026, 1:52 AM
updatedAtJun 7, 2026, 7:13 PM
githubUrlhttps://github.com/neomjs/neo/issues/11609
authorneo-gpt
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 19, 2026, 3:17 AM

Add role-first lane pickup before review intake

Closed v13.0.0/archive-v13-0-0-chunk-12 documentationenhancementaiarchitecturemodel-experience
neo-gpt
neo-gpt commented on May 19, 2026, 1:52 AM

Context

@tobiu surfaced a workflow friction during GPT harness recovery on 2026-05-19: this is not a blame or under-target quota problem. The structural issue is trigger ordering. If an agent starts from a fresh boot, watchdog wake, or PR-review request, it can enter reviewer mode before the role/lane-pickup substrate fires. The existing CI-wait routing is useful after a PR exists, but it does not solve the earlier state where no author lane has been picked yet.

V-B-A performed before filing:

  • Mailbox checked: 0 unread at the time of ticket drafting.
  • Current role payloads already encode the desired behavior: lead-role-mode.md says lead means pick own lane visibly + focus + V-B-A + challenge (.agents/skills/lead-role/references/lead-role-mode.md:7-13) and peer-role-mode.md says peer means proactive V-B-A/challenge, with self-selection instead of waiting for assignment (.agents/skills/peer-role/references/peer-role-mode.md:5-18, :46-48).
  • post-review-pickup/SKILL.md only invokes after review/review-response handoff (.agents/skills/post-review-pickup/SKILL.md:1-8). Its deeper workflow contains a hidden lane-discovery trigger for fresh-boot (.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md:56-60), but the router does not expose that trigger, so the payload is not guaranteed to be read before the first review.
  • fair-band-pre-flight-gate.md explicitly notes lane-discovery discipline is skill-invocation-dependent and that the PR-open gate only catches paths that reach PR authoring (.agents/skills/pull-request/references/fair-band-pre-flight-gate.md:1-4).
  • Live distribution check over the last 200 merged PRs: neo-gemini-pro=83, neo-opus-ada=68, neo-gpt=45, dependabot[bot]=4. Live last-30 check was effectively balanced: Gemini=10, GPT=10, Claude=9, dependabot=1. That means the ticket should not be framed as immediate quota correction; it is a decay-prevention trigger-ordering fix.

The Problem

The current substrate solves the author-after-review problem better than the pre-review intake problem:

  1. After a review is posted, post-review-pickup can require a next lane or explicit halt.
  2. After a PR is opened, the FAIR-band PR-body gate can enforce author-lane stance.
  3. During lead-role or peer-role, the payloads already tell agents to self-select lanes.

But a fresh session can begin with live review requests and never cross the earlier lane-pickup surface. The agent can perform reviews, send review A2A, then continue to the next review because every local trigger points at review lifecycle work. The result is a reviewer-only cycle even though the correct mental model is: pick a lane, create a PR, then review peer PRs afterwards or while own CI is pending.

This is a trigger-ordering hole, not an individual performance target.

The Architectural Reality

The relevant surfaces are agent-skill routers and payload maps, not runtime framework code:

  • /lead-role already has the correct lane-selection primitive, but it only fires when lead-role is explicitly invoked or a baton/operator trigger is present.
  • /peer-role already says self-select lanes and resist waiting for assignment, but it is framed around substrate validation and convergence work, not ordinary review-queue intake.
  • /post-review-pickup contains the deeper lane-discovery hook, including fresh-boot, but its SKILL.md trigger is post-review only.
  • /pr-review is intentionally concrete-PR-focused. Adding a giant lane-management manual there would bloat the hot review path and violate progressive-disclosure discipline.
  • create-skill guidance requires lightweight routers and payload extraction; any fix must use a small map trigger and avoid stuffing workflow rationale into SKILL.md.

The Fix

Add a minimal, progressive-disclosure pre-review intake gate for agents that are about to enter review work with no active author lane in the current session.

Candidate shape:

  • Add a small router-visible trigger to the appropriate skill surface, likely post-review-pickup/SKILL.md or a narrow payload referenced from pr-review/SKILL.md, that fires before first review intake from fresh boot / watchdog / review-wake when no current author lane exists.
  • The gate should require a quick lane-discovery check: open self-pickable tickets / assigned-to-me / recent operator focus / current public authority, then either pick an author lane or document why review-first is the positive-ROI move.
  • If role context is active or explicitly named, read /lead-role or /peer-role before lane choice, not after review work.
  • Preserve the CI-wait routing: after opening a PR, peer review work is appropriate while own CI is pending, with a return-to-own-PR check.
  • Keep top-level router changes tiny. Put rationale, examples, and exceptions in a payload file.

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
First review intake from fresh boot / watchdog / review wake AGENTS.md §15.6, lead-role §0, peer-role §6, post-review-pickup §4 Before accepting the review queue, check whether an author lane should be selected first If urgent review or human-directed review is the highest-ROI move, document review-first rationale and proceed Skill router + payload map Unit/lint evidence for skill manifest if touched; manual V-B-A with a fresh-session scenario
Role-triggered lane choice lead-role and peer-role payloads Read role payload before lane pickup when role is active or explicitly invoked If no role trigger exists, use the generic lane-discovery gate without pretending lead/peer role is active Role payload cross-reference Reviewers can verify no role-bloat or forced role activation
Reviewer-only cycle prevention post-review-pickup and FAIR-band gates Ensure author-lane discipline can fire before review-only loops begin Explicit halt only after backlog self-survey and blocker statement New or amended payload section A2A / PR body examples show lane picked before reviews or review-first rationale

Acceptance Criteria

  • A fresh-session or watchdog review-intake path has a visible trigger that runs lane discovery before the first PR review when no current author lane exists.
  • The implementation preserves non-blame language: no quotas, no per-agent shaming, no forced assignments.
  • The gate distinguishes role active from ordinary review intake; /lead-role and /peer-role are read first only when their real triggers apply.
  • The gate includes explicit exceptions for urgent/human-directed review and for review work that is intentionally done while the agent's own PR is waiting on CI.
  • The fix follows progressive-disclosure discipline: minimal router text, detailed rationale in payload, no broad AGENTS.md expansion unless V-B-A proves a hot-path anchor is required.
  • Review evidence includes a fresh simulation or written walkthrough of: boot -> review request present -> no author lane -> lane discovery -> either author lane picked or review-first rationale recorded.
  • If .agents/skills/skills.manifest.json is affected, node ai/scripts/lint-skill-manifest.mjs --base origin/dev passes.

Out of Scope

  • No change to human-only merge authority.
  • No ranking scoreboard or author-count enforcement.
  • No requirement that every review wait for an author PR.
  • No new role hierarchy; maintain the flat peer-team model.
  • No Body-layer runtime changes.

Avoided Traps

  • Quota framing: the last-30 window is balanced, so this is not an immediate under-target correction. The long-window imbalance is only evidence that the decay mode matters.
  • Forcing role-mode everywhere: lead-role and peer-role are not generic wrappers around every review. The fix should make role payloads fire when appropriate, not create synthetic role state.
  • Stuffing pr-review/SKILL.md: review template loading is already heavy. The right shape is a compact trigger plus payload pointer.
  • Reviewer freeze: peer review remains valuable, especially while own CI is pending. The fix is to pick/justify lane order, not to block review work.

Related

  • #11430 closed adjacent work: FAIR-band author-lane pickup discipline after PR review/response handoff.
  • #11603 broad adjacent friction: substrate bandwidth and contribution distribution counter-bias.
  • #11605 broad adjacent friction: skill baggage / decision-atom cleanup.
  • Discussion #11206 / #11209 lineage via lead-role and peer-role coordination payloads.

Handoff Retrieval Hints

  • Query Memory Core for: role-first lane pickup before review intake, reviewer-only cycle fresh boot, post-review-pickup fresh-boot trigger hidden, lead-role peer-role lane self-select before review.
  • Verify current facts with: gh search prs --merged --repo neomjs/neo --limit 200 --sort updated --json author --jq 'map(.author.login) | group_by(.) | map({author: .[0], count: length}) | sort_by(.author)'.
tobiu referenced in commit f89cec4 - "feat(agentos): add review-intake lane gate (#11609) (#11610) on May 19, 2026, 3:17 AM
tobiu closed this issue on May 19, 2026, 3:17 AM