"""Resume ONLY after verified first normal PC exchange; never repeat it.""" import argparse,json,hashlib from pathlib import Path from agate_party_assemble import Runner,preflight,ROOT from play import read before=ROOT/'notes/Agate-Ricardo-won130-status.json';navpath=ROOT/'notes/Agate-Ricardo-won130-navigation.json' status=json.loads(before.read_text());nav=json.loads(navpath.read_text()) oldpath=ROOT/'work/agate-party-assemble-130-resume2.json';old=json.loads(oldpath.read_text()) assert old['status']=='stopped-for-actual-state-review' and old['events'][-1]['reason']=='Expected one visible Pokémon label' exchanges=[e for e in old['events'] if e.get('script')=='pc_exchange_named'] assert len(exchanges)==1 and exchanges[0]['args']==[11,1,'Kricketune','Tranquill'] args=argparse.Namespace(journal=ROOT/'work/agate-party-assemble-130-after-swap1.json',status=before,navigation=navpath,phase='agate-assemble',checkpoint='Agate-final-six-south-ready130') proposal=preflight(status,nav,phase='agate-assemble');runner=Runner(args,status,nav,proposal) runner.journal['resume_review']={'prior':str(oldpath.relative_to(ROOT)),'sha256':hashlib.sha256(oldpath.read_bytes()).hexdigest(),'completed_first_exchange_not_replayed':True};runner.write() try: text=read().lower();assert 'bag' in text and 'controls' in text, 'ObservedPause required' runner.keys('x:.12','wait:.6');runner.world();runner.expected[1]='Kricketune';runner.party_check() runner.take('Kricketune','Focus Sash');runner.exchange(6,'Hexan','Kricketune') runner.open_pause_choice('Bag');runner.run('give_held','Focus Sash','Hexan','--bag-open');runner.settle();runner.arrange() runner.active_source(752,4,0);runner.run('eventq',752,4,'talk') welcome=read().lower();assert 'welcome' in welcome or 'rest' in welcome runner.run('choose_dialog','Yes|No','Yes');runner.run('heal');runner.position(752) runner.active_source(752,8,0);runner.run('eventq',752,8,'enter');runner.position(763,(763,46,70)) runner.party_check();runner.stage(52);runner.position(763,(763,46,70));runner.checkpoint_proof(proposal) print('AGATE FINAL SIX ASSEMBLED; FIRSTSWAPNOTREPLAYED',flush=True) except BaseException as error: runner.journal.update(status='stopped-for-actual-state-review',verified=False);runner.record('stop',reason=str(error),error=type(error).__name__);raise