from fractions import Fraction as F from pathlib import Path import hashlib def run(load,check): root=Path(__file__).resolve().parent.parent blocks=[('File_09.md',1045,1074,['460 × 25/23 = 500','40 + 460 + 40 = 540'],'Explicit local cumulative-Cainan bilateral completion; not a rule for regular SP→MT contexts.'),('File_09.md',1133,1193,['5296–5289 → 4836–4829','4858 → 4358 = 500'],'Named cumulative Flood/Arphaxad and Cainan/Shelah endpoint completions.'),('File_18.md',756,771,['Noah-bound','Arphaxad-bound'],'Two valid Shem modal bindings; 500/100 harmonic and textual state remain distinct.'),('File_18.md',1124,1157,['+460','+130'],'Cumulative460 and regular130 retain different operator types.'),('File_46.md',289,303,['non-lock','static motif'],'Lattice-local static460+30 motif restriction.'),('File_46.md',348,365,['lattice-local','23²'],'Non-collapse guard and general double-expansion licensing.'),('File_46.md',421,428,['4232','5000','display motif'],'Specific appendix example has overlay provenance; Noah500 resonance explicitly a motif.'),('AXIS_REPORT.md',474,487,['4508','4968','500'],'Existing regular-Cainan lifespan comparison with declaredQ1405; not the SP→MT Noahlife context map.'),('AXIS_REPORT.md',623,629,['duration alone does not choose its anchor'],'An expanded duration alone does not prescribe endpoint placement.')] ledger=[] for k,(name,start,end,needles,interpretation) in enumerate(blocks): lines=(root/'sources'/name).read_text().splitlines();text='\n'.join(lines[start-1:end]) check(f'passage{k} exact quoted anchors',all(s in text for s in needles)) ledger.append({'file':name,'start_line':start,'end_line':end,'excerpt':text,'excerpt_sha256':hashlib.sha256(text.encode()).hexdigest(),'reviewed_scope':interpretation}) E=F(25,23);check('460 expands to500',460*E==500);check('gain40 andouter540',500-460==40 and 40+460+40==540) check('23squared licensing',4232*E==4600 and 4232*E*E==5000) check('documented fixedanchor Cainan example',4508*E==4900 and 4968*E==5400 and (4968-4508)*E==500) old=load('C322_DATA.json');biographies=[] for r in old['biographies']: s=r['SP_chain_BC'];m=r['MT_chain_BC'];g=r['gear'];spans=[s[i]-s[i+1] for i in range(4)] check(f'G{g} actualtypedtranslation',all(a-b==460 for a,b in zip(s,m))) check(f'G{g} translationpreservesbiography',spans==[m[i]-m[i+1] for i in range(4)]==[500,100,350,150]) expanded=[x*E for x in spans];check(f'G{g} noaffineanchorcanmakedilationequaltranslation',all(a!=b for a,b in zip(expanded,spans))) biographies.append({'gear':g,'source_spans':spans,'expanded_spans':[str(x) for x in expanded],'same_whole_biography_map':False,'reason':'Any common affine anchor cancels in endpoint differences; slope25/23 differsfromtranslation slope1.'}) return {'step':'C324','audit_scope_files':['File_09.md','File_18.md','File_46.md','AXIS_REPORT.md'],'passages':ledger,'positive_findings':['Explicit local cumulative460→500 endpoint completion exists.','Existing declared-anchor regularCainan example hasraw460/expanded500 difference.','General23² double-expansion islicensed; specificNoah500resonance isdisplaymotif.','Noah-bound500sourcebiography andtypedSP→MT460translation areindividuallysupported.'],'bounded_source_verdict':'No explicit three-way endpoint/dependency rule linking the particular regular SP→MTcontext map,25/23,andNoah-bound500was located in the reviewed passages. This is a qualitative bounded audit, not repository-wide absence.','biography_operation_test':biographies,'new_dilation_anchor_adopted':False,'local_source_completion_reclassified':False,'limits':'Do not infer a globalban from File46 latticeguard or erasepositiveFile09localrules. Numericalidentity andsourceingredientadmission are not connectingprescription.'}