chore: add Renovate config and retarget the CI platform matrix - #3
Merged
Conversation
Same shape as the rslint/rstest configs (config:recommended + the rstackjs security preset + weekly schedule + pinned action digests), with two local rules: E2E fixture manifests are ignored (they pin the published toolchain versions the suites verify), and the @rslint/core / @rstest/core / rstack devDependencies are excluded because their ranges mirror the runtime SUPPORT_MATRIX and move only with a compatibility decision.
fi3ework
force-pushed
the
chore/renovate
branch
from
August 5, 2026 08:25
1f35199 to
3385507
Compare
Splits the two per-OS jobs into one Linux check job (build, lint, format, unit tests) and an E2E matrix over windows-latest and macos-latest. Unit tests gain nothing from a second OS: the three places the source branches on `process.platform` (bin names in detection.ts, platform packages in stacks/lint/utils.ts, path casing in stacks/test/projectCoverage.ts) are only reachable when the host is that platform, and the Windows branches stay covered by the Windows E2E job. The E2E matrix drops Linux and gains macOS, matching the platforms upstream rstest runs these suites on. The ported watch-mode suites rewrite a fixture with `writeFile`, which truncates before writing; inotify reports that empty intermediate state as its own event, so the watcher can trigger a run against a zero-length test file and the assertions then inspect a run that never saw the edit (observed on ubuntu-latest: "No test suites found in file", 0 collected). Fixing it means diverging from a verbatim upstream copy; not running Linux does not. The suites pass 5/5 unmodified on macOS locally.
fi3ework
force-pushed
the
chore/renovate
branch
from
August 5, 2026 08:28
3385507 to
1d695b2
Compare
The weekly schedule gates when a PR is opened, so a package that ships every few days would still be picked up at most once a week — the security preset's `minimumReleaseAge: null` only waives the release-age cooldown, not the schedule. Give the Rstack scopes their own group with `schedule: ['at any time']` so a release is proposed on the next run after it publishes; everything else stays weekly.
SUPPORT_MATRIX declares a floor, not a pin, so raising @rslint/core, @rstest/core or rstack in package.json does not move it — the earlier exclusion treated the two as coupled. They now follow the same open-schedule rule as the rest of the Rstack scopes.
2 tasks
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.
Summary
Two related changes to repo infrastructure.
1. Renovate config
Adds
.github/renovate.json5, following the shape used by rslint and rstest:config:recommended+github>rstackjs/renovate:security+schedule:weekly+helpers:pinGitHubActionDigests, withchoresemantic commits andrangeStrategy: bump.Two repo-specific rules:
packages/vscode/tests/**is ignored — the E2E fixtures deliberately pin the published@rslint/core/@rstest/core/rstackversions the suites run against, so bumping them is a manual, E2E-verified decision.@rslint/core/@rstest/core/rstackdevDependencies are excluded — their ranges are the type-level side of the runtimeSUPPORT_MATRIX(shared/versionCheck.ts) and only move with a compatibility decision.Renovate only activates once the Renovate GitHub App is installed for this repository. With this config already in place, the app skips its onboarding PR and starts opening update PRs directly.
2. CI platform matrix
Splits the two per-OS jobs into one Linux check job (build, lint, format, unit tests) and an E2E matrix over
windows-latestandmacos-latest.Unit tests, Linux only. The three places the source branches on
process.platform— bin names indetection.ts, platform packages instacks/lint/utils.ts, path casing instacks/test/projectCoverage.ts— are only reachable when the host is that platform, so a second OS re-runs identical assertions. The Windows branches stay covered by the Windows E2E job.E2E on Windows + macOS, no Linux. These are the platforms upstream rstest runs its VS Code suites on, which is what keeps the ported suites viable as verbatim copies.
Linux is excluded because of a race in the ported watch-mode suites.
progress.test.tsrewrites a fixture withwriteFile, which truncates the file to zero bytes before writing it back; inotify reports that empty intermediate state as its own event, so the watcher can trigger a run against a zero-length test file. That run collects nothing and the assertions then inspect a run that never saw the edit. Observed onubuntu-latestin run 30985755059:✗ test/progress.test.ts (0)andNo test suites found in file, with/2 failed/never matching.The racy code is byte-identical to upstream (only the exports helper and the fixture-path constant differ), and upstream never runs these suites on Linux — its VS Code step requires
node_version == '24'while its only Linux matrix entries are node 20 and 26. Fixing the race means diverging from a verbatim copy; not running Linux does not. The suites pass 5/5 unmodified on macOS locally.Verification
pnpm lint,pnpm run fmt:check,pnpm run test:unitandpnpm run test:e2e:rstestall pass locally on macOS. The newmacos-latestE2E job runs for the first time on this PR.