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()