"""Independent actual-source/physical-ledger checks, with scientific failures explicit.""" from pathlib import Path import argparse,csv,json,math import numpy as np from scipy.integrate import quad from model_io import verify_inputs parser=argparse.ArgumentParser(description=__doc__);parser.add_argument('--inputs',type=Path,default=Path('inputs'));parser.add_argument('--results',type=Path,default=Path('results'));args=parser.parse_args() verify_inputs(args.inputs);summary=json.loads((args.results/'summary.json').read_text()) # Re-evaluate fixed eligibility directly from original CSV, not the summary constants. rows=list(csv.DictReader((args.inputs/'m67-gaia-dr3-cone.csv').open()));selected=[] for row in rows: def number(key):return float(row[key]) if row[key] else float('nan') fields=['parallax','pmra','pmdec','phot_g_mean_mag','phot_bp_mean_mag','phot_rp_mean_mag'] valid=all(math.isfinite(number(key)) for key in fields) valid=valid and all(math.isfinite(number(key)) and number(key)>0 for key in ['parallax_error','pmra_error','pmdec_error']) valid=valid and number('visibility_periods_used')>=9 and number('phot_g_mean_flux_over_error')>50 and number('phot_bp_mean_flux_over_error')>10 and number('phot_rp_mean_flux_over_error')>10 if valid and (number('pmra')+11)**2+(number('pmdec')+2.9)**2<.7**2 and abs(number('parallax')-1.15)<.12:selected.append(row['source_id']) saved=list(csv.DictReader((args.results/'selected-gaia-local-only.csv').open()));assert [row['source_id'] for row in saved]==selected public=json.loads((args.results/'public-node-reference.json').read_text());identities=[];mass=0;max_flux=0;maximum_distance=0 for system in public['systems']: identities+=system['componentIds'];mass+=system['initialSystemMass'];position=np.array(system['positionPc']);ray=position+np.array([0.,0.,850.]);distance=math.sqrt(float(np.dot(ray,ray)));maximum_distance=max(maximum_distance,abs(distance/system['distancePc']-1)) for band in range(3): flux=math.fsum(10**(-.4*row[band]) for row in system['componentMagnitudes']);expected=-2.5*math.log10(flux)+5*math.log10(distance/10);max_flux=max(max_flux,abs(expected-system['apparentMagnitudes'][band])) assert sorted(identities)==list(range(1024)) and abs(mass-sum(public['componentMasses']))<1e-10 and max_flux<1e-12 assert abs(sum(public['nodeWeights'])-1)<2e-14 and all(value>0 for value in public['nodeWeights']) assert not summary['nativeAgeInterpolationAccepted'] and not summary['originalProjectionPassed'] and not summary['publicNodeContinuousFailure']['passed'] assert summary['sameInputGeometryError']<1e-10 result={'status':'PASS independent source identity, membership and public discrete-population ledger; three scientific failure gates remain failed','independentSelectedIds':len(selected),'maxMagnitudeLedgerError':max_flux,'maxRelativeDistanceError':maximum_distance,'totalDrawnBirthMass':mass,'discreteExpectedMeanMass':public['discreteExpectedMeanMass'],'continuousIMFMeanMass':public['continuousIMFMeanMass'],'samplingMeanDifferenceNotHidden':public['discreteExpectedMeanMass']-public['continuousIMFMeanMass'],'retainedFailures':{'continuousISOA':summary['publicNodeContinuousFailure'],'continuousAgeAccepted':summary['nativeAgeInterpolationAccepted'],'originalProjectionPassed':summary['originalProjectionPassed']},'scope':'Checks actually recompute from local original CSV and saved physical components. No absolute stellar-age accuracy or Engine rebuild claim.'} (args.results/'validation.json').write_text(json.dumps(result,indent=2)+'\n');print(json.dumps(result,indent=2))