from fractions import Fraction as Q def run(load,check): cum=load('C365_DATA.json')['cumulative_register'];cs={r['coordinate'] for r in cum};phasecs={Q(r['coordinate'])+e for r in cum for e in [-Q(1,4),Q(1,4)]};slots=[];phases=[];rect=[] for k,ref in enumerate(load('C389_DATA.json')['rows']): C=ref['existing_corner_sum'];i=ref['cumulative_index'];old=next(r for r in load('C287_DATA.json')['rows'] if r['i']==i);S,F,R,N=old['S'],old['F'],old['R'],old['Noah_required'];h=next(r for r in load('C361_DATA.json')['rows'] if r['i']==i);n=h['squared_E']['pivot']['center'];r=h['squared_E']['input']['center'] check('original rectangle retained '+str(k),N+S==C and N-R==F-S==1058 and R-S==N-F==8993) check('shifted2K and cross-span '+str(k),n==N-500 and r==R-500 and n-r==1058 and r-S==n-F==8493) check('translated source corners absent cumulatively '+str(k),C-n==S+500 and C-r==F+500 and C-n not in cs and C-r not in cs) rect.append({'i':i,'exchange_constant':C,'original_cumulative_corners':[S,F],'original_regular_corners':[N,R],'translated_regular_corners':[n,r],'short_sides':[F-S,n-r],'cross_spans':[r-S,n-F],'deviation_from17K':-500,'reflected_new_corners':[C-n,C-r],'new_cumulative_corners_sourced':False}) for case,h in enumerate(load('C405_DATA.json')['loop_translations']): records=list(h['Shem_records'].items())+[(f'P_pivot_{j}',s) for j,s in enumerate(h['P_Shem_death_records'])] for role,s in records: x=s['center'];image=C-x;hits=[j for j,a in enumerate(cum) if a['coordinate']==image];slots.append({'exchange':k,'case':case,'role':role,'Shem_record':s,'reflected_coordinate':image,'cumulative_record_indices':hits}) check('reflection translation law '+str((k,case,role)),C-(x+500-500)==(C-(x+500))+500) for e in [-Q(1,4),Q(1,4)]: y=Q(C)-x-e;ok=y in phasecs;phases.append({'exchange':k,'case':case,'role':role,'regular_offset':str(e),'reflected_offset':str(-e),'reflected_component':str(y),'source_member':ok}) check('all reflected loop slots absent',len(slots)==104 and not any(s['cumulative_record_indices'] for s in slots)) check('inherited phase reversal cannot supply sources',len(phases)==208 and not any(s['source_member'] for s in phases)) return {'step':'C409','rectangle_comparisons':rect,'reflected_source_slots':slots,'phase_trials':phases,'counts':{'existing_corner_exchanges':2,'labelled_reflected_loop_slots':len(slots),'admitted_reflected_loop_slots':0,'phase_trials':len(phases),'admitted_reflected_components':0,'source_complete_cumulative_loop_diagrams':0},'reflection_identity':'R_C T_-500 = T_+500 R_C. Keeping the existing exchange C fixed requires a+500 cumulative displacement, whose needed source members are absent.','interpretation':'The two source2K sides remain1058, while both former17K cross-spans become8493=17K−500. Exact translation conjugacy within the regular field therefore does not close the original Mirror rectangle. No exchange constant, global axis, cumulative Gear or new source point was introduced.'}