fix(ci): port the release-green ESLint gate fix to main (base-red #12363) - #12618
Merged
Conversation
) `main` still runs the pre-#11890 ESLint gate: a 30-minute ceiling, no `--cache`, and a call site that funnels every non-JSON outcome into the single detail string "could not parse eslint json". A cold runner now crosses 30 minutes on this repository, so the gate is killed, and main's code then reports the timeout as a parser problem — which is why base-red #12363 lists `ESLint: could not parse eslint json` with nothing to act on. The release branch fixed exactly this and main never received it, the case merge-gates §8 prescribes a companion PR for. Ports the release-side change verbatim: - `ESLINT_TIMEOUT_MS` (60min) replaces the inline 30-minute ceiling. - `--cache --cache-location .eslintcache` on the gate's ESLint run. - `evaluateEslintRun()` keeps a ceiling kill reported as a ceiling kill, and only calls the report invalid when ESLint actually exited 0 without producing one. Validated TDD: the ported test fails on main's current script with `TypeError: evaluateEslintRun is not a function`, and passes (31/31) with the port. Sibling suites `release-green-docs-drift-7253` (3/3) and `sync-next-cycle` (11/11) stay green.
Contributor
CI Coverage Report
Coverage artifact was not available for this run. |
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.
What this fixes
main's base-red (#12363) listsESLint: could not parse eslint jsonas a hard failure. That message is misleading: main is still running the pre-#11890 ESLint gate, which has a 30-minute ceiling, no--cache, and a call site that collapses every non-JSON outcome into that one string.A cold runner crosses 30 minutes on this repository now, so the gate is killed by its own ceiling — and then reported as a parser problem, which sends whoever triages it after
parseEslintJsoninstead of the ceiling. The release branch fixed this and main never received it: exactly the "gate/infra fix that landed only on the release branch" case that_shared/merge-gates.md§8 prescribes a companion PR for, and that #12363's own body describes.The port
Release-side change carried over verbatim (the two files differ between the branches only in these hunks):
ESLINT_TIMEOUT_MS = 60minreplaces the inline 30-minute ceiling.--cache --cache-location .eslintcacheon the gate's ESLint invocation.evaluateEslintRun()reports a ceiling kill as a ceiling kill, and only calls the report invalid when ESLint exited 0 without producing one.Validation (TDD)
The test is ported first and fails on main's current script:
With the port applied:
tests/unit/validate-release-green.test.ts31/31 pass. Both other consumers of the script stay green —release-green-docs-drift-72533/3,sync-next-cycle11/11. Prettier clean on both files.Scope note on the rest of #12363
This PR deliberately fixes only the ESLint gate. Triage of the other five hard failures in that report:
release/v3.8.51currently carries (🔴 Release branch not green: release/v3.8.51 #12581), whose fix is in an open PR on the release side. Not main-specific; it reaches main through the cycle.docs/reference/REMOVED_PROVIDERS.mddoes not exist on main), so it is not that cause.provider-family-combos— the two failures are 20s timeouts, not assertion failures. Running the full vitest suite locally on both branches reproduces them onrelease/v3.8.51more severely (4 failures, 81s) than onmain(2 failures) — and CI calls that release suite green. It is load-sensitive, not a main defect.The report is also from a run created 2026-09-01T18:34Z;
mainhas advanced 5 commits since.Validate main branchonly runs on the scheduled sweeps, so the next one re-verdicts the current tip.