Files
yao-meta-skill/tests/verify_quality_checks.py
T
2026-03-31 22:22:18 +08:00

127 lines
4.2 KiB
Python

#!/usr/bin/env python3
import json
import subprocess
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
def run(name: str, cmd: list[str], expect_ok: bool = True, expected_substrings: list[str] | None = None) -> dict:
proc = subprocess.run(cmd, cwd=ROOT, capture_output=True, text=True)
payload = {}
if proc.stdout.strip():
try:
payload = json.loads(proc.stdout)
except json.JSONDecodeError:
payload = {"raw_stdout": proc.stdout}
joined = proc.stdout + "\n" + proc.stderr
passed = proc.returncode == 0 if expect_ok else proc.returncode == 2
if expected_substrings:
passed = passed and all(fragment in joined for fragment in expected_substrings)
return {
"name": name,
"passed": passed,
"returncode": proc.returncode,
"stdout": proc.stdout,
"stderr": proc.stderr,
"payload": payload,
}
def require_min_score(case: dict, minimum: int) -> None:
score = case.get("payload", {}).get("details", {}).get("governance_score")
case["minimum_score"] = minimum
case["observed_score"] = score
case["passed"] = case["passed"] and score is not None and score >= minimum
def require_context_targets(case: dict, max_initial: int, min_density: float) -> None:
stats = case.get("payload", {}).get("stats", {})
initial = stats.get("estimated_initial_load_tokens")
density = stats.get("quality_density")
unused = stats.get("unused_resource_dirs", [])
case["max_initial_load"] = max_initial
case["observed_initial_load"] = initial
case["minimum_quality_density"] = min_density
case["observed_quality_density"] = density
case["unused_resource_dirs"] = unused
case["passed"] = (
case["passed"]
and initial is not None
and density is not None
and initial <= max_initial
and density >= min_density
and not unused
)
def main() -> None:
python = sys.executable
cases = []
root_governance = run(
"root_governance",
[python, "scripts/governance_check.py", str(ROOT), "--require-manifest"],
)
require_min_score(root_governance, 90)
cases.append(root_governance)
root_resource = run(
"root_resource_boundaries",
[python, "scripts/resource_boundary_check.py", str(ROOT)],
)
require_context_targets(root_resource, 1000, 100.0)
cases.append(root_resource)
complex_resource = run(
"complex_example_resource_boundaries",
[python, "scripts/resource_boundary_check.py", str(ROOT / "examples" / "complex-release-orchestrator" / "generated-skill")],
)
require_context_targets(complex_resource, 1000, 120.0)
governed_resource = run(
"governed_example_resource_boundaries",
[python, "scripts/resource_boundary_check.py", str(ROOT / "examples" / "governed-incident-command" / "generated-skill")],
)
require_context_targets(governed_resource, 1000, 120.0)
cases.extend([
run(
"complex_example_governance",
[python, "scripts/governance_check.py", str(ROOT / "examples" / "complex-release-orchestrator" / "generated-skill"), "--require-manifest"],
),
complex_resource,
run(
"invalid_governance_manifest",
[python, "scripts/governance_check.py", str(ROOT / "tests" / "fixtures" / "governance_invalid_manifest"), "--require-manifest"],
expect_ok=False,
expected_substrings=[
"Missing manifest fields",
"Invalid status",
"updated_at must use YYYY-MM-DD",
"manifest name does not match",
],
),
])
governed_example = run(
"governed_example_governance",
[python, "scripts/governance_check.py", str(ROOT / "examples" / "governed-incident-command" / "generated-skill"), "--require-manifest"],
)
require_min_score(governed_example, 90)
cases.insert(4, governed_example)
cases.insert(5, governed_resource)
report = {"ok": all(case["passed"] for case in cases), "cases": cases}
print(json.dumps(report, ensure_ascii=False, indent=2))
if not report["ok"]:
raise SystemExit(2)
if __name__ == "__main__":
main()