Module: Legion::Extensions::MindGrowth::Runners::Validator

Extended by:
Validator
Included in:
Validator
Defined in:
lib/legion/extensions/mind_growth/runners/validator.rb

Instance Method Summary collapse

Instance Method Details

#validate_fitness(extensions:) ⇒ Object



37
38
39
40
41
42
43
44
# File 'lib/legion/extensions/mind_growth/runners/validator.rb', line 37

def validate_fitness(extensions:, **)
  ranked  = Helpers::FitnessEvaluator.rank(extensions)
  prune   = Helpers::FitnessEvaluator.prune_candidates(extensions)
  improve = Helpers::FitnessEvaluator.improvement_candidates(extensions)
  { success: true, ranked: ranked, prune_candidates: prune.size, improvement_candidates: improve.size }
rescue ArgumentError => e
  { success: false, error: e.message }
end

#validate_proposal(proposal_id:) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/legion/extensions/mind_growth/runners/validator.rb', line 10

def validate_proposal(proposal_id:, **)
  proposal = find_proposal(proposal_id)
  return { success: false, error: :not_found } unless proposal

  issues = []
  issues << 'missing name'        if proposal.name.nil? || proposal.name.empty?
  issues << 'missing module_name' if proposal.module_name.nil? || proposal.module_name.empty?
  issues << 'missing category'    unless Helpers::Constants::CATEGORIES.include?(proposal.category&.to_sym)
  issues << 'missing description' if proposal.description.nil? || proposal.description.empty?

  { success: issues.empty?, valid: issues.empty?, issues: issues, proposal_id: proposal_id }
rescue ArgumentError => e
  { success: false, error: e.message }
end

#validate_scores(scores:) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/legion/extensions/mind_growth/runners/validator.rb', line 25

def validate_scores(scores:, **)
  issues = []
  Helpers::Constants::EVALUATION_DIMENSIONS.each do |dim|
    value = scores[dim]
    issues << "missing #{dim}" if value.nil?
    issues << "#{dim} out of range (#{value})" if value && (value < 0.0 || value > 1.0)
  end
  { success: issues.empty?, valid: issues.empty?, issues: issues }
rescue ArgumentError => e
  { success: false, error: e.message }
end