import bootstrap
import json
from inputs import OUT
from integrated import Integrated,DEFAULT

contract=json.loads((OUT/'execution_contract.json').read_text());results=[]
for level in (.12,.14,.16):
    cfg=dict(DEFAULT,hand_vertical=level);per={}
    for clip in contract['development']:
        engine=Integrated(cfg);counts={};rules={}
        for line in (OUT/'work'/clip/'enriched.jsonl').open():
            r=json.loads(line);v=engine.step(r)
            if not r['displayed']:continue
            s=counts.setdefault(r['reference'],dict(N=0,observable=0,hit=0))
            s['N']+=1;s['observable']+=v['observable'];s['hit']+=v['hit']
            for rule in {x for p in v['pairs'] if p['hit'] for x in p['rules']}:rules[rule]=rules.get(rule,0)+1
        per[clip]=dict(counts=counts,rules=rules)
    results.append(dict(config=cfg,per=per))
    print(level,{k:sum(x['hit'] for x in v['counts'].values()) for k,v in per.items()},flush=True)
(OUT/'reports/probe_final.json').write_text(json.dumps(results,indent=2))
