Module: Legion::Extensions::Synapse::Runners::Evaluate
- Includes:
- Helpers::Lex, Propose
- Included in:
- Client
- Defined in:
- lib/legion/extensions/synapse/runners/evaluate.rb
Constant Summary
Constants included from Propose
Propose::PAIN_CORRELATION_THRESHOLD
Instance Method Summary collapse
Methods included from Propose
#propose_proactive, #propose_reactive
Instance Method Details
#evaluate(synapse_id:, payload: {}, conditioner_client: nil, transformer_client: nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 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 |
# File 'lib/legion/extensions/synapse/runners/evaluate.rb', line 17 def evaluate(synapse_id:, payload: {}, conditioner_client: nil, transformer_client: nil) Data::Model.define_synapse_model Data::Model.define_synapse_signal_model Data::Model.define_synapse_proposal_model synapse = Data::Model::Synapse[synapse_id] return { success: false, error: 'synapse not found' } unless synapse return { success: false, error: 'synapse not active' } unless Helpers::Confidence::EVALUABLE_STATUSES.include?(synapse.status) mode = Helpers::Confidence.autonomy_mode(synapse.confidence) start_time = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, :millisecond) # Step 1: Attention check attention_result = check_attention(synapse, payload, mode, conditioner_client) # Step 2: Transform (if attention passed and confidence allows) transform_result = if attention_result[:passed] && Helpers::Confidence.can_transform?(synapse.confidence) run_transform(synapse, payload, transformer_client) else { success: attention_result[:passed], result: payload } end elapsed = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, :millisecond) - start_time # Step 3: Record signal record_signal(synapse, attention_result[:passed], transform_result[:success], elapsed) # Step 4: Adjust confidence (skip if run_transform already penalized for validation failure) if transform_result[:validation_failure] # run_transform already adjusted confidence; reload to get the updated value new_confidence = synapse.confidence else event = transform_result[:success] ? :success : :failure new_confidence = Helpers::Confidence.adjust(synapse.confidence, event) synapse.update(confidence: new_confidence) end # Step 5: Generate proposals if autonomous if Helpers::Confidence.can_self_modify?(new_confidence) && Helpers::Proposals.reactive? signal_record = Data::Model::SynapseSignal.where(synapse_id: synapse.id).order(Sequel.desc(:id)).first propose_reactive( synapse: synapse, payload: payload, signal_id: signal_record&.id, attention_result: attention_result, transform_result: transform_result, transformer_client: transformer_client ) end { success: transform_result[:success], mode: mode, passed: attention_result[:passed], transformed: transform_result[:success], result: transform_result[:result], latency_ms: elapsed } end |