"""Test-side readback only: no inference, runtime access, or video decoding."""
import hashlib
import json
from pathlib import Path

root=Path(__file__).resolve().parent.parent
folder=root/'Contextra_Fight_Integrated_Review_20261030'
manifest=json.loads((folder/'manifest.json').read_text())
listed=set();total=0
for entry in manifest['files']:
    path=folder/entry['path'];assert path.is_file() and folder.resolve() in path.resolve().parents
    assert path.stat().st_size==entry['bytes']
    h=hashlib.sha256()
    with path.open('rb') as f:
        for chunk in iter(lambda:f.read(1024*1024),b''):h.update(chunk)
    assert h.hexdigest()==entry['sha256'],entry['path']
    listed.add(entry['path']);total+=entry['bytes']
actual={str(p.relative_to(folder)) for p in folder.rglob('*') if p.is_file() and p.name!='manifest.json'}
assert actual==listed
assert len(list(folder.rglob('B_Integrated_Review.mp4')))==9
assert len(list(folder.glob('*/data/summary.json')))==37
result=dict(status='PASS',files=len(listed),bytes=total,videos=9,diagnostics=37,
    manifest_sha256=hashlib.sha256((folder/'manifest.json').read_bytes()).hexdigest(),
    local_video_decoding=False,remote_full_decode_and_transfer_sha256=True)
(root/'reports/transfer_validation.json').write_text(json.dumps(result,indent=2))
print(json.dumps(result))
