Skip to content

Mutation gate: remove the 38 legacy Stryker directives on main with evidence-backed central exclusions #2060

Open

Description

@easonLiangWorldedtech

Problem

Pull request #2051 forbids Stryker suppression comments going forward, but main still carries 38 legacy directives (42 comment lines across 9 files) that predate the policy. Per the policy, "suppressions left by earlier revisions are removed when their file is touched" — and the mutation gate's changed-code scope means these lines stay unmeasured until someone does.

The directives were never verified: several guard statements whose mutants existing tests already kill, so the suppression buys nothing.

Plan

Remove all 38 directives with per-line evidence, not bulk deletion:

  1. Re-expose every previously-guarded statement to the real gate pipeline (buildManifest + runManifest, extension package) with the directives removed, in 3 batches.
  2. Classify every surviving mutant: genuinely equivalent (accepted centrally) vs test gap (needs a real test).
  3. Accept equivalents centrally in scripts/stryker-equivalences.json — the narrow gate-config exclusion the policy points to — keyed by file + line + mutator + replacement with a written rationale per entry, plus a stale-entry advisory so the registry cannot rot silently.

Expected behavior

  • No // Stryker disable/enable comments remain in src.
  • The gate reports the accepted equivalents in an Equivalent summary column and blocks on nothing else.
  • Re-running the same repro on the cleanup branch yields blocking = 0 with no stale-entry advisories.

Scope

  • 9 source files (comment-only removals): pathUtils.ts, abort-signal.ts, NativeToolCallParser.ts, webviewMessageHandler.ts, lm-studio.ts, qwen-code.ts, openai.ts, openai-codex.ts, Task.ts
  • scripts/stryker-diff.mjs (equivalence matching + summary column) and scripts/stryker-equivalences.json (new registry)

Context

Step 2 of the two-PR plan in #2050 (enforcement shipped in #2051). Repro evidence and the full per-file disposition table are in #2054.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions