from research import *
s=begin(1412,'Create the reader artifact inventory','Which final files constitute the coherent reading release?',{},['C1390–C1411'])
names=['490d_Start_Here_C1431.md','490d_Reading_Guide_C1431.md','490d_Chronological_Families_Explanation_C1431.md','490d_Chronological_Families_Explanation_C1431_Print.pdf','490d_Technical_Companion_C1431.md','490d_Technical_Companion_C1431_Print.pdf','Chronological_Families_Map.svg','Chronological_Families_Map.png','Family_Map_Caption.md','Family_Map_Relationships.md','490d_Four_Part_Grammar_Overview_C1431.md','490d_Four_Part_Grammar_C1431.json','490d_Primitive_Data_Register_C1431.json','490d_Operation_Inventory_C1431.json','490d_Relation_Ledger_C1431.json','490d_Reconstruction_Ledger_C1431.json','490d_Claim_Source_Index_C1431.json','490d_Portable_Claim_Bindings_C1431.json','490d_Reader_Glossary_C1431.md','490d_Actual_Rounded_Reference_C1431.md','490d_Calendar_Measure_Reference_C1431.md','490d_Source_Costs_and_Claim_Status_C1431.md']
rows=[]
for n in names:
p=ROOT/'deliverables'/n;rows.append({'path':str(p.relative_to(ROOT)),'sha256':hashlib.sha256(p.read_bytes()).hexdigest(),'bytes':p.stat().st_size})
a=artifact('model/reader_release_inventory.json',json.dumps({'artifacts':rows,'note':'Initial render and interim drafts stay in evidence; this inventory names the final reader release.'},indent=2)+'\n')
finish(s,{'inventory':a,'files':len(rows)},'The reader release is defined by22 final files, including printable and editable readers, map, references and the complete four-part grammar.','Write the Strategy-stage progress assessment.',{'twenty_two':len(rows)==22,'unique':len({x['path'] for x in rows})==22})
Evidence
s1412.py
Edition and provenance
s1412.py
SHA-256 e4c35d1e11fdfca449f082347df39abd969bd90dbeeeb181358db857aae84ad1
C480–C1634/Research_Cycles/C1132_C1431_Recovered/evidence/s1412.py