Symptom
A pull request whose title starts with docs skips every substantive CI job, even when the diff contains Rust or Python code.
.github/workflows/ci.yml currently:
- forces
full_ci to false when startsWith(github.event.pull_request.title, 'docs');
- skips the path-classification step under the same condition; and
- allows the aggregate
CI Success job to pass when its dependencies are skipped, because it fails only on failure or cancelled.
A mixed or code-only PR titled docs: ... can therefore satisfy the required aggregate check without running lint, SPDX validation, Rust checks, mypy, Python tests, or the install smoke test.
Reproduction
- Open a pull request that changes a Rust or Python source file.
- Give it a title beginning with
docs, for example docs: update parser behavior.
- Observe that
Detect non-documentation changes is skipped and full_ci resolves to false.
- Observe that the substantive jobs are skipped while
CI Success succeeds.
This is based on workflow expression evaluation; no provider credentials or external services are involved.
Expected vs. actual
- Expected: Whether full CI runs is determined from changed paths. A title may describe a PR, but it should not override a code-bearing diff.
- Actual: The
docs title prefix bypasses path detection and all code gates.
Proposed fix
Always run dorny/paths-filter for pull requests and derive full_ci from changed paths only. If the title shortcut was added for a narrower generated-docs workflow, scope that behavior to the relevant paths instead of the PR title.
Environment
- Workflow:
.github/workflows/ci.yml on b256d936f1d77bf13ec9bec399ea0a253e07ca05
- Event:
pull_request
Additional context
This conflicts with CONTRIBUTING.md, which says all code must pass the listed gates. PR #126 introduced path-based documentation-only skipping; PR #254 later added the title shortcut. Neither tracks a current fix.
I searched open and closed issues and pull requests for docs prefix skip CI, startsWith pull_request.title, docs-only title full_ci, Detect code changes docs title, and full_ci docs; I found no matching report or in-flight fix.
I'm happy to send the small workflow patch if maintainers agree that paths should be authoritative.
Symptom
A pull request whose title starts with
docsskips every substantive CI job, even when the diff contains Rust or Python code..github/workflows/ci.ymlcurrently:full_cito false whenstartsWith(github.event.pull_request.title, 'docs');CI Successjob to pass when its dependencies areskipped, because it fails only onfailureorcancelled.A mixed or code-only PR titled
docs: ...can therefore satisfy the required aggregate check without running lint, SPDX validation, Rust checks, mypy, Python tests, or the install smoke test.Reproduction
docs, for exampledocs: update parser behavior.Detect non-documentation changesis skipped andfull_ciresolves to false.CI Successsucceeds.This is based on workflow expression evaluation; no provider credentials or external services are involved.
Expected vs. actual
docstitle prefix bypasses path detection and all code gates.Proposed fix
Always run
dorny/paths-filterfor pull requests and derivefull_cifrom changed paths only. If the title shortcut was added for a narrower generated-docs workflow, scope that behavior to the relevant paths instead of the PR title.Environment
.github/workflows/ci.ymlonb256d936f1d77bf13ec9bec399ea0a253e07ca05pull_requestAdditional context
This conflicts with
CONTRIBUTING.md, which says all code must pass the listed gates. PR #126 introduced path-based documentation-only skipping; PR #254 later added the title shortcut. Neither tracks a current fix.I searched open and closed issues and pull requests for
docs prefix skip CI,startsWith pull_request.title,docs-only title full_ci,Detect code changes docs title, andfull_ci docs; I found no matching report or in-flight fix.I'm happy to send the small workflow patch if maintainers agree that paths should be authoritative.