Repository navigation
chore(deps-dev): upgrade CLI tooling with compatible vitest and stryker - #912
Merged
blafourcade merged 3 commits intoOct 12, 2026
Conversation
dependabot
Bot
force-pushed
the
dependabot/npm_and_yarn/cli/next/npm-dev-dependencies-62c61d3913
branch
3 times, most recently
from
September 28, 2026 21:22
985bea2 to
b002c3f
Compare
…ry with 11 updates Bumps the npm-dev-dependencies group with 11 updates in the /cli directory: | Package | From | To | | --- | --- | --- | | [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) | `2.5.11` | `2.5.15` | | [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.2.2` | `21.2.3` | | [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.2.2` | `21.2.3` | | [@stryker-mutator/core](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core) | `9.6.1` | `10.0.0` | | [@stryker-mutator/vitest-runner](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner) | `9.6.1` | `10.0.0` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.4.0` | `26.6.4` | | [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `3.2.6` | `5.0.3` | | [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) | `4.9.0` | `4.10.2` | | [jscpd](https://github.com/kucherenko/jscpd/tree/HEAD/rust/jscpd) | `5.0.16` | `5.4.0` | | [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `6.33.0` | `6.39.0` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `3.2.6` | `5.0.3` | Updates `@biomejs/biome` from 2.5.11 to 2.5.15 - [Release notes](https://github.com/biomejs/biome/releases) - [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md) - [Commits](https://github.com/biomejs/biome/commits/@biomejs/[email protected]/packages/@biomejs/biome) Updates `@commitlint/cli` from 21.2.2 to 21.2.3 - [Release notes](https://github.com/conventional-changelog/commitlint/releases) - [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md) - [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.2.3/@commitlint/cli) Updates `@commitlint/config-conventional` from 21.2.2 to 21.2.3 - [Release notes](https://github.com/conventional-changelog/commitlint/releases) - [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md) - [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.2.3/@commitlint/config-conventional) Updates `@stryker-mutator/core` from 9.6.1 to 10.0.0 - [Release notes](https://github.com/stryker-mutator/stryker-js/releases) - [Changelog](https://github.com/stryker-mutator/stryker-js/blob/master/packages/core/CHANGELOG.md) - [Commits](https://github.com/stryker-mutator/stryker-js/commits/v10.0.0/packages/core) Updates `@stryker-mutator/vitest-runner` from 9.6.1 to 10.0.0 - [Release notes](https://github.com/stryker-mutator/stryker-js/releases) - [Changelog](https://github.com/stryker-mutator/stryker-js/blob/master/packages/vitest-runner/CHANGELOG.md) - [Commits](https://github.com/stryker-mutator/stryker-js/commits/v10.0.0/packages/vitest-runner) Updates `@types/node` from 26.4.0 to 26.6.4 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `@vitest/coverage-v8` from 3.2.6 to 5.0.3 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.3/packages/coverage-v8) Updates `fast-check` from 4.9.0 to 4.10.2 - [Release notes](https://github.com/dubzzz/fast-check/releases) - [Changelog](https://github.com/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md) - [Commits](https://github.com/dubzzz/fast-check/commits/v4.10.2/packages/fast-check) Updates `jscpd` from 5.0.16 to 5.4.0 - [Release notes](https://github.com/kucherenko/jscpd/releases) - [Commits](https://github.com/kucherenko/jscpd/commits/v5.4.0/rust/jscpd) Updates `knip` from 6.33.0 to 6.39.0 - [Release notes](https://github.com/webpro-nl/knip/releases) - [Commits](https://github.com/webpro-nl/knip/commits/[email protected]/packages/knip) Updates `vitest` from 3.2.6 to 5.0.3 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.3/packages/vitest) --- updated-dependencies: - dependency-name: "@biomejs/biome" dependency-version: 2.5.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-dev-dependencies - dependency-name: "@commitlint/cli" dependency-version: 21.2.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-dev-dependencies - dependency-name: "@commitlint/config-conventional" dependency-version: 21.2.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-dev-dependencies - dependency-name: "@stryker-mutator/core" dependency-version: 10.0.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: npm-dev-dependencies - dependency-name: "@stryker-mutator/vitest-runner" dependency-version: 10.0.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: npm-dev-dependencies - dependency-name: "@types/node" dependency-version: 26.6.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-dev-dependencies - dependency-name: "@vitest/coverage-v8" dependency-version: 5.0.1 dependency-type: direct:development update-type: version-update:semver-major dependency-group: npm-dev-dependencies - dependency-name: fast-check dependency-version: 4.10.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-dev-dependencies - dependency-name: jscpd dependency-version: 5.3.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-dev-dependencies - dependency-name: knip dependency-version: 6.37.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-dev-dependencies - dependency-name: vitest dependency-version: 5.0.1 dependency-type: direct:development update-type: version-update:semver-major dependency-group: npm-dev-dependencies ... Signed-off-by: dependabot[bot] <[email protected]>
dependabot
Bot
force-pushed
the
dependabot/npm_and_yarn/cli/next/npm-dev-dependencies-62c61d3913
branch
from
October 5, 2026 21:09
b002c3f to
8d1f68c
Compare
Align Vitest and its coverage provider at 4.1.11 with Stryker 10. Preserve all four test projects and text fixtures, migrate the load-failure reporter, and verify dynamic and static mutation selection. Keep Vitest 5 deferred because its test-name separator is incompatible with the current Stryker runner.
blafourcade
approved these changes
Oct 12, 2026
dependabot
Bot
deleted the
dependabot/npm_and_yarn/cli/next/npm-dev-dependencies-62c61d3913
branch
October 12, 2026 05:54
blafourcade
added a commit
that referenced
this pull request
Oct 12, 2026
#912 upgraded Biome and already maps each reported file relative to the planted tree with the platform separator, so its mapping replaces this branch's backslash parser and that parser's test. This branch keeps the node launcher and the failure when Biome never ran. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z
blafourcade
added a commit
that referenced
this pull request
Oct 12, 2026
After the merge with #912, the Windows guards still failed with `expected [ …(5) ] to include 'src/kernel/exit.ts:plugin'`: Biome found the five planted findings, and none of their paths matched. Only the planted tree went through realpathSync, so a file Biome named through another spelling of the same directory could not be made relative to it. Each file now resolves through realpathSync too, and a failed match prints the findings it saw. Refs #881 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z
blafourcade
added a commit
that referenced
this pull request
Oct 12, 2026
…1000) * test(cli): run the Biome guards on Windows `biome-guards-bite.arch.test.ts` spawns `node_modules/.bin/biome` directly. Windows reaches Biome through a `.cmd` shim, so the launch reportedly fails with ENOENT (#881), and the Windows job never runs the architecture suite, so nothing here has shown it. The Windows job now runs that one file. Refs #881 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z * fix(cli): launch Biome through node in the architecture guards On the Windows runner the Biome guards failed with `expected [] to include 'src/kernel/exit.ts:plugin'` and two more like it: spawning `node_modules/.bin/biome` directly found no executable there, and the empty output read as a tree with no findings. The guards now run the package's own launcher, `@biomejs/biome/bin/biome`, through `process.execPath`, which works on every platform. A run that is neither clean (exit 0) nor diagnosed (exit 1 with a finding) throws instead of returning nothing, so a guard asserting that no finding exists can no longer pass when Biome never ran. A test with a missing launcher was red before this. Closes #881 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z * fix(cli): read Biome's Windows paths in the architecture guards With Biome launched, the Windows guards still failed with `expected [ …(5) ] to include 'src/kernel/exit.ts:plugin'`. Biome found the five planted findings it finds elsewhere, but names a file with backslashes there, so no key matched. The parser now turns the separators into forward slashes, under a test fed a Windows line. Refs #881 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z * chore(ci): name the Windows hook steps by what they do A CI step name, an error message and a test comment carried the number of the issue that led to them. Each now says what it checks, and the issue numbers stay in the commits and pull requests that fixed them. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z * docs(framework): keep tracker IDs out of every file, not only docs The documentation rule already dropped ticket and run IDs, but only for the Markdown its paths name, so code, comments, test names and CI steps carried them. A rule with no paths now covers every file: tracker IDs live in commits, pull requests and issues, and the thing is named by what it does. The documentation rule no longer repeats the clause. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z * chore(ci): run the whole architecture suite on Windows The Windows job ran one file of the architecture suite, the Biome guards. It now runs `pnpm test:arch`, the same suite the Linux architecture job runs, so every architecture guard is exercised on Windows, the Biome guards among them. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z * docs(framework): reduce the tracker-ID rule to one bullet The rule now reads as a single bullet, and the documentation rule keeps its own clause unchanged: its paths only reach the documentation, so the two do not overlap. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z * chore(framework): check out text files with LF on every platform Run on Windows, the architecture suite failed in three files that read text by its lines: `codebase-map.md has no fenced block`, `expected [] to include 'knip'`, and a SyntaxError loading `mutation-covers-source`. A Windows checkout turns LF into CRLF, which the repository's scripts and tests do not expect. `.gitattributes` now asks for LF on every platform, `text=auto` leaving binary files alone. No committed file changes: the only CRLF files are archived evidence whose own `.gitattributes` already mark them `-text`. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z * fix(cli): resolve both sides of a Biome finding's path in the guards After the merge with #912, the Windows guards still failed with `expected [ …(5) ] to include 'src/kernel/exit.ts:plugin'`: Biome found the five planted findings, and none of their paths matched. Only the planted tree went through realpathSync, so a file Biome named through another spelling of the same directory could not be made relative to it. Each file now resolves through realpathSync too, and a failed match prints the findings it saw. Refs #881 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z * fix(cli): decode the file the Biome GitHub reporter escapes With the findings now printed, the Windows guards failed on `ENOENT ... lstat '...\aidd-biome-bite-BHHWDT\C%3A'`. On Windows Biome reports an absolute file, and the GitHub reporter escapes its drive colon as `%3A`, so the path resolved under the planted tree instead of to the file. The guard decodes the reporter's `%3A`, `%2C` and `%25` before resolving the path, under a test that was red first. Refs #881 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VE16AxC1V9wAMGmGgefe4z --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
1 task
blafourcade
added a commit
that referenced
this pull request
Oct 12, 2026
Brings #1003, which restores Stryker's per-test filtering under Vitest 5 (#912): without it, mutants survive with no test run, and the telemetry and presentation scores fell under their floors. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VWNxk63AGKkqE8HRqHLjGp
Merged
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.
Upgrades CLI development dependencies with a compatible Vitest 4.1.11, coverage-v8 4.1.11, and Stryker 10.0.0 combination. Vitest 5 remains deferred because its changed test-name separator does not match the current Stryker runner's per-mutant test filter.
Migrates the four test projects into
vitest.config.ts, preserves test selection and isolated profiles, and adapts the load-failure reporter and mock types to the new APIs. Text assets stay loaded as text. Biome assertions normalize diagnostic paths on Windows.Adds a dynamic mutation beside the existing static canary so mutation selection is exercised against nested test names. Both mutants are killed, with the existing 100% threshold preserved.
Includes the validated simple-git compatibility branch so the final dependency combination is tested together. #959 is merged and this branch includes the current
next. Supersedes #923, including its matching coverage-provider upgrade and migration fixes.Strengthens Kilo profile tests for frontmatter conversion, installed-command detection, and hook loader placement. Stryker 10 exposed old mutation kills caused by an unrelated Codex test failure; the new tests detect Kilo behavior directly. Kilo mutation score is 67.9% (152 killed, 54 survived, 18 uncovered, no timeouts), above the unchanged 64% floor.
Validation: frozen installation, typecheck, lint, knip, 142 architecture tests, load-failure integration test, and static/dynamic mutation canary. Full coverage on the final head in GitHub CI: 6,842 tests passed, one skipped; all thresholds passed. The updated Kilo suite passes all 26 tests, with typecheck and lint passing. Smoke: 136 passed, zero failed, one optional remote-fetch skip; all 33 commands exercised. Build: 734 KB within the existing 734 KB budget. All 33 GitHub checks passed on
d1cfc01f3183f480b97568bb3fc0f774fa0b07ba, including Windows, CodeQL, every mutation scope, and the final gate. No coverage or mutation threshold is lowered.