from research import *
s=begin(770,'Identify a recoverable shared source object','What must accompany Rounded to preserve the original family?',{},['C754–769'])
f=json.loads((ROOT/'model/all_rounding_fields.json').read_text());ok=all(x['rounded']-x['D']==x['actual'] for rows in f.values() for x in rows.values())
counter={'fixed_dates':[1406,1526],'moved_date':[1663,1661]}
finish(s,{'reconstruction':'Actual boundary = Rounded boundary − D; actual row = rounded row − e','affine_obstruction':counter,'retained_data':['ordered source rows','typed path and terminal','mode selector','rounding residual field']},'Rounded plus its residual field recovers Actual exactly. Rounded alone loses information; no one affine date map works, since two fixed dates force identity while Amram moves.','Integrate the 40-step checkpoint and move to finite variant configurations.',{'all_reconstructed':ok,'two_fixed':1406!=1526,'nonidentity':1663!=1661})
