Skip to content

Commit b0bd442

Browse files
d4ncerclaude
andcommitted
feat(run_loop): add config/strategy event emissions
Emit config category events from advance_iteration_with_model_selection() for model selection, hint-driven overrides, and strategy-driven escalation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 29ab256 commit b0bd442

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

src/run_loop.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,42 @@ fn advance_iteration_with_model_selection(
622622
}
623623
}
624624

625+
// Capture old model before overwriting for escalation detection
626+
let old_model = config.current_model.clone();
627+
628+
// Config event: model selected (always)
629+
formatter::emit_event_info(
630+
"config",
631+
&format!(
632+
"model={} (strategy={})",
633+
selection.model, config.model_strategy
634+
),
635+
);
636+
637+
// Config event: model override (hint overrode strategy)
638+
if selection.was_overridden {
639+
formatter::emit_event_info(
640+
"config",
641+
&format!(
642+
"model overridden: {} \u{2192} {} (reason={})",
643+
selection.strategy_choice,
644+
selection.model,
645+
selection.hint.as_deref().unwrap_or("agent hint")
646+
),
647+
);
648+
}
649+
650+
// Config event: model escalation (strategy changed model, not hint-driven)
651+
if !selection.was_overridden && selection.model != old_model {
652+
formatter::emit_event_info(
653+
"config",
654+
&format!(
655+
"model escalated: {} \u{2192} {}",
656+
old_model, selection.model
657+
),
658+
);
659+
}
660+
625661
config.current_model = selection.model;
626662
formatter::print_iteration_info(config);
627663
formatter::emit_event_info(

0 commit comments

Comments
 (0)