"""Test-server file and summary checks only, without model/engine/video execution."""
import ast
import csv
import hashlib
import json
from pathlib import Path

root=Path(__file__).resolve().parent.parent
package=root/'Contextra_Fight_Refined_Review_20261030'
manifest=json.loads((package/'manifest.json').read_text())
assert set(manifest)=={str(p.relative_to(package)) for p in package.rglob('*') if p.is_file() and p.name!='manifest.json'}
for name,digest in manifest.items():
    assert hashlib.sha256((package/name).read_bytes()).hexdigest()==digest,name
report=json.loads((package/'data/comparison.json').read_text())
assert len(report['clips'])==32 and report['produced_videos']==0
short=[r for r in report['clips'] if r['clip']!='SELF_L02'];long=next(r for r in report['clips'] if r['clip']=='SELF_L02')
assert (sum(r['positive_baseline'] for r in short),sum(r['positive_candidate'] for r in short))==(226,214)
assert (long['positive_baseline'],long['positive_candidate'])==(58,56)
assert all(not r['new_hit_frames'] for r in report['clips'])
windows=json.loads((package/'data/feedback_windows.json').read_text())
short_windows=[r for c,v in windows.items() if c!='SELF_L02' for key,r in v.items() if key.startswith(('C11_','C15_','C16_','C17_','C19_'))]
assert (sum(r['base_hit'] for r in short_windows),sum(r['new_hit'] for r in short_windows))==(10,2)
lw=list(windows['SELF_L02'].values())
assert (sum(r['base_hit'] for r in lw),sum(r['new_hit'] for r in lw))==(14,7)
maps=list(csv.DictReader((package/'data/L02_observation_map.csv').open()))
assert len(maps)==7261 and all(int(x['l01_frame'])-int(x['l02_frame'])==2542 for x in maps)
assert all(abs(float(x['l01_pts'])-float(x['l02_pts'])-105.352669)<1e-8 for x in maps)
assert not list(root.rglob('*.mp4'))
files=list((root/'helpers').glob('*.py'))
for p in files:ast.parse(p.read_text())
value=dict(status='PASS',files=len(manifest)+1,sha256_verified=True,bytes=sum(p.stat().st_size for p in package.rglob('*') if p.is_file()),
    comparison_denominators_verified=True,L02_mapping=7261,helper_ast=len(files),videos=0,
    manifest_sha256=hashlib.sha256((package/'manifest.json').read_bytes()).hexdigest())
(root/'reports/transfer_validation.json').write_text(json.dumps(value,indent=2))
print(json.dumps(value),flush=True)
