Skip to content

mutation-gate: remove the 3 Stryker directives re-added upstream in gemini.ts (#2033) after #2054's evidence snapshot #2147

Open

Description

@easonLiangWorldedtech

Context

#2054 removes every Stryker suppression directive that existed when its evidence snapshot was taken (38 directives / 9 files / 105 mutants, Closes: #2060). While refreshing #2054 onto upstream/main (05d01f33d) three new directives appeared upstream that were added after that snapshot:

File:line Mutators suppressed Claim in the directive
src/api/providers/gemini.ts:183 Regex,LogicalOperator,ConditionalExpression equivalent mutants — new URL() rejects malformed/out-of-range octets before the check
src/api/providers/gemini.ts:198 ConditionalExpression equivalent mutants — new URL() rejects non-numeric/out-of-range middle octets
src/api/providers/gemini.ts:647 StringLiteral completePrompt's catch reads only .message before rethrowing, so the operation argument is unobservable

Origin: e6edad1ef — fix(api): require HTTPS for custom Google Gemini base URLs (CWE-319) (#2033), merged 2026-10-18.

Why this is not fixed inside #2054

#2054 is evidence-backed: each guarded statement is re-exposed to the real gate pipeline before the directive is deleted, and the survivors are recorded in scripts/stryker-equivalences.json + the PR table. Adding three unbalanced statements without that run would turn a verified cleanup into an unverified one. Keeping it separate also keeps #2054's diff reviewable.

Done when

  • The three guarded statements in src/api/providers/gemini.ts are run through the chore(mutation-gate): remove all Stryker directives with evidence-backed exclusions #2054 protocol (buildManifest + runManifest, extension package) with the directives removed.
  • Killed mutants: directive deleted. Surviving equivalents: recorded in scripts/stryker-equivalences.json with the equivalence argument, then the directive deleted.
  • git grep -n "Stryker disable" -- src scripts returns only the gate's own test fixtures (scripts/stryker-diff.test.mjs), so the "no directives in source" invariant holds repo-wide.

References

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