On two repos the Code Quality workflow never started for a pull request, and the PR looked healthy while it happened.
gh pr checks reported four green entries — CodeQL, Analyze (actions), Analyze (javascript-typescript), Analyze (go) — and nothing red. That is indistinguishable at a glance from a passing PR, but the quality workflow (34–35 jobs: lint, build, PHPUnit matrix, gates) had not run at all.
Observed on:
both with head branch feat/eslint-10 and base development.
What did and did not work
- Opening the PR: no
Code Quality run.
- Pushing an empty commit to re-fire
pull_request: still no run.
gh workflow run code-quality.yml --ref feat/eslint-10 (workflow_dispatch): ran fine — 34 and 35 jobs, zero failures. But a dispatched run does not attach to the PR, so the PR's checks stayed at four.
- Pushing a merge commit (after merging
development in) finally produced a normal pull_request run.
Note on the branch-name filter
The push trigger is:
push:
branches: [main, development, feature/**, bugfix/**, hotfix/**]
feat/** is not in that list — only feature/** — so a feat/… branch gets no push run either. doriath already has an open branch named ci/close-branch-trigger-gap, so this is partly known. Adding feat/** (and probably fix/**, chore/**, ci/**) would close the push half.
The pull_request half is the more serious one, because the base-branch filter ([main, master, development, beta]) does match and it still did not fire.
Why it matters
A workflow that never ran is indistinguishable from one that passed if you only read the PR's check list. Anything that merges on "no failures" will merge unmeasured code. Worth a guard that fails a PR carrying zero quality / check runs, rather than treating their absence as success.
On two repos the
Code Qualityworkflow never started for a pull request, and the PR looked healthy while it happened.gh pr checksreported four green entries —CodeQL,Analyze (actions),Analyze (javascript-typescript),Analyze (go)— and nothing red. That is indistinguishable at a glance from a passing PR, but the quality workflow (34–35 jobs: lint, build, PHPUnit matrix, gates) had not run at all.Observed on:
both with head branch
feat/eslint-10and basedevelopment.What did and did not work
Code Qualityrun.pull_request: still no run.gh workflow run code-quality.yml --ref feat/eslint-10(workflow_dispatch): ran fine — 34 and 35 jobs, zero failures. But a dispatched run does not attach to the PR, so the PR's checks stayed at four.developmentin) finally produced a normalpull_requestrun.Note on the branch-name filter
The
pushtrigger is:feat/**is not in that list — onlyfeature/**— so afeat/…branch gets no push run either. doriath already has an open branch namedci/close-branch-trigger-gap, so this is partly known. Addingfeat/**(and probablyfix/**,chore/**,ci/**) would close the push half.The
pull_requesthalf is the more serious one, because the base-branch filter ([main, master, development, beta]) does match and it still did not fire.Why it matters
A workflow that never ran is indistinguishable from one that passed if you only read the PR's check list. Anything that merges on "no failures" will merge unmeasured code. Worth a guard that fails a PR carrying zero
quality /check runs, rather than treating their absence as success.