Context
Operator friction surfaced on 2026-05-24 during PR #11894: after opening a PR, CI can sit pending for several minutes (integration-unified took 6m53s on #11894). The current author-side review routing correctly forbids requesting /pr-review before green CI, but its pending-CI branch still permits an observer/no-action hold if no quick peer-unblock lane is found inside the current turn.
This is a narrow follow-up to #11467 and the #11891/#11893 lifecycle-compression work. It should not reopen the review-routing architecture or add another broad workflow layer.
Duplicate Sweep
Knowledge Base semantic ticket query failed with Error finding id, so exact repo sweeps were used.
Related but not duplicate:
- #11467 created the current author-side CI-green review routing rule. It explicitly covers pending CI and says to use the wait window productively, but it still allows stopping in an observer/no-action hold while checks remain pending.
- #10970, #11165, #11221, and #11455 codify next-lane / no-idle discipline after lifecycle events, but they do not specifically close the CI-pending wait-window loophole inside
ci-green-review-routing.md.
- #11893 / PR #11894 compresses PR-review hot-path bloat; this ticket is a tiny behavioral clarification in the adjacent pull-request routing payload.
The Problem
The current ci-green-review-routing.md pending branch has the right first half and the wrong terminal affordance:
- Correct: do not call
manage_pr_reviewers while CI is pending.
- Correct: do not send actionable
/pr-review A2A before green CI.
- Correct: send a no-action lifecycle notification so the swarm sees the PR exists.
- Weak: if checks are still pending and no quick peer-unblock lane appears, the author may leave the PR in observer/no-action hold and stop.
That stop path contradicts the nightshift and post-review-pickup direction: pending CI is asynchronous work owned by GitHub Actions, not a human-only blocker and not a reason for the agent to idle. The author should park a recheck obligation and pick the next positive-ROI lane.
Architectural Reality
Primary surfaces:
.agents/skills/pull-request/references/ci-green-review-routing.md
.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md
.agents/skills/pull-request/references/pull-request-workflow.md §6.2 pointer
No new skill, no new audit file, no AGENTS.md expansion.
The Fix
Amend the pending-CI branch to make CI wait windows explicitly asynchronous:
- Keep the no-action PR-open lifecycle notification while CI is pending.
- Replace the observer/no-action terminal stop with an explicit next-lane requirement.
- Require authors to record/rely on a concrete recheck trigger: watchdog heartbeat, next turn, or after completing the next short lane.
- Preserve the green-CI gate: actionable reviewer assignment and
/pr-review A2A still wait until current-head CI is green.
- Add an anti-pattern row for
waiting on long-running CI instead of parking a recheck and picking up the next lane.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
| Pending-CI author routing |
This ticket + #11467 + post-review-pickup no-idle discipline |
Pending CI parks reviewer routing, posts no-action visibility, then requires next-lane pickup or a named external blocker |
If CI fails, author returns and fixes before review request |
ci-green-review-routing.md |
Text diff + skill-manifest lint |
| Review request timing |
Existing CI-green gate |
Reviewer assignment remains green-only |
CI-triage route remains available on failure |
same payload |
Grep confirms no early /pr-review request path |
| Lifecycle pickup |
#11455 / post-review-pickup |
PR-open with pending CI is not a halt-state by itself |
Legit halt only after backlog self-survey hits an existing formal halt criterion |
post-review-pickup-workflow.md if needed |
Text diff and no new substrate file |
Decision Record Impact
Aligned with ADR 0007 / ADR 0008: this is an in-place workflow payload rewrite, not a new rule surface. Disposition: rewrite of existing CI-routing prose, with no new file.
Acceptance Criteria
Out of Scope
- No changes to reviewer-side CI fail-fast rules.
- No changes to GitHub Actions runtime.
- No reviewer auto-assignment before green CI.
- No broad rewrite of pull-request workflow.
Avoided Traps
- Rejected: requesting review before CI is green. That wakes a reviewer into mandatory hold work.
- Rejected: waiting synchronously for long CI. That burns agent focus while GitHub Actions owns the work.
- Rejected: adding another lifecycle skill. The existing CI-routing payload owns this narrow branch.
Related
Origin Session ID: 967e325b-d90a-43f4-9e91-c212e9bda746
Handoff Retrieval Hints:
- Query Memory Core for
CI pending review routing observer no-action hold next lane integration-unified.
- Exact payload:
.agents/skills/pull-request/references/ci-green-review-routing.md.
Context
Operator friction surfaced on 2026-05-24 during PR #11894: after opening a PR, CI can sit pending for several minutes (
integration-unifiedtook 6m53s on #11894). The current author-side review routing correctly forbids requesting/pr-reviewbefore green CI, but its pending-CI branch still permits an observer/no-action hold if no quick peer-unblock lane is found inside the current turn.This is a narrow follow-up to #11467 and the #11891/#11893 lifecycle-compression work. It should not reopen the review-routing architecture or add another broad workflow layer.
Duplicate Sweep
Knowledge Base semantic ticket query failed with
Error finding id, so exact repo sweeps were used.Related but not duplicate:
ci-green-review-routing.md.The Problem
The current
ci-green-review-routing.mdpending branch has the right first half and the wrong terminal affordance:manage_pr_reviewerswhile CI is pending./pr-reviewA2A before green CI.That stop path contradicts the nightshift and post-review-pickup direction: pending CI is asynchronous work owned by GitHub Actions, not a human-only blocker and not a reason for the agent to idle. The author should park a recheck obligation and pick the next positive-ROI lane.
Architectural Reality
Primary surfaces:
.agents/skills/pull-request/references/ci-green-review-routing.md.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md.agents/skills/pull-request/references/pull-request-workflow.md§6.2 pointerNo new skill, no new audit file, no AGENTS.md expansion.
The Fix
Amend the pending-CI branch to make CI wait windows explicitly asynchronous:
/pr-reviewA2A still wait until current-head CI is green.waiting on long-running CI instead of parking a recheck and picking up the next lane.Contract Ledger Matrix
ci-green-review-routing.md/pr-reviewrequest pathpost-review-pickup-workflow.mdif neededDecision Record Impact
Aligned with ADR 0007 / ADR 0008: this is an in-place workflow payload rewrite, not a new rule surface. Disposition:
rewriteof existing CI-routing prose, with no new file.Acceptance Criteria
ci-green-review-routing.mdpending-CI branch no longer allows an observer/no-action stop solely because checks are still pending.node ai/scripts/lint/lint-skill-manifest.mjs --base origin/devpasses.Out of Scope
Avoided Traps
Related
Origin Session ID: 967e325b-d90a-43f4-9e91-c212e9bda746
Handoff Retrieval Hints:
CI pending review routing observer no-action hold next lane integration-unified..agents/skills/pull-request/references/ci-green-review-routing.md.