prepare_validation.py
python · 32 lines · Sanitized derivative
Sanitized derivative: private paths or personal test identities use explicit placeholders. Original line count is preserved.
Version & provenance · cm8-training-v1
Recorded SHA-256 118e3f09173ecf863b4a4b805ec7260368e22cb9f9f67bf169e06b228f251d44Rendered SHA-256 32b4d7c47f0ce3111d461a105bbc7e65098f8b03ca97675c08d568141cbaad65
Original LittlePly code: Apache-2.0. External Rust helper remains a separate GPL component. License notes. Line links are stable within this snapshot. Frozen research implementation; host paths redacted. Original and rendered digests identify the derivative; not a portable launcher or complete training payload.
1import json,sys
2from pathlib import Path
3import numpy as np
4H=Path(__file__).resolve().parent;sys.path.insert(0,str(H.parent/'state-v2'))
5from runtime_records import Records
6from records import sha,DTYPE,Records as SmallRecords
7from codec import triple,chess
8OUT=H/'validation-ready';OUT.mkdir(exist_ok=True)
9if (OUT/'manifest.json').exists():raise ValueError('validation already sealed')
10specs=[('book','/REDACTED',[2]),('exact','/REDACTED',[0,1]),('elite','/REDACTED',[1]),('puzzle','/REDACTED',[3])]
11groups=[];bindings={}
12for kind,(name,root,sources) in enumerate(specs):
13 root=Path(root);bindings[str(root/'manifest.json')]=sha(root/'manifest.json');parts=[]
14 for source in sources:
15 r=(SmallRecords if name in ('book','exact') else Records)(root,source,1,verify=True);parts.append(r.take(range(len(r))));r.close() if hasattr(r,'close') else None
16 rows=np.concatenate(parts);metadata=None
17 if name!='elite':
18 mp=root/'metadata.jsonl';bindings[str(mp)]=sha(mp);metadata=[json.loads(l) for l in mp.read_text().splitlines()]
19 accepted=[]
20 for row in rows:
21 if name=='elite':targets=[row['y'].tolist()]
22 else:
23 m=metadata[int(row['game'])];targets=m['tied_target_triples'] if name!='puzzle' else [triple(chess.Move.from_uci(u)) for u in m['accepted_moves']]
24 if row['y'].tolist() not in targets:raise ValueError('canonical label absent from accepted set')
25 accepted.append(targets)
26 np.save(OUT/(name+'.npy'),rows,allow_pickle=False);(OUT/(name+'-accepted.json')).write_text(json.dumps(accepted))
27 groups.append({'name':name,'kind':kind,'rows':len(rows),'weight':[64,16,418,14][kind]/512,'definition':'recorded target match' if name=='elite' else 'full recorded accepted-move set'})
28for p in OUT.iterdir():bindings[str(p)]=sha(p)
29manifest={'groups':groups,'bindings':bindings,'selection':'fixed source-exposure-weighted mean of per-source canonical-label three-target NLL; accuracy diagnostic only'}
30(OUT/'manifest.json').write_text(json.dumps(manifest,indent=2)+'\n');print(json.dumps({'groups':groups,'manifest_sha256':sha(OUT/'manifest.json')}))
31
32