#!/usr/bin/env python3
from pathlib import Path
import json,re,sys
root=Path(__file__).resolve().parents[2]
checks=[]
def ck(n,c): checks.append((n,bool(c)))
def strip_sql(s):
    s=re.sub(r'/\*.*?\*/',' ',s,flags=re.S)
    return re.sub(r'--[^\n]*',' ',s)
mc=json.loads((root/'learner/model-contract.json').read_text())
status=json.loads((root/'learner/evidence/runtime-status.json').read_text())
labels=json.loads((root/'learner/fixture/query-labels.json').read_text())
policy=json.loads((root/'learner/toolchain-policy.json').read_text())
work=(root/'learner/sql/03_search_workbench.template.sql').read_text(); ex=strip_sql(work)
seed=(root/'learner/sql/02_seed.sql').read_text(); schema=(root/'learner/sql/01_schema.sql').read_text()
expected=['config_normalization','document_query_types','query_parsers','ranking_boundary','gin_index','search_evaluation']
ck('dimensions_exact',mc.get('required_dimensions')==expected)
ck('five_decisions_open',len(mc.get('starter_decisions_left_open',[]))==5)
ck('starter_todos_executable',all(x in ex for x in ['__TODO_CONFIG__','__TODO_TITLE_WEIGHT__','__TODO_BODY_WEIGHT__','__TODO_QUERY_PARSER__','__TODO_INDEX_DECISION_SQL__']))
ck('starter_pipeline_executable',all(x.lower() in ex.lower() for x in ['to_tsvector','@@','ts_rank','explain']))
ck('three_queries_exact',[q['id'] for q in labels['queries']]==['Q1','Q2','Q3'])
ck('parser_decoy',labels['queries'][1].get('hard_negative_doc_ids')==[7] and "(7,'pool-sizing-connection'" in seed)
ck('schema_contract',all(x in schema for x in ['id integer PRIMARY KEY','slug text NOT NULL UNIQUE','title text NOT NULL','body text NOT NULL']))
ck('runtime_not_claimed',status.get('status')=='NOT_RUN_BY_AUTHORING_BUILD' and status.get('actual_postgresql_runtime_evidence_claimed') is False and status.get('actual_match_rank_plan_evidence_claimed') is False)
ck('local_guard',policy.get('network_policy')=='LOCAL_ONLY' and policy.get('database_name_prefix')=='maknow_dat008_' and policy.get('production_targets_forbidden') is True)
ck('confirmation_guard',policy.get('explicit_confirmation_env')=='MAKNOW_DAT008_CONFIRM_DISPOSABLE=YES')
ck('postgres18',policy.get('postgresql_major')=='18')
ck('runner_exists',(root/'learner/src/run_postgres.py').exists())
for n,ok in checks: print(('PASS' if ok else 'FAIL'),n)
print(f'{sum(x for _,x in checks)}/{len(checks)} PASS')
sys.exit(0 if all(x for _,x in checks) else 1)
