"""실제 P 연속 수식 JSONL을 학습·평가 전에 fail-closed로 감사한다.""" from __future__ import annotations import argparse from datetime import datetime, timezone import json from pathlib import Path import sys PROJECT_ROOT = Path(__file__).parents[1] SOURCE_ROOT = PROJECT_ROOT / "src" if str(SOURCE_ROOT) not in sys.path: sys.path.insert(0, str(SOURCE_ROOT)) from math_grid_drawer.research.external_corpus import read_jsonl from math_grid_drawer.research.p_formula_gate06 import audit_p_formula_records06 def main() -> None: """필요 변수: UTF-8 JSONL·최소 source 수·출력. 작동 원리: 실제 P gate 적격 여부와 모든 누수 원인을 JSON으로 남긴다.""" parser = argparse.ArgumentParser(description="Preflight real P continuous formula data") parser.add_argument("--data", type=Path, required=True) parser.add_argument("--minimum-independent-sources", type=int, default=2) parser.add_argument("--output", type=Path, required=True) args = parser.parse_args() records = list(read_jsonl(args.data)) report = audit_p_formula_records06( records, minimum_independent_sources=args.minimum_independent_sources, ) report["generated_at"] = datetime.now(timezone.utc).isoformat() report["data"] = str(args.data) args.output.parent.mkdir(parents=True, exist_ok=True) args.output.write_text( json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8", ) print(json.dumps(report, ensure_ascii=False, indent=2)) if not report["eligible_for_product_evaluation"]: raise SystemExit(2) if __name__ == "__main__": main()