import subprocess, pathlib, json, time
root=pathlib.Path('/tmp/lead-28494-r2b/capture/fixtures'); root.mkdir(exist_ok=True)
repo='juliusmarminge/t3-evidence-28494-20261103-0245'
def run(args,cwd=None):
 p=subprocess.run(args,cwd=cwd,text=True,capture_output=True,check=True); return p.stdout.strip()
main=root/'seed'; main.mkdir(exist_ok=True)
run(['git','init','-b','main'],main)
run(['git','config','user.name','Synthetic Evidence'],main);run(['git','config','user.email','evidence@example.invalid'],main)
(main/'README.md').write_text('Synthetic Git action evidence.\n')
run(['git','add','.'],main);run(['git','commit','-m','Initial fixture'],main)
run(['git','remote','add','origin',f'https://github.com/{repo}.git'],main);run(['git','push','-u','origin','main'],main)
records=[]
for name in ['a1','a2','a3','a4','a5','a6','a7','a8','g1','g2']:
 run(['git','checkout','main'],main);run(['git','pull','--ff-only'],main)
 if name=='g2':run(['git','push','origin','HEAD:release'],main)
 run(['git','checkout','-b',name],main)
 if name=='a8':(main/f'{name}.bin').write_bytes(bytes(range(256))*4)
 else:(main/f'{name}.txt').write_text(f'{name}: merged feature\n')
 run(['git','add','.'],main);run(['git','commit','-m',f'{name} synthetic feature'],main)
 h=run(['git','rev-parse','HEAD'],main); c=run(['git','rev-parse','HEAD^'],main)
 run(['git','push','-u','origin',name],main)
 pr=run(['gh','pr','create','--repo',repo,'--base','release' if name=='g2' else 'main','--head',name,'--title',f'{name} evidence fixture','--body','Synthetic disposable fixture.'],main)
 run(['gh','pr','merge','--repo',repo,pr,'--squash'],main)
 dest=root/name
 run(['git','clone','--branch',name,f'https://github.com/{repo}.git',str(dest)])
 run(['git','config','user.name','Synthetic Evidence'],dest);run(['git','config','user.email','evidence@example.invalid'],dest)
 run(['git','remote','set-head','origin','main'],dest)
 if name in ['a1','a3','a8']:
  run(['git','push','origin','--delete',name],main);run(['git','fetch','--prune','origin'],dest)
 if name in ['a3','a4']:
  with (dest/f'{name}.txt').open('a') as f:f.write('Uncommitted synthetic edit.\n')
 if name=='a5':run(['git','branch','--set-upstream-to=origin/main'],dest)
 if name=='a6':
  run(['git','push','--force','origin',f'{c}:refs/heads/{name}'],main);run(['git','fetch','origin'],dest)
 if name=='a7':
  (main/'later.txt').write_text('A real later upstream commit.\n');run(['git','add','.'],main);run(['git','commit','-m','Later upstream commit'],main);run(['git','push','origin',name],main);run(['git','fetch','origin'],dest)
 if name=='g1':
  (dest/'follow-up.txt').write_text('Local follow-up.\n');run(['git','add','.'],dest);run(['git','commit','-m','Unpushed follow-up'],dest)
 forge=json.loads(run(['gh','pr','view','--repo',repo,pr,'--json','number,state,baseRefName,headRefName,headRefOid,url']))
 records.append(dict(name=name,path=str(dest),H=h,C=c,forge=forge,head=run(['git','rev-parse','HEAD'],dest),porcelain=run(['git','status','--porcelain'],dest)))
 (root/'records.json').write_text(json.dumps(records,indent=2))
 print(name,h,forge,flush=True)
