import sys
from pathlib import Path
sys.path.insert(0,str(Path(__file__).resolve().parents[1]))
from research import *
from runner import run
def kernel():
inputs={'MT Regular':[2456,4106],'MT Cumulative':[4836,14006],'LXX Regular':[3236,5486],'LXX Cumulative':[5746,14896],'SP Regular':[3106,4406],'SP Cumulative':[4716,13396]}
out={}
for name,(f,c) in inputs.items():
lower,upper=f-1406,c-f
out[name]={'source_Flood':f,'source_head':c,'legs':[lower,upper],'inverse_legs':[inverse(lower),inverse(upper)],'held_nodes':path([lower,upper]),'completed_nodes':path([1400,lower,upper],6)}
targets={'Conquest_BC':1406,'Nativity_BC':6,'Exodus_BC':1446,'restoration_BC':536,'NT_civil_AD':65,'Abram_birth_BC':2166}
return model('source_to_comparison_kernel',{'inputs':inputs,'spines':out,'targets':targets,'operations':['round source lifespans within their named mode','form declared original legs','reverse each original leg once','accumulate','transport named point packets with their width convention'],'new_operator_count':0})
run('Assemble one source-to-comparison reconstruction',
'Can the new packet be reconstructed with the existing six native spine inputs and operator inventory?',kernel,
'The inherited six-spine generator supplies every inverse node used here. The new comparisons require no added reversal rule or free endpoint; they connect existing named outputs and targets.',
'Revisit the primary mode gaps as the combination of these lower Flood modules and their upper source legs.',
['Comparative_Study §2.1','Strategy §§1,5G,6','source bindings'])
def mode_modules():
spines=model('source_to_comparison_kernel')['spines'];out={}
for m in ['MT','LXX','SP']:
r=spines[m+' Regular']['inverse_legs'];c=spines[m+' Cumulative']['inverse_legs']
out[m]={'lower_Flood_difference':c[0]-r[0],'upper_difference':c[1]-r[1],'head_difference':sum(c)-sum(r)}
assert out=={'MT':{'lower_Flood_difference':-1580,'upper_difference':1580,'head_difference':0},'LXX':{'lower_Flood_difference':530,'upper_difference':-30,'head_difference':500},'SP':{'lower_Flood_difference':-5770,'upper_difference':5580,'head_difference':-190}}
return model('lower_upper_mode_synthesis',{'rows':out,'status':'reused primary arithmetic, now related to the new lower-Flood comparison modules'})
run('Relate the new Flood connections to the primary head differences',
'How do the locally shared Flood comparisons coexist with MT convergence and LXX/SP head displacement?',mode_modules,
'Each primary mode gap is a lower-plus-upper balance: MT−1580+1580=0; LXX530−30=500; SP−5770+5580=−190. The new lower-node packets therefore complement, rather than replace, the original head explanation.',
'Separate source constraints from translation consequences in one dependency ledger.',
['source_to_comparison_kernel.json','Comparative_Study §§3.1,3.3,7.2'])
def dependency_ledger():
records=[
{'family':'MT–LXX Flood910','source_condition':'rounded row differences460+450','consequence':'equal Shem/Noah lives and self-reversing lower legs carry910 to selected inverse prefixes'},
{'family':'SP–MT inverse gap2100','source_condition':'Eber/Terah120 plus SP reversal1980','consequence':'common stage shift preserves2100'},
{'family':'5436 junction','source_condition':'2700−2100 equals independently supplied Shem600','consequence':'SP completed inverse Flood shares ordinary MT Shem coordinate'},
{'family':'7000 packets','source_condition':'MT–LXX910 also equals Exodus–restoration910','consequence':'all four nodes and all six pairwise distances translate'},
{'family':'4900 toAD65','source_condition':'Shem600 also equals civil restoration→AD65','consequence':'the4900 interval transports from Shem/restoration to Flood/AD65'},
{'family':'12600 refinement','source_condition':'LXX inverse sum9030−MT lower3430=5600','consequence':'retain MT/SP nodes to recover5600+2100+4900; coarse partitions follow'},
{'family':'SP23 Jubilees','source_condition':'SP inverse prefix11200 and Conquest displacement1400 give9800','consequence':'AD65 adds3 Jubilees; MT leg7 yields13|7|3'},
{'family':'RoundedAD2166','source_condition':'q(536BC)+2700 equals negative q(Abram2166BC)','consequence':'whole translated path preserves its intervals'}]
return model('dependency_ledger',records)
run('Classify what each new relation actually explains',
'Which numerical agreements depend on source choices, and which follow from an admitted transport?',dependency_ledger,
'Eight connected families now have explicit source conditions and consequences. Repeated interval displays are grouped under their generating condition; no statistical-independence or historical-priority claim is added.',
'Preserve the contrasting cases that define the range of this explanatory kernel.',
['Strategy §§5D,F,6','current cycle models'])
def boundaries():
tests=[{'proposal':'all inverse partitions translate MT→LXX by910','result':'fails','witness':'whole Conquest–Shem gives1900; Flood-cut gives910'},
{'proposal':'the shared7000 packet extends to both primary cumulative heads','result':'fails','witness':'upper inverse difference−2000; head difference−1090'},
{'proposal':'all completed cumulative Floods lie on the700 grid','result':'fails','witness':'LXX7910 has remainder210; all three lie on70 grid'},
{'proposal':'all completed Regular Floods meet both Jubilee targets','result':'fails','witness':'SP alone has zero490 remainder in the fixed native family'},
{'proposal':'RoundedAD2166 widths can use civilB+A−1 unchanged','result':'different measure','witness':'Rounded usesB+A−2; civil labels would addone'}]
return model('scope_ledger',{'tests':tests,'accepted_scope':'named source-controlled prefixes, packets and incidence relations','deferred':['deeper mirrors','second decimal inversion'],'interpretation':'These limits delimit successful constructions; no additional boundary scan is proposed.'})
run('Freeze the demonstrated range of the explanation',
'What must the synthesis retain to avoid turning local agreements into an unsupported universal map?',boundaries,
'The successful packets have explicit ranges. The known cut, head, grid and counting distinctions are retained in one compact scope ledger rather than reopened as further searches.',
'Choose the small set of reader-facing additions that best advance the Strategy.',
['translation_cut_domain.json','packet_head_boundary.json','selected_700_grid.json','Jubilee_target_dependence.json'])
def editorial_selection():
return model('reader_selection',{'main_additions':['source910=460+450 and SP120+1980=2100','three cumulative restoration spans and51-unit common addition','whole MT–LXX7000 packet','three-placement4900 family with910 and600 transports','12600=(8+3+7)×700 and its authorized2700-forward form','brief source explanation of SP9800/11270 and LXX70-unit refinement'],'support_only':['complete36-span target table','rank3 interval matrix','full source row and cut-domain checks'],'reason':'Named whole packets show how the families fit together without extending the mirror branch or overloading the main reader.'})
run('Choose the compact synthesis for the explanation report',
'Which results merit the main narrative, and which belong in the reproducible companion?',editorial_selection,
'The main addition will emphasize complete named paths, the source-generated910/2100 differences, and the600 translation linking restoration to AD65. Detailed residue tables remain in the companion.',
'Draft the concise report integration and have its source roles and conventions independently reviewed.',
['Strategy §§1,7','dependency_ledger.json','author preference for larger picture'])
Evidence
phase8.py
Edition and provenance
phase8.py
SHA-256 eb6ed74aeda3846c22b364fdd6151c1052b7011a4fcb3080e77a4208a71a7b98
C480–C1634/Research_Cycles/C1585_C1634/prep/phase8.py