from research import *
s=begin(883,'Explain the authorized File51a Key chains','Do the exact civil inputs satisfy the full stagewise domains?',{},['File51a author clarification lines26–66','C880–881'])
chains=json.loads((ROOT/'model/operator_inputs.json').read_text())['file51a_literal_conversion_chains']
out=[]
for row in chains:
 n=row['seed'];first=E*n;second=E*first
 assert first==row['E'] and second==row['EE']
 r={'civil_input':n,'EE_chain':[n,clean(first),clean(second)],'multiple529':n//529}
 if 'E_then_J' in row:
  assert J*first==row['E_then_J'];r.update(EJ_chain=[n,clean(first),clean(J*first)],multiple6877=n//6877)
 out.append(r)
a=artifact('model/File51a_authorized_key_chains.json',json.dumps(out,indent=2)+'\n')
finish(s,{'chains':out,'artifact':a},'Both source E² chains satisfy the529 domain; the55016→59800→60000 E→J chain satisfies6877. The general criterion explains their intermediate integrality while preserving their civil-count input roles.','Test why the neighboring Rounded widths cannot replace those civil counts.',{'all_EE':all(r['seed']%529==0 for r in chains),'EJ':chains[1]['seed']==8*6877})
