fix(ci): scope .github/workflows path filter to ci.yml; remove echo web-lint stub - #903
Conversation
2bc85d2 to
018b979
Compare
Note on base branchThis PR was opened against The diff is now exactly the nine files belonging to this change: Merge order: #901 -> #903 -> #902. GitHub retargets this PR to VerificationCI run 32847554833
Every suite ran on this PR, which is the correct behaviour: this PR edits |
018b979 to
10b9288
Compare
…int job The changes job classified every group with a '.github/workflows/**' glob, so editing any workflow in the repository -- agent-host-maintenance, docs-drift, publish-images, squad-*, deploy-docs -- tripped all five groups and ran the full .NET, web, Node toolchain, docs and diagram matrix. PR #899 demonstrated this: a description-only edit to one unrelated workflow ran every suite. Only ci.yml decides what these jobs do, so only ci.yml escalates now. areasForPaths() in scripts/ci/validate.mjs carried the same '.github/workflows/' prefix rule for local validation. Both classifiers state the same policy, so both are scoped to ci.yml to stop them drifting apart. The web-lint job ran a single echo confirming lint had passed in web-tests. It was introduced to preserve a branch-protection check name after lint moved into web-tests, could never fail, and still billed a whole minute per run (282 billed minutes in August across 230 runs). Lint coverage is unchanged: it still runs inside Web tests. Note: 'Web lint' must also be removed from the required status checks of the dev-integration-ruleset, or PRs will block on a check that no longer reports. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 11857092-1327-41bd-8708-b2ca85e674dd
7964b40 to
eae3ad0
Compare
… fix Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 11857092-1327-41bd-8708-b2ca85e674dd
eae3ad0 to
d8f970e
Compare
Problem
Two independent sources of CI waste in
ci.yml.1. The path filter escalated on every workflow file
All five
changesfilter groups included:- '.github/workflows/**'The intent was "a change to this pipeline must fully verify it". The effect was that
editing any workflow in the repo --
agent-host-maintenance.yml,docs-drift.yml,publish-images.yml,squad-*.yml,deploy-docs.yml-- tripped all five groups andran the entire matrix.
#899 proved it: a workflow description-only edit ran
.NET tests,Web tests,Node toolchain tests,Docs buildandArchitecture diagrams. None of thoseworkflows drive any of these suites.
2.
Web lintwas an echo-only stubIntroduced in #743 to preserve the branch-protection check name after lint moved into
Web tests. It could never fail, and GitHub bills every job a full minute:282 billed minutes across 230 runs in August for one
echo.Change
.github/workflows/ci.ymlonly. A change toci.ymlstill trips all five groups, so the pipeline is never under-verified when itchanges.
areasForPaths()inscripts/ci/validate.mjscarried the identical.github/workflows/prefix rule for local validation. Both classifiers state thesame policy, so both are scoped to
ci.yml-- otherwise they drift.web-lintjob deleted. Lint coverage is unchanged: it still runs insideWeb testsviavalidate.mjs --area web.CONTRIBUTING.md(job table, "six" -> "five" blocking jobs),.github/dev-branch-protection.md,.github/main-branch-protection.md,.copilot/skills/agentweaver-git-workflow/SKILL.md.Regression tests
Added to
scripts/ci/tests/ui-harness-workflow.test.mjs:path filters escalate on ci.yml only, never on every workflow file-- asserts no.github/workflows/**glob survives and that all 5 groups still listci.yml.no echo-only stub jobs remain in the pipeline.Extended
scripts/ci/tests/shared-deps.test.mjsto assertdocs-drift.ymlandpublish-images.ymlselect no validation areas.npm run version:checkandnpm run changeset:check -- --base origin/devboth pass.Ruleset change already applied
Web lintwas a required status check ondev-integration-ruleset. Deleting thejob without removing the check would have blocked every PR on a check that never reports --
including this one. It has been removed via the API before this PR:
main-rulesetnever requiredWeb lint; it is unchanged. No other ruleset field wasmodified -- enforcement, conditions and PR rules verified intact after the update.
Safety
No protection is lost.
merge; it only avoids running suites the diff cannot affect.
ci.ymlitself still runs everything.Expected saving
Web lint: ~282 billed min/month, eliminated outright.Workflow edits are frequent here -- fix(ci): use GHCR instead of ACR in agent-host-maintenance workflow #896 and Update ACR description to GHCR in workflow #899 are both recent examples.