You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@datafusion.apache.org by "andygrove (via GitHub)" <gi...@apache.org> on 2026/09/18 18:12:49 UTC
[PR] docs: add pr-triage skill for PR hygiene and duplicate detection [datafusion-comet]
andygrove opened a new pull request, #6016:
URL: https://github.com/apache/datafusion-comet/pull/6016
## Which issue does this PR close?
N/A. This adds contributor tooling rather than fixing a filed issue.
## Rationale for this change
We have skills for reviewing a PR's code (`review-comet-pr`, `deep-review-comet-pr`) but nothing
that checks whether a PR is in a state where reviewing it is worth doing. Two things come up
repeatedly and both cost reviewer time before any code gets read.
The first is the PR template. A PR that arrives with no rationale, no description of what changed,
and an empty testing section makes the reviewer reconstruct all of that from the diff. The template
is not enforced anywhere — CI checks the title format and applies type and area labels, but nothing
looks at the body.
The second is duplicate work. With ~170 open PRs, two contributors independently solving the same
problem is common, and the pair usually is not noticed until one of them is nearly ready to merge.
The recurring shape here is codegen dispatcher versus a native implementation for the same
expression: same serde object, same `.sql` fixture, mutually exclusive, closing two different
issues so nothing links them. Catching that early costs one comment; catching it late costs
somebody's week.
## What changes are included in this PR?
Adds `.ai/skills/pr-triage/SKILL.md`. Given an optional list of PR numbers, or by default every
open non-draft PR from the last four weeks with bots excluded, it:
1. Reads `.github/pull_request_template.md` and derives the required sections from that file rather
than hardcoding them, so the skill does not drift when the template changes.
2. Checks each body for missing headings, headings with nothing under them once HTML comments are
stripped, and the `Closes #.` placeholder, and verifies any referenced issue exists and is still
open. A closed issue is treated as a duplicate signal.
3. Looks for competing PRs using IDF-weighted file overlap, then shared closing issues, then the
diff itself. Hub files like `planner.rs` and `QueryPlanSerde.scala` are down-weighted out because
dozens of open PRs touch them at once and they carry no signal.
4. Posts at most one comment per PR, written as prose rather than a findings list, and marks it with
an invisible HTML comment so a later pass does not comment twice.
The skill explicitly does not review code and does not repeat what CI already checks. It does not
change labels and does not close, approve, or merge anything. Posting is gated on a single
confirmation for the whole batch, since these are public comments.
## How are these changes tested?
There is nothing executable to unit test here, so I ran the skill's own analysis steps against the
live repository in read-only mode: 170 open PRs, 63 in scope after filtering. Two false-positive
sources turned up and both are now written into the skill.
Rust tests live in inline `#[cfg(test)]` modules, so the changed-file list alone cannot tell you
whether a Rust PR added tests. #5982 touches a single `.rs` file and nothing else but adds 30 lines
of tests; a file-list check would have wrongly flagged it, so the skill greps the diff instead.
Separately, `isDraft` is not the whole test for work in progress — several open PRs are marked
`isDraft: false` but say `[WIP]` or `[draft]` in the title, so the skill treats the title marker the
same way.
The overlap analysis reproduced pairs I had previously found by hand, including #5607 and #5874,
which is the worked example in the comment-voice section of the skill.
I have not posted any comment from the skill yet; that is the next thing to try once this lands.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org