Skip to content

ci: exempt dependabot PRs from the semantic title check - #3720

Closed
Imran Siddique (imran-siddique) wants to merge 1 commit into
mainfrom
fix/dependabot-title-check
Closed

ci: exempt dependabot PRs from the semantic title check#3720
Imran Siddique (imran-siddique) wants to merge 1 commit into
mainfrom
fix/dependabot-title-check

Conversation

@imran-siddique

Copy link
Copy Markdown
Collaborator

The problem

All 34 open dependabot PRs are currently red. For 19 of them the only real failure is Validate PR title, with auto-merge failing behind it:

#3705 #3703 #3702 #3700 #3699 #3696 #3694 #3693 #3691 #3690 #3689 #3688 #3687 #3682 #3656 #3655 #3623 #3618 #3617

The cause

pr-title-check.yml sets subjectPattern: ^(?![A-Z]).+$, so the subject may not start with a capital.

Dependabot writes its own titles and uses two different verbs:

chore(deps): bump the codeql-action group with 4 updates          <- passes
chore(deps-dev): Update fastembed requirement from ... to ...     <- fails

It says "bump" for a version bump and "Update" for a requirement-range change. Which one it picks depends on the update type, not on anything configurable, and commit-message in dependabot.yml controls the prefix rather than the verb. So roughly half of what Dependabot opens fails a rule its author cannot act on, after having run full CI.

The change

Adds ignoreLabels: dependencies to the action.

Keyed on the label rather than on github.actor for two reasons: it covers any bot configured to carry the label, not just Dependabot, and it lets the action itself exit successfully, so a required-check configuration still sees a passing check rather than a skipped job.

labeled and unlabeled join the trigger types because the exemption is now label-dependent. Without them, a PR labelled after it opened would keep the verdict from the run that saw no labels.

What this does not change

Human PRs are unaffected: the pattern, the type list and the error message are all untouched. The check keeps doing what it is for, which is consistent human titles for the changelog. A bot that already emits a valid conventional prefix on every PR is not what it guards against.

Verification

pr-title-check.yml parses, and the parsed trigger types and ignoreLabels value are as intended. ignoreLabels is a documented input of amannn/action-semantic-pull-request at the pinned v6.1.1.

The real test is the next dependabot PR, or a re-run on any of the 19 above.

All 34 open dependabot PRs are red, and for 19 of them the only real
failure is Validate PR title, with auto-merge failing behind it.

subjectPattern rejects a capitalised subject. Dependabot uses "bump
<dep> from a to b" for a version bump and "Update <dep> requirement
from x to y" for a requirement range, so about half of what it opens
fails a rule its author cannot act on, after running full CI.

Keys the exemption on the dependencies label rather than the actor so it
covers any bot configured to carry it, and adds labeled/unlabeled to the
trigger so a PR labelled after opening is re-evaluated.

Signed-off-by: Imran Siddique <imran.siddique@opaque.co>
@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions github-actions Bot added the size/S Small PR (< 50 lines) label Aug 12, 2026
@github-actions

Copy link
Copy Markdown

🔴 Contributor Check: HIGH

Check Result
Profile HIGH
Credential LOW
Overall HIGH

Automated check by AGT Contributor Check.

@github-actions github-actions Bot added the needs-review:HIGH Contributor reputation check flagged HIGH risk label Aug 12, 2026
@github-actions

Copy link
Copy Markdown

PR Review Summary

Check Status Details
🔍 Code Review ⚠️ Missing No current-run comment
🛡️ Security Scan ⚠️ Missing No current-run comment
🔄 Breaking Changes ⚠️ Missing No current-run comment
📝 Docs Sync ⚠️ Missing No current-run comment
🧪 Test Coverage ⚠️ Missing No current-run comment

Verdict: ⚠️ AI review incomplete; ready for human review

AI review comments are untrusted advisory output. The summary reports workflow-generated completion status only, not model-authored pass/fail claims.

@imran-siddique

Copy link
Copy Markdown
Collaborator Author

Closing in favour of #3710, which came first and fixes #3559 directly.

I opened this without checking whether a fix already existed, which was my mistake: I searched the queue for the failure and not for the remedy. vijay s m (@vijay03-creator) got there a day earlier.

Their approach is also the tighter one. Making subjectPattern conditional relaxes only the case rule, so a Dependabot PR with a malformed type prefix is still caught. This PR used ignoreLabels: dependencies, which skips the whole check including the type list. Less precise for the same benefit.

Recording one thing here so it is not lost, since it is the only respect in which the two differ in behaviour: an actor test does not match a Dependabot PR that a human recreated, because the actor is then the human, while the dependencies label survives. #3559 mentions recreated batches specifically. That is a small edge and not a reason to prefer this PR; noting it on #3710 as non-blocking.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-review:HIGH Contributor reputation check flagged HIGH risk scripts/ci/cd size/S Small PR (< 50 lines)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant