Files
yao-meta-skill/tests/verify_evidence_consistency.py
T
2026-06-15 21:58:35 +08:00

121 lines
4.5 KiB
Python

#!/usr/bin/env python3
import json
import shutil
import subprocess
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
SCRIPT = ROOT / "scripts" / "render_evidence_consistency.py"
TMP = ROOT / "tests" / "tmp_evidence_consistency"
REPORT_FILES = [
"reports/benchmark_reproducibility.json",
"reports/skill-overview.json",
"reports/skill-overview.html",
"reports/skill-interpretation.json",
"reports/skill-interpretation.html",
"reports/adoption_drift_report.json",
"reports/world_class_evidence_ledger.json",
"reports/skill_os2_coverage.json",
"reports/review-studio.json",
]
def run(cmd: list[str], *, check: bool = False) -> subprocess.CompletedProcess[str]:
return subprocess.run(cmd, cwd=ROOT, capture_output=True, text=True, check=check)
def copy_reports(dst: Path) -> None:
for relative in REPORT_FILES:
source = ROOT / relative
target = dst / relative
target.parent.mkdir(parents=True, exist_ok=True)
shutil.copy2(source, target)
def refresh_embedded_reports() -> None:
script_names = [
"render_benchmark_reproducibility.py",
"render_skill_os2_coverage.py",
"render_skill_overview.py",
"render_skill_interpretation.py",
]
for script_name in script_names:
subprocess.run(
[sys.executable, str(ROOT / "scripts" / script_name), str(ROOT)],
cwd=ROOT,
check=True,
capture_output=True,
text=True,
)
def main() -> None:
shutil.rmtree(TMP, ignore_errors=True)
TMP.mkdir(parents=True, exist_ok=True)
refresh_embedded_reports()
output_json = TMP / "evidence_consistency.json"
output_md = TMP / "evidence_consistency.md"
proc = run(
[
sys.executable,
str(SCRIPT),
str(ROOT),
"--output-json",
str(output_json),
"--output-md",
str(output_md),
"--generated-at",
"2026-06-15",
],
check=True,
)
payload = json.loads(proc.stdout)
assert payload["schema_version"] == "1.0", payload
assert payload["ok"] is True, payload
assert payload["summary"]["decision"] == "consistent", payload
assert payload["summary"]["fail_count"] == 0, payload
assert payload["summary"]["check_count"] >= 26, payload
checks = {item["key"]: item for item in payload["checks"]}
assert checks["overview-benchmark-summary"]["status"] == "pass", checks["overview-benchmark-summary"]
assert checks["interpretation-adoption-summary"]["status"] == "pass", checks["interpretation-adoption-summary"]
assert checks["coverage-world-class-boundary"]["status"] == "pass", checks["coverage-world-class-boundary"]
assert checks["review-studio-no-overclaim"]["status"] == "pass", checks["review-studio-no-overclaim"]
markdown = output_md.read_text(encoding="utf-8")
assert "Evidence Consistency" in markdown, markdown
assert "decision: `consistent`" in markdown, markdown
assert "does not create provider, human, native-client, or permission-enforcement evidence" in markdown, markdown
drift_root = TMP / "drift-skill"
copy_reports(drift_root)
overview_path = drift_root / "reports" / "skill-overview.json"
overview = json.loads(overview_path.read_text(encoding="utf-8"))
overview["adoption_drift"]["summary"]["adoption_sample_count"] += 1
overview_path.write_text(json.dumps(overview, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
drift_proc = run(
[
sys.executable,
str(SCRIPT),
str(drift_root),
"--output-json",
str(TMP / "drift.json"),
"--output-md",
str(TMP / "drift.md"),
"--generated-at",
"2026-06-15",
]
)
assert drift_proc.returncode == 2, drift_proc.stdout
drift_payload = json.loads(drift_proc.stdout)
drift_checks = {item["key"]: item for item in drift_payload["checks"]}
assert drift_payload["ok"] is False, drift_payload
assert drift_payload["summary"]["decision"] == "evidence-drift-detected", drift_payload
assert drift_checks["overview-adoption-summary"]["status"] == "fail", drift_checks["overview-adoption-summary"]
assert drift_checks["interpretation-adoption-summary"]["status"] == "pass", drift_checks["interpretation-adoption-summary"]
print(json.dumps({"ok": True}, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()