You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[DISCUSSION] PR Review Process / States / "How to find the PRs in the list that need review" #21038
I think the core issue is that the current way to find PRs mixes together many different states, which makes it harder to triage efficiently
Also, there is currently no documented "review priority".
Describe the solution you'd like
I would like a clearer and more explicit way to find PRs that need community attention.
I think at the core we probably need some sort of triage process and "workflow" for PR review / merge attention. I am acutely aware that we have very little extra capacity for such a process with the existing committers, but I do wonder if having it might attract others who can help the reviews along
Describe alternatives you've considered
For example, a PR priority definition might look like (not saying this is the right one, it is just a strawman)
Regression Bugs (what used to work doesn't anymore)
Bugs
Performance Improvements
New Features
For example, a PR review flow might look like this
flowchart LR
A[Needs Initial Review] --> B[Feedback Received]
B --> C[Feedback Addressed]
C --> B
C --> D[Approved, waiting]
D --> E[Approved Ready to Merge]
Loading
Additional context
Reacted by Kosta Tarasov, Congxian Qiu, Kumar Ujjawal and Michael
My recommendation would be to document the PR flow first, and only add labels later if there is still a real gap.
A lightweight documented flow like this would already help a lot:
Needs initial review
Waiting on author
Ready for re-review
Approved, waiting 24h
Ready to merge
By “define the corresponding queries / saved searches”, I mean mapping each of those states to a GitHub PR search so people can quickly see the current list for that state without adding more process immediately.
For example:
Needs initial review → open, non-draft PRs that are not yet approved
Waiting on author → PRs with requested changes / unresolved review feedback
Ready for re-review → PRs updated after review feedback
Approved, waiting 24h → approved PRs that are still inside the waiting window
Ready to merge → approved PRs past the waiting window
I’d try that first using GitHub’s existing signals before adding labels. Labels can help, but they also create maintenance overhead, and stale labels can make things less clear rather than more clear.
So my preference would be:
document the states
define the matching queries / saved searches
add labels only if there is a state GitHub cannot represent clearly enough on its own
Thanks @adp2201 -- can you provide an example github search for the states you propose (if they exist it would be great). For example, what would be github PRs for these two states (we can use them today!)
Approved, waiting 24h → approved PRs that are still inside the waiting window
Ready to merge → approved PRs past the waiting window
I think that works reasonably well for “approved PRs”, but not for splitting:
Approved, waiting 24h
Ready to merge
because the missing piece is the approval timestamp. GitHub search gives us review:approved and updated:, but not “approved at”, which is what we would actually need.
So I think the realistic options are:
Use a single approved bucket
Assumption: reviewers / committers can manually interpret whether a PR is still inside the 24h window
Lowest overhead, but does not make the distinction explicit
Use a manual label/state for the 24h distinction
Assumption: someone updates it consistently
More explicit, but adds maintenance overhead
Use small automation
For example, a scheduled GitHub Action that checks approval timestamps and reports or labels PRs accordingly
Assumption: we care enough about this distinction to automate it properly
My current preference would be:
use the single approved bucket first
only introduce labels or automation if the 24h distinction turns out to be operationally important
Can we do label based approach, for example, every new PR will bel labeled needs review and whenever a committer(I'm not counting community member reviews here because they don't have the ability to change labels as far as I know) reviews the PR they can remove the needs review label and add either needs changes, needs feedback or approved. Apart from the approved the other two will remain in that state until the committer is satisfied with the changes and then can lable it approved. My reasoning for the label approach was purely based on the ability to know state and fileter easily.
@alamb "bucket" is what I am referring to for all PRs that are captured with this filter : is:pr is:open repo:apache/datafusion review:approved draft:false. Which is basically, single category that tracks all approved PRs and doesn't distinguish between PRs outside and inside of 24 hours boundary. Reviewers will need to manually check what PRs have passed 24 hours time post PR approval. Let me know if this clarifies..
@kumarUjjawal the challenge with manual labels is that it adds new process for everything to remember and execute. Whereas, with preconfigured filters, it's much more automatic.
I feel personally overwhelmed by the number of PRs waiting on review (I can't possibly review them all and I struggle to figure out which ones to review first) -- there are currently 208 open!
This problem is likely getting worse due to the combination of AI generated PRs and DataFusion' growth as a project
Some bright spots:
I have been focusing on doing a final review / merge of PRs that have been reviewed / approved by other reviewers such as @kosiew (which is super helpful)
Activity
alamb commentedon Mar 18, 2026
I think @neilconway may have some thoughts on this one too
adp2201 commentedon Mar 18, 2026
My recommendation would be to document the PR flow first, and only add labels later if there is still a real gap.
A lightweight documented flow like this would already help a lot:
By “define the corresponding queries / saved searches”, I mean mapping each of those states to a GitHub PR search so people can quickly see the current list for that state without adding more process immediately.
For example:
Needs initial review→ open, non-draft PRs that are not yet approvedWaiting on author→ PRs with requested changes / unresolved review feedbackReady for re-review→ PRs updated after review feedbackApproved, waiting 24h→ approved PRs that are still inside the waiting windowReady to merge→ approved PRs past the waiting windowI’d try that first using GitHub’s existing signals before adding labels. Labels can help, but they also create maintenance overhead, and stale labels can make things less clear rather than more clear.
So my preference would be:
alamb commentedon Mar 19, 2026
Thanks @adp2201 -- can you provide an example github search for the states you propose (if they exist it would be great). For example, what would be github PRs for these two states (we can use them today!)
adp2201 commentedon Mar 19, 2026
After digging into it a bit more, I don’t think it is straightforward to distinguish those two states accurately with GitHub search alone.
The closest useful filter for the broad “approved PRs” bucket seems to be:
is:pr is:open repo:apache/datafusion review:approved draft:falseI think that works reasonably well for “approved PRs”, but not for splitting:
Approved, waiting 24hReady to mergebecause the missing piece is the approval timestamp. GitHub search gives us
review:approvedandupdated:, but not “approved at”, which is what we would actually need.So I think the realistic options are:
Use a single approved bucket
Use a manual label/state for the 24h distinction
Use small automation
My current preference would be:
alamb commentedon Mar 21, 2026
I don't know what you are trying to propose (this sounds LLM generated). When you say "bucket" how would that be represented?
kumarUjjawal commentedon Mar 22, 2026
Can we do label based approach, for example, every new PR will bel labeled
needs reviewand whenever a committer(I'm not counting community member reviews here because they don't have the ability to change labels as far as I know) reviews the PR they can remove theneeds reviewlabel and add eitherneeds changes,needs feedbackorapproved. Apart from theapprovedthe other two will remain in that state until the committer is satisfied with the changes and then can lable itapproved. My reasoning for the label approach was purely based on the ability to know state and fileter easily.adp2201 commentedon Mar 22, 2026
@alamb "bucket" is what I am referring to for all PRs that are captured with this filter :
is:pr is:open repo:apache/datafusion review:approved draft:false. Which is basically, single category that tracks all approved PRs and doesn't distinguish between PRs outside and inside of 24 hours boundary. Reviewers will need to manually check what PRs have passed 24 hours time post PR approval. Let me know if this clarifies..@kumarUjjawal the challenge with manual labels is that it adds new process for everything to remember and execute. Whereas, with preconfigured filters, it's much more automatic.
kumarUjjawal commentedon Mar 22, 2026
How does this translates to:
Your suggested filter doesn't have anything related to time.
in my opinion following predefined process is much more manageable.
alamb commentedon Mar 23, 2026
I agree that adding some (simple) labels at first would likely be the most effective here
alamb commentedon Aug 2, 2026
It seems the problem has gotten worse in the last 6 months
alamb commentedon Aug 2, 2026
An update here from me:
Some bright spots:
alamb commentedon Aug 2, 2026
I got inspired and tried to distill my PR best practices into documentation
Docs: Add PR review guide (apache#24051)
Docs: Add PR review guide (apache#24051)
alamb commentedon Aug 17, 2026
Related discussion