import json,math
from pathlib import Path
p=Path('work/jobs-followup/20261023');b=p/'bundle3';o=p/'rerun3-complete/results';checks=[]
def get(root,path):
 parts=path.split('.');v=json.loads((root/(parts.pop(0)+'.json')).read_text())
 for part in parts:v=v[int(part)] if isinstance(v,list) else v[part]
 return v
for c in json.loads((b/'claims.json').read_text()):
 for e in c['evidence']:
  a=get(b/'results',e['result']);v=get(o,e['result']);tol=e.get('tolerance',0)
  ok=(a==v) or (isinstance(a,(int,float)) and not isinstance(a,bool) and isinstance(v,(int,float)) and abs(a-v)<=tol)
  checks.append({'claim':c['local_id'],'result':e['result'],'expected':a,'observed':v,'tolerance':tol,'pass':ok})
(p/'checks3.json').write_text(json.dumps(checks,indent=2));print('Evidence checks',len(checks),'passed',sum(x['pass'] for x in checks))
print('JSON equality',{f.name:json.loads(f.read_text())==json.loads((o/f.name).read_text()) for f in (b/'results').glob('*.json')})
