@@ -1043,24 +1043,37 @@ async def _execute_trace_stage(
10431043 phase = "candidate" , split = "validation" ,
10441044 )
10451045 progress .enter ("analysis" )
1046- analysis = build_evaluation_analysis (
1047- baseline_train = baseline_train ,
1048- baseline_validation = baseline_validation ,
1049- candidate_train = candidate_train ,
1050- candidate_validation = candidate_validation ,
1051- hard_case_ids = set (prepared .config .case_labels .hard_case_ids ),
1052- critical_case_ids = set (prepared .config .case_labels .critical_case_ids ),
1053- severe_case_score_drop = prepared .config .gate .severe_case_score_drop ,
1054- )
1046+ try :
1047+ analysis = build_evaluation_analysis (
1048+ baseline_train = baseline_train ,
1049+ baseline_validation = baseline_validation ,
1050+ candidate_train = candidate_train ,
1051+ candidate_validation = candidate_validation ,
1052+ hard_case_ids = set (prepared .config .case_labels .hard_case_ids ),
1053+ critical_case_ids = set (prepared .config .case_labels .critical_case_ids ),
1054+ severe_case_score_drop = prepared .config .gate .severe_case_score_drop ,
1055+ )
1056+ except EvaluationAnalysisError as exc :
1057+ raise PipelineStageExecutionError (
1058+ f"stage 3a analysis failed: { exc } "
1059+ ) from exc
10551060 measurements = ResourceMeasurements (
10561061 cost_usd = ObservableValue (status = "unavailable" , unit = "USD" , reason = "Trace replay does not call a model." ),
10571062 total_tokens = ObservableValue (status = "unavailable" , unit = "tokens" , reason = "Trace replay does not call a model." ),
10581063 duration_seconds = ObservableValue (status = "available" , value = perf_counter () - started_at , unit = "seconds" ),
10591064 )
10601065 progress .enter ("gate" )
1061- gate_decision = evaluate_gate (
1062- analysis , prepared .config .gate , prepared .config .budget , measurements
1063- )
1066+ try :
1067+ gate_decision = evaluate_gate (
1068+ analysis ,
1069+ prepared .config .gate ,
1070+ prepared .config .budget ,
1071+ measurements ,
1072+ )
1073+ except GateEvaluationError as exc :
1074+ raise PipelineStageExecutionError (
1075+ f"stage 3b gate failed: { exc } "
1076+ ) from exc
10641077 progress .enter ("writeback" )
10651078 writeback = WritebackResult (
10661079 status = "skipped" , reason = "trace_replay" , attempted = False
0 commit comments