57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
import json
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
|
|
|
|
def main() -> None:
|
|
proc = subprocess.run(
|
|
[sys.executable, "scripts/promotion_checker.py"],
|
|
cwd=ROOT,
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
payload = json.loads(proc.stdout)
|
|
if proc.returncode != 0:
|
|
raise SystemExit(proc.returncode)
|
|
|
|
summary = payload["summary"]
|
|
assert summary["blocked"] == 0, payload
|
|
assert summary["keep_current"] >= 1, payload
|
|
|
|
targets = payload["targets"]
|
|
assert len(targets) >= 3, payload
|
|
|
|
candidate_registry = json.loads((ROOT / "reports" / "candidate_registry.json").read_text(encoding="utf-8"))
|
|
assert len(candidate_registry["targets"]) == len(targets)
|
|
|
|
for target in targets:
|
|
assert target["decision"] in {"promote", "keep_current", "blocked"}
|
|
assert target["promotion"]["gate_status"]["route_confusion_clean"] is True
|
|
assert target["promotion"]["gate_status"]["judge_blind_agreement"] is True
|
|
assert target["promotion"]["causes"], target
|
|
if target["winner_label"] == "Current":
|
|
assert target["decision"] == "keep_current", target
|
|
if target["name"] == "governed-incident-command":
|
|
assert "current_holdout_gap_present" in target["promotion"]["causes"], target
|
|
|
|
bundle_dir = ROOT / "reports" / "iteration_bundles" / target["name"]
|
|
assert (bundle_dir / "bundle.json").exists(), bundle_dir
|
|
assert (bundle_dir / "bundle.md").exists(), bundle_dir
|
|
assert (bundle_dir / "review.md").exists(), bundle_dir
|
|
|
|
registry_entries = target["registry"]
|
|
roles = {entry["role"] for entry in registry_entries}
|
|
assert "baseline" in roles and "current" in roles, target
|
|
assert any(entry["role"] == "candidate" for entry in registry_entries), target
|
|
|
|
print(json.dumps({"ok": True, "summary": summary}, ensure_ascii=False, indent=2))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|