Files
Jyotisha/scripts/rangacharya_readiness.py
T
2026-07-17 01:03:50 +08:00

59 lines
1.9 KiB
Python

"""Readiness report for the experimental Rangacharya variant."""
from __future__ import annotations
import json
from pathlib import Path
from typing import Any, Dict
ROOT = Path(__file__).resolve().parent.parent
CARDS_PATH = ROOT / "references" / "rangacharya_source_cards.json"
MANIFEST_PATH = ROOT / "references" / "rangacharya_source_manifest.json"
def _load_json(path: Path) -> Dict[str, Any]:
try:
return json.loads(path.read_text(encoding="utf-8"))
except (FileNotFoundError, json.JSONDecodeError):
return {}
def build_report() -> Dict[str, Any]:
cards_payload = _load_json(CARDS_PATH)
manifest_payload = _load_json(MANIFEST_PATH)
cards = {}
blocked = []
transcribed = []
for card in cards_payload.get("cards", []):
card_id = str(card.get("id") or "")
if not card_id:
continue
status = str(card.get("status") or "blocked")
adjudication_enabled = bool(card.get("adjudication_enabled"))
cards[card_id] = {
"status": status,
"adjudication_enabled": adjudication_enabled,
"blocked_reason": card.get("blocked_reason") or "",
}
if status == "blocked" or not adjudication_enabled:
blocked.append(card_id)
if status == "transcribed":
transcribed.append(card_id)
return {
"scope": "rangacharya_readiness",
"manifest_available": bool(manifest_payload),
"source_cards_available": bool(cards_payload),
"adjudication_enabled": bool(cards) and not blocked,
"card_count": len(cards),
"blocked_count": len(blocked),
"transcribed_count": len(transcribed),
"blocked_cards": blocked,
"transcribed_cards": transcribed,
"cards": cards,
}
if __name__ == "__main__":
print(json.dumps(build_report(), ensure_ascii=False, indent=2, sort_keys=True))