# Contributor handoff — stryker-mutator/stryker-js

> Canonical page: https://codevetter.com/unpack/stryker-js/agent-handoff

# Contributor handoff — 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.

Begin with the affected package and its API contract, then follow the execution stage that owns the behavior. Tests and CI were inspected, not executed, and this brief is a bounded source inventory rather than a complete coverage assessment. Future executable work should use repository scripts and compile current sources before selecting tests that run from dist. Preserve cleanup, coordinate conversion, runner activation, and report compatibility when making small changes.
- Use package.json and pnpm-workspace.yaml as the package-manager authority, then read the affected package manifest; the contribution guide states that package-local tests are faster and assume compiled sources. — [package.json#L2-L5](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/package.json#L2-L5) [pnpm-workspace.yaml#L1-L4](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/pnpm-workspace.yaml#L1-L4) [CONTRIBUTING.md#L30-L43](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/CONTRIBUTING.md#L30-L43)
- For core behavior, read Stryker.run and the four executors before editing: each stage returns an injector containing dependencies needed by the next stage. — [packages/core/src/stryker.ts#L64-L84](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/stryker.ts#L64-L84) [packages/core/src/process/1-prepare-executor.ts#L117-L130](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/1-prepare-executor.ts#L117-L130) [packages/core/src/process/3-dry-run-executor.ts#L105-L116](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/3-dry-run-executor.ts#L105-L116)
- Tests and CI were inspected, not executed for this brief; future authorized verification can begin with core test:unit or test:integration after compilation, using their existing dist/test targets. — [packages/core/package.json#L16-L22](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/package.json#L16-L22) [.github/workflows/ci.yml#L24-L27](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/.github/workflows/ci.yml#L24-L27)
- Schema changes should modify source JSON and use the existing generator; it emits src-generated types, marks them generated, and treats default-bearing schema properties as required in generated output. — [tasks/generate-json-schema-to-ts.js#L18-L45](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/tasks/generate-json-schema-to-ts.js#L18-L45) [tasks/generate-json-schema-to-ts.js#L159-L167](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/tasks/generate-json-schema-to-ts.js#L159-L167) [package.json#L57-L58](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/package.json#L57-L58)
- Preserve coordinate conventions: mutation-range lines become zero-based, instrumentation shifts lines for Babel, report loading subtracts one from line/column, and server range ends adjust protocol columns. — [packages/core/src/fs/project-reader.ts#L299-L319](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/fs/project-reader.ts#L299-L319) [packages/instrumenter/src/instrumenter.ts#L86-L99](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/instrumenter/src/instrumenter.ts#L86-L99) [packages/core/src/fs/project-reader.ts#L487-L492](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/fs/project-reader.ts#L487-L492) [packages/core/src/stryker-server.ts#L324-L333](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/stryker-server.ts#L324-L333)
- Runner changes must preserve static/runtime activation and reload semantics; the planner permits hot swapping only for filtered nonstatic mutants, while the plugin guide distinguishes activation before versus after environment loading. — [packages/core/src/mutants/mutant-test-planner.ts#L189-L218](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/mutants/mutant-test-planner.ts#L189-L218) [docs/guides/create-a-plugin.md#L308-L339](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/docs/guides/create-a-plugin.md#L308-L339)
- Sandbox and disposal edits require attention to inPlace restoration and error retention: Stryker keeps temporary artifacts after errors unless cleanTempDir is 'always', while Sandbox restores backed-up originals during disposal. — [packages/core/src/stryker.ts#L87-L100](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/stryker.ts#L87-L100) [packages/core/src/sandbox/sandbox.ts#L181-L195](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/sandbox/sandbox.ts#L181-L195)
- Use a selected e2e fixture for framework changes and distinguish adapter behavior from orchestration mocks; the harness supports a positional glob, and Vitest's version-dependent pool settings and internal state reset need review when compatibility changes. — [e2e/tasks/run-e2e-tests.js#L26-L51](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/e2e/tasks/run-e2e-tests.js#L26-L51) [packages/core/test/unit/process/4-mutation-test-executor.spec.ts#L83-L126](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/test/unit/process/4-mutation-test-executor.spec.ts#L83-L126) [packages/vitest-runner/src/vitest-test-runner.ts#L94-L118](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/vitest-runner/src/vitest-test-runner.ts#L94-L118) [packages/vitest-runner/src/vitest-test-runner.ts#L290-L294](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/vitest-runner/src/vitest-test-runner.ts#L290-L294)

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)
