pr-review: don't skip labeled PRs that are already approved
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- Half a day
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- bash, github, json
- Domain
- devtools
Research direction
The filter that drops approved PRs is the jq select(.reviewDecision != "APPROVED") in skills/repoman/scripts/pr-review-scanner.sh. Read how the scanner decides eligibility and how state.json and the <!-- reviewed: <sha> --> marker prevent duplicates. Done when a labeled, non-draft approved PR appears as a candidate in latest.json, an already-reviewed head SHA is still skipped, and the eligibility rule is documented in SKILL.md. The issue also asks whether a skip_approved config flag is wanted, which is an open design question.
Written by the indexing model from the issue text.
Description
Problem
pr-review-scanner.sh drops PRs whose reviewDecision is APPROVED, even if they carry ready-for-ai-review:
# Filter out bot's own PRs, drafts, and already-approved PRs
select(.reviewDecision != "APPROVED")
(skills/repoman/scripts/pr-review-scanner.sh, at b3f128c)
So whether a labeled PR gets an AI review depends on timing, not intent:
- If the scanner reaches it before a human approves it, it gets an AI review, and later a human approval: 2 reviews.
- If a human approves first, the scanner never picks it up: 1 review.
Real case: rossoctl/cortex#1535. Labeled at 15:37Z, approved at 15:42Z, merged at 16:44Z, with no AI review. The reviewer was healthy: the OpenClaw scan logs show "0 eligible" across that window. OpenClaw has the same filter, so moving to RepoMan won't fix this by itself.
An AI review from a different model is useful even after a human approval. The author added the label to ask for one.
Proposal
Treat ready-for-ai-review as an explicit opt-in. Labeled PRs are eligible no matter what reviewDecision is. Keep the other filters (bot-authored, draft).
Duplicates are already handled by state.json (in_progress / reviewed) and the <!-- reviewed: <sha> --> marker. This change still gives one review per labeled head SHA. (Note: rossoctl/repoman#9 did get a second review on an unchanged head, 81f19ab, so that path may need a look too.)
Optional: if a skip-approved default is still wanted for other setups (e.g., future org-wide or unlabeled enrollment), make it a per-program config flag, e.g. skip_approved in ~/.repoman/programs/pr-review.json. Default it to false when labels_required is set.
Acceptance criteria
- A labeled, non-draft PR with
reviewDecision == APPROVEDshows up inlatest.jsonas a candidate - A PR already reviewed at its current head SHA is still skipped (no duplicate)
- A new push to an approved, labeled PR gets reviewed at the new head
- SKILL.md / docs describe the eligibility rule
Context
Raised by @huang195 in #rosso-automation on 2026-10-29. Root-caused with scan logs from @rubambiza.
Generated by RepoMan
- Dominant language
- Shell
- Stars
- 7
- Forks
- 1
- Avg merge
- 5d 10h
- Merged PRs (30d)
- 2
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from rossoctl/repoman
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
-
doc-drift
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Document the contributor workflow: repo topology + engine vendoringPossibly taken @jimcadden claimed this today. Open
Difficulty 1/5 1-3 hours Newbie friendliness 25/100
-
Difficulty 4/5 3-5 days Newbie friendliness 22/100
-
Difficulty 3/5 Half a day Newbie friendliness 30/100
All issues in rossoctl/repoman
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
question
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
blocked
Difficulty 1/5 Under an hour Newbie friendliness 73/100
fullsend-ai/agents#1908 · 2 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
5700模组网络优先级问题Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
severity: low
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
luainkernel/lunatik#2372 ·
Maintainers usually reply within 1 day