diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c15bf1ca12..b30c476e4e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -109,8 +109,11 @@ jobs: .eslintcache .eslintcache-complexity key: eslint-${{ runner.os }}-${{ hashFiles('eslint.config.mjs', 'eslint.complexity-ratchets.config.mjs', 'config/quality/eslint-suppressions.json', 'package-lock.json') }} - restore-keys: | - eslint-${{ runner.os }}- + # No restore-keys fallback on purpose (#11600, P-II.1 of the v3.8.50 postmortem): a + # cache built under a different suppressions file / lint config / lockfile reports + # stale per-file verdicts, which is exactly how 215 pre-existing errors stayed + # invisible for a whole cycle. Exact key or a cold full lint (~13 min) — never a + # partial cache from another configuration. # Single ESLint inventory (JSON) — quality-gate reuses the artifact instead of # a second cold full-tree pass for eslintWarnings ratchet counts. - name: ESLint (JSON report) @@ -209,8 +212,11 @@ jobs: .eslintcache .eslintcache-complexity key: eslint-${{ runner.os }}-${{ hashFiles('eslint.config.mjs', 'eslint.complexity-ratchets.config.mjs', 'config/quality/eslint-suppressions.json', 'package-lock.json') }} - restore-keys: | - eslint-${{ runner.os }}- + # No restore-keys fallback on purpose (#11600, P-II.1 of the v3.8.50 postmortem): a + # cache built under a different suppressions file / lint config / lockfile reports + # stale per-file verdicts, which is exactly how 215 pre-existing errors stayed + # invisible for a whole cycle. Exact key or a cold full lint (~13 min) — never a + # partial cache from another configuration. # Coverage mergeada (coverage-summary.json) p/ o ratchet de cobertura. # continue-on-error: o artifact pode não existir se a job test-coverage foi # SKIPPED (shard flaky). Nesse caso collect-metrics pula coverage.* (ausente sem diff --git a/changelog.d/fixes/11600-eslint-gate-cache-suppressions.md b/changelog.d/fixes/11600-eslint-gate-cache-suppressions.md new file mode 100644 index 0000000000..858dfa7e91 --- /dev/null +++ b/changelog.d/fixes/11600-eslint-gate-cache-suppressions.md @@ -0,0 +1,5 @@ +- Dropped the stale-`.eslintcache` `restore-keys` fallback from both "Restore ESLint file + cache" steps in `ci.yml`, so the blocking `Lint` job can no longer be served per-file + verdicts computed under a different lint config, suppressions file or lockfile. `quality.yml` + had already dropped it in #11963; `ci.yml` — the workflow that actually gates PRs — had not + (#11600).