Files
Jyotisha/scripts/traditional_maturity_gap_audit.py
2026-07-08 16:23:45 +08:00

44 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""Report traditional Jyotish maturity gaps beyond technique-name coverage."""
from __future__ import annotations
import argparse
import json
from pathlib import Path
from typing import Any
ROOT = Path(__file__).resolve().parents[1]
DEFAULT_MATRIX = ROOT / "references" / "traditional_maturity_gap_matrix.json"
def build_report(matrix_path: str) -> dict[str, Any]:
matrix = json.loads(Path(matrix_path).read_text(encoding="utf-8"))
priorities = sorted(matrix["priorities"], key=lambda item: item.get("rank", 999))
counts: dict[str, int] = {}
for item in priorities:
counts[item["priority"]] = counts.get(item["priority"], 0) + 1
return {
"scope": matrix["scope"],
"boundary": matrix["boundary"],
"execution_phases": matrix.get("execution_phases", []),
"summary": counts,
"ordered_priorities": [{"rank": item.get("rank"), "id": item["id"], "priority": item["priority"]} for item in priorities],
"p0": [item for item in priorities if item["priority"] == "P0"],
"p1": [item for item in priorities if item["priority"] == "P1"],
"p2": [item for item in priorities if item["priority"] == "P2"],
}
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--matrix", default=str(DEFAULT_MATRIX))
args = parser.parse_args()
print(json.dumps(build_report(args.matrix), ensure_ascii=False, indent=2, sort_keys=True))
return 0
if __name__ == "__main__":
raise SystemExit(main())