#!/usr/bin/env python3
from pathlib import Path
import json,sys
root=Path(__file__).resolve().parents[2]; checks=[]
def ck(name,cond): checks.append((name,bool(cond)))
mc=json.loads((root/'learner/model-contract.json').read_text()); pol=json.loads((root/'learner/toolchain-policy.json').read_text()); st=json.loads((root/'learner/evidence/runtime-status.json').read_text()); pitr=json.loads((root/'learner/recovery/pitr_plan.template.json').read_text())
ck('two_recovery_objectives',len(mc.get('recovery_objectives',[]))==2)
obj={x.get('id'):x for x in mc.get('recovery_objectives',[])}
ck('pitr_base_wal_target',all(t in obj.get('incident_point_in_time',{}).get('candidate_mechanism','').lower() for t in ['base backup','wal','explicit target']))
ck('runtime_authoring_not_run',st.get('status')=='NOT_RUN_BY_AUTHORING_BUILD' and st.get('actual_postgresql_runtime_evidence_claimed') is False and st.get('actual_pitr_runtime_evidence_claimed') is False)
ck('local_policy',pol.get('network_policy')=='LOCAL_ONLY' and pol.get('production_targets_forbidden') is True)
ck('distinct_prefixed_databases',pol.get('database_name_prefix')=='maknow_dat011_' and pol.get('source_restore_must_be_distinct') is True)
ck('pitr_expected_state',pitr.get('expected_business_state')=={'A-100':140,'A-200':70,'A-300':50})
ck('pitr_target_marker',pitr.get('target_marker')=='PRE_DESTRUCTIVE' and bool(pitr.get('recovery_target_value')))
ck('sql_fixture_complete',all((root/f'learner/sql/{n}').exists() for n in ['01_schema_baseline.sql','02_seed.sql','03_legitimate_writes.sql','04_destructive_update.sql','05_observe_current.sql','06_verify_pre_destructive_target.sql']))
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)
