evilution 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/.beads/interactions.jsonl +132 -0
  3. data/.rubocop_todo.yml +5 -0
  4. data/CHANGELOG.md +127 -0
  5. data/README.md +136 -38
  6. data/docs/architecture.md +135 -11
  7. data/docs/ast_pattern_syntax.md +50 -5
  8. data/docs/isolation.md +121 -2
  9. data/docs/migration-from-mutant.md +1 -1
  10. data/lib/evilution/ast/aasm_declaration.rb +133 -0
  11. data/lib/evilution/ast/callback_declaration.rb +91 -0
  12. data/lib/evilution/ast/class_body.rb +101 -0
  13. data/lib/evilution/ast/included_block.rb +41 -0
  14. data/lib/evilution/ast/literal_callable.rb +21 -0
  15. data/lib/evilution/ast/never_nil.rb +36 -0
  16. data/lib/evilution/ast/parser.rb +187 -21
  17. data/lib/evilution/ast/pattern/method_name.rb +63 -0
  18. data/lib/evilution/ast/pattern/parser.rb +14 -15
  19. data/lib/evilution/ast/regexp_pattern.rb +104 -0
  20. data/lib/evilution/ast/round_half_mode.rb +38 -0
  21. data/lib/evilution/ast/scope_declaration.rb +45 -0
  22. data/lib/evilution/ast/source_surgeon.rb +2 -3
  23. data/lib/evilution/ast/syntax_check.rb +56 -0
  24. data/lib/evilution/ast/uncovered_code.rb +88 -0
  25. data/lib/evilution/ast/value_object_definition.rb +25 -0
  26. data/lib/evilution/baseline/failure_formatter.rb +27 -0
  27. data/lib/evilution/baseline/report.rb +66 -0
  28. data/lib/evilution/baseline/spec_failure.rb +38 -0
  29. data/lib/evilution/baseline.rb +67 -30
  30. data/lib/evilution/cli/exit_guard.rb +26 -4
  31. data/lib/evilution/cli/parser/file_args.rb +2 -1
  32. data/lib/evilution/cli/parser/options_builder.rb +1 -1
  33. data/lib/evilution/cli.rb +3 -2
  34. data/lib/evilution/config/validators/spec_mappings.rb +2 -1
  35. data/lib/evilution/config.rb +3 -2
  36. data/lib/evilution/equivalent/detector.rb +3 -1
  37. data/lib/evilution/equivalent/heuristic/guarded_index_fetch/condition.rb +66 -0
  38. data/lib/evilution/equivalent/heuristic/guarded_index_fetch/disturbance.rb +54 -0
  39. data/lib/evilution/equivalent/heuristic/guarded_index_fetch/early_exit.rb +73 -0
  40. data/lib/evilution/equivalent/heuristic/guarded_index_fetch/guard.rb +36 -0
  41. data/lib/evilution/equivalent/heuristic/guarded_index_fetch/index_read.rb +82 -0
  42. data/lib/evilution/equivalent/heuristic/guarded_index_fetch/node_path.rb +43 -0
  43. data/lib/evilution/equivalent/heuristic/guarded_index_fetch.rb +65 -0
  44. data/lib/evilution/example_filter.rb +45 -0
  45. data/lib/evilution/hooks/registry.rb +2 -1
  46. data/lib/evilution/integration/base.rb +11 -1
  47. data/lib/evilution/integration/known_failures.rb +26 -0
  48. data/lib/evilution/integration/loading/body_call_neutralizer.rb +177 -13
  49. data/lib/evilution/integration/loading/callback_redeclaration.rb +186 -0
  50. data/lib/evilution/integration/loading/concern_redeclaration.rb +80 -0
  51. data/lib/evilution/integration/loading/concern_state_cleaner.rb +22 -15
  52. data/lib/evilution/integration/loading/mutation_applier.rb +44 -1
  53. data/lib/evilution/integration/loading/own_methods.rb +87 -0
  54. data/lib/evilution/integration/loading/redefinition_recovery.rb +2 -3
  55. data/lib/evilution/integration/loading/source_evaluator.rb +9 -2
  56. data/lib/evilution/integration/loading/superseded_modules.rb +103 -0
  57. data/lib/evilution/integration/loading/syntax_validator.rb +2 -2
  58. data/lib/evilution/integration/loading/test_class_cache.rb +46 -0
  59. data/lib/evilution/integration/minitest/test_ids.rb +21 -0
  60. data/lib/evilution/integration/minitest.rb +45 -6
  61. data/lib/evilution/integration/rspec/baseline_runner.rb +47 -3
  62. data/lib/evilution/integration/rspec/example_ids.rb +35 -0
  63. data/lib/evilution/integration/rspec/result_builder.rb +6 -1
  64. data/lib/evilution/integration/rspec/state_guard/anonymous_example_group_examples.rb +36 -0
  65. data/lib/evilution/integration/rspec/state_guard.rb +4 -1
  66. data/lib/evilution/integration/rspec.rb +22 -4
  67. data/lib/evilution/integration/test_unit/result_builder.rb +6 -0
  68. data/lib/evilution/integration/test_unit/test_ids.rb +18 -0
  69. data/lib/evilution/integration/test_unit.rb +37 -9
  70. data/lib/evilution/isolation/fork.rb +84 -11
  71. data/lib/evilution/isolation/in_process.rb +100 -8
  72. data/lib/evilution/mcp/info_tool/status_glossary.rb +15 -4
  73. data/lib/evilution/mcp/info_tool.rb +3 -2
  74. data/lib/evilution/mcp/mutate_tool/progress_streamer.rb +2 -1
  75. data/lib/evilution/memory/leak_check.rb +27 -3
  76. data/lib/evilution/mutation.rb +21 -9
  77. data/lib/evilution/mutator/base.rb +69 -5
  78. data/lib/evilution/mutator/constant_value_subjects.rb +13 -0
  79. data/lib/evilution/mutator/operator/alias_removal.rb +56 -0
  80. data/lib/evilution/mutator/operator/argument_nil_substitution.rb +2 -2
  81. data/lib/evilution/mutator/operator/argument_order_permutation.rb +101 -0
  82. data/lib/evilution/mutator/operator/argument_removal.rb +10 -2
  83. data/lib/evilution/mutator/operator/array_literal.rb +29 -0
  84. data/lib/evilution/mutator/operator/attr_accessor_swap.rb +68 -0
  85. data/lib/evilution/mutator/operator/boolean_literal_replacement.rb +2 -0
  86. data/lib/evilution/mutator/operator/call_to_nil.rb +12 -3
  87. data/lib/evilution/mutator/operator/comparison_operand_swap.rb +54 -0
  88. data/lib/evilution/mutator/operator/complex_literal.rb +39 -0
  89. data/lib/evilution/mutator/operator/compound_assignment.rb +47 -0
  90. data/lib/evilution/mutator/operator/constant_namespace_strip.rb +57 -0
  91. data/lib/evilution/mutator/operator/constant_read_to_nil.rb +58 -0
  92. data/lib/evilution/mutator/operator/constant_write_to_nil.rb +32 -0
  93. data/lib/evilution/mutator/operator/data_struct_member.rb +82 -0
  94. data/lib/evilution/mutator/operator/exception_swallow.rb +84 -0
  95. data/lib/evilution/mutator/operator/explicit_super_mutation.rb +2 -2
  96. data/lib/evilution/mutator/operator/float_literal.rb +54 -19
  97. data/lib/evilution/mutator/operator/format_specifier_swap.rb +100 -0
  98. data/lib/evilution/mutator/operator/forwarded_argument_drop.rb +142 -0
  99. data/lib/evilution/mutator/operator/freeze_removal.rb +86 -0
  100. data/lib/evilution/mutator/operator/hash_literal.rb +51 -0
  101. data/lib/evilution/mutator/operator/index_range_to_drop.rb +67 -0
  102. data/lib/evilution/mutator/operator/index_receiver_to_self.rb +20 -0
  103. data/lib/evilution/mutator/operator/index_to_key_predicate.rb +58 -0
  104. data/lib/evilution/mutator/operator/index_write_to_value.rb +37 -0
  105. data/lib/evilution/mutator/operator/integer_division_to_fdiv.rb +62 -0
  106. data/lib/evilution/mutator/operator/integer_literal.rb +39 -9
  107. data/lib/evilution/mutator/operator/keyword_argument.rb +25 -2
  108. data/lib/evilution/mutator/operator/keyword_value_swap.rb +75 -0
  109. data/lib/evilution/mutator/operator/memoization_break.rb +18 -0
  110. data/lib/evilution/mutator/operator/mixin_removal.rb +18 -55
  111. data/lib/evilution/mutator/operator/nil_replacement.rb +2 -0
  112. data/lib/evilution/mutator/operator/no_matching_pattern_else.rb +47 -0
  113. data/lib/evilution/mutator/operator/numbered_parameter_swap.rb +78 -0
  114. data/lib/evilution/mutator/operator/off_by_one_boundary.rb +68 -0
  115. data/lib/evilution/mutator/operator/operator_write_receiver_promotion.rb +38 -0
  116. data/lib/evilution/mutator/operator/optional_parameter_to_required.rb +14 -3
  117. data/lib/evilution/mutator/operator/pattern_matching_array.rb +12 -1
  118. data/lib/evilution/mutator/operator/pattern_wildcard_widening.rb +117 -0
  119. data/lib/evilution/mutator/operator/pin_operator_removal.rb +48 -0
  120. data/lib/evilution/mutator/operator/range_replacement.rb +2 -0
  121. data/lib/evilution/mutator/operator/rational_literal.rb +40 -0
  122. data/lib/evilution/mutator/operator/reduce_to_sum.rb +1 -1
  123. data/lib/evilution/mutator/operator/regex_simplification.rb +53 -132
  124. data/lib/evilution/mutator/operator/regexp_alternation_branch_deletion.rb +54 -0
  125. data/lib/evilution/mutator/operator/regexp_anchor_promotion.rb +43 -0
  126. data/lib/evilution/mutator/operator/regexp_capture_to_passive.rb +61 -0
  127. data/lib/evilution/mutator/operator/regexp_character_type_complement.rb +54 -0
  128. data/lib/evilution/mutator/operator/regexp_named_group_rename.rb +106 -0
  129. data/lib/evilution/mutator/operator/regexp_option_removal.rb +51 -0
  130. data/lib/evilution/mutator/operator/regexp_quantifier_minimum_swap.rb +45 -0
  131. data/lib/evilution/mutator/operator/rescue_class_widening.rb +54 -0
  132. data/lib/evilution/mutator/operator/rescue_else_concatenation.rb +62 -0
  133. data/lib/evilution/mutator/operator/rescue_handler_concatenation.rb +69 -0
  134. data/lib/evilution/mutator/operator/rescue_handler_promotion.rb +65 -0
  135. data/lib/evilution/mutator/operator/return_keyword_removal.rb +79 -0
  136. data/lib/evilution/mutator/operator/rightward_assignment.rb +46 -0
  137. data/lib/evilution/mutator/operator/round_half_mode_swap.rb +36 -0
  138. data/lib/evilution/mutator/operator/safe_navigation_insertion.rb +57 -0
  139. data/lib/evilution/mutator/operator/safe_navigation_removal.rb +2 -24
  140. data/lib/evilution/mutator/operator/send_mutation.rb +2 -0
  141. data/lib/evilution/mutator/operator/short_circuit_to_eager.rb +34 -0
  142. data/lib/evilution/mutator/operator/sleep_to_zero.rb +43 -0
  143. data/lib/evilution/mutator/operator/splat_operator.rb +41 -24
  144. data/lib/evilution/mutator/operator/statement_reorder.rb +153 -0
  145. data/lib/evilution/mutator/operator/string_literal.rb +29 -0
  146. data/lib/evilution/mutator/operator/superclass_removal.rb +14 -40
  147. data/lib/evilution/mutator/operator/symbol_literal.rb +47 -2
  148. data/lib/evilution/mutator/operator/to_i_to_integer.rb +1 -1
  149. data/lib/evilution/mutator/operator/variable_read_to_nil.rb +113 -0
  150. data/lib/evilution/mutator/operator/visibility_removal.rb +74 -0
  151. data/lib/evilution/mutator/primitives.rb +24 -2
  152. data/lib/evilution/mutator/receiver_positions.rb +79 -0
  153. data/lib/evilution/mutator/registry.rb +58 -2
  154. data/lib/evilution/mutator/rescue_handlers.rb +81 -0
  155. data/lib/evilution/parallel/work_queue/channel/frame.rb +6 -0
  156. data/lib/evilution/parallel/work_queue/channel.rb +58 -5
  157. data/lib/evilution/parallel/work_queue/dispatcher/reply.rb +41 -0
  158. data/lib/evilution/parallel/work_queue/dispatcher.rb +14 -1
  159. data/lib/evilution/parallel/work_queue/worker/loop.rb +5 -0
  160. data/lib/evilution/parallel/work_queue/worker.rb +13 -4
  161. data/lib/evilution/parallel/work_queue.rb +15 -9
  162. data/lib/evilution/process_supervisor.rb +3 -2
  163. data/lib/evilution/reporter/cli/line_formatters/baseline_neutralized_notice.rb +55 -0
  164. data/lib/evilution/reporter/cli/metrics_block.rb +2 -0
  165. data/lib/evilution/reporter/json/baseline.rb +15 -0
  166. data/lib/evilution/reporter/json.rb +7 -2
  167. data/lib/evilution/result/baseline_neutralization.rb +10 -0
  168. data/lib/evilution/result/mutation_result.rb +9 -1
  169. data/lib/evilution/result/summary.rb +42 -2
  170. data/lib/evilution/runner/baseline_runner.rb +9 -4
  171. data/lib/evilution/runner/canary.rb +2 -57
  172. data/lib/evilution/runner/canary_failure_message.rb +101 -0
  173. data/lib/evilution/runner/mutation_executor/neutralizer/baseline_failed.rb +22 -8
  174. data/lib/evilution/runner/mutation_executor/result_cache.rb +3 -0
  175. data/lib/evilution/runner/mutation_executor/result_packer.rb +4 -2
  176. data/lib/evilution/runner/mutation_executor/strategy/parallel.rb +10 -0
  177. data/lib/evilution/runner/mutation_executor.rb +1 -1
  178. data/lib/evilution/runner/mutation_planner.rb +11 -2
  179. data/lib/evilution/runner/report_publisher.rb +3 -2
  180. data/lib/evilution/runner/subject_pipeline/target.rb +86 -0
  181. data/lib/evilution/runner/subject_pipeline.rb +57 -43
  182. data/lib/evilution/runner.rb +5 -2
  183. data/lib/evilution/subject.rb +25 -2
  184. data/lib/evilution/version.rb +1 -1
  185. data/lib/evilution.rb +90 -0
  186. data/script/memory_check +62 -16
  187. metadata +113 -4
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evilution
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Kiselev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-09-28 00:00:00.000000000 Z
11
+ date: 2026-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diff-lcs
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '1.5'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '3'
22
+ version: '2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '1.5'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '3'
32
+ version: '2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: mcp
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -70,6 +70,26 @@ dependencies:
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
72
  version: '2'
73
+ - !ruby/object:Gem::Dependency
74
+ name: regexp_parser
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '2.9'
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '3'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '2.9'
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '3'
73
93
  description: Evilution is a mutation testing tool for Ruby. It validates test suite
74
94
  quality by making small code changes and checking if tests catch them. AI-agent-first
75
95
  design with JSON output, diff-based targeting, and coverage-based filtering.
@@ -120,18 +140,34 @@ files:
120
140
  - exe/evilution
121
141
  - lib/evilution.rb
122
142
  - lib/evilution/ast.rb
143
+ - lib/evilution/ast/aasm_declaration.rb
144
+ - lib/evilution/ast/callback_declaration.rb
145
+ - lib/evilution/ast/class_body.rb
123
146
  - lib/evilution/ast/constant_names.rb
124
147
  - lib/evilution/ast/heredoc_span.rb
148
+ - lib/evilution/ast/included_block.rb
125
149
  - lib/evilution/ast/inheritance_scanner.rb
150
+ - lib/evilution/ast/literal_callable.rb
126
151
  - lib/evilution/ast/local_reads.rb
152
+ - lib/evilution/ast/never_nil.rb
127
153
  - lib/evilution/ast/parser.rb
128
154
  - lib/evilution/ast/pattern.rb
129
155
  - lib/evilution/ast/pattern/filter.rb
130
156
  - lib/evilution/ast/pattern/matcher.rb
157
+ - lib/evilution/ast/pattern/method_name.rb
131
158
  - lib/evilution/ast/pattern/parser.rb
159
+ - lib/evilution/ast/regexp_pattern.rb
160
+ - lib/evilution/ast/round_half_mode.rb
161
+ - lib/evilution/ast/scope_declaration.rb
132
162
  - lib/evilution/ast/sorbet_sig_detector.rb
133
163
  - lib/evilution/ast/source_surgeon.rb
164
+ - lib/evilution/ast/syntax_check.rb
165
+ - lib/evilution/ast/uncovered_code.rb
166
+ - lib/evilution/ast/value_object_definition.rb
134
167
  - lib/evilution/baseline.rb
168
+ - lib/evilution/baseline/failure_formatter.rb
169
+ - lib/evilution/baseline/report.rb
170
+ - lib/evilution/baseline/spec_failure.rb
135
171
  - lib/evilution/cache.rb
136
172
  - lib/evilution/child_output.rb
137
173
  - lib/evilution/cli.rb
@@ -218,6 +254,13 @@ files:
218
254
  - lib/evilution/equivalent/heuristic/arithmetic_identity.rb
219
255
  - lib/evilution/equivalent/heuristic/comment_marking.rb
