PR dashboard: Fix PR author when Renovate#18458
Merged
Merged
Conversation
The PR dashboard's delegator lookup was applied to any bot author. For Renovate/Dependabot PRs, the first commit's committer is web-flow (GitHub's web-UI signer), which slipped past the bot filters and was wrongly surfaced as the human author. Scope the lookup to Copilot SWE-agent authors only, where there is actually a human delegator to find.
CI status and merge-conflict status are already shown deterministically in dedicated columns. Including them in the LLM context tempted the model to bucket fresh PRs with pending CI as 'external' (waiting on something out of band) instead of 'approver' (waiting for review). Strip CI checks summary, mergeable/mergeStateStatus, and the related pre-computed signals from the rendered context. Tighten the prompt to clarify that 'external' requires explicit conversational evidence of a cross-repo dependency.
Knowing whether CI is currently failing helps the model route renovate-style PRs whose checks have broken (e.g. an upstream tool release) into the 'external' bucket. But surfacing pending vs failing vs passing as a tri-state was tempting the model to bucket fresh PRs with pending CI as 'external'. Compromise: emit a single 'CI failing: yes/no' line, with pending treated as not-failing.
jaydeluca
approved these changes
Apr 30, 2026
PRs can still be reviewed and approved while CI is failing, so CI failure on its own should not shift the bucket. Treat the boolean only as weak supporting evidence; the conversation drives the decision.
Renovate-style PRs whose CI breaks because of an upstream tool release legitimately belong in 'external'. The previous wording forbade CI failure as a signal for both author and external; loosen to forbid only the author shift.
The previous prompt's guidelines were under-specified, so the model ran on intuition: when an approver had left review questions and the author hadn't replied (open-telemetry#16390), it picked 'approver' instead of 'author'. Restate the rules as an ordered first-match decision tree (external > author-owes-response > approver-default), with explicit edge cases: an approver *commit* does not put the ball in the author's court, and an approver comment linking to an upstream issue should bucket as external.
Pulling main into a PR branch (e.g. trask clicking 'Update branch' on open-telemetry#18090) was being recorded as the latest substantive event, masking earlier unanswered approver questions. Filter such commits out of the substantive timeline so the author still owes a response.
Replace the substring-based 'Merge branch base into ...' filter with a check on the commit's parents array (>=2 parents = merge). The list endpoint returns parents per commit detail, which we already fetch in parallel for diffs. This catches merges with non-default subject lines and squash-merges from feature branches.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Only need to look up delegator for Copilot
Also, stop passing CI status into LLM, since it seems to use that as an indication of "waiting on external" when CI is inflight