evilution 0.1.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 (63) hide show
  1. checksums.yaml +7 -0
  2. data/.beads/.gitignore +51 -0
  3. data/.beads/.migration-hint-ts +1 -0
  4. data/.beads/README.md +81 -0
  5. data/.beads/config.yaml +67 -0
  6. data/.beads/interactions.jsonl +0 -0
  7. data/.beads/issues.jsonl +68 -0
  8. data/.beads/metadata.json +4 -0
  9. data/.claude/prompts/architect.md +98 -0
  10. data/.claude/prompts/devops.md +106 -0
  11. data/.claude/prompts/tests.md +160 -0
  12. data/CHANGELOG.md +19 -0
  13. data/CODE_OF_CONDUCT.md +10 -0
  14. data/LICENSE.txt +21 -0
  15. data/README.md +190 -0
  16. data/Rakefile +12 -0
  17. data/claude-swarm.yml +28 -0
  18. data/exe/evilution +6 -0
  19. data/lib/evilution/ast/parser.rb +83 -0
  20. data/lib/evilution/ast/source_surgeon.rb +13 -0
  21. data/lib/evilution/cli.rb +78 -0
  22. data/lib/evilution/config.rb +98 -0
  23. data/lib/evilution/coverage/collector.rb +47 -0
  24. data/lib/evilution/coverage/test_map.rb +25 -0
  25. data/lib/evilution/diff/file_filter.rb +29 -0
  26. data/lib/evilution/diff/parser.rb +47 -0
  27. data/lib/evilution/integration/base.rb +11 -0
  28. data/lib/evilution/integration/rspec.rb +184 -0
  29. data/lib/evilution/isolation/fork.rb +70 -0
  30. data/lib/evilution/mutation.rb +45 -0
  31. data/lib/evilution/mutator/base.rb +54 -0
  32. data/lib/evilution/mutator/operator/arithmetic_replacement.rb +37 -0
  33. data/lib/evilution/mutator/operator/array_literal.rb +22 -0
  34. data/lib/evilution/mutator/operator/boolean_literal_replacement.rb +31 -0
  35. data/lib/evilution/mutator/operator/boolean_operator_replacement.rb +50 -0
  36. data/lib/evilution/mutator/operator/collection_replacement.rb +37 -0
  37. data/lib/evilution/mutator/operator/comparison_replacement.rb +37 -0
  38. data/lib/evilution/mutator/operator/conditional_branch.rb +36 -0
  39. data/lib/evilution/mutator/operator/conditional_negation.rb +36 -0
  40. data/lib/evilution/mutator/operator/float_literal.rb +26 -0
  41. data/lib/evilution/mutator/operator/hash_literal.rb +22 -0
  42. data/lib/evilution/mutator/operator/integer_literal.rb +45 -0
  43. data/lib/evilution/mutator/operator/method_body_replacement.rb +22 -0
  44. data/lib/evilution/mutator/operator/negation_insertion.rb +22 -0
  45. data/lib/evilution/mutator/operator/nil_replacement.rb +20 -0
  46. data/lib/evilution/mutator/operator/return_value_removal.rb +22 -0
  47. data/lib/evilution/mutator/operator/statement_deletion.rb +24 -0
  48. data/lib/evilution/mutator/operator/string_literal.rb +22 -0
  49. data/lib/evilution/mutator/operator/symbol_literal.rb +20 -0
  50. data/lib/evilution/mutator/registry.rb +55 -0
  51. data/lib/evilution/parallel/pool.rb +98 -0
  52. data/lib/evilution/parallel/worker.rb +24 -0
  53. data/lib/evilution/reporter/cli.rb +72 -0
  54. data/lib/evilution/reporter/json.rb +59 -0
  55. data/lib/evilution/reporter/suggestion.rb +51 -0
  56. data/lib/evilution/result/mutation_result.rb +37 -0
  57. data/lib/evilution/result/summary.rb +54 -0
  58. data/lib/evilution/runner.rb +139 -0
  59. data/lib/evilution/subject.rb +20 -0
  60. data/lib/evilution/version.rb +5 -0
  61. data/lib/evilution.rb +51 -0
  62. data/sig/evilution.rbs +4 -0
  63. metadata +130 -0
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: evilution
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Denis Kiselev
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: diff-lcs
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '1.5'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '3'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '1.5'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '3'
32
+ description: Evilution is a mutation testing tool for Ruby. It validates test suite
33
+ quality by making small code changes and checking if tests catch them. AI-agent-first
34
+ design with JSON output, diff-based targeting, and coverage-based filtering.
35
+ email:
36
+ - denis.kiselyov@gmail.com
37
+ executables:
38
+ - evilution
39
+ extensions: []
40
+ extra_rdoc_files: []
41
+ files:
42
+ - ".beads/.gitignore"
43
+ - ".beads/.migration-hint-ts"
44
+ - ".beads/README.md"
45
+ - ".beads/config.yaml"
46
+ - ".beads/interactions.jsonl"
47
+ - ".beads/issues.jsonl"
48
+ - ".beads/metadata.json"
49
+ - ".claude/prompts/architect.md"
50
+ - ".claude/prompts/devops.md"
51
+ - ".claude/prompts/tests.md"
52
+ - CHANGELOG.md
53
+ - CODE_OF_CONDUCT.md
54
+ - LICENSE.txt
55
+ - README.md
56
+ - Rakefile
57
+ - claude-swarm.yml
58
+ - exe/evilution
59
+ - lib/evilution.rb
60
+ - lib/evilution/ast/parser.rb
61
+ - lib/evilution/ast/source_surgeon.rb
62
+ - lib/evilution/cli.rb
63
+ - lib/evilution/config.rb
64
+ - lib/evilution/coverage/collector.rb
65
+ - lib/evilution/coverage/test_map.rb
66
+ - lib/evilution/diff/file_filter.rb
67
+ - lib/evilution/diff/parser.rb
68
+ - lib/evilution/integration/base.rb
69
+ - lib/evilution/integration/rspec.rb
70
+ - lib/evilution/isolation/fork.rb
71
+ - lib/evilution/mutation.rb
72
+ - lib/evilution/mutator/base.rb
73
+ - lib/evilution/mutator/operator/arithmetic_replacement.rb
74
+ - lib/evilution/mutator/operator/array_literal.rb
75
+ - lib/evilution/mutator/operator/boolean_literal_replacement.rb
76
+ - lib/evilution/mutator/operator/boolean_operator_replacement.rb
77
+ - lib/evilution/mutator/operator/collection_replacement.rb
78
+ - lib/evilution/mutator/operator/comparison_replacement.rb
79
+ - lib/evilution/mutator/operator/conditional_branch.rb
80
+ - lib/evilution/mutator/operator/conditional_negation.rb
81
+ - lib/evilution/mutator/operator/float_literal.rb
82
+ - lib/evilution/mutator/operator/hash_literal.rb
83
+ - lib/evilution/mutator/operator/integer_literal.rb
84
+ - lib/evilution/mutator/operator/method_body_replacement.rb
85
+ - lib/evilution/mutator/operator/negation_insertion.rb
86
+ - lib/evilution/mutator/operator/nil_replacement.rb
87
+ - lib/evilution/mutator/operator/return_value_removal.rb
88
+ - lib/evilution/mutator/operator/statement_deletion.rb
89
+ - lib/evilution/mutator/operator/string_literal.rb
90
+ - lib/evilution/mutator/operator/symbol_literal.rb
91
+ - lib/evilution/mutator/registry.rb
92
+ - lib/evilution/parallel/pool.rb
93
+ - lib/evilution/parallel/worker.rb
94
+ - lib/evilution/reporter/cli.rb
95
+ - lib/evilution/reporter/json.rb
96
+ - lib/evilution/reporter/suggestion.rb
97
+ - lib/evilution/result/mutation_result.rb
98
+ - lib/evilution/result/summary.rb
99
+ - lib/evilution/runner.rb
100
+ - lib/evilution/subject.rb
101
+ - lib/evilution/version.rb
102
+ - sig/evilution.rbs
103
+ homepage: https://github.com/marinazzio/evilution
104
+ licenses:
105
+ - MIT
106
+ metadata:
107
+ allowed_push_host: https://rubygems.org
108
+ bug_tracker_uri: https://github.com/marinazzio/evilution/issues
109
+ documentation_uri: https://github.com/marinazzio/evilution/blob/master/README.md
110
+ homepage_uri: https://github.com/marinazzio/evilution
111
+ rubygems_mfa_required: 'true'
112
+ source_code_uri: https://github.com/marinazzio/evilution
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 3.3.0
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubygems_version: 4.0.3
128
+ specification_version: 4
129
+ summary: Free, MIT-licensed mutation testing for Ruby
130
+ test_files: []