Skip to content

rehearsal: mutation gate (never merge) - #11

Closed
nzneit wants to merge 21 commits into
mainfrom
mutation-gate-rehearsal
Closed

rehearsal: mutation gate (never merge)#11
nzneit wants to merge 21 commits into
mainfrom
mutation-gate-rehearsal

Conversation

@nzneit

@nzneit nzneit commented Aug 5, 2026

Copy link
Copy Markdown
Owner

Scratch PR exercising the mutation gate end to end. Close without merging.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

mutation gate: fail (score 99.50, break 100)

Mutated 2 file(s): src/engine/index.ts, src/engine/instances.ts
Mutants: 195 killed, 3 timeout, 1 survived, 0 no-coverage; 13 ignored, 0 errored, 0 pending.

Undetected mutants (kill each with a test, or annotate with a reasoned
// Stryker disable next-line <Mutator>: <why it is unobservable>):

  • src/engine/index.ts:311 OptionalChaining

@nzneit nzneit added mutate-skip mutation gate: wave off the gate for this PR and removed mutate-skip mutation gate: wave off the gate for this PR labels Aug 5, 2026
@nzneit nzneit closed this Aug 5, 2026
@nzneit
nzneit deleted the mutation-gate-rehearsal branch August 5, 2026 03:59
nzneit added a commit that referenced this pull request Aug 5, 2026
Task 10 rehearsal (scratch PR #11, closed without merging): concurrency 1
hit the 15-minute job timeout at a 409-line mutate set with no report
produced; concurrency 4 completed the same set cleanly in 7.7 min at
27.5 mutants/min, with no coverage-correlation warnings in the log.
Concurrency 4 ships via MUTATION_GATE_EXTRA_ARGS. Derived sustainable
threshold (27.5 * 12 / 0.5, rounded) is 700 lines, within 2x of the
existing 800 default, so thresholdLines stays unchanged.

Also carries back two stryker.conf.json fixes the rehearsal found
necessary for the gate to run in CI at all (not rehearsal-specific,
so they belong here rather than staying scratch-only):
- tsconfigFile pointed at a nonexistent path, sidestepping a crash in
  Stryker 9.6.1's TSConfigPreprocessor (ts.parseConfigFileTextToJson,
  removed from TypeScript 7's module surface per D-022) that fired on
  every invocation regardless of which files were mutated
- bun.timeout raised to 120s so the dry run's full-suite pass (~68-90s
  observed in CI) survives the runner plugin's own internal process
  timeout, which otherwise killed it well before Stryker's own
  dryRunTimeoutMinutes ever applied
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant