"""Prepare one trusted request, then run the selected pinned Cosmos backend once.""" import argparse,io,json,subprocess,sys from pathlib import Path from PIL import Image from tancho.viewpoint_router import prepare, BALANCED_VERSION from tancho.viewpoint_eval import render,build_pack from tancho.viewpoint_guard import assess from tancho.detect_eval import frame_proof ROOT=Path(__file__).resolve().parent def main(): p=argparse.ArgumentParser(description=__doc__) p.add_argument('--request',type=Path,required=True);p.add_argument('--image',type=Path,required=True) p.add_argument('--output',type=Path,required=True);p.add_argument('--proof-root',type=Path) p.add_argument('--prepare-only',action='store_true') a=p.parse_args();case=json.loads(a.request.read_text());case['prompt']=render(case['context']) image_bytes=io.BytesIO() with Image.open(a.image) as im:im.convert('RGB').save(image_bytes,format='PNG') case['canonical_frame']=frame_proof(image_bytes.getvalue())[1] prepared,decision=prepare(case,version=BALANCED_VERSION) if not case['id'].replace('-','').replace('_','').isalnum():raise ValueError('Use an alphanumeric request ID') a.output.mkdir(parents=True,exist_ok=False);images=a.output/'input';images.mkdir() (images/'frame.png').write_bytes(image_bytes.getvalue()) pack=a.output/'pack';manifest=build_pack([(images,'frame',case['id'],prepared['context'])],pack,frame_directory='.') (a.output/'routing.json').write_text(json.dumps(decision,indent=2)+'\n') if a.prepare_only: print(json.dumps(dict(prepared=True,model=decision['model'],model_generations=0)));return if a.proof_root is None:raise ValueError('--proof-root from the overlay step is required') proof=a.proof_root/decision['model']/'expected-weights.json' result=subprocess.run([sys.executable,'-m','torch.distributed.run','--standalone','--nproc_per_node=1',str(ROOT/'training/detect_native.py'),'--pack',str(pack.resolve()),'--output',str((a.output/'native').resolve()),'--expected-weights',str(proof.resolve()),'--variant',decision['model']]) result.check_returncode() record=json.loads((a.output/'native/records'/case['id']/'record.json').read_text()) check=assess(record['raw_text'],manifest['cases'][0]) (a.output/'answer.json').write_text(json.dumps(dict(raw_text=record['raw_text'],validation=check),ensure_ascii=False,indent=2)+'\n') print(json.dumps(dict(accepted=check['accepted'],reasons=check['reasons'],model_generations=1))) if __name__=='__main__':main()