Module: Legion::Extensions::Assessor::Helpers::ConfigTemplates

Extended by:
ConfigTemplates
Included in:
ConfigTemplates
Defined in:
lib/legion/extensions/assessor/helpers/config_templates.rb

Constant Summary collapse

TEMPLATES =
{
  trivial_fix:         {
    planning:       { enabled: false, solvers: 1, validators: 0, max_iterations: 1 }.freeze,
    implementation: { solvers: 1, validators: 0, max_iterations: 1, models: nil }.freeze,
    validation:     { enabled: false, run_tests: true, run_lint: true, security_scan: false, adversarial_review: false, reviewer_models: nil }.freeze,
    feedback:       { drain_enabled: false, max_drain_rounds: 1, summarize_after: 1 }.freeze
  }.freeze,
  simple_bug:          {
    planning:       { enabled: false, solvers: 1, validators: 0, max_iterations: 1 }.freeze,
    implementation: { solvers: 1, validators: 1, max_iterations: 3, models: nil }.freeze,
    validation:     { enabled: true, run_tests: true, run_lint: true, security_scan: true, adversarial_review: true, reviewer_models: nil }.freeze,
    feedback:       { drain_enabled: true, max_drain_rounds: 2, summarize_after: 2 }.freeze
  }.freeze,
  moderate_feature:    {
    planning:       { enabled: true, solvers: 1, validators: 1, max_iterations: 2 }.freeze,
    implementation: { solvers: 1, validators: 3, max_iterations: 5, models: nil }.freeze,
    validation:     { enabled: true, run_tests: true, run_lint: true, security_scan: true, adversarial_review: true, reviewer_models: nil }.freeze,
    feedback:       { drain_enabled: true, max_drain_rounds: 3, summarize_after: 2 }.freeze
  }.freeze,
  complex_feature:     {
    planning:       { enabled: true, solvers: 2, validators: 2, max_iterations: 3 }.freeze,
    implementation: { solvers: 2, validators: 3, max_iterations: 8, models: nil }.freeze,
    validation:     { enabled: true, run_tests: true, run_lint: true, security_scan: true, adversarial_review: true, reviewer_models: nil }.freeze,
    feedback:       { drain_enabled: true, max_drain_rounds: 3, summarize_after: 2 }.freeze
  }.freeze,
  critical_production: {
    # planning skipped intentionally: critical items need immediate action, not planning overhead
    planning:       { enabled: false, solvers: 1, validators: 0, max_iterations: 1 }.freeze,
    implementation: { solvers: 3, validators: 3, max_iterations: 10, models: nil }.freeze,
    validation:     { enabled: true, run_tests: true, run_lint: true, security_scan: true, adversarial_review: true, reviewer_models: nil }.freeze,
    feedback:       { drain_enabled: true, max_drain_rounds: 3, summarize_after: 2 }.freeze
  }.freeze,
  background:          {
    # validation.enabled=false is the gate; run_tests/run_lint pre-configured if re-enabled via override
    planning:       { enabled: false, solvers: 1, validators: 0, max_iterations: 1 }.freeze,
    implementation: { solvers: 1, validators: 0, max_iterations: 2, models: nil }.freeze,
    validation:     { enabled: false, run_tests: true, run_lint: true, security_scan: false, adversarial_review: false, reviewer_models: nil }.freeze,
    feedback:       { drain_enabled: false, max_drain_rounds: 1, summarize_after: 1 }.freeze
  }.freeze
}.freeze
DEFAULT_TEMPLATE =
:moderate_feature

Instance Method Summary collapse

Instance Method Details

#for_classification(complexity:) ⇒ Object



53
54
55
56
57
# File 'lib/legion/extensions/assessor/helpers/config_templates.rb', line 53

def for_classification(complexity:)
  key = complexity.to_sym
  template = TEMPLATES.fetch(key) { TEMPLATES[DEFAULT_TEMPLATE] }
  deep_dup(template)
end

#merge_with_overrides(template:, overrides:) ⇒ Object



59
60
61
62
63
# File 'lib/legion/extensions/assessor/helpers/config_templates.rb', line 59

def merge_with_overrides(template:, overrides:)
  return deep_dup(template) if overrides.nil? || overrides.empty?

  deep_merge(template, overrides)
end