Conversation
Signed-off-by: latreon <ferdakerim@gmail.com>
|
good catch on one shared input still missing:
|
Chessing234
left a comment
There was a problem hiding this comment.
the new contract test fails against this diff. expectedSelections requires ".github/workflows/ci.yml" to select ["rust","desktop","web","mobile"], but the mobile filter never gets it — the hunk adds only 'bin/**' and 'Justfile' there, and main's mobile block carries '.github/workflows/mobile-release-candidate.yml', not ci.yml. nothing in selectsPath reaches it, so it trips on ".github/workflows/ci.yml must select the mobile CI group".
that's a real gap and not just a test bug: the Mobile job at ci.yml:850 gates on needs.changes.outputs.mobile alone — no ||rust / ||desktop fallback like every desktop-rust consumer has — so a PR editing ci.yml, including the Mobile job's own steps, skips mobile entirely. adding '.github/workflows/ci.yml' to the mobile filter fixes both at once.
the Justfile fix is real fwiw — git ls-files confirms the tracked name is Justfile, so the old lowercase pattern never matched on a linux runner.
A documentation-only update to #7809 selected desktop builds and E2E tests because path detection compared an old PR base SHA with GitHub's newer synthetic merge commit. The [failing run's path-detection log](https://github.com/block/buzz/actions/runs/35789957773/job/106955810630) includes four unrelated desktop files from `main`; `VISION_MOBILE.md` did not match a runtime filter. Use GitHub's PR file list for pull requests so unrelated changes in the synthetic merge commit cannot select runtime suites. The existing directory filters are unchanged: root and docs/ Markdown do not select runtime suites, while Markdown under runtime directories still selects its affected suites. Mixed code/documentation changes retain normal coverage. Always-on security, policy, and source-contract checks and full push-to-main coverage are unchanged. Added regression coverage runs the pinned paths-filter action against real fixture repositories, including a synthetic merge containing unrelated upstream desktop code. All 35 selection scenarios and 26 required-check scenarios pass; the new regressions failed before the fix. Existing required-context isolation, file-size policy, and security-review contract checks pass, as do script lint and workflow syntax validation. Full workflow lint reports the same two pre-existing shell-quoting findings in the untouched dead-token guard. A desktop E2E build was run to diagnose the unrelated required smoke failure. Related: #7809 (incident, unchanged) and #5756 (shared-input path coverage, separate scope). No matching issue found. PRs with at least 3,000 changed files now select every runtime suite, avoiding GitHub's PR-file-list ceiling. Boundary tests cover 2,999, 3,000, and 3,001 files, including a runtime file omitted beyond the API cap; disabling the safeguard makes the latter two regressions fail. Required checks now run and fail when path selection fails, is cancelled, or is skipped. Regression coverage exercises the workflow conditions and shell checks for all 13 required wrappers, plus an API-denial case against the pinned action. Mutating either the scheduling guard or the result check makes all 13 failure regressions fail. The required mention-settings smoke test expected a pin after explicitly disabling automatic mentions. Waiting for its old avatar to exit reproduced the CI failure 3/3; the test now checks that subsequent mentions remain manual and retains outgoing recipient-tag assertions. Corrected browser regression: 20/20 repeated runs; related picker unit tests: 18/18. No desktop production behavior changed. The always() requirement is now pinned in required-wrapper regression tests; deleting it fails all 26 gate cases. --------- Signed-off-by: Tom Brow <tomb@block.xyz>
Summary
Pull-request path detection omitted several shared workspace inputs, which could skip required CI groups when those inputs changed.
JustfilematchRelated issue
N/A — no matching issue or pull request found.
Testing
node --test scripts/check-ci-path-filters.test.mjs(proved red before the workflow fix, then green)node --test scripts/*.test.mjs(7/7 passing)pnpm exec biome check scripts/check-ci-path-filters.test.mjsgit diff --check