Evidence

extract jubilees packet.py

Download source fileOpen in research workspace
from pathlib import Path
import hashlib,json,re

ROOT=Path('/workspace/scratch/1b40da62dcbd')
OUT=ROOT/'c732_c831/prep'
PATHS={
 'File20':ROOT/'project_sources/01-File_20.Jubilees_Fourth_Witness-2-.md',
 'File53':ROOT/'project_sources/03-File_53.Jubilees_22Fold_Creation_Genealogy_Witness-4-.md',
 'File15':ROOT/'project_sources/04-File_15.Generational_Axiom-3-.md',
 'File43':ROOT/'project_sources/06-File_43.Genealogical_Bridge-2-.md',
 'Strategy':ROOT/'upload/490d_Unification_Research_Strategy_v0_2_20260906.md',
 'C731':ROOT/'c632_c731/deliverables/490d_Chronological_Families_Integrated_Synthesis_C731.md',
}
S={k:p.read_text().splitlines() for k,p in PATHS.items()}
def excerpt(key,first,last):
 return {'source':key,'start_line':first,'end_line':last,'text':'\n'.join(S[key][first-1:last])}
def section(key,heading):
 lines=S[key]; start=next(i for i,s in enumerate(lines) if s==heading)
 level=len(heading)-len(heading.lstrip('#'))
 end=next((i for i in range(start+1,len(lines)) if lines[i].startswith('#') and len(lines[i])-len(lines[i].lstrip('#'))<=level),len(lines))
 return excerpt(key,start+1,end)
def table(key,heading,header):
 sec=section(key,heading); start=next(i for i in range(sec['start_line']-1,sec['end_line']) if S[key][i]==header)
 end=start+1
 while end<len(S[key]) and S[key][end].startswith('|'): end+=1
 return {'header':[s.strip() for s in header.strip('|').split('|')],
  'rows':[{'line':i+1,'cells':[s.strip() for s in S[key][i].strip('|').split('|')],'literal':S[key][i]} for i in range(start+2,end)],
  'source':key,'start_line':start+1,'end_line':end}

packet={'kind':'Preparation only; not numbered execution or fresh verification of primary ancient texts',
 'sources':{k:{'path':str(p),'sha256':hashlib.sha256(p.read_bytes()).hexdigest(),'lines':len(S[k])} for k,p in PATHS.items()},
 'tables':{},'excerpts':{},
 'guards':[
 'Latest File52c remains Rounded controller; no second decimal inversion.',
 'BJ initial endpoint-model Creation week3863–3856; Adam-Day3861–3854 is a separate source state.',
 'User SP→BJ7+1300 derivation remains controlling; BJ1300 is not an independent source witness.',
 'No new Gear transport, primers,1486 reopening,SKL remote extension, or canonical amendment.',
 'Literal49-year jubilees and macro50 are separate registers.',
 'Cainan count deletion, BJ57-year chronological compression, regularLXX130 and cumulative460 are different measurements.',
 'File53§3A.4 compares original local nodes with compressed Creation; do not merge with§3A.2 expunged event ledger.',
 'File53 chiasm table implies localdisplayShem2649/2049; keep separate from actual sourceShem2650 and derived2050.',
 'File20 abridged SP–BJ table is dependency context only, not a complete genealogy holdout.',
 'Source historical/editorial/theological diagnoses remain source claims; this packet has not externally verified ancient textual dates.',
 'Surface chronology and reconstructed biological spine must remain separately named.'
 ]}

