from research import *
s=begin(1315,'Record the complete ordinary-genealogy reconstruction','What does thecommonrowgrammar explainacrosstraditions?',{},['C1314','C1182–C1189','C1253–C1264'])
r={'family':'OrdinaryMT/SP/LXX genealogies','source_object':'58nativeb/Lrows withordinary/inclusivequalification','retained_premises':'orderedselectedrows,terminal,boundarybindings,nativeCainanandnamedchangemasks','operation_route':'ordinaryR_d/A_e changes→selectedb/L measurement→orderedaccumulation','complete_result':'38matchedMT/LXX changes;fiveamplitudes orfouraftere+n=u; matchedheads1250/430,native1380/890','conserved_or_changed':'SamecenturycanpreserveL orr dependingonitsrowoperation;fullfieldsretainlocation.','relation_used':'accumulation_linearity','additional_conditions':'e+n=u fitted;fivefoldcalibrationC=1.3u,T=.6u separate','information_loss':'Onlyheadtotalsloseinternalchangeplacement','evidence':['model/whole_genealogy_five_model.json','model/regular_kernel_complete_staircase.json','model/whole_genealogy_native_insertion.json'],'status':'conditionalfullfamilyreconstructionandclarification'}
a=artifact('model/reconstruction_genealogy.json',json.dumps(r,indent=2)+'\n')
finish(s,{'genealogy_reconstruction':a},'Thegenealogyentryexplains differences throughlocatedoperations anddifferentmeasurements ofsharedrows. Itretainsnativeinsertion andsourcecalibrations instead ofreplacingthefamily withitsheadtotals.','Write theSP cap-to-rectangle reconstructionentry.',{'three_bound_outputs':all((ROOT/p).exists() for p in r['evidence']),'all_fields':set(json.loads((ROOT/'model/reconstruction_entry_contract.json').read_text())['required'])==set(r)})
