Files
2026-09-30 20:17:50 +08:00

372 lines
25 KiB
Python

"""Pure CPU comparison of live-boundary and saved/restored diagnostics.
Array APIs require caller-authenticated records and immutable original graph /
delta arrays. They do NOT authenticate registrations, process receipts or disk
seals. load_record reads existing bytes without writing; its scope tags are not
authority. No GPU, learning, membrane replay or physiological inference.
"""
from __future__ import annotations
import hashlib
import json
from pathlib import Path
from types import ModuleType
import numpy as np
PINS = {
'engineering_compare.py': '5a2403f11bc08d65a9d242ac2cf9686b850e0c3680d65659f785e9b6b50c0238',
'engineering_queue_audit.py': '6ddaec52f2a0b5d0c528d51230d372fe2344160aef5eccea6a95b6c5e61a574e',
}
AUTHORITY_FIELDS = {'schema', 'boundary_id', 'registration_sha256', 'transition', 'diagnostic_mode', 'input_policy',
'case', 'parent', 'global_tick_offset', 'overlay_before', 'overlay_after',
'expected_effective_weight_before_sha256', 'expected_effective_weight_after_sha256', 'update',
'cpu_validation', 'source_files', 'frozen_inputs'}
def _digest(path):
h = hashlib.sha256()
with Path(path).open('rb') as stream:
for block in iter(lambda: stream.read(8 << 20), b''):
h.update(block)
return h.hexdigest()
def _load(filename, expected):
path = Path(__file__).resolve().parent.parent / 'olfactory-conditioning-lab-v1' / filename
raw = path.read_bytes()
if hashlib.sha256(raw).hexdigest() != expected:
raise ValueError('Frozen pure helper source differs: ' + filename)
module = ModuleType('conditioning_boundary_' + filename[:-3])
module.__file__ = str(path)
exec(compile(raw, str(path), 'exec'), module.__dict__)
return module
C = _load('engineering_compare.py', PINS['engineering_compare.py'])
require, bit_equal = C.require, C.bit_equal
def _raw(a):
h = hashlib.sha256()
for start in range(0, len(a), 1 << 18):
h.update(np.ascontiguousarray(a[start:start+(1 << 18)], dtype=a.dtype.newbyteorder('<')).tobytes())
return h.hexdigest()
def load_record(directory, *, kind):
"""Read actual inherited schemas; never disguise oracle as fixed-weight.
No external SHA pin is accepted or inferred here. The caller independently
verifies the complete oracle/new/old checkpoint seal before this reader.
"""
require(kind in ('oracle', 'updated', 'parent'), 'Explicit record kind required')
record = C.load_run(directory)
try:
summary = record['summary']
if kind == 'oracle':
require(summary.get('diagnostic_live_boundary') is True and summary.get('within_trial_weight_updates') is True and
summary.get('production_backend') is False and summary.get('restored_from_checkpoint') is False,
'Not a declared live-boundary diagnostic')
record['boundary_snapshot'] = C._npz(Path(directory)/'boundary-snapshot.npz',
('v','g','ref','counts','spike_ring','apl_state','apl_pending'))
record['boundary_report'] = C._json(Path(directory)/'boundary-comparison.json')
record['oracle_provenance'] = C._json(Path(directory)/'oracle-provenance.json')
else:
require(summary.get('within_trial_weight_updates') is False, 'Checkpoint segment updated during run')
if kind == 'updated':
require(summary.get('updated_boundary_schema') == 'conditioning-updated-boundary-v1' and
summary.get('checkpoint_continuation_used') is True, 'Not an updated checkpoint segment')
record['manifest_sha256'] = _digest(Path(directory)/'checkpoint-manifest.json')
record['read_scope'] = kind
return record
except BaseException:
C.close_run(record)
raise
def close_record(record):
C.close_run(record)
def _checks():
checks = {}
def check(name, okay):
checks[name] = bool(okay)
return checks, check
def _complete(record):
C.validate_run(record)
s=record.get('summary',{})
require(s.get('complete') is True and s.get('pass_all') is True and s.get('all_finite') is True and
type(s.get('steps')) is int and s['steps']==record['steps']==s.get('completed_ticks') and
type(s.get('nodes')) is int and s['nodes']==len(record['state']['v']) and
s.get('precision')=='float64' and s.get('apl_precision')=='float32' and s.get('apl_delay_steps')==18,
'Record summary is incomplete or has wrong numerical scope')
def _canonical(value):
return json.dumps(value,sort_keys=True,separators=(',',':'),ensure_ascii=False,allow_nan=False).encode('utf-8')
def _paired_authorities(pair, oracle_sha, child_sha, child_mode):
"""Bind actual raw JSON bytes and compare canonical content, not self hashes.
File SHA and canonical SHA are intentionally distinct. Only diagnostic_mode
and boundary_id may differ; every other byte of canonical JSON must agree.
"""
require(type(pair) in (tuple,list) and len(pair)==2 and all(type(raw)is bytes for raw in pair),
'paired_authorities must be the two original raw JSON byte strings')
def unique(items):
result={}
for key,value in items:
require(key not in result,'Duplicate authority JSON key: '+key);result[key]=value
return result
values=[json.loads(raw.decode('utf-8'),object_pairs_hook=unique,
parse_constant=lambda value:(_ for _ in ()).throw(ValueError('Nonfinite authority JSON'))) for raw in pair]
for value in values:
require(type(value)is dict and set(value)==AUTHORITY_FIELDS and value.get('schema')=='conditioning-updated-boundary-v1',
'Paired authority must use the exact boundary schema')
require(type(value['boundary_id'])is str and bool(value['boundary_id']) and value['boundary_id'].strip()==value['boundary_id'],
'Invalid paired boundary ID')
hashes=[hashlib.sha256(raw).hexdigest() for raw in pair]
allowed={'diagnostic_mode','boundary_id'}
normalized=[{k:v for k,v in value.items() if k not in allowed} for value in values]
differences=[key for key in sorted(AUTHORITY_FIELDS-allowed) if _canonical(values[0][key])!=_canonical(values[1][key])]
checks=dict(actual_raw_file_SHA_bound=hashes==[oracle_sha,child_sha],
explicit_modes=values[0]['diagnostic_mode']=='reference' and values[1]['diagnostic_mode']==child_mode,
only_two_allowed_fields_differ=_canonical(normalized[0])==_canonical(normalized[1]))
return dict(pass_all=all(checks.values()),checks=checks,raw_sha256=hashes,
canonical_sha256=[hashlib.sha256(_canonical(value)).hexdigest() for value in values],
common_content_canonical_sha256=[hashlib.sha256(_canonical(value)).hexdigest() for value in normalized],
allowed_differences=sorted(allowed),disallowed_different_fields=differences,
actual_disk_or_registration_authority_verified_here=False)
def compare_boundary(oracle, continuation, *, parent, expected_before_sha256, expected_after_sha256, paired_authorities=None):
"""Compare full oracle prefix/suffix against an authenticated parent/child.
Both reference and light children are supported. A light child's absent
intermediate traces/hashes are explicitly unobserved, never called exact.
No nonvacuity gate is invented here; changed-edge coverage is separate.
"""
for record in (oracle, continuation, parent): _complete(record)
require(C._sha(expected_before_sha256) and C._sha(expected_after_sha256), 'External expected weight identities required')
require(C._sha(parent.get('manifest_sha256')), 'Caller-authenticated parent manifest identity required')
require(parent['global_tick_offset'] == oracle['global_tick_offset'] == 0, 'Need original fresh parent/live oracle')
cut, steps = parent['steps'], continuation['steps']
require(continuation['global_tick_offset'] == cut and oracle['steps'] == cut+steps, 'Wrong boundary/duration')
n = len(parent['state']['v'])
require(len(oracle['state']['v']) == len(continuation['state']['v']) == n, 'Population differs')
require(oracle.get('traces') and oracle.get('state_hashes') is not None and oracle.get('queues') is not None,
'Live oracle must retain full reference diagnostics')
os, cs, ps = oracle['summary'], continuation['summary'], parent['summary']
require(cs.get('diagnostic_mode') in ('reference','light'), 'Child recording mode is undeclared')
reference = cs['diagnostic_mode'] == 'reference'
if reference:
require(continuation.get('traces') and continuation.get('state_hashes') is not None and continuation.get('queues') is not None,
'Reference child diagnostics missing')
else:
require(not continuation.get('traces') and continuation.get('state_hashes') is None and continuation.get('queues') is None,
'Light scope must not manufacture intermediate histories')
if ps.get('diagnostic_mode')=='reference':
require(parent.get('traces') and parent.get('state_hashes') is not None and parent.get('queues') is not None,
'Reference parent diagnostics missing')
checks, check = _checks()
check('oracle.explicit_live_scope', os.get('diagnostic_mode') == 'reference' and
os.get('diagnostic_live_boundary') is True and os.get('within_trial_weight_updates') is True and
os.get('explicit_weight_switches') == 1 and type(os.get('explicit_weight_switches')) is int and
os.get('boundary_tick') == cut and os.get('restored_from_checkpoint') is False and os.get('production_backend') is False)
check('child.explicit_updated_scope', cs.get('within_trial_weight_updates') is False and
cs.get('checkpoint_continuation_used') is True and cs.get('updated_boundary_schema') == 'conditioning-updated-boundary-v1' and
cs.get('parent_checkpoint_manifest_sha256') == parent['manifest_sha256'] and
cs.get('global_next_tick') == cut+steps and cs.get('boundary_transition') == 'epoch_update')
check('weights.before', ps.get('effective_weights_raw_sha256') == os.get('initial_effective_weights_raw_sha256') == expected_before_sha256)
check('weights.after', cs.get('effective_weights_raw_sha256') == os.get('effective_weights_raw_sha256') == expected_after_sha256)
ot, on = oracle['state']['step'], oracle['state']['neuron_idx']
split = int(np.searchsorted(ot,cut))
check('prefix.events.tick',bit_equal(ot[:split],parent['state']['step']))
check('prefix.events.neuron_idx',bit_equal(on[:split],parent['state']['neuron_idx']))
check('prefix.counts',np.array_equal(np.bincount(on[:split],minlength=n),parent['state']['counts']))
check('suffix.events.absolute_tick',np.array_equal(continuation['state']['step'].astype(np.int64)+cut,ot[split:].astype(np.int64)))
check('suffix.events.neuron_idx',bit_equal(continuation['state']['neuron_idx'],on[split:]))
check('suffix.segment_counts',np.array_equal(continuation['state']['counts'],np.bincount(on[split:],minlength=n)))
check('prefix_plus_suffix.total_counts',np.array_equal(parent['state']['counts'].astype(np.int64)+continuation['state']['counts'],oracle['state']['counts']))
for name in ('v','g','ref'):check('final.'+name,bit_equal(continuation['state'][name],oracle['state'][name]))
check('final.phase_normalized_spike_ring',bit_equal(C.normalized_ring(continuation['terminal']),C.normalized_ring(oracle['terminal'])))
for name in ('apl_pending','apl_state'):check('final.'+name,bit_equal(continuation['terminal'][name],oracle['terminal'][name]))
snapshot = oracle.get('boundary_snapshot')
require(type(snapshot) is dict and set(snapshot) == {'v','g','ref','counts','spike_ring','apl_state','apl_pending'}, 'Missing live boundary snapshot')
for name in ('v','g','ref','counts'):check('boundary.live_parent.'+name,bit_equal(snapshot[name],parent['state'][name]))
for name in ('spike_ring','apl_state','apl_pending'):check('boundary.live_parent.'+name,bit_equal(snapshot[name],parent['terminal'][name]))
report, provenance = oracle.get('boundary_report'), oracle.get('oracle_provenance')
require(type(report) is dict and type(provenance) is dict, 'Missing explicit oracle provenance/report')
paired=None
authority_matches=(C._sha(cs.get('boundary_authority_sha256')) and
provenance.get('authority_sha256')==cs['boundary_authority_sha256'])
if paired_authorities is not None:
paired=_paired_authorities(paired_authorities,provenance.get('authority_sha256'),
cs.get('boundary_authority_sha256'),cs['diagnostic_mode'])
authority_matches=paired['pass_all']
check('oracle.boundary_metadata',report.get('complete') is True and report.get('boundary_tick') == cut and
report.get('parent_checkpoint_manifest_sha256') == parent['manifest_sha256'] and report.get('restore_called') is False and
report.get('initial_state_replaced') is False and report.get('queues_replaced') is False and report.get('existing_weights_replaced_once') is True and
report.get('before_effective_sha256') == expected_before_sha256 and report.get('after_effective_sha256') == expected_after_sha256)
check('oracle.authority_matches_child',provenance.get('schema') == 'conditioning-live-boundary-oracle-v1' and
provenance.get('complete') is True and provenance.get('restore_called') is False and
provenance.get('prefix_sparse_events_exact') is True and provenance.get('learning_pass_claimed') is False and
authority_matches)
for label,record,start,stop in (('prefix',parent,0,cut),('suffix',continuation,cut,cut+steps)):
req=oracle['requests'];lo,hi=np.searchsorted(req[:,0],(start,stop))
actual=record['requests'].copy();actual[:,0]+=start
check(label+'.requests_all_five_fields',bit_equal(actual,req[lo:hi]))
if record.get('traces'):
for name in C.TRACE_FILES:check(label+'.trace.'+name,bit_equal(record['traces'][name],oracle['traces'][name][start:stop]))
if record.get('state_hashes') is not None:
check(label+'.state_hashes',all(all(row[key]==oracle['state_hashes'][start+t][key] for key in C.HASH_FIELDS)
for t,row in enumerate(record['state_hashes'])))
if record.get('queues') is not None:
check(label+'.queue_order_acceptance',all(all(row[key]==oracle['queues'][start+t][key] for key in C.QUEUE_FIELDS)
for t,row in enumerate(record['queues'])))
consume=min(steps,18)
if reference:check('boundary.applied_parent_APL',bit_equal(continuation['traces']['applied'][:consume],parent['terminal']['apl_pending'][:consume]))
if steps<18:check('boundary.unconsumed_parent_APL',bit_equal(continuation['terminal']['apl_pending'][:18-steps],parent['terminal']['apl_pending'][steps:]))
if steps<19:check('boundary.unwritten_parent_spike_slots',bit_equal(continuation['terminal']['spike_ring'][steps:],C.normalized_ring(parent['terminal'])[steps:]))
exact=all(checks.values())
return dict(schema='conditioning-live-vs-restored-comparison-v1',pass_all=exact,numerical_exact=exact,
status='EXACT-RECORDED-BOUNDARY-SCOPE-NOT-LEARNING' if exact else 'FAIL-BOUNDARY-NUMERICAL',checks=checks,
failed_checks=[k for k,v in checks.items() if not v],boundary_tick=cut,suffix_steps=steps,neurons=n,
child_mode=cs['diagnostic_mode'],suffix_reference_diagnostics_compared=reference,
paired_authority_audit=paired,
light_intermediate_states_observed=False,light_per_tick_identity_claimed=False,
queue_joint_hash_compared=False,queue_joint_hash_exclusion='Local tick headers differ; independent audit checks each actual header',
changed_candidate_pending_arrival_coverage_verified=False,external_file_authority_verified_here=False,
independent_membrane_replay_performed=False,learning_pass_claimed=False,candidate_generated=False)
def _effective_hash(base, apl, rows, values):
h=hashlib.sha256()
for start in range(0,len(base),1<<18):
stop=min(start+(1<<18),len(base));a=np.array(base[start:stop],copy=True)
a[apl[start:stop]]=np.float64(0)
lo,hi=np.searchsorted(rows,(start,stop));a[rows[lo:hi]-start]=values[lo:hi]
h.update(np.ascontiguousarray(a,dtype='<f8').tobytes())
return h.hexdigest()
def _candidates(ptr,src,dst,edge_id,base,apl,ids,before,after,Q):
n,e=Q._graph(ptr,dst,edge_id,base)
require(isinstance(src,np.ndarray) and src.dtype==np.int32 and src.shape==(e,), 'Invalid actual CSR source array')
require(isinstance(apl,np.ndarray) and apl.dtype==np.bool_ and apl.shape==(e,), 'Invalid fast APL mask')
for start in range(0,e,1<<18):
stop=min(start+(1<<18),e)
expected=np.searchsorted(ptr[1:],np.arange(start,stop,dtype=np.int64),side='right')
require(np.array_equal(src[start:stop],expected),'Source array disagrees with original CSR ordering')
require(isinstance(ids,np.ndarray) and ids.dtype==np.int64 and ids.ndim==1 and len(ids)>0 and
np.all(ids>=0) and np.all(ids[1:]>ids[:-1]),'Candidate IDs must preserve canonical sorted unique order')
for name,a in (('before',before),('after',after)):
require(isinstance(a,np.ndarray) and a.dtype==np.float32 and a.shape==ids.shape and
np.isfinite(a).all() and np.all(a<=0),'Invalid f32 mV delta '+name)
require(np.all(after<=before),'This diagnostic admits only existing depression, not potentiation')
rows=np.searchsorted(edge_id,ids)
require(np.all(rows<e) and np.array_equal(edge_id[rows],ids),'Candidate missing from actual graph')
require(not np.any(apl[rows]) and np.all(base[rows]>0),'Candidate overlaps APL or has nonpositive original weight')
values=[]
for delta in (before,after):
a=base[rows].copy();nz=delta!=np.float32(0)
a[nz]=np.add(a[nz],np.multiply(delta[nz].astype(np.float64),np.float64(.001)))
require(np.isfinite(a).all() and np.all(a>0),'Effective candidate weight changed sign/nonfinite')
values.append(a)
return n,e,rows,values[0],values[1]
def audit_changed_pending(parent,child,*,ptr,src,dst,edge_id,base_weights,apl_mask,
candidate_edge_id,delta_before,delta_after,input_pins):
"""Conditional ref/request/CSR audit plus a changed-edge crossing witness.
Post-threshold ref=22 precedes arrivals; requests use prior ref<=1. Every
real edge remains in source/CSR order, including rejected/zero weights.
Witnesses require an actual numeric effective-weight change and accepted
arrival emitted before cut and arriving within the child. This is not a
unique-cause claim and does not independently predict membrane spikes.
"""
require(type(input_pins)is dict and input_pins and all(type(k)is str and C._sha(v) for k,v in input_pins.items()),'Caller input anchors required')
Q=_load('engineering_queue_audit.py',PINS['engineering_queue_audit.py'])
for record in (parent,child):_complete(record)
n,e,rows,before,after=_candidates(ptr,src,dst,edge_id,base_weights,apl_mask,candidate_edge_id,delta_before,delta_after,Q)
require(parent['global_tick_offset']==0 and child['global_tick_offset']==parent['steps'],'Fresh parent / exact child boundary required')
require(len(parent['state']['v'])==len(child['state']['v'])==n,'Record/graph population mismatch')
require(all(type(record['summary'].get('edges')) is int and record['summary']['edges']==e for record in (parent,child)),
'Record/graph edge count differs')
cut,total=parent['steps'],parent['steps']+child['steps']
require(total<=np.iinfo(np.int32).max,'Diagnostic clock exceeds exact int32 event range')
before_sha=_effective_hash(base_weights,apl_mask,rows,before);after_sha=_effective_hash(base_weights,apl_mask,rows,after)
require(parent['summary'].get('effective_weights_raw_sha256')==before_sha and
child['summary'].get('effective_weights_raw_sha256')==after_sha,'Delta/base arithmetic mismatches actual runtime effective SHA')
changed=(before.view(np.uint64)!=after.view(np.uint64)) & (before!=after)
changed_rows=rows[changed];changed_ids=candidate_edge_id[changed]
effective=base_weights.copy();effective[apl_mask]=np.float64(0);effective[rows]=after
tick=np.concatenate((parent['state']['step'],child['state']['step']+np.int32(cut)))
node=np.concatenate((parent['state']['neuron_idx'],child['state']['neuron_idx']))
request=np.concatenate((parent['requests'],child['requests']+np.array([cut,0,0,0,0],np.int64)))
ref=np.zeros(n,np.int32);differences=[];difference_count=0
def check(ok,field,t):
nonlocal difference_count
if not ok:
difference_count+=1
if len(differences)<60:differences.append(dict(field=field,global_tick=t))
coverage=dict(changed_candidate_crossing_arrivals=0,accepted_changed_candidate_crossing_arrivals=0,
rejected_changed_candidate_crossing_arrivals=0,first_witness=None)
full=all(record.get('queues') is not None and record.get('state_hashes') is not None for record in (parent,child))
for t in range(total):
record,local=(parent,t) if t<cut else (child,t-cut)
rlo,rhi=np.searchsorted(request[:,0],(t,t+1));requested=request[rlo:rhi,1]
accepted=ref[requested]<=1
expected=request[rlo:rhi].copy();expected[:,2]=1;expected[:,3]=accepted;expected[:,4]=~accepted
check(bit_equal(request[rlo:rhi],expected),'request.acceptance',t)
np.maximum(ref-np.int32(1),np.int32(0),out=ref)
lo,hi=np.searchsorted(tick,(t,t+1));fired=node[lo:hi]
check(np.all(ref[fired]==0),'spike_during_refractory',t)
check(np.isin(requested[accepted],fired,assume_unique=True).all(),'accepted_request_without_spike',t)
ref[fired]=22
lo,hi=np.searchsorted(tick,(t-18,t-17));sources=node[lo:hi] if t>=18 else node[:0]
qrows,_,_=Q._queue(t,local,sources,ref,ptr,dst,edge_id,effective,[])
expected_queue=qrows[0] if t<cut else qrows[1]
if record.get('queues') is not None:
check(record['queues'][local]==expected_queue,'source_ordered_queue_all_fields',t)
if record.get('state_hashes') is not None:
check(record['state_hashes'][local]['ref_sha256']==_raw(ref),'ref_hash',t)
if local==record['steps']-1:check(bit_equal(record['state']['ref'],ref),'final_ref',t)
if t-18<cut<=t and t<total:
for source in sources:
lo,hi=np.searchsorted(changed_rows,(ptr[source],ptr[source+1]))
for at in range(int(lo),int(hi)):
row=int(changed_rows[at]);target=int(dst[row]);accepted_edge=ref[target]==0
coverage['changed_candidate_crossing_arrivals']+=1
coverage['accepted_changed_candidate_crossing_arrivals' if accepted_edge else 'rejected_changed_candidate_crossing_arrivals']+=1
if accepted_edge and coverage['first_witness'] is None:
original=int(np.searchsorted(rows,row))
coverage['first_witness']=dict(global_edge_id=int(changed_ids[at]),csr_row=row,
source_neuron_idx=int(source),target_neuron_idx=target,source_spike_global_tick=t-18,
arrival_global_tick=t,arrival_child_local_tick=t-cut,post_threshold_target_ref=0,accepted=True,
before_weight_SI_volt=float(before[original]),after_weight_SI_volt=float(after[original]),
before_weight_f64_le_hex=np.asarray(before[original],dtype='<f8').tobytes().hex(),
after_weight_f64_le_hex=np.asarray(after[original],dtype='<f8').tobytes().hex(),
delta_before_f32_mv_hex=np.asarray(delta_before[original],dtype='<f4').tobytes().hex(),
delta_after_f32_mv_hex=np.asarray(delta_after[original],dtype='<f4').tobytes().hex(),
unique_cause_or_necessity_claim=False)
exact=difference_count==0;witness=coverage['first_witness'] is not None;passed=exact and full and witness
return dict(schema='conditioning-changed-pending-edge-audit-v1',pass_all=passed,
status='FAIL-QUEUE-REF-REQUEST' if not exact else ('PASS-CHANGED-PENDING-EDGE-SCOPE' if passed else 'INCOMPLETE-CHANGED-EDGE-COVERAGE'),
conditional_ref_request_queue_exact=exact,reference_queue_and_ref_coverage_complete=full,
accepted_changed_edge_witness_verified=passed,difference_count=difference_count,differences=differences,
differences_truncated=difference_count>len(differences),coverage=coverage,neurons=n,edges=e,boundary_tick=cut,
changed_delta_bit_count=int(np.count_nonzero(delta_before.view(np.uint32)!=delta_after.view(np.uint32))),
changed_effective_numeric_count=int(changed.sum()),before_effective_sha256=before_sha,after_effective_sha256=after_sha,
supplied_input_pins=dict(input_pins),array_raw_sha256={key:_raw(a) for key,a in dict(ptr=ptr,src=src,dst=dst,edge_id=edge_id,
base_weights=base_weights,apl_mask=apl_mask,candidate_edge_id=candidate_edge_id,delta_before=delta_before,delta_after=delta_after).items()},
delay_steps=18,refractory_steps=22,actual_membrane_dynamics_independently_replayed=False,
observed_spikes_condition_the_audit=True,external_file_authority_verified_here=False,learning_pass_claimed=False)