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])})
