Sage / tests /test_eval_status.py
vxa8502's picture
Fix tests broken by stage-language scrub and API changes since last CI run
b4efee8
Raw
History Blame Contribute Delete
3.75 kB
"""Tests for shared evaluation status surfaces."""
from __future__ import annotations
import json
import os
from datetime import datetime, timedelta
from pathlib import Path
from sage.cli.eval_status import build_eval_status
def _write_json(path: Path, payload: dict) -> None:
path.write_text(json.dumps(payload), encoding="utf-8")
def _write_complete_eval_artifacts(
root: Path,
*,
ndcg_at_10: float = 0.20,
faithfulness_score: float = 0.90,
sample_limited: bool = False,
) -> None:
_write_json(
root / "eval_natural_queries_latest.json",
{
"primary_metrics": {
"ndcg_at_10": ndcg_at_10,
"hit_at_10": 0.33,
"mrr": 0.16,
},
"experiments": {
"baselines": {
"random": {"ndcg_at_10": 0.000},
"item_knn": {"ndcg_at_10": 0.134},
}
},
},
)
_write_json(
root / "faithfulness_latest.json",
{
"multi_metric": {
"claim_level_avg_score": faithfulness_score,
},
"evaluation_scope": {
"sample_limited": sample_limited,
"generation_limited": False,
},
"target": 0.85,
},
)
_write_json(
root / "adjusted_faithfulness_latest.json",
{
"adjusted_pass_rate": 0.95,
"n_total": 10,
},
)
_write_json(
root / "boundary_behavior_latest.json",
{
"boundary_guardrail": {
"status": "pass",
"violations": [],
}
},
)
_write_json(
root / "load_test_latest.json",
{
"headline_metric": {
"value_ms": 320.0,
"pass": True,
}
},
)
def test_eval_status_passes_when_required_artifacts_are_complete(tmp_path: Path):
_write_complete_eval_artifacts(tmp_path)
status = build_eval_status(results_dir=tmp_path)
assert status["execution_complete"] is True
assert status["safety_green"] is True
assert status["reportable_green"] is True
assert status["reportable_status"] == "PASS [reportable-green]"
def test_eval_status_withholds_reportable_when_retrieval_floor_is_missed(
tmp_path: Path,
):
_write_complete_eval_artifacts(tmp_path, ndcg_at_10=0.05)
status = build_eval_status(results_dir=tmp_path)
assert status["execution_complete"] is True
assert status["reportable_green"] is False
assert any(
"NDCG@10=0.050 < 0.100" in reason for reason in status["reportable_reasons"]
)
def test_eval_status_withholds_reportable_for_sampled_faithfulness_run(
tmp_path: Path,
):
_write_complete_eval_artifacts(tmp_path, sample_limited=True)
status = build_eval_status(results_dir=tmp_path)
assert status["execution_complete"] is True
assert status["reportable_green"] is False
assert any("sampled" in reason.lower() for reason in status["reportable_reasons"])
def test_eval_status_detects_stale_current_run_artifact(tmp_path: Path):
_write_complete_eval_artifacts(tmp_path)
stale_path = tmp_path / "load_test_latest.json"
stale_time = datetime.now().timestamp() - 7200
os.utime(stale_path, (stale_time, stale_time))
status = build_eval_status(
results_dir=tmp_path,
run_started_at=datetime.now() - timedelta(minutes=5),
)
assert status["execution_complete"] is False
assert any(
"was not refreshed during the current evaluation run" in reason
for reason in status["execution_reasons"]
)
assert status["reportable_green"] is False