import sys
from pathlib import Path
sys.path.insert(0,str(Path(__file__).resolve().parents[1]))
from research import *
from runner import run
def jubilee_partition():
widths=[11206-4836,4836-1406,1406+65-1]
assert widths==[6370,3430,1470] and [n//490 for n in widths]==[13,7,3]
assert 20-7==13
return model('Jubilee_partition_dependencies',{'civil_order':['11206 BC','4836 BC','1406 BC','AD65'],'widths':widths,'units490':[13,7,3],'source_constraints':{'SP_to_Conquest':20,'MT_Flood_to_Conquest':7,'Conquest_to_AD65':3},'derived_first_leg':'20-7=13'})
run('Explain the13|7|3 division from its source-appointed anchors',
'What information generates the internal13-Jubilee leg of the SP11270 comparison?',jubilee_partition,
'SP supplies20 Jubilees to Conquest, MT supplies the retained7-Jubilee Flood leg, and Conquest→AD65 supplies3. The first13 is their20−7 difference.',
'Insert the LXX self-retained cumulative Flood at its independently known location and inspect the finer units.',
['SP_Jubilee_prefix.json','File51a §16.3','C1583'])
def lxx_jubilee_cut():
nodes=[11206,5746,4836,1406];widths=[a-b for a,b in zip(nodes,nodes[1:])]+[1406+65-1]
assert widths==[5460,910,3430,1470]
assert [v//70 for v in widths]==[78,13,49,21]
assert widths[0]+widths[1]==13*490
return model('LXX_Jubilee_refinement',{'BC_nodes_then_civil_AD65':nodes+[65],'widths':widths,'units70':[78,13,49,21],'total_units70':161,'group_first_two_units70':91,'interpretation':'LXX refines the first13 Jubilees on the70-year grid; it does not add another Jubilee boundary.'})
run('Add the LXX cut to the SP–MT Jubilee comparison',
'How does the source-derivedLXX910 fit inside the existing23-Jubilee interval?',lxx_jubilee_cut,
'SP11206→LXX5746→MT4836→1406→AD65 has(78+13+49+21)×70. The first two pieces recombine into13 Jubilees; the LXX cut exposes the shared70-year scale.',
'Use the common MT4836 node to test a direct transport of the already-established4900 restoration interval.',
['LXX_910_source.json','Jubilee_partition_dependencies.json'])
def shem_600_transport():
old=[1-5436,1-536];new=[1-4836,65] # ordinary civil linear coordinates
assert [b-a for a,b in zip(old,new)]==[600,600]
assert old[1]-old[0]==new[1]-new[0]==4900
return model('Shem_600_restoration_Jubilee_transport',{'first_interval':['5436 BC','536 BC'],'second_interval':['4836 BC','civil AD65'],'source_nodes':['ordinary MT cumulative Shem / SP completed inverse cumulative Flood','ordinary and held-inverse MT cumulative Flood'],'civil_coordinates_before':old,'civil_coordinates_after':new,'translation':600,'common_width':4900,'terminal_source_equation':'536+65-1=600'})
run('Join restoration and AD65 by the600-year Shem translation',
'Does the namedShem–Flood lifespan transport the4900 restoration interval into the Jubilee chain without a new target?',shem_600_transport,
'Yes. Both endpoints advance600 civil years:5436→4836 BC and536 BC→AD65. Thus the SP inverse Flood/MT Shem4900 reaches the MT Flood→AD65 ten-Jubilee interval.',
'Adjoin the already-provedLXX910 transport to display a complete three-placement4900 family.',
['MT_7000_packet.json','Jubilee_partition_dependencies.json','Style Guide civil rule'])
def three4900():
pairs=[['LXX cumulative Shem / Exodus',6346,1446],['MT cumulative Shem = SP completed inverse Flood / restoration',5436,536],['MT cumulative Flood / civil AD65',4836,-65]]
coordinates=[[1-6346,1-1446],[1-5436,1-536],[1-4836,65]]
shifts=[[b-a for a,b in zip(coordinates[i],coordinates[i+1])] for i in range(2)]
assert shifts==[[910,910],[600,600]]
assert all(b-a==4900 for a,b in coordinates)
return model('three_4900_placements',{'roles_and_labels':pairs,'civil_coordinates':coordinates,'successive_forward_translations':[910,600],'direct_first_to_third':1510,'shared_width':4900,'status':'three linked placements of one width; source translation plus named lifespan transport'})
run('Connect LXX Exodus, SP/MT restoration and MT AD65',
'Can the new600 relation extend the inherited910 comparison using only already-appointed nodes?',three4900,
'The4900 family runs LXX6346→1446, MT/SP5436→536, MT4836→AD65, with whole-interval translations910 then600. It joins Exodus, restoration and the NT endpoint through named source boundaries.',
'Specify the source roles at5436 so that the connection is not misread as a universal inverse-Shem identity.',
['Comparative_Study §4.1','Shem_600_restoration_Jubilee_transport.json'])
def incidence_roles():
assert 6+inverse(1400)+inverse(3310)==5436
assert 1406+inverse(3430)+inverse(600)==5436
assert 1406+inverse(3430+600)==4446
return model('5436_incidence_roles',{'coordinate_BC':5436,'valid_roles':['SP completed primary inverse cumulative Flood','ordinary MT cumulative Shem','MT Conquest-held cumulative inverse Shem when Flood andShem cuts both retained'],'different_partition_Shem_BC':4446,'guard':'A coordinate equality preserves each path label; the whole Conquest–Shem inverse is a separate branch.'})
run('Preserve the meaning of the shared5436 junction',
'Which declaredinverse paths actually support the5436 node used by the4900 transport?',incidence_roles,
'5436 is the primary SP completed inverse Flood and ordinary MT cumulative Shem; MT also retains it when Flood andShem are separate inverse legs. The whole-Shem inverse branch is4446.',
'These source-tagged junctions now support a compact dependency graph; use it to choose what belongs in the explanation.',
['SP_MT_Shem_condition.json','translation_cut_domain.json','three_4900_placements.json'])
Evidence
phase7.py
Linked sources and evidence
Edition and provenance
phase7.py
SHA-256 9a48dc89869d7a06dae9bf4f18c848ba2e3880ca3fcbd36d263d3e0cc7a1a4d3
C480–C1634/Research_Cycles/C1585_C1634/prep/phase7.py