"""Validate the offline code-to-evidence crosswalk. No network or truth/availability test. Usage: python condition-evidence-check.py.txt [condition-evidence.json] If comparison-conditions.json is present, also verify its exact bytes and rows. """ import hashlib,json,sys from pathlib import Path from uuid import UUID p=Path(sys.argv[1]) if len(sys.argv)>1 else Path(__file__).with_name('condition-evidence.json') d=json.loads(p.read_text(encoding='utf-8')) assert d['format']=='search-korea-condition-evidence-v1' by={f['code']:f for f in d['facts']} assert len(by)==len(d['facts']),'duplicate fact code' used={code for cell in d['cells'] for code in cell['factCodes']} assert used==set(by),'unresolved or unused fact code' assert len({(c['service'],c['criterion']) for c in d['cells']})==len(d['cells']),'duplicate comparison cell' sources=set() for f in by.values(): UUID(f['id']);assert isinstance(f['version'],int) and f['version']>0 assert f['statement'].strip() and f['sources'] for s in f['sources']: UUID(s['id']);assert isinstance(s['version'],int) and s['version']>0 assert s['url'].startswith('https://') and s['locators'] and all(v.strip() for v in s['locators']) sources.add(s['id']) actual={'cells':len(d['cells']),'factCodes':len(by),'sources':len(sources)} assert actual==d['expected'],(actual,d['expected']) comparison=p.with_name('comparison-conditions.json') if comparison.exists(): assert hashlib.sha256(comparison.read_bytes()).hexdigest()==d['comparisonFileSha256'],'comparison bytes differ' assert json.loads(comparison.read_text(encoding='utf-8'))==d['cells'],'comparison rows differ' print(json.dumps({'status':'crosswalk-complete','counts':actual,'comparisonFileChecked':comparison.exists(),'scope':'structural provenance validation; not live service verification'},ensure_ascii=False,indent=2))