from research import *
s=begin(1302,'Assemble the common operation inventory','Is theoperationvocabularyshortenough toconnectallmajorfamilies whilepreservingdomains?',{},['C1295–C1301','C1294'])
files=['operations_row_changes.json','operations_measure_and_insert.json','operations_cap_and_round.json','operation_rounded_residual_lift.json','operations_Key_and_translation.json','operation_single_reversal.json','operations_group_and_reflect.json'];records=[]
for f in files:
 p=ROOT/'model'/f;d=json.loads(p.read_text());records.append({'path':'model/'+f,'sha256':hashlib.sha256(p.read_bytes()).hexdigest(),'content':d})
ids=[]
for x in records:
 d=x['content'];ids.extend(y['id'] for y in d.get('operations',[d]))
a=artifact('deliverables/Operation_Inventory_C1302.json',json.dumps({'title':'Commonoperationinventory','operation_ids':ids,'modules':records,'interpretation':'Onevocabularyofsource-qualifiedoperations; notoneoperationavailableoneveryfamily.','composition_rule':'Outputmeasure,state,count,role,anchor andinformation mustsatisfythestatednextinputdomain.'},indent=2)+'\n')
finish(s,{'operation_inventory':a,'operations':len(ids)},'Twelveoperationrecordsnowcover rowchanges,measurement,insertion,cap,rounding,residualtransport,Keys,translation,reversal,groupingandreflection. Theirdeclaredinterfacesconnectthefamilies whiletheir domainsretainthesource distinctions.','Build therelationledger fromcompletedproofs, distinguishingidentitiesfromadditional sourceconditions.',{'twelve':len(ids)==12,'unique':len(set(ids))==12,'seven_modules':len(records)==7})
