From 2142faa9d7ddbff217b504e343859b0e86b183d2 Mon Sep 17 00:00:00 2001 From: Imran Siddique Date: Wed, 12 Aug 2026 12:07:24 -0700 Subject: [PATCH] ci: exempt dependabot PRs from the semantic title check 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 from a to b" for a version bump and "Update 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 --- .github/workflows/pr-title-check.yml | 15 ++++++++++++++- FETCH_HEAD | 0 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 FETCH_HEAD diff --git a/.github/workflows/pr-title-check.yml b/.github/workflows/pr-title-check.yml index 448c2aa10..441222ad4 100644 --- a/.github/workflows/pr-title-check.yml +++ b/.github/workflows/pr-title-check.yml @@ -3,7 +3,10 @@ name: PR Title Check on: pull_request_target: - types: [opened, edited, synchronize, reopened] + # `labeled`/`unlabeled` are here because the exemption below is keyed on a + # label. Without them a PR labelled after it opened would keep the verdict + # from the run that saw no labels. + types: [opened, edited, synchronize, reopened, labeled, unlabeled] permissions: contents: read @@ -34,6 +37,16 @@ jobs: build revert requireScope: false + # Dependabot writes its own titles and there is no setting that makes + # them satisfy `subjectPattern`. It uses "bump from a to b" for a + # version bump and "Update requirement from x to y" for a + # requirement range, so roughly half of what it opens starts with a + # capital U and fails a rule the author cannot act on. The check exists + # to keep human titles consistent for the changelog; a bot that already + # writes a conventional prefix every time is not the thing it guards + # against. + ignoreLabels: | + dependencies subjectPattern: ^(?![A-Z]).+$ subjectPatternError: | The PR title subject "{subject}" must not start with an uppercase letter. diff --git a/FETCH_HEAD b/FETCH_HEAD new file mode 100644 index 000000000..e69de29bb