from pathlib import Path
import json,re
root=Path(__file__).resolve().parents[1]
def read(n):return json.loads((root/'model'/f'{n}.json').read_text())
# Journal entries retain their original wording and hashes. These display-only
# substitutions repair compressed drafting in the readable continuation.
PROSE_WORDS = {
'cumulativehead': 'cumulative head', 'separatecross': 'separate cross',
'roundedlifespans': 'rounded lifespans', 'theaccepted': 'the accepted',
'anyfixed': 'any fixed', 'theirprefixes': 'their prefixes',
'inverseprefix': 'inverse prefix', 'lowerbranch': 'lower branch',
'fullrefinement': 'full refinement', 'primaryheldhead': 'primary held head',
'theirhead': 'their head', 'scalarforms': 'scalar forms',
'primaryspines': 'primary spines', 'connectedplacement': 'connected placement',
'biographycorrespondence': 'biography correspondence',
'localpartition': 'local partition', 'translatededges': 'translated edges',
'alternatecuts': 'alternate cuts', 'affineconversion': 'affine conversion',
'historicalredaction': 'historical redaction',
'statisticalrarity': 'statistical rarity', 'canonicalsource': 'canonical source',
'mainexplanation': 'main explanation', 'onversion': 'on version',
'existingidentity': 'existing identity', 'Sourcefiles': 'Source files',
'sourcefiles': 'source files', 'sourcehash': 'source hash',
'sequentialjournal': 'sequential journal', 'softwarecheck': 'software check',
'thethree': 'the three', 'upperprefix': 'upper prefix',
'sourceprefix': 'source prefix', 'theprefix': 'the prefix',
'andknown': 'and known', 'theknown': 'the known', 'secondarybranch': 'secondary branch',
'thefixed': 'the fixed', 'theidentical': 'the identical',
'thedeclarednative': 'the declared native', 'fornative': 'for native',
'itshead': 'its head', 'allgive': 'all give',
'notneedanynew': 'not need any new', 'theall': 'the all',
'itslocal': 'its local', 'lowerlegs': 'lower legs',
'requiredreversal': 'required reversal', 'localdefects': 'local defects',
'thedigit': 'the digit', 'particularadditive': 'particular additive',
'thelower': 'the lower', 'Everyplace': 'Every place',
'withoutcarry': 'without carry', 'andthethree': 'and the three',
'theoriginal': 'the original', 'theexplicit': 'the explicit',
'declarednative': 'declared native', 'andunchangedlifespans': 'and unchanged lifespans',
'declaredYear': 'declared Year', 'fullcontrollers': 'full controllers',
'mainreader': 'main reader', 'thecurrentreader': 'the current reader',
'sourcebindings': 'source bindings', 'independentnumerical': 'independent numerical',
'headpairs': 'head pairs', 'finalresearch': 'final research',
'theconnected': 'the connected', 'sourcecontrolled': 'source controlled',
'unchangedlifespans': 'unchanged lifespans', 'andunchanged': 'and unchanged',
'lowerleg': 'lower leg', 'upperleg': 'upper leg',
'headclass': 'head class', 'fullword': 'full word',
'inversehead': 'inverse head', 'Executeaccepted': 'Execute accepted',
'Fallhead': 'Fall head', 'itslocalsegment': 'its local segment',
'thefull': 'the full', 'Noahrefinement': 'Noah refinement',
'Thenewtables': 'The new tables', 'andformulas': 'and formulas',
'nextsubheading': 'next subheading', 'thefoot': 'the foot',
'layoutfix': 'layout fix', 'finalvisualreview': 'final visual review',
'onpage': 'on page', 'bothfollowing': 'both following',
'pagebreak': 'page break', 'establishedoperations': 'established operations', 'wholepaths': 'whole paths', 'locatedsourceinputs': 'located source inputs', 'common-grammar': 'common grammar', 'globalminimality': 'global minimality', 'post-Flood910': 'post-Flood 910',
}
def _plain_prose(s):
# Split ordinary compressed CamelCase, including acronym-to-word boundaries.
s=re.sub(r'(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])',' ',s)
for old,new in sorted(PROSE_WORDS.items(), key=lambda item: -len(item[0])):
s=re.sub(r'(?<![A-Za-z])'+re.escape(old)+r'(?![A-Za-z])',new,s)
s=re.sub(r'\bpre Noah\b','pre-Noah',s)
s=re.sub(r'\b(MT|LXX|SP)(?=F(?:[/\s]|$))',r'\1 ',s)
s=re.sub(r'(?<=\S)(?=§)',' ',s)
# Protect identifiers, section numbers, dates and literal file paths before
# separating prose from adjacent numbers. In particular, C1483, File52a,
# SHA256, python3 and §4A.3 must retain their identities.
protected=[]
def hold(match):
protected.append(match.group())
return chr(0xE000+len(protected)-1)
token_pattern=(r'§\d+[A-Za-z]?(?:\.\d+[A-Za-z]?)*'
r'|\bC\d+\b|\bFile_?\d+[a-z]?\b'
r'|\bSHA(?:1|256|512)\b|\bpython\d+\b'
r'|\b\d{4}-\d{2}-\d{2}\b'
r'|\b(?:[A-Za-z0-9_.-]+/)*[A-Za-z0-9_.-]+\.(?:json|md|py|pdf|zip)\b')
s=re.sub(token_pattern,hold,s)
s=re.sub(r'(?<=[A-Za-z])(?=\d)|(?<=\d)(?=[A-Za-z])',' ',s)
s=re.sub(r'([,;:])(?=[A-Za-z0-9+−])',r'\1 ',s)
s=re.sub(r'(?<=[A-Za-z])(?=[+−]\d)',' ',s)
s=re.sub(r'(?<=[A-Za-z0-9])(?=[\ue000-\uf8ff])',' ',s)
s=re.sub(r'(?<=[\ue000-\uf8ff])(?=[A-Za-z])',' ',s)
for i,token in enumerate(protected):
s=s.replace(chr(0xE000+i),token)
return s
def prose(s):
# Inline code and inline/display math are opaque: never rewrite commands,
# identifiers or equations while polishing neighboring human prose.
chunks=re.split(r'(`+[^`]*`+|\\\([^\n]*?\\\)|\\\[[^\n]*?\\\])',s)
return ''.join(chunk if i%2 else _plain_prose(chunk)
for i,chunk in enumerate(chunks))
j=json.loads((root/'journal.json').read_text());n=len(j)
lines=['# The three inverse spines: Babylonian junctions and cumulative Noah refinements','',
f'September 29, 2026 UTC · C1483–C1582 continuation · {n} completed and individually reassessed actions.','',
'## What this continuation explains','',
'The new work connects the inverse spines to one another through named life intervals and to the Babylonian, Covenant and calendar families through ordered paths. It also explains the source of their different responses when Noah and Shem are retained as separate cumulative lives. MT remains primary, LXX the secondary comparison, and the SP Fall construction accepted. No second decimal reversal is used.','',
'The user’s repeated “10436 …7700 to10436” was read, with explicit disclosure, as **10436→2736=7700**. The literal repetition yields zero. The supplied606/586/536 BC frame is retained as the author’s comparison chronology.','',
'1. **One7700 edge moves through two inverse stages.** LXX10436→SP2736 becomesLXX13136→SP5436 when both endpoints shift2700. The latter5436 is alsoMT cumulativeShem. Holding536 fixed changes the final leg2200→4900 and the total9900→12600.','2. **Both12600 cuts have named targets.** The5436 cut gives7700+4900. The5366 cut gives7770+4830. File29 independently names5366 as the LXXYear-6/second-Cainan-removed coordinate; it is an explicit comparison target, while the original inverse spine stays nativeCainan-ON/Rounded. The restoration-held70/69Key sends5366→5436.','3. **The SP–LXX match includes the wholeShem life.** SP inverse cumulativeShem3336–2736 matches the LXXRegular matched biography inFile18§4A.3, not its separatecross-Gear598 comparison.','4. **The Covenant and Babylonian cuts share one ordered interval.** 13136→5436→1866→536 has legs7700+3570+1330. Combining different adjacent legs gives7700+4900 or11270+1330. The70-unit register contains the existing161→175CovenantKey.','5. **All threeNoah extensions share one4320 law.** I(1550)−I(600)−I(950)=5510−600−590=4320. This explains the common change fromFlood+Noah toFlood+Shem+Noah. LXX’s fully refined Conquest-held head13636 equals its primaryNativity-extended cumulativehead.','',
'## Named Babylonian and calendar paths','',
'| Path, BC | Components | Relation |','|---|---|---|','| 10436 → 2736 → 536 | 7700 + 2200 | 9900 |','| 13136 → 5436 → 536 | 7700 + 4900 | 12600 |','| 13136 → 5366 → 536 | 7770 + 4830 | 12600 |','| 13136 → 5436 → 1866 → 536 | 7700 + 3570 + 1330 | common refinement |','| 2736 → 1446 → 586 | 1290 + 860 | 5 × 430 |','| 2736 → 6 | 2730 | 7.5 × 364 = 39 × 70 |','',
'The two4830 input intervals5436→606 and5366→536 are−70 translations of each other; Prophetic expansion about their opposite held ends produces the same4900 interval5436→536. Expanding all12530 years from13136 to606 would instead exceed12600 by7700/69. The successful Key action is local.','',
'## Complete cumulative named-partition reconstruction','',
'All entries below are BC heads. F/S/N mean that the original cumulativeFlood/Shem/Noah boundaries are retained. Source heads and theConquest anchor are always retained; the finite test is the seven nonempty selections of these three named cuts. Each original segment is reversed exactly once with its trailing-zero count preserved.','',
'| Retained cuts | MT held at 1406 | LXX held at 1406 | SP held at 1406 | MT extended to 6 | LXX extended to 6 | SP extended to 6 |','|---|---:|---:|---:|---:|---:|---:|']
parts={m:read('partitions_'+m) for m in ['MT','LXX','SP']}
for p in ['F','S','N','FS','FN','SN','FSN']:
vals=[parts[m][p]['path1406'][-1] for m in parts]+[parts[m][p]['path6'][-1] for m in parts]
lines.append('| '+p+' | '+' | '.join(map(str,vals))+' |')
lines+=['','Source words from1406 are MT(3430,600,950,7620), LXX(4340,600,950,7600), SP(3310,600,950,7130). The last SP prefix is7135 from roundedlifespans minus theaccepted5-yearFall adjustment. The source tables and exact original/reversed paths are in the JSON models.','',
'### One merge law reproduces the family','',
r'\[D(x,y)=I(x+y)-I(x)-I(y).\]','',
'LetQ be the fully separated transformed total and let a/c denote the lower/upper prefixes. All seven totals follow from the same local rule:','',
'| Cuts | Transformed total |','|---|---|','| FSN | Q |','| FS | Q + D(950,c) |','| FN | Q + D(600,950) |','| SN | Q + D(a,600) |','| N | Q + D(600,950) + D(a,1550) |','| S | Q + D(a,600) + D(950,c) |','| F | Q + D(600,950) + D(1550,c) |','',
'For these three source words,D(600,950)=4320 andD(a,1550)=0. Different orders of merging agree by the algebraic identity below; it is a consistency relation for anyfixedI, not additional independent numerical evidence.','',
r'\[D(x,y)+D(x+y,z)=D(y,z)+D(x,y+z).\]','',
'| Quantity | MT | LXX | SP |','|---|---:|---:|---:|']
quantity_labels={'full_total':'Fully separated total Q','D_a_600':'D(a, 600)',
'D_600_950':'D(600, 950)','D_950_c':'D(950, c)',
'D_a_1550':'D(a, 1550)','D_1550_c':'D(1550, c)',
'D_a600_950':'D(a + 600, 950)'}
for key,label in quantity_labels.items():
lines.append('| '+label+' | '+' | '.join(str(read('merge_defect_grammar')[m][key]) for m in parts)+' |')
lines+=['','### Why the LXX differs','',
'The first eight rounded preNoah lives agree inMT/LXX. SelectedLamech775/755 makes theirprefixes7620/7600. Under retained-placeholder reversal these become2670/6700. Thus−20 at the source becomes+4030 in the inverseprefix; the lowerbranch difference remains+910, giving4940 between theNoah-partition heads.','',
'LXX fullrefinement adds2700 to its primaryheldhead, matching theNativity-stage change4100−1400. Hence1406+4340+600+590+6700=6+4100+4340+5190=13636. The paths share theirhead but have different interiors. CorrespondingMT/SP head differences are−6030/−7020, so this equality is specific to the selectedLXX values.','',
'## Scope, provenance and what changed','',
'Inherited scalarforms, primaryspines andMT13016 remain inherited. The contribution is their connectedplacement, the completedShem biographycorrespondence, all-three localpartition laws and source-row explanation. The source-ledger JSON records dependencies; repeated translatededges, alternatecuts and70-unit renderings are not independent witnesses. No whole-genealogy affineconversion, historicalredaction sequence, statisticalrarity or new canonicalsource revision is claimed.','',
'The full Strategy was reread at C1532 and C1582; both completed reviews are included. Exact editions and SHA256 hashes appear in `model/source_bindings.json`. The current main explanation was based on version 2 and is updated under its existing identity. Source files and the C1482 predecessor remain untouched.','',
'## Verification','',
'Run `python3 verify_cycle.py --require-100` from any working directory using the script’s path. The verifier uses integer-division reversal independently of the construction code’s string reversal, exact fractions forKeys, sourcehash checks and the chained sequentialjournal. The packet includes independent source reviews, Babylonian review, cumulativeNoah review, relocation tests and deliberate-corruption controls. Verification counts are softwarecheck groups, not independent discoveries.','',
'## Sequential questions and reassessments','']
for v in j:
lines += [f"### C{v['step']} — {prose(v['title'])}",'','**Question:** '+prose(v['question']),'','**Result:** '+prose(v['finding']),'','**Reassessment:** '+prose(v['reassessment']),'']
lines+=['## Next bounded investigation','',
'Use the integrated graph as the basis for a shorter comparative account of which source rows create the named junctions. Using the existing post-Flood row reconstructions, explain the cumulative MT–LXX910-year difference through its retained nativeCainan and lifespan contributions at their actual positions, then show how that source-derived translation supports the established Shem/Flood–Exodus/Babylon correspondences. This is a further synthesis of existing source work, not a new untouched holdout. Keep the inverse rules fixed and avoid another unconstrained search for divisible endpoints.','']
# Normalize the prose written compactly during analysis; preserve code and math.
out=[]
for line in lines:
out.append(line if line.startswith(('\\','`')) else prose(line))
p=root/'deliverables/490d_C1483_C1582_Continuation_20260929.md';p.write_text('\n'.join(out));print(json.dumps({'recorded_steps':n,'bytes':p.stat().st_size,'file':p.name}))
Evidence
Journal entries retain their original wording and hashes. These display-only
Linked sources and evidence
Edition and provenance
build_record.py
SHA-256 eef45f5d1b69987060a493a2f71bfe01b02c24ef33d0a18654900afa575d7305
C480–C1634/Research_Cycles/C1483_C1582/c1483_c1582/prep/build_record.py