import subprocess,json,pathlib,sys,time
root=pathlib.Path(sys.argv[1]).resolve(); out=pathlib.Path(sys.argv[2]).resolve(); out.mkdir(parents=True,exist_ok=True)
repo=out/'repo'; repo.mkdir(exist_ok=True)
def run(args,cwd=root):
 p=subprocess.run(args,cwd=cwd,text=True,capture_output=True)
 if p.returncode: raise RuntimeError(p.stderr+p.stdout)
 return p.stdout.strip()
run(['git','init','-b','main'],repo)
run(['git','-c','user.name=Synthetic','-c','user.email=synthetic@example.test','commit','--allow-empty','-m','Synthetic evidence'],repo)
run(['git','remote','add','origin','https://forgejo.example.test/owner/repo.git'],repo)
cli=['node',str(root/'apps/server/src/bin.ts')]
print(run(cli+['project','add',str(repo),'--base-dir',str(root/'.t3'),'--title','Unsupported Forgejo evidence']),flush=True)
ids=[]
for i in range(3):
 result=run(cli+['thread','start',str(repo),'Synthetic PR sync evidence','--base-dir',str(root/'.t3'),'--provider','devReplay','--model','showcase','--title',f'PR sync thread {i+1}','--wait','--json'])
 (out/f'thread-{i+1}.json').write_text(result)
 print(result,flush=True)
 data=json.loads(result); ids.append(data.get('threadId',data.get('id')))
(out/'ids.json').write_text(json.dumps(ids))
for i in range(6):
 result=run(['node',str(pathlib.Path(sys.argv[3]).resolve()),str(root/'.t3'),ids[i//2],f'https://forgejo.example.test/owner/repo/pulls/{i+1}'])
 print(f'{time.time():.3f} linked PR {i+1}: {result}',flush=True)
 time.sleep(2)
print('SEED_COMPLETE',time.time(),flush=True)
