Repository navigation
ci: move workflows off end-of-life Node 20 - #98
Conversation
regenerate-llms, link-check, and sync-skills pinned Node 20, which reached end-of-life in April 2026. Its last release bundles Brotli 1.1.0, which is affected by GHSA-9v8h-qqgm-4m35 (CVE-2026-111497) and won't be patched. Read the version from .nvmrc like seo-audit does, and set check-latest so setup-node resolves the newest Node 22 release (the patched 22.23.4) instead of the runner's cached 22.23.3. Co-authored-by: Cursor <cursoragent@cursor.com>
PR SummaryLow Risk Reviewed by Cursor Bugbot for commit f551aa3. Bugbot is set up for automated code reviews on this repo. Configure here. |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
There was a problem hiding this comment.
This small CI change moves link-check.yml, regenerate-llms.yml, and sync-skills.yml off Node 20 and onto the .nvmrc version (22) with check-latest: true, matching seo-audit.yml. I verified that .nvmrc exists at the repo root and that the repo-root checkout runs before setup-node in every changed workflow, so I found no correctness or security problems.
Findings: 0 blocking | 3 non-blocking | 0 posted inline
Blockers
- None at the file/PR level.
Non-blocking
- The Cursor second-opinion pass (
cursor-review.md) was empty, so this review had no Cursor input. Codex reported no material issues, and I agree with it. check-latest: truemakes each job ask the Node dist index for the newest release instead of using the runner's cached 22.x. This adds a small network dependency, and builds can pick up new 22.x patches without notice. That is acceptable here because it is how the patched release gets picked up, but you could remove it once runner images ship 22.23.4 or later.- After merging, follow the PR's own verification step: run Regenerate llms.txt manually and confirm the Node version it reports. That workflow pushes directly to
main, and this PR's CI does not exercise it.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
What is the purpose of the change?
CI maintenance. No documentation content changes.
Three workflows pinned Node 20, which reached end-of-life on April 30, 2026. Its last release (v20.20.2) bundles Brotli 1.1.0, which is affected by GHSA-9v8h-qqgm-4m35 (CVE-2026-111497), an out-of-bounds write in the Brotli decoder. Node's October 2026 security release fixes it on 22.x, 24.x, and 26.x only.
Describe the changes to the documentation
No pages change. In
regenerate-llms.yml,link-check.yml, andsync-skills.yml, thesetup-nodestep now:.nvmrc(22), the same asseo-audit.ymlcheck-latest: true, so it resolves the newest 22.x release (the patched 22.23.4) instead of the runner image's cached 22.23.3Notes
regenerate-llms.ymlis the job that actually runs the vulnerable decoder.scripts/generate-llms.mjsfetches every page fromdocs.sei.io, and Cloudflare serves those pages Brotli-compressed. The job also pushes straight tomain.docs.sei.io, npm, Mintlify, and Anthropic.seo-audit.yml,validate-docs.yml, andsync-default-configs.ymlare unchanged. They already run Node 22, and their scripts only read local files, so they never decode Brotli.Made with Cursor