Expand golden QA benchmark scenarios
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-06-18 21:46:19 +02:00
parent 5128b9ced0
commit c85953f389
14 changed files with 417 additions and 28 deletions
@@ -27,7 +27,21 @@ def test_golden_qa_expected_metrics_are_documented() -> None:
assert expected["tolerance"] <= 1e-9
def test_golden_qa_benchmark_command_passes_and_reports_persistence() -> None:
def test_golden_qa_benchmark_manifest_covers_multiple_regression_scenarios() -> None:
manifest_path = ROOT / "fixtures" / "golden" / "golden_qa_benchmarks.json"
manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
scenario_ids = {scenario["benchmark_id"] for scenario in manifest["scenarios"]}
assert manifest["version"] == 1
assert {
"golden-buildings-partial-match-v1",
"golden-buildings-perfect-match-v1",
"golden-buildings-no-overlap-v1",
"golden-buildings-multipolygon-match-v1",
}.issubset(scenario_ids)
def test_golden_qa_benchmark_command_passes_all_scenarios_and_reports_persistence() -> None:
script = ROOT / "scripts" / "run_golden_qa_benchmark.py"
result = subprocess.run(
[sys.executable, str(script), "--json"],
@@ -39,14 +53,33 @@ def test_golden_qa_benchmark_command_passes_and_reports_persistence() -> None:
payload = json.loads(result.stdout)
assert payload["status"] == "passed"
assert payload["benchmark_id"] == "golden-buildings-partial-match-v1"
assert payload["metrics"]["precision"] == 0.5
assert payload["metrics"]["recall"] == 0.5
assert payload["metrics"]["f1"] == 0.5
assert payload["metrics"]["false_positive_count"] == 1
assert payload["metrics"]["false_negative_count"] == 1
assert payload["persistence"]["quality_check_count"] == 1
assert payload["persistence"]["metric_count"] == 6
assert payload["scenario_count"] >= 4
scenarios = {scenario["benchmark_id"]: scenario for scenario in payload["scenarios"]}
partial = scenarios["golden-buildings-partial-match-v1"]
perfect = scenarios["golden-buildings-perfect-match-v1"]
no_overlap = scenarios["golden-buildings-no-overlap-v1"]
multipolygon = scenarios["golden-buildings-multipolygon-match-v1"]
assert partial["metrics"]["precision"] == 0.5
assert partial["metrics"]["recall"] == 0.5
assert partial["metrics"]["f1"] == 0.5
assert partial["metrics"]["false_positive_count"] == 1
assert partial["metrics"]["false_negative_count"] == 1
assert perfect["metrics"]["precision"] == 1.0
assert perfect["metrics"]["recall"] == 1.0
assert perfect["metrics"]["f1"] == 1.0
assert perfect["metrics"]["mean_iou"] == 1.0
assert no_overlap["metrics"]["precision"] == 0.0
assert no_overlap["metrics"]["recall"] == 0.0
assert no_overlap["metrics"]["f1"] is None
assert no_overlap["metrics"]["mean_iou"] is None
assert multipolygon["metrics"]["precision"] == 1.0
assert multipolygon["metrics"]["recall"] == 1.0
assert multipolygon["metrics"]["f1"] == 1.0
assert multipolygon["metrics"]["mean_iou"] == 1.0
assert payload["persistence"]["quality_check_count"] == payload["scenario_count"]
assert payload["persistence"]["metric_count"] == payload["scenario_count"] * 6
assert sorted(payload["persistence"]["metric_keys"]) == [
"f1",
"false_negative_count",
@@ -63,6 +96,7 @@ def test_golden_qa_shell_wrapper_is_safe_and_documented() -> None:
assert "set -euo pipefail" in content
assert "run_golden_qa_benchmark.py --json" in content
assert "import sys, geoalchemy2" in content
result = subprocess.run(
["bash", "-n", "scripts/verify_golden_qa_benchmark.sh"],