220
256
  - lib/evilution/equivalent/heuristic/dead_code.rb
257
+ - lib/evilution/equivalent/heuristic/guarded_index_fetch.rb
258
+ - lib/evilution/equivalent/heuristic/guarded_index_fetch/condition.rb
259
+ - lib/evilution/equivalent/heuristic/guarded_index_fetch/disturbance.rb
260
+ - lib/evilution/equivalent/heuristic/guarded_index_fetch/early_exit.rb
261
+ - lib/evilution/equivalent/heuristic/guarded_index_fetch/guard.rb
262
+ - lib/evilution/equivalent/heuristic/guarded_index_fetch/index_read.rb
263
+ - lib/evilution/equivalent/heuristic/guarded_index_fetch/node_path.rb
221
264
  - lib/evilution/equivalent/heuristic/method_body_nil.rb
222
265
  - lib/evilution/equivalent/heuristic/noop_source.rb
223
266
  - lib/evilution/equivalent/heuristic/void_context.rb
@@ -235,25 +278,34 @@ files:
235
278
  - lib/evilution/integration.rb
236
279
  - lib/evilution/integration/base.rb
237
280
  - lib/evilution/integration/crash_detector.rb
281
+ - lib/evilution/integration/known_failures.rb
238
282
  - lib/evilution/integration/loading.rb
