File size: 1,579 Bytes
3b3b2bd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | from pathlib import Path
import sys,json,random,hashlib,time
ROOT=Path(__file__).resolve().parents[1];sys.path.insert(0,str(ROOT))
from phillnet_recall import RecallPolicy
from phillnet_recall.bank import Bank
def main():
p=RecallPolicy();assert p.bank._lib is not None
rng=random.Random(88371);rows=[[0.]*20,[1.]*20]+[[rng.random() for _ in range(20)] for _ in range(64)]
checked=0;signatures=[];numeric_payloads=[]
for ident in sorted(p.bank._ids):
record=p.bank.record(ident);a=p.bank.score_many([ident]*len(rows),rows);b=[record.score_reference(r) for r in rows]
assert a==b;checked+=len(rows);signatures.append(tuple(a))
# Exclude ID, metadata and checksum from numeric distinction check.
raw=record.encode();numeric_payloads.append(raw[16:28]+raw[32:492])
rejected=0
for i in range(256):
raw=bytearray(p.bank.data);at=rng.randrange(64,len(raw));raw[at]^=1
try:Bank(bytes(raw),native=True,max_count=22)
except ValueError:rejected+=1
assert rejected==256
report={'checkpoint_sha256':p.bank.sha256,'records':p.bank.count,'record_size':500,
'native_reference_comparisons':checked,'exact_matches':checked,
'unique_numeric_payloads':len(set(numeric_payloads)),'unique_probe_signatures':len(set(signatures)),
'corrupt_bank_rejections':rejected,'scope':'Finite numerical and format checks, not model reasoning accuracy.'}
(ROOT/'reports/numerics.json').write_text(json.dumps(report,indent=2)+'\n');print(json.dumps(report,indent=2))
if __name__=='__main__':main()
|