the-custodian/docs/changes/netkingdom-target-2026-10-16/access-native-source/b2-preparation/run-representation-probe.py
codex e19bcd1f3d
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Reject generated-only commits / generated-commit-guard (push) Successful in 13s
docs: preserve reviewed NetKingdom session artifacts
2026-11-01 22:42:33 +01:00

20 lines
2.6 KiB
Python

#!/usr/bin/env python3
"""Producer-vector experiment; no runtime source mutation or credential access."""
import argparse,hashlib,json,os,subprocess,sys
from pathlib import Path
p=argparse.ArgumentParser();p.add_argument('--approval-source',type=Path,required=True);p.add_argument('--vectors',type=Path,required=True);p.add_argument('--output',type=Path,required=True);a=p.parse_args()
sys.path.insert(0,str(a.approval_source));from approval_engine.binding import binding_digest
vectors=json.loads(a.vectors.read_bytes());env={k:os.environ[k] for k in ('PATH','HOME') if k in os.environ};env.update(GOCACHE='/tmp/netkingdom-go-cache',GOFLAGS='-buildvcs=false',GOMAXPROCS='2')
probe=Path(__file__).with_name('raw-representation-probe.go')
rows=json.loads(subprocess.check_output(['go','run',str(probe)],input=a.vectors.read_bytes(),env=env))
results=[]
for vector,row in zip(vectors['native_binding_vectors'],rows,strict=True):
def owner_digest(target):
return binding_digest({**vector['binding'],'target':json.loads(target)})
raw_digest=binding_digest(json.loads(row['raw_message_act_draft']))
default_digest=owner_digest(row['go_default_target']);number_digest=owner_digest(row['use_number_target'])
assert raw_digest==vector['native_digest'];assert number_digest==vector['native_digest']
results.append({'input_target_json':vector['input_target_json'],'producer_native_digest':vector['native_digest'],'raw_message_draft_matches_owner':True,'use_number_roundtrip_matches_owner':True,'default_float64_roundtrip_matches_owner':default_digest==vector['native_digest'],'go_default_target':row['go_default_target'],'go_raw_draft':row['raw_message_act_draft']})
assert any(not x['default_float64_roundtrip_matches_owner'] for x in results)
result={'schema':'access-engine.raw-native-representation-experiment.v1','source_vectors_sha256':hashlib.sha256(a.vectors.read_bytes()).hexdigest(),'source_vectors_producer_revision':vectors['producer_revision'],'cases':results,'raw_preservation_passed':len(results),'default_roundtrip_mismatches':sum(not x['default_float64_roundtrip_matches_owner'] for x in results),'boundary':'Synthetic raw draft preservation only. Actual native digest recomputed with Approval owner Python binding_digest; no Go canonicalization implementation or source-origin trust. Does not prove typed Access signed-envelope preservation, registry/compiler correspondence, trusted provider facts or positive eligibility.'}
a.output.write_text(json.dumps(result,indent=2)+'\n');print({'raw_preservation_passed':len(results),'default_roundtrip_mismatches':result['default_roundtrip_mismatches']})