# Behavior traces — stryker-mutator/stryker-js

> Canonical page: https://codevetter.com/unpack/stryker-js/behavior-traces

# Behavior traces — stryker-mutator/stryker-js

Scanned commit f2a49ff02437e3b7fe2682dba808ac93039895bf (2026-09-11). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The inspected flows cover CLI startup and preparation, mutation execution, incremental persistence/reuse, and server discovery/execution. These traces follow concrete function calls and preserve conditions that change the route through execution. Baseline failures stop mutation testing, while ignored or cached mutants bypass runner execution. Cleanup and asynchronous reporter completion are explicit parts of the lifecycle.
- Startup follows bin/stryker.js → StrykerCli.run → run action → Stryker.runMutationTest → logging/injector setup → Stryker.run → PrepareExecutor.execute. — [packages/core/bin/stryker.js#L2-L6](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/bin/stryker.js#L2-L6) [packages/core/src/stryker-cli.ts#L48-L73](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/stryker-cli.ts#L48-L73) [packages/core/src/stryker.ts#L40-L49](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/stryker.ts#L40-L49) [packages/core/src/stryker.ts#L64-L67](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/stryker.ts#L64-L67)
- Preparation follows ConfigReader.readConfig → PluginLoader.load → MetaSchemaBuilder.buildMetaSchema → OptionsValidator.validate → ProjectReader.read → TemporaryDirectory.initialize; an empty project throws ConfigError. — [packages/core/src/process/1-prepare-executor.ts#L63-L95](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/1-prepare-executor.ts#L63-L95) [packages/core/src/process/1-prepare-executor.ts#L100-L120](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/1-prepare-executor.ts#L100-L120)
- Instrumentation follows readFilesToMutate → Instrumenter.instrument → writeInstrumentedFiles → preprocess.preprocess → checkerPool.init → Sandbox.init; Sandbox fills files, runs buildCommand, then creates dependency symlinks. — [packages/core/src/process/2-mutant-instrumenter-executor.ts#L62-L105](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/2-mutant-instrumenter-executor.ts#L62-L105) [packages/core/src/sandbox/sandbox.ts#L74-L78](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/sandbox/sandbox.ts#L74-L78)
- Baseline execution schedules executeDryRun → testRunner.dryRun → capabilities → validateResultCompleted → path remapping → timing calculation → onDryRunCompleted; failed tests, errors, timeouts, or disallowed empty runs stop progression. — [packages/core/src/process/3-dry-run-executor.ts#L92-L103](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/3-dry-run-executor.ts#L92-L103) [packages/core/src/process/3-dry-run-executor.ts#L119-L140](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/3-dry-run-executor.ts#L119-L140) [packages/core/src/process/3-dry-run-executor.ts#L166-L181](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/3-dry-run-executor.ts#L166-L181)
- Primary mutation execution follows makePlan → executeEarlyResult → executeCheck → executeNoCoverage → executeRunInTestRunner → reportAll → wrapUp; dryRunOnly and allowed empty baselines return before this chain. — [packages/core/src/process/4-mutation-test-executor.ts#L89-L121](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/4-mutation-test-executor.ts#L89-L121)
- Incremental reuse follows ProjectReader.readIncrementalReport → MutantTestPlanner.incrementalDiff/readAllOriginalFiles → IncrementalDiffer.diff → planMutant; eligible old statuses become early results unless force is enabled. — [packages/core/src/fs/project-reader.ts#L103-L107](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/fs/project-reader.ts#L103-L107) [packages/core/src/mutants/mutant-test-planner.ts#L78-L99](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/mutants/mutant-test-planner.ts#L78-L99) [packages/core/src/mutants/mutant-test-planner.ts#L271-L292](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/mutants/mutant-test-planner.ts#L271-L292) [packages/core/src/mutants/incremental-differ.ts#L168-L195](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/mutants/incremental-differ.ts#L168-L195)
- Persistence follows reportOne accumulation → reportAll → mutationTestReport → metrics calculation → onMutationTestReportReady → optional writeIncrementalReport → threshold evaluation; interruption saves partial results only when incremental is enabled and results exist. — [packages/core/src/reporters/mutation-test-report-helper.ts#L81-L94](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/reporters/mutation-test-report-helper.ts#L81-L94) [packages/core/src/reporters/mutation-test-report-helper.ts#L163-L166](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/reporters/mutation-test-report-helper.ts#L163-L166) [packages/core/src/reporters/mutation-test-report-helper.ts#L178-L199](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/reporters/mutation-test-report-helper.ts#L178-L199)
- Server start installs framed JSON-RPC methods; configure records a config path, discover prepares and instruments selected files, and mutationTest calls Stryker.run with a reporter override that emits progress notifications before an empty final result. — [packages/core/src/stryker-server.ts#L116-L147](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/stryker-server.ts#L116-L147) [packages/core/src/stryker-server.ts#L216-L256](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/stryker-server.ts#L216-L256) [packages/core/src/stryker-server.ts#L277-L319](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/stryker-server.ts#L277-L319)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
