"""Package, transfer, and verify this experiment without touching old evidence."""
import ast
import datetime
import hashlib
import json
from pathlib import Path
from zoneinfo import ZoneInfo
import control_review as c

root=c.LOCAL
helpers={}
for p in (root/'helpers').glob('*.py'):
    ast.parse(p.read_text());helpers[p.name]=hashlib.sha256(p.read_bytes()).hexdigest()
testlog=(root/'reports/test_review_01_camera24_fight.log').read_text()
assert 'Ran 38 tests' in testlog and testlog.rstrip().endswith('OK')
c.save('helper_sha256.json',helpers)
c.save('execution_contract.json',dict(image=c.old.IMAGE,runtime='runc',gpu_devices='none',
    cpus_per_trial=2,memory_per_trial_gib=8,max_workers=2,timeout_seconds=1800,
    pose_reference_sha256=hashlib.sha256((c.SOURCE/'model_reference.json').read_bytes()).hexdigest(),
    baseline_helpers=json.loads((root/'baseline_hashes.json').read_text()),
    retention='manual-review',operating_changes=False))
c.save('technical_summary.json',dict(unit_tests=38,unit_tests_status='PASS',helper_ast_count=len(helpers),
    helper_ast_status='PASS',pose_inference=0,tracking_reexecution=0,gpu_jobs=0,
    note='Palette checks use display frames; pre-roll remains fully validated for engine conditions.'))
for name in ('helper_sha256.json','technical_summary.json','operational_comparison.json','runtime_drift_note.json','execution_contract.json',
             'layout_review.json','test_review_01_camera24_fight.log'):
    assert (root/'reports'/name).exists()
    c.old.scp(str(root/'reports'/name),'si@58.233.207.31:'+c.REMOTE+'/download/validation/')
for name in ('package_review.py',):
    c.old.scp(str(root/'helpers'/name),'si@58.233.207.31:'+c.REMOTE+'/helpers/')
pack=json.loads(c.old.checked(['python3','-B',c.REMOTE+'/helpers/package_review.py'],timeout=180))
dest=root/'Contextra_B_Diagnostic_Review_20261029'
dest.mkdir(exist_ok=True)
c.old.scp('si@58.233.207.31:'+c.REMOTE+'/download/.',str(dest))
hashes=json.loads((dest/'SHA256SUMS.json').read_text())
assert len(hashes)==pack['files']
assert {str(p.relative_to(dest)) for p in dest.rglob('*') if p.is_file() and p.name!='SHA256SUMS.json'}==set(hashes)
for name,digest in hashes.items():
    assert hashlib.sha256((dest/name).read_bytes()).hexdigest()==digest,name
assert hashlib.sha256((dest/'SHA256SUMS.json').read_bytes()).hexdigest()==pack['sha256']
result=dict(status='PASS',**pack,download=str(dest),
    bytes=sum(p.stat().st_size for p in dest.rglob('*') if p.is_file()),
    timestamp=datetime.datetime.now(ZoneInfo('Asia/Seoul')).isoformat())
c.save('transfer_validation.json',result)
print(json.dumps(result,ensure_ascii=False),flush=True)
