#!/usr/bin/env python3
from pathlib import Path
import json,sys
from query_safety import validate_single_read_only_query
root=Path(__file__).resolve().parents[1]
contract=json.loads((root/'model-contract.json').read_text()); starter=(root/'sql/starter_broken.sql').read_text(); query=(root/'sql/query.sql').read_text(); status=json.loads((root/'evidence/runtime-status.json').read_text())
issues=[]
if contract.get('starter_must_not_pre_solve_skill') is not True: issues.append('STARTER_POLICY_MISSING')
if 'li_again' not in starter or "WHERE o.status = 'paid'" not in starter: issues.append('STARTER_FAILURE_NOT_PRESENT')
if 'TODO 1' not in query or 'TODO 5' not in query: issues.append('LEARNER_SCAFFOLD_MISSING')
if 'order_totals AS' in query and 'customer_rollup AS' in query and 'RANK() OVER' in query.upper(): issues.append('LEARNER_QUERY_PRE_SOLVED')
if status.get('fabricated_runtime_evidence') is not False: issues.append('FABRICATED_RUNTIME_FLAG')
ok,safety=validate_single_read_only_query(query)
if not ok: issues.extend('QUERY_SAFETY:'+x for x in safety)
out={'schema':'DAT006_STATIC_PREFLIGHT_v2','status':'PASS' if not issues else 'FAIL','issues':issues}
print(json.dumps(out,indent=2)); sys.exit(0 if not issues else 1)
