import os,sys,json
from pathlib import Path
os.umask(0o077)
ROOT=Path(__file__).resolve().parent.parent;BASE=ROOT.parent
PRIOR=BASE/'2026-11-01_contextra-fall-spatial-28clips_r01'
sys.path.insert(0,str(PRIOR/'helpers'))
import control_fall as f
c=f.c;c.LOCAL=ROOT;c.REMOTE=c.old.RB+'/'+ROOT.name;c.PREFIX='contextra-fallreview-1101-r01-';c.REPORT=ROOT/'reports'
REP=['03_camera27_fall','13_KISA_fall_C00_034_0005','14_KISA_fall_C00_051_0002','15_KISA_fall_C00_096_0008','SELF_C08','SELF_C09','SELF_C13','SELF_C19']
def sync():
 for p in [ROOT/'helpers',*ROOT.glob('*.json')]:c.old.scp(str(p),'si@58.233.207.31:'+c.REMOTE+'/')
if __name__=='__main__':
 stage=sys.argv[1];c.REPORT.mkdir(exist_ok=True)
 if stage=='setup':
  c.checked_resources();c.snapshot('before');c.old.checked(['test','!','-e',c.REMOTE])
  for name in ('specs.json','self_maps.json','conditions.json'):(ROOT/name).write_bytes((PRIOR/name).read_bytes())
  (ROOT/'plan.json').write_text(json.dumps(dict(prior=c.old.RB+'/'+PRIOR.name,representative=REP,inputs=28,observations=9981,decision_reexecution=False,tracking_reexecution=False)))
  c.old.checked(['mkdir',c.REMOTE],sudo=True);c.old.checked(['chown','si:si',c.REMOTE],sudo=True)
  c.old.checked(['mkdir','-p',c.REMOTE+'/reports',c.REMOTE+'/download',c.REMOTE+'/work'])
  c.old.checked(['cp','-a',c.old.RB+'/'+PRIOR.name+'/download/.',c.REMOTE+'/download/'])
  sync()
 elif stage=='sync':sync()
 elif stage=='one':c.run_job(sys.argv[2],sys.argv[3] if len(sys.argv)>3 else 'all')
 elif stage=='render':c.many('render_fall','all')
 elif stage=='pull':
  c.old.checked(['chown','-R','si:si',c.REMOTE+'/download',c.REMOTE+'/reports'],sudo=True)
  c.old.scp('si@58.233.207.31:'+c.REMOTE+'/download/.',str(ROOT/'Contextra_Fall_Review_28_20261101'))
 elif stage=='finish':c.finish()
 else:raise ValueError(stage)
