fix(ci): drop the stale ESLint cache restore-keys fallback from ci.yml (#11600) - #11996
Merged
diegosouzapw merged 1 commit intoAug 29, 2026
Merged
Conversation
diegosouzapw
force-pushed
the
fix/11600-eslint-gate-cache-suppressions
branch
from
August 29, 2026 08:53
ea1dba2 to
7945433
Compare
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
diegosouzapw#11600) (diegosouzapw#11996) Fixes the blocking Lint job's own ci.yml cache: PR diegosouzapw#11963 removed the stale restore-keys fallback from quality.yml but left ci.yml's two "Restore ESLint file cache" steps carrying the same prefix-match fallback that lets a cache from a different lint config report stale per-file verdicts. Byte-level parity with diegosouzapw#11963's already-merged fix. Deliberately half of diegosouzapw#11600 — the other half (run-eslint-json.mjs) is covered by PR diegosouzapw#11983 from a parallel session, so the two don't collide on the same file.
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.
Refs #11600
Scope — deliberately half of the issue
Issue #11600 has two distinct, independently-provable sub-defects. PR #11983 (opened by a parallel session) already covers the second one; this PR covers only the first, so the two do not collide.
.eslintcacherestore-keysfallback still inci.yml.github/workflows/ci.ymlrun-eslint-json.mjsmissing--pass-on-unpruned-suppressionsscripts/quality/run-eslint-json.mjsThis branch originally carried both; the
run-eslint-json.mjschange and its test were dropped once #11983 appeared, to avoid two PRs editing the same file and the same new test path.Root cause (sub-defect A)
PR #11963 removed the
restore-keys: | eslint-${{ runner.os }}-fallback fromquality.yml's two "Restore ESLint file cache" steps, with a comment citing this issue: a cache restored on a prefix match is a cache built under a different lint config, suppressions file or lockfile, and it reports stale per-file verdicts.ci.ymlwas left untouched — andci.ymlis the workflow that runs the blockingLintjob on every PR. Both of its "Restore ESLint file cache" steps (thelintjob and thequality-gatejob) still carried the prefix fallback, so the exact mechanism #11963 fixed forquality.ymlwas still live on the gate that actually blocks contributors.Fix
Removed the
restore-keysfallback from both steps inci.ymland replaced it with the same explanatory commentquality.ymlalready carries, so the two workflows now state and enforce the same policy: exact key or a cold full lint, never a partial cache from another configuration.Validation
No unit test can cover a workflow-runner cache policy. Validated by:
quality.ymlshape from chore(ci): cap the unit shards at 30 min and stop restoring stale ESLint caches #11963 (same removal, same comment);key:expression is unchanged — only the prefix-match fallback is gone, so an exact-key hit still restores as before.Stated plainly: this half is validated by review + parity, not by a test. Hard Rule #18's TDD path does not apply to a CI runner-cache directive.
Note on the issue's headline
The "223 errors hidden by the cache" headline was investigated earlier this cycle and found to be a phantom local-devbox measurement (a 215-entry freeze was committed and then reverted; CI's own clean-checkout artifact showed zero unsuppressed errors). This PR does not freeze or add any suppression.