Reviewer queue selection must prove prior PR blockers live before skipping #318

Closed
opened 2026-07-07 01:23:51 -05:00 by jcwalker3 · 1 comment
Owner

A reviewer workflow selected PR #281 while PR #280 was still open, explaining that PR #280 was blocked by a prior REQUEST_CHANGES review and unchanged head SHA.

Problem

Skipping an earlier open PR may be correct, but the workflow must prove the blocker live in the current session. Prior-session memory is not enough.

Required behavior

  1. Before skipping an earlier open PR, fetch live PR state.

  2. If the reason is prior REQUEST_CHANGES, fetch live review feedback or review state.

  3. Verify the PR head SHA has not changed since the blocking review.

  4. Report:

    • skipped PR number
    • current head SHA
    • blocking review decision
    • blocking review head SHA
    • whether head changed after blocker
    • reason it remains blocked
  5. If blocker proof cannot be fetched, do not skip silently. Stop or classify as BLOCKER_STATUS_UNVERIFIED.

Acceptance criteria

  • Reviewer workflows cannot skip earlier open PRs based on stale memory.
  • Reports include live blocker proof for every skipped earlier PR.
  • Tests cover blocked unchanged PR, blocked updated PR, missing review feedback, draft PR, non-mergeable PR, and already-landed PR.
A reviewer workflow selected PR #281 while PR #280 was still open, explaining that PR #280 was blocked by a prior `REQUEST_CHANGES` review and unchanged head SHA. ## Problem Skipping an earlier open PR may be correct, but the workflow must prove the blocker live in the current session. Prior-session memory is not enough. ## Required behavior 1. Before skipping an earlier open PR, fetch live PR state. 2. If the reason is prior `REQUEST_CHANGES`, fetch live review feedback or review state. 3. Verify the PR head SHA has not changed since the blocking review. 4. Report: * skipped PR number * current head SHA * blocking review decision * blocking review head SHA * whether head changed after blocker * reason it remains blocked 5. If blocker proof cannot be fetched, do not skip silently. Stop or classify as `BLOCKER_STATUS_UNVERIFIED`. ## Acceptance criteria * Reviewer workflows cannot skip earlier open PRs based on stale memory. * Reports include live blocker proof for every skipped earlier PR. * Tests cover blocked unchanged PR, blocked updated PR, missing review feedback, draft PR, non-mergeable PR, and already-landed PR.
jcwalker3 added the status:in-progress label 2026-07-07 04:11:18 -05:00
Author
Owner

PR opened with prior-blocker skip proof verifier.

  • Entry point: assess_prior_blocker_skip_proof(report_text, skipped_prs=[...])
  • Requires live REQUEST_CHANGES blocker proof or BLOCKER_STATUS_UNVERIFIED

Verification: pytest tests/test_reviewer_blocker_skip.py tests/test_review_proofs.py -q — 158 passed

PR opened with prior-blocker skip proof verifier. - Entry point: `assess_prior_blocker_skip_proof(report_text, skipped_prs=[...])` - Requires live REQUEST_CHANGES blocker proof or `BLOCKER_STATUS_UNVERIFIED` Verification: `pytest tests/test_reviewer_blocker_skip.py tests/test_review_proofs.py -q` — 158 passed
sysadmin removed the status:in-progress label 2026-07-07 04:41:59 -05:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Scaled-Tech-Consulting/Gitea-Tools#318