#!/usr/bin/env python3
import argparse
import json
from pathlib import Path

REPO = Path("/home/shire3d/ARMOR")
CONTRACT_ROOT = (
    REPO
    / "data/academy/design_mastery/contracts"
    / "parameter-architecture-r3-compact-v2"
)
PRACTICE_STATE = (
    REPO
    / "data/academy/design_mastery/runtime/practice_state.json"
)
AUTOPILOT_STATE = (
    REPO
    / "data/academy/design_mastery/runtime/autopilot_state.json"
)

REQUIRED_WIRE_KEYS = {"r", "p", "b", "v", "s", "l"}
REQUIRED_PROJECT_KEYS = {"t", "g", "u", "d", "z", "s", "o", "a"}


def load_json(path: Path) -> dict:
    return json.loads(path.read_text(encoding="utf-8"))


def validate_installation() -> dict:
    manifest = load_json(CONTRACT_ROOT / "manifest.json")
    schema = load_json(CONTRACT_ROOT / "schema.json")
    autopilot = load_json(AUTOPILOT_STATE)
    practice = load_json(PRACTICE_STATE)

    assert manifest["counted_attempt"] is False
    assert manifest["required_score_percent"] == 100
    assert manifest["qualifications_required"] == 3
    assert manifest["forge_execution_allowed"] is False
    assert set(schema["required"]) == REQUIRED_WIRE_KEYS
    assert (
        set(schema["properties"]["p"]["required"])
        == REQUIRED_PROJECT_KEYS
    )
    assert autopilot["counted_execution_enabled"] is False
    assert autopilot["forge_unlock_allowed"] is False

    skill_id = manifest["skill_id"]
    record = practice["skills"][skill_id]

    return {
        "ok": True,
        "runner": "academy_autopilot_uncounted_qualification_v1",
        "skill_id": skill_id,
        "round": manifest["round"],
        "model": manifest["model"],
        "counted_attempt": False,
        "required_score_percent": manifest["required_score_percent"],
        "qualifications_required": manifest["qualifications_required"],
        "current_counted_attempts": record["attempts"],
        "current_successful_rounds": record["successful_attempts"],
        "knowledge_certified": record["knowledge_certified"],
        "forge_allowed": record["forge_allowed"],
        "autopilot_enabled": autopilot["enabled"],
        "autopilot_paused": autopilot["paused"],
        "counted_execution_enabled":
            autopilot["counted_execution_enabled"],
    }


def main() -> int:
    parser = argparse.ArgumentParser(
        description="SHiRE Academy uncounted qualification runner"
    )
    parser.add_argument(
        "command",
        choices=("self-check",),
    )
    args = parser.parse_args()

    if args.command == "self-check":
        print(json.dumps(validate_installation(), indent=2))
        return 0

    return 2


if __name__ == "__main__":
    raise SystemExit(main())
