from __future__ import annotations

import json
from pathlib import Path

from refactor_master_helpers import ROOT, load_yaml, collect_gas_files, read_text


def main() -> int:
    manifest = load_yaml(ROOT / "artifacts" / "canonical_manifest.yaml")
    concepts = manifest.get("concepts", {}) if isinstance(manifest.get("concepts"), dict) else {}
    deprecated = [Path(dep).name for info in concepts.values() if isinstance(info, dict) for dep in info.get("deprecated_files", []) if isinstance(dep, str)]
    violations: list[dict[str, str]] = []
    for path in collect_gas_files():
        text = read_text(path)
        for dep in deprecated:
            if dep in text:
                for lineno, line in enumerate(text.splitlines(), start=1):
                    if dep in line:
                        violations.append({"file": str(path.relative_to(ROOT)), "line": str(lineno), "artifact": dep, "text": line.strip()})
    result = {
        "formula_id": "DEPRECATED_ARTIFACT_READ_V1",
        "deprecated_artifact_count": len(set(deprecated)),
        "violation_count": len(violations),
        "violations": violations[:200],
        "gate": "PASS" if not violations else "FAIL",
    }
    out = ROOT / "Temp" / "deprecated_artifact_read_v1.json"
    out.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(result, ensure_ascii=True, indent=2))
    return 0 if not violations else 1


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