diff --git a/engine/decision_engine.py b/engine/decision_engine.py index c396ea0..791ed4e 100644 --- a/engine/decision_engine.py +++ b/engine/decision_engine.py @@ -14,7 +14,7 @@ def _constraint_failed(candidate: ScoreResult, constraint: ConstraintSpec) -> bo return value < constraint.value if constraint.op == "==": return value != constraint.value - return True + raise ValueError(f"unsupported constraint operator: {constraint.op}") def decide_candidate( @@ -30,7 +30,7 @@ def decide_candidate( status="crash", reason=f"command failed with exit code {run_result.exit_code}", baseline_score=baseline, - candidate_score=candidate.primary_score, + candidate_score=None, ) failed_constraints = [ diff --git a/engine/scorer.py b/engine/scorer.py index c3a1bf4..a6d7b00 100644 --- a/engine/scorer.py +++ b/engine/scorer.py @@ -10,12 +10,12 @@ def parse_score_output(output: str, score_field: str, metrics_field: str) -> Sco if not isinstance(parsed, dict): raise ValueError("score output must be a JSON object") - metrics = parsed.get(metrics_field, {}) + metrics = parsed[metrics_field] if not isinstance(metrics, dict): raise ValueError(f"{metrics_field} must be a JSON object") return ScoreResult( primary_score=float(parsed[score_field]), - metrics=metrics, + metrics=dict(metrics), raw_output=parsed, )