"""Seal only this newly created audit and copy small evidence into Git registry.""" import json from pathlib import Path import shutil import time from audit import save,digest,seal,immutable_check ROOT=Path('/data/digital-drosophila');MODEL=ROOT/'models/male-cns-lif/apl-pn-scope-audit-v1';EXP=ROOT/'experiments/phase4aa-apl-pn-scope' def main(): assert not (EXP/'manifest.json').exists() and not (MODEL/'manifest.json').exists(),'Already sealed' static=json.loads((EXP/'audit/results.json').read_text()) local=json.loads((EXP/'localization/summary.json').read_text()) pairs=json.loads((EXP/'localization/complete-pair-set-validation.json').read_text()) gpu=json.loads((EXP/'retry-with-correct-PATH/gpu-frozen-regression/summary.json').read_text()) external=json.loads((EXP/'external-resources/synaptic-partners/download-verification.json').read_text()) assert static['frozen_integrity_pass'] and local['pass'] and pairs['pass'] and gpu['pass'] and external['pass'] post=immutable_check(ROOT,ROOT/'registry/snapshots/bootstrap-20260929',4) save(EXP/'regression/final-old-files-integrity.json',post);assert post['pass'] result={'phase':'4AA','status':'PASS-APL-PN-ANATOMICAL-LOCALIZATION / NO-DYNAMICS-CANDIDATE', 'candidate':False,'previous_static_spatial_block_resolved_by_user_authorized_reference_data':True, 'old_static_audit_retained_without_overwrite':True,'canonical_neurons':166700,'canonical_edges':25582938, 'APL_PN_edges':268,'APL_target_PNs':259,'APL_PN_contacts':4600,'calyx_contacts':3820, 'calyx_fraction':3820/4600,'ROI_unspecified_contacts':731,'other_ROI_contacts':49, 'watched_PN_contacts':247,'watched_calyx_contacts':228,'watched_unspecified_contacts':19, 'complete_pair_checks':pairs,'frozen_trials_pass':gpu['pass'],'frozen_trials_count':len(gpu['trials']), 'old_scientific_files_verified':post['checked'],'old_file_integrity_pass':post['pass'], 'external_MD5_pass':external['pass'],'external_SHA256':external['sha256'], 'brain_dynamics_changed':False,'training':False,'receptor_or_terminal_gain_calibrated':False, 'bouton_identity_confirmed':False,'ComfyUI_stopped_or_unloaded':False,'top_level_gate_fraction':'5/10', 'failures_preserved':['initial experiment-directory permission before any output','first GPU build lookup of Ninja failed before simulation','first aria2 checksum argument invalid before download'], 'finalized_utc':time.strftime('%Y-%m-%dT%H:%M:%SZ',time.gmtime())} save(EXP/'audit/final-summary.json',result) with (MODEL/'REPORT.md').open('rb') as src,(EXP/'REPORT.md').open('xb') as dst:shutil.copyfileobj(src,dst) model_count=seal(MODEL);experiment_count=seal(EXP) verified=[] for base in (MODEL,EXP): manifest=json.loads((base/'manifest.json').read_text());bad=[r['path'] for r in manifest['files'] if digest(base/r['path'])!=r['sha256']] assert not bad;verified.append({'path':str(base),'files':len(manifest['files']),'pass':not bad}) registry=ROOT/'registry/phase4aa-apl-pn-scope';registry.mkdir(exist_ok=False) records=[] for p in sorted(EXP.rglob('*')): if not p.is_file() or p.suffix not in ('.json','.csv','.md','.sha256') or p.stat().st_size>2*1024**2:continue dst=registry/'evidence'/p.relative_to(EXP);dst.parent.mkdir(parents=True,exist_ok=True) with p.open('rb') as src,dst.open('xb') as out:shutil.copyfileobj(src,out) records.append({'original_path':str(p.relative_to(ROOT)),'copy_path':str(dst.relative_to(registry)),'sha256':digest(p),'bytes':p.stat().st_size}) save(registry/'evidence-index.json',records);save(registry/'seal-verification.json',verified) doc=ROOT/'docs/progress/phase4aa-apl-pn-scope.md';doc.parent.mkdir(parents=True,exist_ok=True) with (MODEL/'REPORT.md').open('rb') as src,doc.open('xb') as dst:shutil.copyfileobj(src,dst) print(json.dumps({'result':result['status'],'model_files':model_count,'experiment_files':experiment_count,'evidence_copies':len(records),'all_seals_pass':True}),flush=True) if __name__=='__main__':main()