from research import *
s=begin(804,'Recover two partitions from the retained path','Do the proposed coarsening maps reproduce both complete source gap lists?',{},['C803; File20 §8.6'])
p=json.loads((ROOT/'model/BJ_290_refinement.json').read_text());x=[z[1] for z in p['nodes']]
def coarse(cuts):return [x[cuts[i]]-x[cuts[i+1]] for i in range(len(cuts)-1)]
bio=coarse([0,1,3,5]);sac=coarse([0,2,4,5])
finish(s,{'biological':bio,'sacrifice_death':sac,'maps':{'biological_cuts':[0,1,3,5],'sacrifice_death_cuts':[0,2,4,5]}},'Coarsening yields100|60|130 and115|60|115 from the same ordered source path. Their compatibility is constructive and retains the distinct internal roles.','Verify the surface ledger’s own calendar encoding before interpreting its offsets.',{'biological':bio==[100,60,130],'sacrifice':sac==[115,60,115]})