239
283
  - lib/evilution/integration/loading/body_call_neutralizer.rb
284
+ - lib/evilution/integration/loading/callback_redeclaration.rb
285
+ - lib/evilution/integration/loading/concern_redeclaration.rb
240
286
  - lib/evilution/integration/loading/concern_state_cleaner.rb
241
287
  - lib/evilution/integration/loading/constant_pinner.rb
242
288
  - lib/evilution/integration/loading/mutation_applier.rb
289
+ - lib/evilution/integration/loading/own_methods.rb
243
290
  - lib/evilution/integration/loading/redefinition_recovery.rb
244
291
  - lib/evilution/integration/loading/reeval_warning_filter.rb
245
292
  - lib/evilution/integration/loading/source_evaluator.rb
293
+ - lib/evilution/integration/loading/superseded_modules.rb
246
294
  - lib/evilution/integration/loading/syntax_validator.rb
295
+ - lib/evilution/integration/loading/test_class_cache.rb
247
296
  - lib/evilution/integration/loading/test_load_path.rb
248
297
  - lib/evilution/integration/minitest.rb
298
+ - lib/evilution/integration/minitest/test_ids.rb
249
299
  - lib/evilution/integration/minitest_crash_detector.rb
250
300
  - lib/evilution/integration/rspec.rb
251
301
  - lib/evilution/integration/rspec/baseline_runner.rb
252
302
  - lib/evilution/integration/rspec/crash_detector_lifecycle.rb
253
303
  - lib/evilution/integration/rspec/example_filter_applier.rb
304
+ - lib/evilution/integration/rspec/example_ids.rb
254
305
  - lib/evilution/integration/rspec/framework_loader.rb
255
306
  - lib/evilution/integration/rspec/result_builder.rb
256
307
  - lib/evilution/integration/rspec/state_guard.rb
308
+ - lib/evilution/integration/rspec/state_guard/anonymous_example_group_examples.rb
257
309
  - lib/evilution/integration/rspec/state_guard/configuration_state.rb
258
310
  - lib/evilution/integration/rspec/state_guard/configuration_streams.rb
259
311
  - lib/evilution/integration/rspec/state_guard/example_groups_constants.rb
@@ -271,6 +323,7 @@ files:
271
323
  - lib/evilution/integration/test_unit/result_builder.rb
272
324
  - lib/evilution/integration/test_unit/subject_class_registry.rb
273
325
  - lib/evilution/integration/test_unit/test_file_resolver.rb
326
+ - lib/evilution/integration/test_unit/test_ids.rb
274
327
  - lib/evilution/integration/test_unit_crash_detector.rb
275
328
  - lib/evilution/isolation.rb
276
329
  - lib/evilution/isolation/fork.rb
@@ -306,15 +359,19 @@ files:
306
359
  - lib/evilution/mutation.rb
307
360
  - lib/evilution/mutator.rb
308
361
  - lib/evilution/mutator/base.rb
362
+ - lib/evilution/mutator/constant_value_subjects.rb
309
363
  - lib/evilution/mutator/operator.rb
364
+ - lib/evilution/mutator/operator/alias_removal.rb
310
365
  - lib/evilution/mutator/operator/argument_list_removal.rb
311
366
  - lib/evilution/mutator/operator/argument_method_call_replacement.rb
312
367
  - lib/evilution/mutator/operator/argument_nil_substitution.rb
368
+ - lib/evilution/mutator/operator/argument_order_permutation.rb
313
369
  - lib/evilution/mutator/operator/argument_propagation.rb
314
370
  - lib/evilution/mutator/operator/argument_removal.rb
315
371
  - lib/evilution/mutator/operator/arithmetic_replacement.rb
