lex-mind-growth 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 (33) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +19 -0
  3. data/LICENSE +21 -0
  4. data/lex-mind-growth.gemspec +29 -0
  5. data/lib/legion/extensions/mind_growth/actors/growth_cycle.rb +55 -0
  6. data/lib/legion/extensions/mind_growth/client.rb +36 -0
  7. data/lib/legion/extensions/mind_growth/helpers/build_pipeline.rb +63 -0
  8. data/lib/legion/extensions/mind_growth/helpers/cognitive_models.rb +60 -0
  9. data/lib/legion/extensions/mind_growth/helpers/concept_proposal.rb +69 -0
  10. data/lib/legion/extensions/mind_growth/helpers/constants.rb +55 -0
  11. data/lib/legion/extensions/mind_growth/helpers/fitness_evaluator.rb +58 -0
  12. data/lib/legion/extensions/mind_growth/helpers/proposal_store.rb +71 -0
  13. data/lib/legion/extensions/mind_growth/runners/analyzer.rb +52 -0
  14. data/lib/legion/extensions/mind_growth/runners/builder.rb +254 -0
  15. data/lib/legion/extensions/mind_growth/runners/orchestrator.rb +178 -0
  16. data/lib/legion/extensions/mind_growth/runners/proposer.rb +269 -0
  17. data/lib/legion/extensions/mind_growth/runners/validator.rb +57 -0
  18. data/lib/legion/extensions/mind_growth/version.rb +9 -0
  19. data/lib/legion/extensions/mind_growth.rb +25 -0
  20. data/spec/legion/extensions/mind_growth/actors/growth_cycle_spec.rb +81 -0
  21. data/spec/legion/extensions/mind_growth/client_spec.rb +111 -0
  22. data/spec/legion/extensions/mind_growth/helpers/build_pipeline_spec.rb +190 -0
  23. data/spec/legion/extensions/mind_growth/helpers/cognitive_models_spec.rb +106 -0
  24. data/spec/legion/extensions/mind_growth/helpers/concept_proposal_spec.rb +209 -0
  25. data/spec/legion/extensions/mind_growth/helpers/fitness_evaluator_spec.rb +123 -0
  26. data/spec/legion/extensions/mind_growth/helpers/proposal_store_spec.rb +203 -0
  27. data/spec/legion/extensions/mind_growth/runners/analyzer_spec.rb +108 -0
  28. data/spec/legion/extensions/mind_growth/runners/builder_spec.rb +347 -0
  29. data/spec/legion/extensions/mind_growth/runners/orchestrator_spec.rb +185 -0
  30. data/spec/legion/extensions/mind_growth/runners/proposer_spec.rb +493 -0
  31. data/spec/legion/extensions/mind_growth/runners/validator_spec.rb +120 -0
  32. data/spec/spec_helper.rb +22 -0
  33. metadata +91 -0
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Legion::Extensions::MindGrowth::Runners::Validator do
4
+ subject(:validator) { described_class }
5
+
6
+ # Reset proposer store before each example
7
+ before { Legion::Extensions::MindGrowth::Runners::Proposer.instance_variable_set(:@proposal_store, nil) }
8
+
9
+ let(:proposal_id) do
10
+ result = Legion::Extensions::MindGrowth::Runners::Proposer.propose_concept(
11
+ name: 'lex-valid', category: :cognition, description: 'valid proposal'
12
+ )
13
+ result[:proposal][:id]
14
+ end
15
+
16
+ describe '.validate_proposal' do
17
+ it 'returns not_found for unknown id' do
18
+ result = validator.validate_proposal(proposal_id: 'nonexistent')
19
+ expect(result[:success]).to be false
20
+ expect(result[:error]).to eq(:not_found)
21
+ end
22
+
23
+ it 'validates a well-formed proposal successfully' do
24
+ result = validator.validate_proposal(proposal_id: proposal_id)
25
+ expect(result[:success]).to be true
26
+ expect(result[:valid]).to be true
27
+ expect(result[:issues]).to be_empty
28
+ end
29
+
30
+ it 'returns the proposal_id in the result' do
31
+ result = validator.validate_proposal(proposal_id: proposal_id)
32
+ expect(result[:proposal_id]).to eq(proposal_id)
33
+ end
34
+
35
+ it 'ignores unknown keyword arguments' do
36
+ expect { validator.validate_proposal(proposal_id: proposal_id, extra: true) }.not_to raise_error
37
+ end
38
+ end
39
+
40
+ describe '.validate_scores' do
41
+ let(:valid_scores) do
42
+ Legion::Extensions::MindGrowth::Helpers::Constants::EVALUATION_DIMENSIONS.to_h { |d| [d, 0.75] }
43
+ end
44
+
45
+ it 'returns success: true for valid scores' do
46
+ result = validator.validate_scores(scores: valid_scores)
47
+ expect(result[:success]).to be true
48
+ expect(result[:valid]).to be true
49
+ end
50
+
51
+ it 'reports missing dimensions' do
52
+ incomplete = valid_scores.except(:novelty)
53
+ result = validator.validate_scores(scores: incomplete)
54
+ expect(result[:success]).to be false
55
+ expect(result[:issues]).to include('missing novelty')
56
+ end
57
+
58
+ it 'reports out-of-range values' do
59
+ bad = valid_scores.merge(novelty: 1.5)
60
+ result = validator.validate_scores(scores: bad)
61
+ expect(result[:success]).to be false
62
+ expect(result[:issues].any? { |i| i.include?('novelty out of range') }).to be true
63
+ end
64
+
65
+ it 'reports negative out-of-range values' do
66
+ bad = valid_scores.merge(fit: -0.1)
67
+ result = validator.validate_scores(scores: bad)
68
+ expect(result[:success]).to be false
69
+ end
70
+
71
+ it 'returns issues array even when valid' do
72
+ result = validator.validate_scores(scores: valid_scores)
73
+ expect(result[:issues]).to be_an(Array)
74
+ end
75
+
76
+ it 'ignores unknown keyword arguments' do
77
+ expect { validator.validate_scores(scores: valid_scores, extra: true) }.not_to raise_error
78
+ end
79
+ end
80
+
81
+ describe '.validate_fitness' do
82
+ let(:extensions) do
83
+ [
84
+ { invocation_count: 500, impact_score: 0.9, health_score: 1.0, error_rate: 0.0, avg_latency_ms: 50 },
85
+ { invocation_count: 0, impact_score: 0.1, health_score: 0.2, error_rate: 0.9, avg_latency_ms: 4000 }
86
+ ]
87
+ end
88
+
89
+ it 'returns success: true' do
90
+ result = validator.validate_fitness(extensions: extensions)
91
+ expect(result[:success]).to be true
92
+ end
93
+
94
+ it 'returns ranked extensions' do
95
+ result = validator.validate_fitness(extensions: extensions)
96
+ expect(result[:ranked]).to be_an(Array)
97
+ expect(result[:ranked].size).to eq(2)
98
+ end
99
+
100
+ it 'returns prune_candidates count' do
101
+ result = validator.validate_fitness(extensions: extensions)
102
+ expect(result[:prune_candidates]).to be_a(Integer)
103
+ end
104
+
105
+ it 'returns improvement_candidates count' do
106
+ result = validator.validate_fitness(extensions: extensions)
107
+ expect(result[:improvement_candidates]).to be_a(Integer)
108
+ end
109
+
110
+ it 'handles empty extensions array' do
111
+ result = validator.validate_fitness(extensions: [])
112
+ expect(result[:success]).to be true
113
+ expect(result[:ranked]).to be_empty
114
+ end
115
+
116
+ it 'ignores unknown keyword arguments' do
117
+ expect { validator.validate_fitness(extensions: [], extra: true) }.not_to raise_error
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/setup'
4
+
5
+ module Legion
6
+ module Logging
7
+ def self.debug(_msg); end
8
+ def self.info(_msg); end
9
+ def self.warn(_msg); end
10
+ def self.error(_msg); end
11
+ end
12
+
13
+ module Extensions; end
14
+ end
15
+
16
+ require 'legion/extensions/mind_growth'
17
+
18
+ RSpec.configure do |config|
19
+ config.example_status_persistence_file_path = '.rspec_status'
20
+ config.disable_monkey_patching!
21
+ config.expect_with(:rspec) { |c| c.syntax = :expect }
22
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lex-mind-growth
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Esity
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: legion-gaia
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :development
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ description: Autonomous cognitive architecture expansion for LegionIO
27
+ email:
28
+ - matthewdiverson@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - Gemfile
34
+ - LICENSE
35
+ - lex-mind-growth.gemspec
36
+ - lib/legion/extensions/mind_growth.rb
37
+ - lib/legion/extensions/mind_growth/actors/growth_cycle.rb
38
+ - lib/legion/extensions/mind_growth/client.rb
39
+ - lib/legion/extensions/mind_growth/helpers/build_pipeline.rb
40
+ - lib/legion/extensions/mind_growth/helpers/cognitive_models.rb
41
+ - lib/legion/extensions/mind_growth/helpers/concept_proposal.rb
42
+ - lib/legion/extensions/mind_growth/helpers/constants.rb
43
+ - lib/legion/extensions/mind_growth/helpers/fitness_evaluator.rb
44
+ - lib/legion/extensions/mind_growth/helpers/proposal_store.rb
45
+ - lib/legion/extensions/mind_growth/runners/analyzer.rb
46
+ - lib/legion/extensions/mind_growth/runners/builder.rb
47
+ - lib/legion/extensions/mind_growth/runners/orchestrator.rb
48
+ - lib/legion/extensions/mind_growth/runners/proposer.rb
49
+ - lib/legion/extensions/mind_growth/runners/validator.rb
50
+ - lib/legion/extensions/mind_growth/version.rb
51
+ - spec/legion/extensions/mind_growth/actors/growth_cycle_spec.rb
52
+ - spec/legion/extensions/mind_growth/client_spec.rb
53
+ - spec/legion/extensions/mind_growth/helpers/build_pipeline_spec.rb
54
+ - spec/legion/extensions/mind_growth/helpers/cognitive_models_spec.rb
55
+ - spec/legion/extensions/mind_growth/helpers/concept_proposal_spec.rb
56
+ - spec/legion/extensions/mind_growth/helpers/fitness_evaluator_spec.rb
57
+ - spec/legion/extensions/mind_growth/helpers/proposal_store_spec.rb
58
+ - spec/legion/extensions/mind_growth/runners/analyzer_spec.rb
59
+ - spec/legion/extensions/mind_growth/runners/builder_spec.rb
60
+ - spec/legion/extensions/mind_growth/runners/orchestrator_spec.rb
61
+ - spec/legion/extensions/mind_growth/runners/proposer_spec.rb
62
+ - spec/legion/extensions/mind_growth/runners/validator_spec.rb
63
+ - spec/spec_helper.rb
64
+ homepage: https://github.com/LegionIO/lex-mind-growth
65
+ licenses:
66
+ - MIT
67
+ metadata:
68
+ homepage_uri: https://github.com/LegionIO/lex-mind-growth
69
+ source_code_uri: https://github.com/LegionIO/lex-mind-growth
70
+ documentation_uri: https://github.com/LegionIO/lex-mind-growth
71
+ changelog_uri: https://github.com/LegionIO/lex-mind-growth
72
+ bug_tracker_uri: https://github.com/LegionIO/lex-mind-growth/issues
73
+ rubygems_mfa_required: 'true'
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '3.4'
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ requirements: []
88
+ rubygems_version: 3.6.9
89
+ specification_version: 4
90
+ summary: LEX Mind Growth
91
+ test_files: []