from research import *
s=begin(816,'Map each family to its explanatory operation and remaining inputs','Can readers see the common mechanism without mistaking source premises for predictions?',{},['C789,C810,C812–815'])
rows=[
['MT/LXX/SP','local b_eff/L selectors and suffix accumulation','whole mode-gap field','source rows and terminal conventions'],
['finite variants','binary changes on declared supports','all admitted placements and interval responses','licensed switches and source row lift'],
['Rounded','Q on selected rows; accumulate e','whole residual and bridge-change fields','rounding rule and source path'],
['BJ','weighted contraction, residuals, coarsening','22/23 index, deletion ledger,575/290 paths','source57, calendar timestamps, role choices'],
['calendar Keys','measure-scaled component transforms','declared day-volume and completions','calendar measure, held anchor and direction'],
['ordered shape families','translation, scale, reflection on specified objects','full labelled interval shapes','object membership and phase chart'],
['File52c','one-pass digit reversal on admitted components','two12026 path evaluations','licensed subdivision and zero-placeholders']]
a=artifact('model/family_explanation_table.json',json.dumps(rows,indent=2)+'\n')
finish(s,{'map':a,'claim_boundary':'The operations explain consequences; they do not independently predict why the sources contain their numerical inputs.'},'The final synthesis can lead with seven related families and their concrete operations. Each row states both the achieved reconstruction and the source choices still required.','Audit the main source tensions before producing final reading artifacts.',{'coverage':len(rows)==7,'each_has_limit':all(len(x)==4 and x[3] for x in rows)})
