from research import *
s=begin(620,'Normalize the family relation graph','Does the demonstrated relation inventory become connected under explicitly declared module names?',{'nodes':['source_rows','regular_cumulative','covenant_clutch','rounded','carrier','enochic','calendar_keys','forwarded_mirrors'],'test':'weak connectivity of relation inventory, not identity or universal transport'},['C614; REVIEW_C613_C616.md; C531'])
edges=[
('source_rows','regular_cumulative','projection','C531'),
('covenant_clutch','covenant_clutch','161/175 duration reuse','C538,C567'),
('covenant_clutch','regular_cumulative','989 scaled bridge','C612'),
('regular_cumulative','rounded','3430 magnitude interface','C580,C611'),
('carrier','calendar_keys','partial E/full P evaluation','C569'),
('carrier','calendar_keys','partial E/full J evaluation','C570'),
('regular_cumulative','rounded','J plus pair translation','C572'),
('regular_cumulative','rounded','weighted12026 conservation','C573'),
('carrier','covenant_clutch','whole-year1936/1933 landing','C581'),
('enochic','enochic','cell equals grid row','C605'),
('enochic','calendar_keys','9000/9100 duration equivalence','C606'),
('enochic','calendar_keys','91/90 role-specific compilation','C607'),
('regular_cumulative','calendar_keys','529 width ladder','C531'),
('rounded','calendar_keys','529 width ladder','C531'),
('forwarded_mirrors','calendar_keys','admitted529 widths/reflections','C531')]
nodes=set(s['inputs']['nodes']);seen={'source_rows'}
while True:
more=seen|{b for a,b,*_ in edges if a in seen}|{a for a,b,*_ in edges if b in seen}
if more==seen:break
seen=more
doc={'nodes':sorted(nodes),'columns':['from','to','relation_type','evidence'],'edges':edges,'connected_ignoring_direction':seen==nodes,'interpretation':'A descriptive module graph; adjacency preserves the relation type. It does not identify all event nodes or authorize composed paths.'}
meta=artifact('model/family_graph_normalized.json',json.dumps(doc,indent=2,ensure_ascii=False)+'\n')
finish(s,{'artifact':meta,'modules':len(nodes),'edges':len(edges),'visited':sorted(seen),'weakly_connected':seen==nodes},'Explicit normalization resolves the earlier graph wording: the eight-module inventory is connected when direction is ignored. Every edge retains its own type and evidence. Connectivity describes the explanation’s organization, not a new arithmetic theorem or universal passage between events.','Finalize the exact Actual/Rounded diagram for the readable deliverable.',{'connected':seen==nodes,'all_edges_typed':all(len(e)==4 and e[2] and e[3] for e in edges)})
Evidence
s620.py
Edition and provenance
s620.py
SHA-256 8d222af3e69ff17dab75644b080957754eb7cda8ef35e8ed2829804c59515659
C480–C1634/Research_Cycles/C0532_C0631/evidence/s620.py