import csv
import json
from pathlib import Path

R=Path(__file__).parent;FIRST=R.parent/'2026-09-15_contextra-sixteen-prepared_r01'
def read(root,name):return json.loads((root/name).read_text())
plan=read(FIRST,'plan.json');a=read(FIRST,'startup-samples.json')[-1];b=read(FIRST,'failure-state.json');dt=b['at']-a['at']
rows=[]
for row in plan['channels']:
    sid=row['stream_id'];x,y=a['channels'][sid],b['channels'][sid]
    assert x['run_id']==y['run_id'] and x['generation']==y['generation'] and x['state']==y['state']=='running'
    rows.append(dict(channel=f"G{row['group']}-{row['copy']}",scope='startup_reference_not_60s',seconds=dt,
        result_count=y['processed']-x['processed'],result_fps=(y['processed']-x['processed'])/dt,
        infer_counter_fps=(y['counts'].get('infer',0)-x['counts'].get('infer',0))/dt,
        queue_before=x['queued'],queue_after=y['queued'],redis_fps=None,replaced=None,send_error=None))
with (R/'reference-startup.csv').open('w') as f:
    w=csv.DictWriter(f,fieldnames=list(rows[0]));w.writeheader();w.writerows(rows)
result=dict(rows=rows,seconds=dt,result_frames=sum(x['result_count'] for x in rows),
            result_total_fps=sum(x['result_count'] for x in rows)/dt,
            r01=read(FIRST,'analysis.json'),r02=read(R,'analysis.json'))
(R/'combined-summary.json').write_text(json.dumps(result,indent=2))
print(json.dumps(dict(seconds=dt,result_frames=result['result_frames'],total_fps=result['result_total_fps'],
    resources_first=result['r01']['resource_envelope'],resources_second=result['r02']['resource_envelope'],
    first_restore=result['r01']['verified'],second_restore=result['r02']['verified']),indent=2))
