import hashlib,json
from pathlib import Path
import numpy as np
src=Path('artifacts/pretrained-siglip-20260912/fixture').resolve()
out=Path('artifacts/full-qk-20260913/fixture-bs2');out.mkdir(exist_ok=True)
m=json.loads((src/'manifest.json').read_text())
def write(name,a):
 a=np.asarray(a,dtype='<f4');p=out/name;a.tofile(p)
 return {'file':name,'shape':list(a.shape),'sha256':hashlib.sha256(a.tobytes()).hexdigest()}
def read(e):return np.fromfile(src/e['file'],dtype='<f4').reshape(e['shape'])
for name,e in m['parameters'].items():
 if name=='vit.map.probe':m['parameters'][name]=write('probe.f32',np.repeat(read(e),2,axis=0))
 else:e['file']=str(src/e['file'])
cases=[]
for a,b in zip(m['cases'][::2],m['cases'][1::2]):
 name=a['name']+'+'+b['name'];inputs={}
 for key,e in a['inputs'].items():inputs[key]=write(name+'-patches.f32',np.concatenate([read(e),read(b['inputs'][key])],axis=0))
 cases.append({'name':name,'inputs':inputs,'expected':write(name+'-expected.f32',np.concatenate([read(a['expected']),read(b['expected'])],axis=0))})
m['cases']=cases;m['batch_size']=2
(out/'manifest.json').write_text(json.dumps(m,indent=2))
