"""Portable authentication and exact-arithmetic replay for C434.""" from pathlib import Path import argparse import hashlib import json import runpy ROOT = Path(__file__).resolve().parent.parent def main(out): load = lambda name: json.loads((ROOT/'sources'/name).read_text()) read = lambda name: (ROOT/'sources'/name).read_text() digest = lambda path: hashlib.sha256(path.read_bytes()).hexdigest() manifest = json.loads((ROOT/'SOURCE_MANIFEST.json').read_text()) authenticated = [] for name, row in manifest.items(): path = ROOT/'sources'/name assert path.stat().st_size == row['bytes'] and digest(path) == row['sha256'], name authenticated.append('frozen bytes: '+name) prior = load('PREVIOUS_CERTIFICATE.json') for key, name in [('source_manifest','PREVIOUS_SOURCE_MANIFEST.json'),('data','PREVIOUS_DATA.json'), ('results','PREVIOUS_RESULTS.json'),('report','PREVIOUS_REPORT.md'), ('checkpoint','PREVIOUS_CHECKPOINT.md'),('next_step_decision','PREVIOUS_NEXT_STEP.json'), ('control_integrity','PREVIOUS_CONTROL_INTEGRITY.json')]: assert prior[key+'_sha256'] == manifest[name]['sha256'], key authenticated.append('C433 certificate: '+key) old_manifest = load('PREVIOUS_SOURCE_MANIFEST.json') for name, row in manifest.items(): key = row['prior_C433_source_binding'] if key: assert old_manifest[key]['sha256'] == row['sha256'], name authenticated.append('C433 frozen source: '+name) assert load('C432_CERTIFICATE.json')['data_sha256'] == manifest['C432_DATA.json']['sha256'] authenticated.append('C432 data certificate') assert load('C432_CERTIFICATE.json')['calculation_sha256'] == manifest['C432_CALCULATION.py']['sha256'] assert 'Q(25,23)' in read('C432_CALCULATION.py') authenticated.append('C432 actual E implementation certificate') checks = [] def check(name, success): assert success, name assert name not in checks, name checks.append(name) data = runpy.run_path(str(ROOT/'evidence/CALCULATION.py'))['run'](load, read, check) result = dict(step='C434',status='passed',assertions_passed=len(checks),checks=checks, source_checks_passed=len(authenticated),source_checks=authenticated, canonical_or_graph_edits=False,new_independent_agent_review=False,C435_executed=False) out.mkdir(parents=True,exist_ok=True) for name, obj in [('DATA.json',data),('RESULTS.json',result)]: (out/name).write_text(json.dumps(obj,ensure_ascii=False,indent=2)+'\n') print(json.dumps(dict(step='C434',status='passed',calculation_checks=len(checks), authentication_checks=len(authenticated),counts=data['counts']))) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--out',type=Path,required=True) main(parser.parse_args().out)