#!/usr/bin/env python3
"""Vaultfire enterprise final audit runner."""

import argparse
import json
from pathlib import Path

from codex.enterprise_sync_validator import EnterpriseCodexValidator

COUNCIL_LOG = Path("governance/council_logs_enterprise.json")
TIMELINE_MAP = Path("governance/governance_timeline_map.json")
METADATA_TAG = "vaultfire.v2.3-encryption-core"


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


def main() -> None:
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("--full", action="store_true", help="Run every audit stage")
    args = parser.parse_args()

    if not args.full:
        raise SystemExit("Use --full to execute the enterprise audit")

    validator = EnterpriseCodexValidator()
    results = validator.run()
    status = all(result.passed for result in results)

    council_data = load_json(COUNCIL_LOG)
    timeline_data = load_json(TIMELINE_MAP)
    readiness = Path("vaultfire_ready.flag")
    readiness_payload = json.loads(readiness.read_text(encoding="utf-8"))

    payload = {
        "codex": {
            "status": "PASS" if status else "FAIL",
            "results": [
                {"name": result.name, "passed": result.passed, "details": result.details}
                for result in results
            ],
        },
        "governance": {
            "entries": len(council_data.get("entries", [])),
            "members": len(council_data.get("council", [])),
            "timeline_points": len(timeline_data.get("timeline", [])),
        },
        "metadata_tag": readiness_payload.get("metadata_tag"),
    }

    print(json.dumps(payload, indent=2))

    if payload["metadata_tag"] != METADATA_TAG:
        raise SystemExit("Metadata tag mismatch")
    if payload["codex"]["status"] != "PASS":
        raise SystemExit("Codex validation failed")
    if payload["governance"]["entries"] < 2:
        raise SystemExit("Insufficient governance entries")


if __name__ == "__main__":
    main()
