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())