from itertools import combinations def run(load,check): reg=load('C286_DATA.json')['target_register'];roles=['Noah birth','Shem birth','Noah death','Shem death'];contexts=[{'tradition':'SP','rail':'companion','gear':3,'Cainan':1,'Terah60':1,'full430':1},{'tradition':'MT','rail':None,'gear':1,'Cainan':0,'Terah60':0,'full430':0}];profiles=[] for c in contexts: p={} for role in roles: ids=[i for i,r in enumerate(reg) if r['role']==role and all(r.get(k)==v for k,v in c.items())] check('unique sourced person station '+str((c,role)),len(ids)==1);i=ids[0];p[role]={'record_index':i,'record':reg[i]} profiles.append({'context':c,'stations':p}) rows=[] for role in roles: u,l=[p['stations'][role]['record']['center'] for p in profiles];check('same-role2K '+role,u-l==1058);rows.append({'role':role,'upper':u,'lower':l,'difference':u-l}) relations=[] for a,z in combinations(roles,2): gaps=[p['stations'][a]['record']['center']-p['stations'][z]['record']['center'] for p in profiles] check('whole-profile interval retained '+a+' / '+z,gaps[0]==gaps[1]);relations.append({'roles':[a,z],'upper_gap':gaps[0],'lower_gap':gaps[1]}) for p in profiles: s={r:x['record']['center'] for r,x in p['stations'].items()} check('Noah950 '+str(p['context']),s['Noah birth']-s['Noah death']==950) check('Shem600 '+str(p['context']),s['Shem birth']-s['Shem death']==600) check('father-son500 '+str(p['context']),s['Noah birth']-s['Shem birth']==500) check('variant identity',650+130+60+215+4-1==1058) return {'step':'C416','profiles':profiles,'same_role_pairs':rows,'preserved_intervals':relations,'source_difference_terms':{'SP_primary_minus_MT_same_context':650,'Cainan':130,'Terah':60,'sojourn':215,'Gear3_minus_Gear1':4,'SP_person_companion':-1,'total':1058},'counts':{'profile_contexts':2,'source_stations':8,'same_role_2K_pairs':len(rows),'preserved_pairwise_intervals':len(relations)},'interpretation':'Fixed translation t→t−1058 maps all four upper person stations to the same lower context. Whole950/600 endpoint lifespans are preserved. This finite person-profile comparison is not yet a same-boundary Flood translation, unique census result, Mirror join or global chronology action.'}