from research import *
s=begin(1114,'Seal the corrected map and its proof links','Does the revised map remain legible and trace every connection to a completed result?',{},['C1111–C1113','C954–C956','C972','C978'])
from render_map_v2 import render_svg
spec=json.loads((ROOT/'model/family_map_spec.json').read_text());svg=render_svg(spec);a=artifact('deliverables/490d_Chronological_Family_Map_C1131_Final.svg',svg);p=ROOT/'deliverables/490d_Chronological_Family_Map_C1131_Final.png';b={'path':str(p.relative_to(ROOT)),'sha256':hashlib.sha256(p.read_bytes()).hexdigest(),'bytes':p.stat().st_size}
links={'begetting_to_births':'C954','births_to_capacity':'C955','capacity_to_lifespan':'C956','lifespan_to_cumulative':'C972','lifespan_to_rounded':'C978','companion_roles':'C1007,C1030,C1057,C1068'}
c=artifact('model/final_map_review.json',json.dumps({'visual_status':'PASS: labels clear, no clipping, source relationships unchanged','proof_links':links,'previous_layout_issues':'resolved by offsetting the three labels'},indent=2)+'\n')
finish(s,{'final_vector':a,'final_image':b,'map_review':c},'The corrected map is visually clear and every causal arrow has an explicit completed source-family derivation. Companion rows remain comparisons, not a forced shared pipeline.','Adopt the technical companion and verify its formulas and scope against the sealed calculations.',{'all_five_edges_bound':len(links)==6,'labels_moved':'x="445" y="663"' in svg and 'x="590" y="855"' in svg,'final_png_present':b['bytes']>10000})
