CodeVetter · Repo Unpack · Contributor handoff
stryker-mutator/stryker-js
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.
- For core behavior, read Stryker.run and the four executors before editing: each stage returns an injector containing dependencies needed by the next stage.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.