"""Capture real native UI after navigation; reject frames that have not settled."""
from pathlib import Path
from PIL import Image,ImageChops
import subprocess,time,sys,json
r=Path('/tmp/lead-29803-r1/evidence/r2-20261103T210900Z');side,name,session=sys.argv[1:4]
for n in range(8):
 for suffix in ['first','second']:
  subprocess.run(['agent-device','screenshot',str(r/(name+'.'+suffix+'.png')),'--normalize-status-bar','--session',session],cwd=sys.argv[4] if len(sys.argv)>4 else '/home/ubuntu/wt/pr-29803-'+side,check=True)
  time.sleep(.5)
 a=Image.open(r/(name+'.first.png'));b=Image.open(r/(name+'.second.png'))
 if ImageChops.difference(a.convert('RGB'),b.convert('RGB')).getbbox()is None:break
else:raise RuntimeError('Unsettled native frame')
a.save(r/(name+'.png'));json.dump({'surface':'Android native dev client','tool':'agent-device','device':'Pixel 9 emulator Android16 API36','physicalViewport':[1080,2424],'logicalViewport':[411.4285714286,923.4285714286],'dpr':2.625,'fontScale':.94,'theme':'dark','animations':'off','statusBar':'agent-device normalize-status-bar:9:41','clock':'Persisted E1 labels identical9:17PM; elapsed label capture-only normalized5s in both checkouts','settled':'Two RGB-identical whole screenshots >=500ms apart','side':side,'name':name},open(r/(name+'.json'),'w'),indent=2)