specs=[
 ('works_heads','File53','## 2. The 22 created works and the 22 patriarchal heads','| # | Created work / kind | Day | Patriarchal parallel |'),
 ('cainan_deletion','File53','### 3A.2. Chronological expunction: subtracting Kainan\'s 57 years','| Node | Original BJ | Cainan-expunged ledger |'),
 ('compressed_comparison','File53','### 3A.4. The compressed 2400-year chiasm','| Node | From compressed Creation 3799 to original node | To 1399 BC | Total |'),
 ('primary_fall_comparison','File53','## 8. Flood complex as bidirectional hinge','| Node | From Fall, 3849 BC | To 1399 BC | Total |'),
 ('reconstructed_spine','File53','## 13A. BJ reconstruction protocol: spine first, divergence second','| Event | Reconstructed BJ date | Stated interval |'),
 ('levi_index_extension','File53','## 16. Levi as the hidden 23rd generation','| Generation | Figure |'),
 ('creation_week_models','File53','## 17. BJ Creation Week of Years: dual-state protocol','| Model | Week | Meaning of 3856 BC |'),
 ('sp_bj_abridged','File20','### 2.2 Consistency throughout the antediluvian period','| Patriarch | SP date, exclusive | BJ / Jubilees date | Difference |'),
 ('noah_tracks','File20','#### 3B.2.1 Dual-track framework','| Track | Anchor point | Noah birth | Derivation | Function |'),
 ('abraham_anchors','File20','#### 7A2.1 Correct anchors: Terah and Abraham','| Person | Verse | Jubilee calculation | AM | BC |'),
 ('stated_ages','File20','#### 7A2.2 Stated patriarchal ages consistent with MT','| Statement | Verse | MT parallel |'),
 ('surface_ledger','File20','#### 7A2.3 Source-critical problem after Abraham','| Event | Verse | Jubilee calculation | AM |'),
 ('surface_contradictions','File20','#### 7A2.3 Source-critical problem after Abraham','| Relationship | Stated | Derived | Discrepancy |'),
 ('surface_entry','File20','#### 7A2.4 Cause: forcing 70-year cycles','| Source intent / consequence | Value |'),
 ('blueprint','File20','#### 7A2.5 Reconstructed blueprint: what the source says should have been','| Event | AM | BC | Verification |'),
 ('bookend_tiling','File20','### 7A.10 The Key-of-23 bookend tiling of the BJ 2450 (bounded addition)','| Segment | Span | Grammar |'),
 ('spine_repartition','File20','### 8.6 The `115 + 60 + 115` structure','| Segment | Years |'),
 ('nt_jubilee_bridge','File43','## 4. Jubilee Bridge: head-to-head','| Head bracket | Value |')
]
for name,key,h,header in specs: packet['tables'][name]=table(key,h,header)
for name,key,h in [
 ('cainan_solar_position','File53','## 3. Cainan\'s expunction and the 13th solar position'),
 ('cainan57','File53','### 3A.1. Textual datum: Kainan to Shelah = 57 years'),
 ('compression_rule','File53','### 3A.2. Chronological expunction: subtracting Kainan\'s 57 years'),
 ('2450_2400','File53','### 3A.3. Relation to the original 2450-year Fall-to-rest trunk'),
 ('1150_1250','File53','### 3A.6. The 1150/1250 center and the Priestly Key'),
 ('primary2450','File53','## 7. The 2450-year Fall-to-rest trunk'),
 ('bookends','File20','### 7A.10 The Key-of-23 bookend tiling of the BJ 2450 (bounded addition)'),
 ('ordinal_bc','File20','### 9.1 BJ / Jubilees reckoning: years from `3856 BC`'),
 ('surface_pressure','File20','#### 7A2.4 Cause: forcing 70-year cycles'),
 ('nt_names','File43','### 2.1 LukeSpan: names-span state'),
 ('nt_intervals','File43','### 2.2 LukeIntervals: interval-count state'),
 ('nt_matthew','File43','### 3.1 MattSpan_BirthHinge'),
 ('nt_head','File43','### 3.2 Matthean head bracket'),
 ('nt_bridge','File43','## 4. Jubilee Bridge: head-to-head'),
 ('generational_units','File15','### 2.2 The three authorized units'),
 ]:packet['excerpts'][name]=section(key,h)
packet['literal_inputs']={
 'head_count':22,'work_day_counts':[7,1,4,3,3,4],
 'deletion':{'creation_original':3856,'creation_expunged':3799,'flood_original':2549,'flood_expunged':2492,'kainan_original':2482,'shelah_fixed':2425,'removed_birth_interval':57},
 'trunks':{'creation':3856,'conquest':1406,'fall':3849,'rest':1399,'compressed_creation':3799},
 'spine':{'reconstructed_bc':[1981,1881,1821,1691],'reconstructed_am':[1876,1976,2036,2166],'surface_am':[1876,1987,2046,2171],'surface_jacob_death_am':2188,'stated_spine_intervals':[100,60,130],'stated_jacob_lifespan':147},
 'bookends':{'creation':3856,'jared':3396,'call':1906,'exodus':1446,'conquest':1406,'first_begetting_chain':[130,105,90,70,65]},
 'nt_bridge':{'luke_birth_hinge':6,'luke_count':76,'local_carrier':70,'luke_head':5326,'matthew_birth_count':40,'matthew_birth_head':2806,'matthew_envelope_head':2876},
}
OUT.mkdir(parents=True,exist_ok=True)
(OUT/'jubilees_packet.json').write_text(json.dumps(packet,indent=2,ensure_ascii=False)+'\n')
print(json.dumps({'tables':len(packet['tables']),'literal_rows':sum(len(t['rows']) for t in packet['tables'].values()),'excerpts':len(packet['excerpts']),'sources':len(packet['sources']),'path':str(OUT/'jubilees_packet.json')},indent=2))

Linked sources and evidence

Edition and provenance

extract_jubilees_packet.py

SHA-256 84c2f67a993c724eda2da4a3712a53ac20e5e03c023bccc8f29b96c3782ffefe

C480–C1634/Research_Cycles/C0732_C0831/prep/extract_jubilees_packet.py