"""Bounded integration candidate; writes preparation only, never a root action."""
import hashlib
import json
import re
from pathlib import Path
BASE = Path(__file__).resolve().parents[1]
WORK = BASE.parent
files = {
'preparation_script': Path(__file__).resolve(),
'File18': BASE/'evidence/sources/38-File_18.Chronological_Data_Tables-20260919-141048-.md',
'File43': BASE/'evidence/sources/06-File_43.Genealogical_Bridge-2-.md',
'File54': BASE/'evidence/sources/07-File_54.Luke_70_Year_Genealogical_Lattice-5-.md',
'File51a': BASE/'evidence/sources/39-File_51a.Rounded_Scaffold_Mod5_Architecture.md',
'questions_before_calculation': BASE/'prep/nt_source_transfer.questions.json',
'candidate_audit': BASE/'prep/family_synthesis_candidates.json',
'current_source_rows': BASE/'model/complete_source_row_packet.json',
'whole_genealogy_grammar': BASE/'prep/whole_genealogy_extension.json',
'inherited_displacements': WORK/'c732_c831/model/tradition_displacement_profiles.json',
'inherited_NT_MT': WORK/'c832_c931/model/NT_MT_field.json',
'inherited_C1131_synthesis': WORK/'c932_c1131/deliverables/490d_How_Chronological_Families_Fit_Together_C1131.md',
}
raw={k:p.read_bytes() for k,p in files.items()}
text={k:b.decode() for k,b in raw.items()}
lines={k:s.splitlines() for k,s in text.items()}
bindings={k:{'path':str(files[k]),'sha256':hashlib.sha256(b).hexdigest(),'bytes':len(b)} for k,b in raw.items()}
def section(key,start,end):
ls=lines[key]
a=next(i for i,l in enumerate(ls) if l==start)
b=next(i for i in range(a+1,len(ls)) if ls[i]==end)
return {'source':key,'start_line':a+1,'end_line':b,'heading':start,'text':'\n'.join(ls[a:b])}, list(enumerate(ls[a:b],a+1))
def literal_rows(key,start,end):
excerpt,locs=section(key,start,end)
rows=[]
for number,line in locs:
if not line.startswith('|'):continue
cells=[c.strip() for c in line.strip('|').split('|')]
if len(cells)<4 or not re.fullmatch(r'\d+',cells[1]):continue
rows.append({'label':cells[0],'birth_BC':int(cells[1]),'cells':cells,'source':key,'line':number,'literal':line})
return excerpt,rows
sections={}
native={}
specs={
'MT':[
('#### 2.1.3 MT Minimum-Regular table','### 2.2 Post-Flood to Patriarchs: MT Minimum-Regular'),
('### 2.2 Post-Flood to Patriarchs: MT Minimum-Regular','#### 2.2.1 Noah and Shem `±2` anomaly'),
('### 2.3 Patriarchal period: MT Minimum-Regular; `±215` fork begins','### 2.4 Fixed epoch: MT; no variants')],
'SP':[
('### 3.1 Creation to Flood: SP Normal / G2','#### 3.1.1 Methodological note: BJ / Jubilees corroboration'),
('#### 3.2.1 SP Noah/Shem field and named bindings','#### 3.2.2 Terah Dual-Lock: `145` versus `205`'),
('### 3.3 Patriarchal period: SP Minimum','### 3.4 Fixed epoch: SP; same as MT')],
'LXX':[
('### 4.1 Creation to Flood: LXX Regular-Minimum','### 4.2 Post-Flood to Patriarchs: LXX Regular-Minimum'),
('### 4.2 Post-Flood to Patriarchs: LXX Regular-Minimum','### 4.3 Patriarchal period: LXX Regular-Minimum')]
}
for tradition,pairs in specs.items():
native[tradition]={}
for index,(start,end) in enumerate(pairs):
excerpt,rows=literal_rows('File18',start,end)
sections[f'{tradition}_{index}']=excerpt
for r in rows:
if r['label']=='Noah — G2 companion':continue
label={'Adam / preferred chain head':'Adam','Noah — G2 primary':'Noah','Shem — Arphaxad-bound':'Shem','2nd Cainan':'Cainan2'}.get(r['label'],r['label'])
native[tradition][label]=r
# File18 explicitly inherits its LXX patriarchal period from the MT minimum table.
sections['LXX_patriarchal_inheritance'],_=section('File18','### 4.3 Patriarchal period: LXX Regular-Minimum','### 4.4 Fixed epoch: LXX')
for name in ['Abraham','Isaac','Jacob']:
native['LXX'][name]={**native['MT'][name],'inheritance':'File18 §4.3 explicitly says same as MT Minimum-Regular','inheritance_locator':sections['LXX_patriarchal_inheritance']['start_line']}
sections['NT_complete_chart'],ntlines=section('File43','### 3.4 Genealogy chart','## 4. Jubilee Bridge: head-to-head')
nt_rows=[]
for number,line in ntlines:
if not line.startswith('|'):continue
cells=[c.strip() for c in line.strip('|').split('|')]
if len(cells)!=3 or not re.match(r'(?:AD )?\d',cells[0]):continue
m=re.match(r'(\d+)(?: BC)?–',cells[0])
ad=re.match(r'AD (\d+)–',cells[0])
nt_rows.append({'span':cells[0],'Matthew_label':cells[1],'Luke_label':cells[2],
'opening_BC':int(m.group(1)) if m else None,
'opening_AD':int(ad.group(1)) if ad else None,
'source':'File43','line':number,'literal':line})
nt={ {'Creation of Adam':'Adam','FLOOD & Arphaxad':'Arphaxad','Cainan (2nd)':'Cainan2'}.get(r['Luke_label'],r['Luke_label']):r for r in nt_rows }
names=['Adam','Seth','Enosh','Kenan','Mahalalel','Jared','Enoch','Methuselah','Lamech','Noah','Shem','Arphaxad','Shelah','Eber','Peleg','Reu','Serug','Nahor','Terah','Abraham','Isaac','Jacob']
field=[]
for name in names:
n=nt[name]['opening_BC']
births={t:native[t][name]['birth_BC'] for t in native}
field.append({'name':name,'NT_opening_BC':n,'NT_original_label':nt[name]['Luke_label'],
'NT_index_from_6BC':(n-6)//70,'source_births_BC':births,
'NT_minus_source_birth':{t:n-b for t,b in births.items()},
'source_locations':{'NT':{'source':'File43','line':nt[name]['line'],'literal':nt[name]['literal']},**{t:native[t][name] for t in native}}})
edges=[]
for a,b in zip(field,field[1:]):
ntgap=a['NT_opening_BC']-b['NT_opening_BC']
edges.append({'from':a['name'],'to':b['name'],'NT_interval_count':ntgap//70,'NT_gap':ntgap,
'native_source_gaps':{t:a['source_births_BC'][t]-b['source_births_BC'][t] for t in native},
'change_in_NT_minus_source':{t:b['NT_minus_source_birth'][t]-a['NT_minus_source_birth'][t] for t in native}})
lxx_names=names[:12]+['Cainan2']+names[12:]
lxx_full=[{'name':n,'NT_opening_BC':nt[n]['opening_BC'],'LXX_native_birth_BC':native['LXX'][n]['birth_BC'],
'NT_minus_LXX':nt[n]['opening_BC']-native['LXX'][n]['birth_BC'],
'NT_line':nt[n]['line'],'LXX_line':native['LXX'][n]['line']} for n in lxx_names]
rows=json.loads(text['current_source_rows'])
life={t:{r['name']:r['L_ledger'] for r in rs} for t,rs in rows.items()}
same_birth_suffix=[]
for r in field[12:]:
n=r['name']
if n in life['SP']:
ls,ll=life['SP'][n],life['LXX'][n]
else:
ls,ll=int(native['SP'][n]['cells'][3]),int(native['LXX'][n]['cells'][3])
same_birth_suffix.append({'name':n,'shared_native_birth_BC':r['source_births_BC']['SP'],
'SP_lifespan':ls,'LXX_lifespan':ll,'LXX_minus_SP_life':ll-ls,
'shared_NT_minus_birth':r['NT_minus_source_birth']['SP']})
inherited=json.loads(text['inherited_displacements'])
prior_nt=json.loads(text['inherited_NT_MT'])
checks=[]
def ck(name,passed,detail):checks.append({'name':name,'pass':bool(passed),'detail':detail})
ck('full_NT_source_object',len(nt_rows)==78,'All78 source chart rows are frozen; the candidate is the predeclared Adam–Jacob common-name prefix.')
ck('full_declared_domains',len(field)==22 and len(edges)==21 and len(lxx_full)==23,'22 shared nodes,21 compressed edges,23 native LXX named nodes including Cainan.')
ck('source_carrier_unit_and_hinge',all((r['NT_opening_BC']-6)%70==0 for r in field),'Every retained NT opening has its existing integer slot index from6BC.')
ck('all_NT_carrier_coordinates_match_inherited_field',all(r['NT_opening_BC']==prior_nt[i]['NT'] for i,r in enumerate(field)),'No NT coordinate or name was fitted.')
for t in ['SP','LXX']:
actual=[r['source_births_BC'][t]-r['source_births_BC']['MT'] for r in field[:20]]
ck(f'{t}_all_twenty_displacements_match_C739',actual==inherited['profiles'][t]['R'],'The full current source difference reproduces the inherited displacement field; the last two patriarchal differences are zero.')
ck('complete_transfer_identity',all(r['NT_minus_source_birth'][t]==r['NT_minus_source_birth']['MT']-(r['source_births_BC'][t]-r['source_births_BC']['MT']) for r in field for t in ['SP','LXX']),'Fixed-carrier subtraction transports all existing differences without a new condition.')
ck('complete_edge_identity',all(e['change_in_NT_minus_source'][t]==e['native_source_gaps'][t]-e['NT_gap'] for e in edges for t in native),'This is the inherited recurrence applied to the new complete source table, not a newly discovered law.')
ck('Shem_binding_kept',next(e for e in edges if e['from']=='Noah')['native_source_gaps']=={'MT':502,'SP':502,'LXX':502},'All selected source births use effective502 Noah→Arphaxad-bound Shem; the printed500 age is not substituted.')
ck('SP_count_resolution_kept',next(e for e in edges if e['from']=='Lamech')['native_source_gaps']['SP']==52,'SP primary Noah is52 completed units from Lamech, the declared53rd-year station.')
ck('native_Cainan_complete_local_field',[r['NT_minus_LXX'] for r in lxx_full[11:14]]==[1465,1530,1590],'Arphaxad→Cainan→Shelah changes65 then60, summing the compressed125. MT/SP retain their own35/135 source edge over two NT slots.')
ck('complete_shared_birth_suffix',all(r['source_births_BC']['SP']==r['source_births_BC']['LXX'] for r in field[12:]),'All ten shared nodes Shelah through Jacob have identical supplied SP/LXX births.')
ck('lifespan_blindness_is_source_qualified',[r['LXX_minus_SP_life'] for r in same_birth_suffix]==[27,100,100,100,100,60,60,0,0,0],'The same ten-node birth field cannot identify these differing source lifespans; no new NT Cumulative field is imported.')
ck('source_head_states_remain_distinct',5279+215-2-6==5486 and 3899+215-2-6==4106 and 4199+215-2-6!=4411,'The MT/LXX declared wrapper explains their Rounded heads; applying it to SP would yield4406, not its transmitted4411. No SP biography is inferred.')
sections['File54_head_states'],_=section('File54','### 1.2 Rounded and actual Creation states','### 1.3 Same-side and cross-axis arithmetic')
sections['File54_Rounded_partition'],_=section('File54','## 2. Luke’s Creation node inside the MT/LXX rounded Creation differential','## 3. The 36 BC rail and Adam’s +30 Apparent Age')
sections['File51a_strict_MT_table'],_=section('File51a','### 3.1 Full Table (without Shem’s +2, anchored to Jacob at 2006 BC)','### 3.2 The Shem +2 Question')
sections['File54_no_clutch_import'],_=section('File54','### 8.1A BJ’s explicit birth-law hermeneutic and File_62 routing','### 8.2 Transition from Flood judgment to Conquest ban')
result={
'status':'PREPARATION COMPLETE — integration-only recommendation; no numbered root actions',
'decision':'A valid complete NT–MT/SP/LXX Regular comparison table exists, but all its numerical relations are already forced by inherited fields. Use one reader integration module, not a new generative research campaign.',
'source_bindings':bindings,'literal_source_excerpts':sections,'full_NT_source_chart':nt_rows,
'scope':{
'shared_domain':names,'native_LXX_domain':lxx_names,
'NT':'File43 §3.4 schematic display-only70-year openings,6BC hinge; not actual historical birth identifications.',
'MT':'File18 §§2.1.3–2.3 literal Minimum-Regular; no+215 or strict−2 adjustment inside this table.',
'SP':'File18 native supplied birth selections: pre-Flood G2 primary chain/Noah; G1 primary Arphaxad-bound Shem; fixed post-Flood suffix. The qualified502 boundary is retained; this is not a propagated G1 chain.',
'LXX':'File18 §§4.1–4.3 native Cainan ON, Minimum-Regular; main Lamech182/753; no+60 or+215 variant selected.',
'Cumulative':'No new NT–SP/LXX Cumulative field is appointed. Existing source lifespan differences explain what the birth-only projection cannot see.',
'Moses':'Moses has no corresponding named row in the frozen Luke chart. File54§8.1A forbids importing File61/62 clutch dates into its arithmetic.',
'Rounded':'Only the explicitly declared MT/LXX Rounded head partition is connected here. No whole Rounded SP biography is manufactured from4411.'},
'complete_shared_field':field,'complete_shared_edges':edges,'native_LXX_23_node_field':lxx_full,
'same_birth_different_life_suffix':same_birth_suffix,
'head_interface':{
'literal_native_births':{'MT':3899,'SP':4199,'LXX':5279},
'source_Rounded_heads':{'MT':4106,'SP_transmitted':4411,'LXX':5486},
'MT_LXX_wrapper':'Add215 Sojourn, remove pre-Flood standard2, then retain the−6 rounded row residual at Adam; these are three qualified source operations, not one free translation.',
'source_File54_partition':{'LXX_Rounded_Adam_minus_NT_Adam':230,'NT_Adam_minus_MT_Rounded_Adam':1150,'LXX_minus_MT':1380},
'cross_role_equality':'NT Adam5256 equals Rounded LXX Seth5486−230. It does not identify the two Adam roles.',
'SP_limit':'4199+215−2−6=4406 differs from transmitted4411. This packet neither repairs4411 nor reconstructs its missing internal Rounded biography.'},
'prior_overlap':[
'C739–748 already give complete MT/LXX/SP source displacement fields.',
'C862–865 already give the complete Luke–MT field, local recurrence, Cainan comparison and rounding response.',
'C866–869 already classify full NT Key returns and49/70 coarsening; C1019–1029 already audit metric rank and reflection.',
'C1177 freezes complete source rows; C1182–1189 express the whole MT→LXX source grammar; no new rank or source amplitude arises by subtracting the fixed NT carrier.',
'Selection audit found no earlier complete NT–LXX/SP table through C1201; novelty is complete reader presentation of an already determined transfer, not untouched data or independent evidence.'
],
'source_costs':{
'retained':['NT names, indices,70-year measure and6BC hinge','22 source-name matchings and the explicit LXX Cainan row','Each source native/Minimum placement and Noah/Shem binding','Source existence/position of Cainan, distinct from its130-year measure','Actual versus strict/Rounded and SP inclusive counting distinctions','File54 admission boundary excluding imported clutch coordinates'],
'new_rule_count':0,'new_fitted_parameter_count':0,
'input_reduction':'None beyond prior genealogy/NT grammar; fixed-carrier subtraction is an invertible relabelling of each already supplied date field.',
'preparation_effort':'Low once literal matching is frozen; moderate only if full Cumulative or RoundedSP fields were opened, which is not recommended.'},
'meaningful_reader_relations':[
'One fixed carrier separates measurement changes from placement changes: NT−tradition equals the existing NT−MT field minus the full tradition−MT field.',
'The ten-node SP/LXX shared birth suffix makes seven unequal lifespan rows invisible to the Regular NT comparison; Cumulative measurement responds to those source lives through its already established grammar.',
'The native Cainan row resolves a two-slot compressed edge into two distinct70-year NT slots; source130 and NT70 remain different measures.',
'File54’s230|1150 head partition can be reached from the exact source states without making that ratio a universal map across the22 names.'
],
'stop_rule':'Integrate one complete table and a concise source-measure explanation. Do not spend another action series proving the inherited recurrence, adding ranks, searching further nodes, or calling source-determined subtractions new constraints.',
'checks':checks,'check_count':len(checks),'all_checks_pass':all(c['pass'] for c in checks)
}
assert result['all_checks_pass'],[c for c in checks if not c['pass']]
out=BASE/'prep/nt_source_transfer.json'
out.write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\n')
md=['# NT source transfer: a complete integration table, not a new generating rule','',
'**Recommendation: integration only.** A valid complete source-bound comparison exists, but it adds no source-generating relation beyond the whole-genealogy field and the previously proved NT carrier grammar. Use one table and a reader explanation after the Moses module; do not open another research campaign for these subtractions.','',
'The frozen domain contains every shared Adam–Jacob name:22 nodes in MT, SP and Luke, with native LXX Cainan retained separately as a23rd node. The complete78-row NT chart is also frozen in the JSON. All14 bounded preparation checks pass.','',
'## The complete shared field','',
'N is the opening label of the schematic NT70-year slot. The three signed columns are N minus the literal File18 native/Minimum birth label. They are comparisons of declared coordinates, not claims that the schematic slot supplies a historical birth.','',
'| Name | N, BC | N−MT Minimum | N−SP supplied | N−LXX Minimum |','|---|---:|---:|---:|---:|']
for r in field:
g=r['NT_minus_source_birth'];md.append(f"| {r['name']} | {r['NT_opening_BC']} | {g['MT']} | {g['SP']} | {g['LXX']} |")
md+=['','Every source birth and literal row locator is recorded in the JSON. MT and LXX use their supplied Minimum tables; SP retains its native G2 primary chain and the qualified Arphaxad-bound Shem selection. All three selected Noah→Shem birth gaps are502 despite the printed500 begetting ledger. The SP Lamech→primary Noah interval is52 completed units, its declared53rd-year station.','',
'## What the full comparison explains','',
'For each shared name, `(N−T)=(N−MT)−(T−MT)`. All20 inherited Adam–Abraham differences reproduce exactly, and Isaac/Jacob add the already source-fixed zero differences. Thus the complete transfer is predetermined. The already proved local change formula likewise applies: the next gap changes by the source birth interval minus the corresponding NT interval. Repeating that proof or rank calculation would not add information.','',
'The strongest reader contrast occurs in the entire ten-node suffix from Shelah through Jacob. SP and LXX have identical source births and therefore identical NT comparison values, while seven of their lifespan rows differ:','',
'| Name | Shared birth BC | SP life | LXX life | LXX−SP |','|---|---:|---:|---:|---:|']
for r in same_birth_suffix:md.append(f"| {r['name']} | {r['shared_native_birth_BC']} | {r['SP_lifespan']} | {r['LXX_lifespan']} | {r['LXX_minus_SP_life']} |")
md+=['','This makes the choice of measurement visible. A birth-only comparison cannot identify those life changes. The existing Cumulative grammar reads them, but this packet does not appoint a new NT–SP/LXX Cumulative chronology or its anchor. File54§7 opens specific MT Cumulative comparisons; that permission is not silently generalized.','',
'Native LXX Cainan gives the full local comparison:','',
'| Node | NT opening BC | LXX native birth BC | NT−LXX |','|---|---:|---:|---:|',
*['| {name} | {NT_opening_BC} | {LXX_native_birth_BC} | {NT_minus_LXX} |'.format(**r) for r in lxx_full[11:14]],'',
'The two successive changes are65 and60, totaling125. With Cainan absent from the matched MT/SP source path, the NT comparison crosses two70-year slots at once: the MT35-year edge gives−105, while the SP135-year edge gives−5. These are different source objects; the NT70-year slot must not replace Cainan’s source130-year begetting measure.','',
'## The explicit Rounded head junction and the Moses boundary','',
'File54§§1.2,2.1–2.2 explicitly supplies Rounded MT4106, LXX5486 and NT Adam5256, giving230|1150. The first230 is the LXX Adam→Seth interval, so the stated equality is NT Adam = Rounded LXX Seth, a cross-role equality. It is not a universal ratio connecting the complete names.','',
'The literal MT/LXX Minimum heads3899/5279 reach those Rounded heads through the already declared+215 placement, pre-Flood−2 strict convention and−6 row residual. SP’s transmitted4411 is a distinct state: applying that same wrapper to4199 would give4406. No complete Rounded SP biography is inferred or repaired here.','',
'Moses has no corresponding named slot in the frozen Luke chart. The Moses-centred source path can sit beside this module as another measurement of the genealogy; it supplies no additional NT node. File54§8.1A explicitly bars importing File61/62 clutch coordinates into its arithmetic.','',
'## Prior overlap and source cost','',
'C739–748 already supply the full tradition displacement fields. C862–865 supply the NT–MT recurrence, restored-Cainan comparison and rounding response; C866–869 and C1019–1029 cover NT returns, metric and coarsening. C1177 and C1182–1189 supply the current whole-row source packet and operation grammar. The new item is a complete reader-facing NT–LXX/SP table; no earlier complete version was located through C1201. This is neither untouched data nor independent numerical evidence.','',
'The source costs are the named matchings, native/Minimum placements, NT70/6 metric and hinge, Noah/Shem count bindings, Cainan’s existence and insertion position, and state restrictions. There are no new fitted parameters or operations and no further input reduction. The extra table may clarify how the same carrier observes different source measurements; if that point is already clear in the synthesis, retain only a paragraph.','',
'The JSON binds all source and inherited-artifact hashes, complete literal excerpts,22 shared rows,21 edges,23 native LXX rows and14 exact checks. No numbered action, canonical source, or root model was changed.']
reader_text='\n'.join(md)+'\n'
reader_text=re.sub(r'([a-z])(?=[0-9])',r'\1 ',reader_text)
reader_text=re.sub(r'\b(NT|SP|MT|LXX)(?=[0-9])',r'\1 ',reader_text)
reader_text=re.sub(r'(?<=[a-z])(?=[+−]\d)',r' ',reader_text)
reader_text=re.sub(r'(?<=\d)(?=§)',r' ',reader_text)
reader_text=reader_text.replace('name:22','name: 22').replace('excerpts,22','excerpts, 22').replace('rows,21','rows, 21').replace('edges,23','edges, 23')
(BASE/'prep/nt_source_transfer.md').write_text(reader_text)
print(json.dumps({'status':'PASS','checks':len(checks),'shared_nodes':len(field),'LXX_native_nodes':len(lxx_full),'recommendation':'integration only','json':str(out)},indent=2))
Evidence
nt source transfer.py
Linked sources and evidence
Edition and provenance
nt_source_transfer.py
SHA-256 28e079843b0474498c129d5eae4adc5d9bf7a349dd8b6ae3e76f7f0ac07a15f5
C480–C1634/Research_Cycles/C1132_C1431_Recovered/prep/nt_source_transfer.py