from fire_run import model_config,contract
from ops import *
def execute():
    assert (R/'fire-final.json').exists() and not CAND.exists()
    CAND.mkdir(parents=True,mode=0o700);(CAND/'sources').mkdir()
    rt=Runtime(load_config(NEW),R);baseline=dict(image=rt.inspect()['Image'],active=file_hash(ACTIVE),registry=file_hash(Path(rt.config['registration_file'])),
        configs={n:rt.triton('v2/models/'+n+'/config') for n in SOURCES})
    save('batch8-start.json',dict(at=time.time(),baseline=baseline));out={}
    for model in ('RFDETRMedium','RFDETRKeypointPreview','RFDETRFireSmoke'):
        name='codex-batch8-check-'+model.lower();started=False;record={}
        try:
            rt.resources();engine(model,8)
            root=CAND/model;(root/'8').mkdir(parents=True);shutil.copy2(R/(model+'-b8.plan'),root/'8/model.plan')
            source=CAND/'sources'/(model+'.onnx');shutil.copy2(SOURCES[model],source)
            (root/'config.pbtxt').write_text(model_config(model,8,8,1))
            # Only this candidate is visible in the isolated validation server.
            argv=['docker','run','-d','--pull','never','--name',name,'--network','none','--gpus','device=0','--cpus','4',
                '--memory','12g','--memory-swap','12g','--shm-size','1g','--ulimit','core=0',
                '-v',str(root)+':/models/'+model+':ro','--entrypoint','/opt/tritonserver/bin/tritonserver',
                read('image.json')['image'],'--model-repository=/models','--model-control-mode=explicit','--load-model='+model,
                '--allow-metrics=false','--exit-timeout-secs=10']
            save(model+'-b8-check-start.json',dict(command=argv,at=time.time(),limit_seconds=270))
            cmd(argv);started=True
            wait='''import sys,time,urllib.request
name=sys.argv[1];deadline=time.monotonic()+90
while time.monotonic()<deadline:
 try:
  with urllib.request.urlopen('http://localhost:8000/v2/models/'+name+'/versions/8/ready',timeout=2) as r:
   assert r.status==200;print('ready');break
 except Exception:time.sleep(1)
else:raise RuntimeError('Candidate readiness deadline')'''
            cmd(['docker','exec',name,'python3','-c',wait,model],100)
            result=contract(name,model,8,[1,4,8])
            if model=='RFDETRKeypointPreview':
                origin=json.loads(Path('/tmp/codex/ltb1021/2026-09-13_contextra-pose_r01/plan.json').read_text())['intake']['artifact']
            else:
                origin=yaml.safe_load(Path('/data/contextra/model-artifacts/builds/'+('medium-193-20260909-v4' if model=='RFDETRMedium' else 'fire-smoke-193-20260913-r01')+'/input-manifest.yaml').read_text())['artifact']
            record=dict(status='prepared_and_execution_checked',model=model,version=8,input='FP16',output='FP32',profile=[1,8,8],original_checkpoint=origin,
                quality='not evaluated',multichannel_performance='not evaluated',active=False,
                engine=str(root/'8/model.plan'),engine_sha256=file_hash(root/'8/model.plan'),
                onnx=str(source),onnx_sha256=file_hash(source),original_onnx=str(SOURCES[model]),
                config=str(root/'config.pbtxt'),config_sha256=file_hash(root/'config.pbtxt'),
                config_instances=1,instance_choice='explicitly choose before future activation',
                environment=read('plan.json')['environment'],gpu=read('plan.json')['gpu'],contract=result,
                conversion=read(model+'-b8.json'),conversion_command=read(model+'-b8-start.json')['command'])
            (root/'manifest.json').write_text(json.dumps(record,ensure_ascii=False,indent=2));print('Batch8 PASS:',model,flush=True)
        except Exception as e:
            record=dict(status='failed',error=type(e).__name__,message=str(e),trace=traceback.format_exc(),active=False)
            print('Batch8 FAILED:',model,type(e).__name__,flush=True)
        finally:
            if started:
                (R/(model+'-b8-server.log')).write_text(cmd(['docker','logs',name]))
                cmd(['docker','stop','-t','15',name],25)
                info=json.loads(cmd(['docker','inspect',name]))[0];record['validation_container_exit']=info['State']['ExitCode']
                assert not info['State']['Running'];cmd(['docker','rm',name])
            out[model]=record;save('batch8-results.json',out)
        assert file_hash(ACTIVE)==baseline['active'] and file_hash(Path(rt.config['registration_file']))==baseline['registry']
        assert rt.inspect()['Image']==baseline['image']
        for n,v in baseline['configs'].items():assert rt.triton('v2/models/'+n+'/config')==v
        if record['status']=='failed':break
    save('batch8-final.json',dict(results=out,baseline_preserved=True,resource=rt.resources()))
    (CAND/'manifest.json').write_text(json.dumps(dict(results=out,active=False,baseline_preserved=True),ensure_ascii=False,indent=2))
if __name__=='__main__':execute()
