Files
yao-meta-skill/tests/verify_promotion_checker.py
T
2026-04-01 07:55:04 +08:00

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()