316
372
  - lib/evilution/mutator/operator/array_coercion_to_literal.rb
317
373
  - lib/evilution/mutator/operator/array_literal.rb
374
+ - lib/evilution/mutator/operator/attr_accessor_swap.rb
318
375
  - lib/evilution/mutator/operator/attribute_write_to_read.rb
319
376
  - lib/evilution/mutator/operator/bang_method.rb
320
377
  - lib/evilution/mutator/operator/begin_unwrap.rb
@@ -341,39 +398,56 @@ files:
341
398
  - lib/evilution/mutator/operator/coercion_emptying.rb
342
399
  - lib/evilution/mutator/operator/collection_replacement.rb
343
400
  - lib/evilution/mutator/operator/collection_return.rb
401
+ - lib/evilution/mutator/operator/comparison_operand_swap.rb
344
402
  - lib/evilution/mutator/operator/comparison_replacement.rb
403
+ - lib/evilution/mutator/operator/complex_literal.rb
345
404
  - lib/evilution/mutator/operator/compound_assignment.rb
346
405
  - lib/evilution/mutator/operator/conditional_branch.rb
347
406
  - lib/evilution/mutator/operator/conditional_flip.rb
348
407
  - lib/evilution/mutator/operator/conditional_negation.rb
349
408
  - lib/evilution/mutator/operator/const_get_to_constant_path.rb
409
+ - lib/evilution/mutator/operator/constant_namespace_strip.rb
410
+ - lib/evilution/mutator/operator/constant_read_to_nil.rb
411
+ - lib/evilution/mutator/operator/constant_write_to_nil.rb
412
+ - lib/evilution/mutator/operator/data_struct_member.rb
350
413
  - lib/evilution/mutator/operator/defined_check.rb
351
414
  - lib/evilution/mutator/operator/dig_to_fetch_chain.rb
352
415
  - lib/evilution/mutator/operator/double_negation_removal.rb
353
416
  - lib/evilution/mutator/operator/dynamic_dispatch_resolution.rb
354
417
  - lib/evilution/mutator/operator/ensure_removal.rb
355
418
  - lib/evilution/mutator/operator/equality_to_identity.rb
419
+ - lib/evilution/mutator/operator/exception_swallow.rb
356
420
  - lib/evilution/mutator/operator/explicit_super_mutation.rb
357
421
  - lib/evilution/mutator/operator/float_literal.rb
422
+ - lib/evilution/mutator/operator/format_specifier_swap.rb
423
+ - lib/evilution/mutator/operator/forwarded_argument_drop.rb
358
424
  - lib/evilution/mutator/operator/forwarding_super_to_explicit.rb
425
+ - lib/evilution/mutator/operator/freeze_removal.rb
359
426
  - lib/evilution/mutator/operator/global_variable_write.rb
360
427
  - lib/evilution/mutator/operator/hash_literal.rb
361
428
  - lib/evilution/mutator/operator/if_branch_swap.rb
362
429
  - lib/evilution/mutator/operator/index_assignment_removal.rb
430
+ - lib/evilution/mutator/operator/index_range_to_drop.rb
431
+ - lib/evilution/mutator/operator/index_receiver_to_self.rb
363
432
  - lib/evilution/mutator/operator/index_to_at.rb
364
433
  - lib/evilution/mutator/operator/index_to_dig.rb
365
434
  - lib/evilution/mutator/operator/index_to_fetch.rb
435
+ - lib/evilution/mutator/operator/index_to_key_predicate.rb
436
+ - lib/evilution/mutator/operator/index_write_to_value.rb
366
437
  - lib/evilution/mutator/operator/inequality_to_negated_identity.rb
367
438
  - lib/evilution/mutator/operator/inline_rescue.rb
368
439
  - lib/evilution/mutator/operator/instance_variable_write.rb
440
+ - lib/evilution/mutator/operator/integer_division_to_fdiv.rb
369
441
  - lib/evilution/mutator/operator/integer_literal.rb
370
442
  - lib/evilution/mutator/operator/keyword_argument.rb
371
443
  - lib/evilution/mutator/operator/keyword_argument_removal.rb
444
+ - lib/evilution/mutator/operator/keyword_value_swap.rb
372
445
  - lib/evilution/mutator/operator/lambda_body.rb
373
446
  - lib/evilution/mutator/operator/last_expression_removal.rb
374
447
  - lib/evilution/mutator/operator/local_variable_assignment.rb
375
448
  - lib/evilution/mutator/operator/loop_body_to_raise.rb
376
449
  - lib/evilution/mutator/operator/loop_flip.rb
