Module: Legion::Extensions::Synapse::Runners::Propose
- Includes:
- Helpers::Lex
- Included in:
- Actor::Propose, Client, Evaluate
- Defined in:
- lib/legion/extensions/synapse/runners/propose.rb
Constant Summary collapse
- PAIN_CORRELATION_THRESHOLD =
3
Instance Method Summary collapse
- #propose_proactive ⇒ Object
- #propose_reactive(synapse:, payload:, signal_id:, attention_result:, transform_result:, transformer_client: nil) ⇒ Object
Instance Method Details
#propose_proactive ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/legion/extensions/synapse/runners/propose.rb', line 38 def propose_proactive Data::Model.define_synapse_model Data::Model.define_synapse_proposal_model Data::Model.define_synapse_signal_model return { proposals: [] } unless Helpers::Proposals.proactive? settings = Helpers::Proposals.settings max_per_run = settings[:max_per_run] || 3 all_proposals = [] Data::Model::Synapse.where(status: 'active').all.each do |synapse| next unless Helpers::Confidence.can_self_modify?(synapse.confidence) count = 0 proposal = analyze_success_rate(synapse, settings) if proposal all_proposals << proposal count += 1 end if count < max_per_run proposal = analyze_payload_drift(synapse, settings) if proposal all_proposals << proposal count += 1 end end if count < max_per_run proposal = analyze_routing(synapse) all_proposals << proposal if proposal end end { proposals: all_proposals } end |
#propose_reactive(synapse:, payload:, signal_id:, attention_result:, transform_result:, transformer_client: nil) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/legion/extensions/synapse/runners/propose.rb', line 16 def propose_reactive(synapse:, payload:, signal_id:, attention_result:, transform_result:, transformer_client: nil) Data::Model.define_synapse_proposal_model return { proposals: [] } unless Helpers::Proposals.reactive? return { proposals: [] } unless transformer_client proposals = [] # Trigger 1: No transform template exists proposals << propose_llm_transform(synapse, payload, signal_id, transformer_client) if synapse.transform.nil? || synapse.transform.to_s.strip.empty? # Trigger 2: Transform failed if transform_result[:success] == false && synapse.transform && !synapse.transform.to_s.strip.empty? proposals << propose_transform_fix(synapse, payload, signal_id, transform_result, transformer_client) end # Trigger 3: Pain correlation — attention passed but recent downstream failures proposals << propose_attention_adjustment(synapse, payload, signal_id, transformer_client) if attention_result[:passed] && pain_pattern?(synapse) { proposals: proposals.compact } end |