#!/usr/bin/env python3
from pathlib import Path
import sys,subprocess,json
from PIL import Image,ImageDraw
ROOT=Path('/tmp/issue-lead-33252-r2/evidence-capture')
OUT=ROOT/'publish';OUT.mkdir(exist_ok=True)
manifest=[]
def latest(pattern,required):
    found=[p for p in sorted(ROOT.glob(pattern)) if (p/required).exists() and (p/'result.json').exists() and not (p/'failure.private.txt').exists()]
    if not found: raise ValueError('Missing '+pattern)
    return found[-1]
for row in (sys.argv[1:] or ['L','P','E','M','F','C','T','G','A','D','I','O','Z','W']):
 for width,theme in [(1440,'dark'),(1440,'light'),(390,'dark'),(390,'light')]:
    entry={'row':row,'width':width,'theme':theme}
    for side in ['before','after']:
      if row in ('L','P','E'):
        scene='E' if row=='E' else 'LP'
        filename={'L':'L-loading.png','P':'P.png','E':'E.png'}[row]
        folders=[p for p in sorted(ROOT.glob(f'run-*-{side}-{scene}-{width}-{theme}')) if (p/'environment.json').exists() and json.loads((p/'environment.json').read_text()).get('clock')=='2026-11-09T09:40:00.000Z']
        if not folders: raise ValueError(f'Missing {side} {row} {width} {theme}')
        folder=folders[-1]
        source=folder/filename
        if row=='L':
          video=folder/'L.webm';dest=OUT/f'{side}-{row}-{width}-{theme}.webm';dest.write_bytes(video.read_bytes());entry[side+'Video']=str(dest)
      else:
        folder=latest(f'harness-*/{side}-{row}-{width}-{theme}','initial.png')
        source=folder/'initial.png'
        if (folder/'interaction.webm').exists():
          dest=OUT/f'{side}-{row}-{width}-{theme}.webm';dest.write_bytes((folder/'interaction.webm').read_bytes());entry[side+'Video']=str(dest)
      dest=OUT/f'{side}-{row}-{width}-{theme}.png';dest.write_bytes(source.read_bytes());entry[side]=str(dest);entry[side+'Source']=str(folder)
      for kind in ['environment','timeline','steps','result']:
        if (folder/f'{kind}.json').exists():
          dest=OUT/f'{side}-{row}-{width}-{theme}-{kind}.json';dest.write_bytes((folder/f'{kind}.json').read_bytes());entry[side+kind.title()]=str(dest)
    diffdir=OUT/f'{row}-{width}-{theme}-diff'
    subprocess.run([sys.executable,str(ROOT/'diff.py'),entry['before'],entry['after'],str(diffdir)],check=True,capture_output=True)
    for kind in ['Diff0','DiffT','sheet','metrics','amplified32']:
      ext='json' if kind=='metrics' else 'png';dest=OUT/f'{row}-{width}-{theme}-{kind}.{ext}';dest.write_bytes((diffdir/f'{kind}.{ext}').read_bytes());entry[kind]=str(dest)
    manifest.append(entry)
(ROOT/'manifest.json').write_text(json.dumps(manifest,indent=2))
print('Prepared',len(manifest),'pairs')
