Scope web-ci.yml jobs to the surface that actually changed - #466
Merged
Conversation
8 tasks
WilfordGrimley
added a commit
that referenced
this pull request
Jul 27, 2026
…letion (#500) * docs: document local_calculate_verdicts --diff-report and per-calculator counters (PR #494) * docs: document rejudge_fallback_channel compare-and-retract command (PR #495) * docs: Stage C full-catalog completion record (218,108/218,516, 99.8%) * docs: document web-ci.yml per-surface CI gating (PR #466) * docs: fix rejudge_fallback_channel command path (cardpicker/management/commands/)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Owner-directed CI path-scoping, 2026-07-25.
Summary
web-ci.yml: added achangesjob (plaingit diff --name-onlyagainst the push's pre-image SHA — no third-party paths-filter action, matching this repo's existing convention of reaching for plain git diffing, e.g.upstream-drift-monitor.yml) that outputsbackend/frontendbooleans. Each surface's jobs (test-backendforMPCAutofill/**;test-frontend,merge-frontend-test-reports,build-frontendforfrontend/**) nowif:on the relevant flag, so e.g. a backend-only merge no longer runs the full 4-shard Playwright suite.test-pre-commitjob fromweb-ci.yml.test-pre-commit.ymlalready runspre-commit run --all-filesunconditionally on every push to master (no path filter), so the copy insideweb-ci.ymlcould never actually be deduplicated by path-scoping —test-pre-commit.ymlwould still run the identical check on the same push regardless. Chosen direction: drop, not scope (stated per the task's "whichever direction is cleaner" instruction).build-frontend'sneeds:no longer includes it; formatting/type-check coverage on the commit is unaffected since the standalone workflow's own status check still runs.cloudflare-static-site/**stays in the workflow's top-levelon.push.paths(unchanged — out of scope, trigger-level not job-level) but isn't wired into anychangesoutput: no job in this workflow currently reads that directory (its presence there predates thepublish-*job removal noted indocs/infrastructure.md's CI/CD state notes). A push touching only that path now runs zero jobs here.Deliberately NOT done: coverage-delta.yml path filter
Left
coverage-delta.ymluntouched. Reading it turned up that the task's premise doesn't hold: this isn't a backend-coverage check (it doesn't touchMPCAutofill/**at all) — it's a static parser overfrontend/tests/**/*.spec.tstest-inventory/skip-state (issue #415, incident #389, the/editorroute swap that silently skipped ~190 Playwright tests). Both the workflow's own header comment anddocs/infrastructure.md's CI/CD state section document a deliberate no-path-filter design: "the gate's whole reason for existing is to catch a test-inventory change that's easy to miss amid an otherwise-unrelated-looking diff, so gating its own trigger behind a path filter would reintroduce the exact class of blind spot it's meant to close." It's pure stdlib Python, no install step, so the always-run cost is low. Adding a path filter here — toMPCAutofill/**as literally requested, or even to the technically-correctfrontend/tests/**— would directly contradict this recorded rationale. Flagging for an explicit owner call rather than resolving it myself.Branch-protection check for context:
GET /repos/ProxyPrints/ProxyPrints.github.io/branches/master/protection→ 404 ("Branch not protected"), so there's no required-check concern either way on this repo today.Verification
python3 -c "import yaml; yaml.safe_load(open('.github/workflows/web-ci.yml'))"→ parses clean.python3 -c "import yaml; yaml.safe_load(open('.github/workflows/coverage-delta.yml'))"→ parses clean (unchanged file, confirmed still valid).MPCAutofill/**→changes,test-backendrun;test-frontend,merge-frontend-test-reports,build-frontendskip.frontend/**→changes,test-frontend(4 shards),merge-frontend-test-reports,build-frontendrun;test-backendskips.cloudflare-static-site/**→changesruns, every other job skips.frontend/**andMPCAutofill/**→ everything runs.workflow_dispatch(manual) → everything runs (nobeforeSHA to diff against, so thechangesjob's fallback treats it as "both surfaces changed").test-pre-commit.yml(unaffected, separate workflow) still runs on every push to master regardless of path — that's now the only place formatting/type-checking runs on a master push.Open items
coverage-delta.yml: keep it unscoped (as currently documented and left in this PR), or path-scope it and accept the blind-spot risk the existing comment warns about. No change made pending that call.