Evidence

s729.py

Download source fileOpen in research workspace
from research import *
names=['490d_Chronological_Families_Integrated_Synthesis_C731.md','490d_Chronological_Families_Reading_Guide_C731.md','Chronological_Family_Connections.svg','Chronological_Family_Connections.png','Source_Claim_Register.md','Family_Claim_Dependencies.json','Chronological_Mode_Map.md']
s=begin(729,'Bind the final reading artifacts','Which exact files constitute the final explanation rather than the intermediate working states?',{'final_files':names},['C724–C728; final figure C720'])
files={}
for name in names:
    data=(ROOT/'deliverables'/name).read_bytes()
    files[name]={'sha256':hashlib.sha256(data).hexdigest(),'bytes':len(data)}
a=artifact('deliverables/DELIVERY_MANIFEST.json',json.dumps({'primary_guide':names[1],'main_synthesis':names[0],'files':files,'intermediate_versions':'Retained for provenance; final names above control.'},indent=2)+'\n')
finish(s,{'artifact':a,'final_files':files},'The final guide, synthesis, figure and supporting maps are now bound by exact content hashes. Intermediate copies remain traceable but are clearly separated from the reading versions.','Run the complete available-prefix verification, then close the final checkpoint.',{'file_count':len(files)==7,'nonempty':all(v['bytes']>100 for v in files.values()),'PNG_signature':(ROOT/'deliverables'/names[3]).read_bytes()[:8]==bytes([137,80,78,71,13,10,26,10])})
Edition and provenance

s729.py

SHA-256 a8a2535cfea76467b0983e8e7331603954fe280c2bb2f58972b74d0fcdc38ab0

C480–C1634/Research_Cycles/C0632_C0731/evidence/s729.py