#!/usr/bin/env python3
import hashlib,json,subprocess,sys
from pathlib import Path
P=Path(__file__).resolve().parents[1]
def sha(p):
 h=hashlib.sha256()
 with p.open('rb') as f:
  for b in iter(lambda:f.read(8*1024*1024),b''):h.update(b)
 return h.hexdigest()
def main():
 if subprocess.run([sys.executable,str(P/'script/validate-workflow-copy.py'),'full'],cwd=P).returncode:raise RuntimeError('workflow-copy gate failed')
 if subprocess.run([sys.executable,str(P/'script/validate-production.py')],cwd=P).returncode:return 1
 report=json.loads((P/'log/production-verification.json').read_text());trans=json.loads((P/'log/upload-transcode.json').read_text());upload=P/'output/final-upload.mp4';valid=report.get('verified') is True and trans.get('verified') is True and trans.get('source_canon_sha256')==report.get('source_canon_sha256') and trans.get('output_sha256')==sha(upload) and upload.stat().st_size<1_000_000_000 and trans.get('server_verification',{}).get('under_one_gb') is True and (P/'output/info.txt').is_file()
 if not valid:raise RuntimeError('publish artifact/hash gate failed')
 print(json.dumps({'publish_ready':True,'source_canon_sha256':report['source_canon_sha256'],'video':str(upload),'video_bytes':upload.stat().st_size,'metadata':str(P/'output/info.txt')},ensure_ascii=False));return 0
if __name__=='__main__':sys.exit(main())
