diff --git a/src/eigenscript/runtime/explain.py b/src/eigenscript/runtime/explain.py index 32a0385..55a3ca3 100644 --- a/src/eigenscript/runtime/explain.py +++ b/src/eigenscript/runtime/explain.py @@ -204,9 +204,12 @@ def explain_improving( ) elif previous_radius is not None and current_radius is not None: delta = current_radius - previous_radius - direction = ( - "decreasing (improving)" if delta < 0 else "increasing (not improving)" - ) + if delta < 0: + direction = "decreasing (improving)" + elif delta > 0: + direction = "increasing (not improving)" + else: + direction = "unchanged (not improving)" print( f" └─ radius: {previous_radius:.4f} → {current_radius:.4f}", file=sys.stderr, diff --git a/tests/test_explain.py b/tests/test_explain.py index 2d25b35..03debdd 100644 --- a/tests/test_explain.py +++ b/tests/test_explain.py @@ -140,6 +140,21 @@ def test_explain_improving(self): assert "radius: 10.0000 → 8.0000" in output assert "decreasing (improving)" in output + def test_explain_improving_flat(self): + """Should explain improving predicate when radius is unchanged.""" + explainer = PredicateExplainer(enabled=True, use_color=False) + stderr = StringIO() + with patch("sys.stderr", stderr): + explainer.explain_improving( + result=False, + previous_radius=5.0, + current_radius=5.0, + trajectory_length=3, + ) + output = stderr.getvalue() + assert "`improving` → FALSE" in output + assert "unchanged (not improving)" in output + def test_explain_improving_insufficient_data(self): """Should explain improving with insufficient trajectory.""" explainer = PredicateExplainer(enabled=True, use_color=False)