Context
Surfaced during the review of PR #12704 — a Markdown-only release-note edit (resources/content/release-notes/v13.0.0.md). Both unit and integration-unified triggered and sat pending on a change that cannot affect them, forcing a reviewer §7.6 ("don't approve over pending CI") judgment on a trivial docs PR. The friction recurs on every docs/content PR: release notes, learn/**, resources/content/** all pay the full code-CI wait and re-trigger the same reviewer dilemma.
Live latest-open sweep: checked the latest 20 open issues at 2026-06-07T23:37Z; no equivalent CI-trigger-scoping ticket (closest is #10945, CLOSED, which expands integration coverage — opposite intent).
The Problem
.github/workflows/test.yml (lines 3-7) triggers on pull_request: branches: [dev] and push: branches: [dev] with no paths / paths-ignore filter, running the matrix.suite: [integration-unified, unit] on every PR regardless of changed paths. For docs/content-only changes these suites are structurally incapable of failing from the diff, yet they run (~5-11 min observed on #12704 / #12697), consume CI compute, and gate docs PRs on irrelevant checks.
Operator read (@tobiu): integration for a Markdown change clearly should not trigger; unit probably not either — but verify, since a few unit specs may parse content (release-note frontmatter, SEO route generation, the content-sync pipeline).
The Architectural Reality
- Trigger lives at the workflow level in
.github/workflows/test.yml on.pull_request — GitHub path filters (paths / paths-ignore) are workflow-level, not per-matrix-job, so a naive filter skips BOTH integration-unified and unit together.
- Gotcha — required-check interaction: if
unit / integration-unified are required status checks under branch protection, a naive paths-ignore leaves them unreported on docs PRs → GitHub shows "expected but missing" → the docs PR can never satisfy the merge gate. The fix must keep required checks satisfiable on skipped PRs (a "skipped → success" shim job, a dorny/paths-filter gate with per-job if:, or removing them from the required set), not just add paths-ignore.
The Fix
- Audit
.github/workflows/test.yml triggers and the branch-protection required-check set.
- Scope the heavy suites so docs/content-only PRs skip them — e.g. workflow-level
paths-ignore for resources/content/**, learn/**, **/*.md, paired with a status-shim if they are required checks; OR a paths-filter change-detection job gating each suite via if: (needed if unit must still run for a verified content dependency).
- V-B-A before excluding
unit: grep the unit suite for content/release-notes/frontmatter fixtures. Document the finding either way (skip unit too, or keep it for the named dependency).
- Document the path-scope rationale inline in the workflow so the trigger scope is self-explaining.
Acceptance Criteria
Out of Scope
- Restructuring the test suites themselves — this is trigger-scoping only.
- The reviewer-side §7.6 CI-gate discipline — separate; this ticket removes the friction at its source rather than relitigating it per-PR.
Related
- Surfaced by the PR #12704 review (docs-only PR, irrelevant code-CI pending).
- Sibling friction:
pr-review-guide.md §7.6 reviewer CI-gate.
Origin Session ID: 728442d6-a2a0-4481-a631-a3112ce6d703
Retrieval Hint: "path-scope test.yml docs-only PRs skip unit integration CI trigger"
Context
Surfaced during the review of PR #12704 — a Markdown-only release-note edit (
resources/content/release-notes/v13.0.0.md). Bothunitandintegration-unifiedtriggered and satpendingon a change that cannot affect them, forcing a reviewer §7.6 ("don't approve over pending CI") judgment on a trivial docs PR. The friction recurs on every docs/content PR: release notes,learn/**,resources/content/**all pay the full code-CI wait and re-trigger the same reviewer dilemma.Live latest-open sweep: checked the latest 20 open issues at 2026-06-07T23:37Z; no equivalent CI-trigger-scoping ticket (closest is #10945, CLOSED, which expands integration coverage — opposite intent).
The Problem
.github/workflows/test.yml(lines 3-7) triggers onpull_request: branches: [dev]andpush: branches: [dev]with nopaths/paths-ignorefilter, running thematrix.suite: [integration-unified, unit]on every PR regardless of changed paths. For docs/content-only changes these suites are structurally incapable of failing from the diff, yet they run (~5-11 min observed on #12704 / #12697), consume CI compute, and gate docs PRs on irrelevant checks.Operator read (@tobiu): integration for a Markdown change clearly should not trigger; unit probably not either — but verify, since a few unit specs may parse content (release-note frontmatter, SEO route generation, the content-sync pipeline).
The Architectural Reality
.github/workflows/test.ymlon.pull_request— GitHub path filters (paths/paths-ignore) are workflow-level, not per-matrix-job, so a naive filter skips BOTHintegration-unifiedandunittogether.unit/integration-unifiedare required status checks under branch protection, a naivepaths-ignoreleaves them unreported on docs PRs → GitHub shows "expected but missing" → the docs PR can never satisfy the merge gate. The fix must keep required checks satisfiable on skipped PRs (a "skipped → success" shim job, adorny/paths-filtergate with per-jobif:, or removing them from the required set), not just addpaths-ignore.The Fix
.github/workflows/test.ymltriggers and the branch-protection required-check set.paths-ignoreforresources/content/**,learn/**,**/*.md, paired with a status-shim if they are required checks; OR apaths-filterchange-detection job gating each suite viaif:(needed ifunitmust still run for a verified content dependency).unit: grep the unit suite for content/release-notes/frontmatter fixtures. Document the finding either way (skip unit too, or keep it for the named dependency).Acceptance Criteria
resources/content/release-notes/*.mdedit) does NOT triggerintegration-unified.unit, UNLESS a verified unit-spec content dependency requires it — document the V-B-A result either way.src/**,ai/**,test/**, build config) still trigger the full suites unchanged.lint-pr-body/lint-pr-review-body/CodeQLstill run on docs PRs as appropriate.Out of Scope
Related
pr-review-guide.md §7.6reviewer CI-gate.Origin Session ID: 728442d6-a2a0-4481-a631-a3112ce6d703 Retrieval Hint: "path-scope test.yml docs-only PRs skip unit integration CI trigger"