450
+ - lib/evilution/mutator/operator/memoization_break.rb
377
451
  - lib/evilution/mutator/operator/method_body_replacement.rb
378
452
  - lib/evilution/mutator/operator/method_body_to_raise.rb
379
453
  - lib/evilution/mutator/operator/method_body_to_super.rb
@@ -383,33 +457,58 @@ files:
383
457
  - lib/evilution/mutator/operator/negation_insertion.rb
384
458
  - lib/evilution/mutator/operator/next_statement.rb
385
459
  - lib/evilution/mutator/operator/nil_replacement.rb
460
+ - lib/evilution/mutator/operator/no_matching_pattern_else.rb
461
+ - lib/evilution/mutator/operator/numbered_parameter_swap.rb
462
+ - lib/evilution/mutator/operator/off_by_one_boundary.rb
463
+ - lib/evilution/mutator/operator/operator_write_receiver_promotion.rb
386
464
  - lib/evilution/mutator/operator/optional_default_injection.rb
387
465
  - lib/evilution/mutator/operator/optional_parameter_to_required.rb
388
466
  - lib/evilution/mutator/operator/pattern_matching_alternative.rb
389
467
  - lib/evilution/mutator/operator/pattern_matching_array.rb
390
468
  - lib/evilution/mutator/operator/pattern_matching_guard.rb
391
469
  - lib/evilution/mutator/operator/pattern_predicate.rb
470
+ - lib/evilution/mutator/operator/pattern_wildcard_widening.rb
471
+ - lib/evilution/mutator/operator/pin_operator_removal.rb
392
472
  - lib/evilution/mutator/operator/predicate_replacement.rb
393
473
  - lib/evilution/mutator/operator/predicate_to_nil.rb
394
474
  - lib/evilution/mutator/operator/proc_to_lambda.rb
395
475
  - lib/evilution/mutator/operator/range_replacement.rb
476
+ - lib/evilution/mutator/operator/rational_literal.rb
396
477
  - lib/evilution/mutator/operator/receiver_constructor_swap.rb
397
478
  - lib/evilution/mutator/operator/receiver_replacement.rb
398
479
  - lib/evilution/mutator/operator/redo_statement.rb
399
480
  - lib/evilution/mutator/operator/reduce_to_sum.rb
400
481
  - lib/evilution/mutator/operator/regex_capture.rb
401
482
  - lib/evilution/mutator/operator/regex_simplification.rb
483
+ - lib/evilution/mutator/operator/regexp_alternation_branch_deletion.rb
484
+ - lib/evilution/mutator/operator/regexp_anchor_promotion.rb
402
485
  - lib/evilution/mutator/operator/regexp_anchor_to_predicate.rb
486
+ - lib/evilution/mutator/operator/regexp_capture_to_passive.rb
487
+ - lib/evilution/mutator/operator/regexp_character_type_complement.rb
403
488
  - lib/evilution/mutator/operator/regexp_mutation.rb
489
+ - lib/evilution/mutator/operator/regexp_named_group_rename.rb
490
+ - lib/evilution/mutator/operator/regexp_option_removal.rb
491
+ - lib/evilution/mutator/operator/regexp_quantifier_minimum_swap.rb
404
492
  - lib/evilution/mutator/operator/rescue_body_replacement.rb
493
+ - lib/evilution/mutator/operator/rescue_class_widening.rb
494
+ - lib/evilution/mutator/operator/rescue_else_concatenation.rb
495
+ - lib/evilution/mutator/operator/rescue_handler_concatenation.rb
496
+ - lib/evilution/mutator/operator/rescue_handler_promotion.rb
405
497
  - lib/evilution/mutator/operator/rescue_removal.rb
406
498
  - lib/evilution/mutator/operator/retry_removal.rb
499
+ - lib/evilution/mutator/operator/return_keyword_removal.rb
407
500
  - lib/evilution/mutator/operator/return_value_removal.rb
501
+ - lib/evilution/mutator/operator/rightward_assignment.rb
502
+ - lib/evilution/mutator/operator/round_half_mode_swap.rb
503
+ - lib/evilution/mutator/operator/safe_navigation_insertion.rb
408
504
  - lib/evilution/mutator/operator/safe_navigation_removal.rb
409
505
  - lib/evilution/mutator/operator/scalar_return.rb
410
506
  - lib/evilution/mutator/operator/send_mutation.rb
507
+ - lib/evilution/mutator/operator/short_circuit_to_eager.rb
508
+ - lib/evilution/mutator/operator/sleep_to_zero.rb
411
509
  - lib/evilution/mutator/operator/splat_operator.rb
412
510
  - lib/evilution/mutator/operator/statement_deletion.rb
511
+ - lib/evilution/mutator/operator/statement_reorder.rb
413
512
  - lib/evilution/mutator/operator/string_interpolation.rb
414
513
  - lib/evilution/mutator/operator/string_literal.rb
415
514
  - lib/evilution/mutator/operator/superclass_removal.rb
@@ -417,10 +516,14 @@ files:
417
516
  - lib/evilution/mutator/operator/symbol_to_proc_replacement.rb
418
517
  - lib/evilution/mutator/operator/to_i_to_integer.rb
419
518
  - lib/evilution/mutator/operator/typed_default_return.rb
519
+ - lib/evilution/mutator/operator/variable_read_to_nil.rb
520
+ - lib/evilution/mutator/operator/visibility_removal.rb
420
521
  - lib/evilution/mutator/operator/yield_statement.rb
421
522
  - lib/evilution/mutator/operator/zsuper_removal.rb
422
523
  - lib/evilution/mutator/primitives.rb
524
+ - lib/evilution/mutator/receiver_positions.rb
423
525
  - lib/evilution/mutator/registry.rb
526
+ - lib/evilution/mutator/rescue_handlers.rb
424
527
  - lib/evilution/parallel.rb
425
528
  - lib/evilution/parallel/pool.rb
426
529
  - lib/evilution/parallel/work_queue.rb
@@ -429,6 +532,7 @@ files:
429
532
  - lib/evilution/parallel/work_queue/collection_state.rb
430
533
  - lib/evilution/parallel/work_queue/dispatcher.rb
431
534
  - lib/evilution/parallel/work_queue/dispatcher/deadline_tracker.rb
535
+ - lib/evilution/parallel/work_queue/dispatcher/reply.rb
432
536
  - lib/evilution/parallel/work_queue/validators.rb
433
537
  - lib/evilution/parallel/work_queue/validators/optional_positive_int.rb
434
538
  - lib/evilution/parallel/work_queue/validators/optional_positive_number.rb
@@ -453,6 +557,7 @@ files:
453
557
  - lib/evilution/reporter/cli/item_formatters/subject_score.rb
454
558
  - lib/evilution/reporter/cli/item_formatters/subject_score_group.rb
455
559
  - lib/evilution/reporter/cli/line_formatters.rb
560
+ - lib/evilution/reporter/cli/line_formatters/baseline_neutralized_notice.rb
456
561
  - lib/evilution/reporter/cli/line_formatters/duration.rb
457
562
  - lib/evilution/reporter/cli/line_formatters/efficiency.rb
458
563
  - lib/evilution/reporter/cli/line_formatters/error_rate_warning.rb
@@ -508,6 +613,7 @@ files:
508
613
  - lib/evilution/reporter/html/templates/unparseable_details.html.erb
509
614
  - lib/evilution/reporter/html/templates/unresolved_details.html.erb
510
615
  - lib/evilution/reporter/json.rb
616
+ - lib/evilution/reporter/json/baseline.rb
511
617
  - lib/evilution/reporter/json/subjects.rb
512
618
  - lib/evilution/reporter/progress_bar.rb
513
619
  - lib/evilution/reporter/suggestion.rb
@@ -519,6 +625,7 @@ files:
519
625
  - lib/evilution/reporter/suggestion/templates/minitest.rb
520
626
  - lib/evilution/reporter/suggestion/templates/rspec.rb
521
627
  - lib/evilution/result.rb
628
+ - lib/evilution/result/baseline_neutralization.rb
522
629
  - lib/evilution/result/coverage_gap.rb
523
630
  - lib/evilution/result/coverage_gap_grouper.rb
524
631
  - lib/evilution/result/error_info.rb
@@ -531,6 +638,7 @@ files:
531
638
  - lib/evilution/runner.rb
532
639
  - lib/evilution/runner/baseline_runner.rb
533
640
  - lib/evilution/runner/canary.rb
641
+ - lib/evilution/runner/canary_failure_message.rb
534
642
  - lib/evilution/runner/diagnostics.rb
535
643
  - lib/evilution/runner/isolation_resolver.rb
536
644
  - lib/evilution/runner/mutation_executor.rb
@@ -549,6 +657,7 @@ files:
549
657
  - lib/evilution/runner/mutation_planner.rb
550
658
  - lib/evilution/runner/report_publisher.rb
551
659
  - lib/evilution/runner/subject_pipeline.rb
660
+ - lib/evilution/runner/subject_pipeline/target.rb
552
661
  - lib/evilution/runner/target_spec_audit.rb
553
662
  - lib/evilution/session.rb
554
663
  - lib/evilution/session/diff.rb