#!/usr/bin/env python3 """Cross-language classifier + encoder verification — all 12 languages.""" import subprocess, sys, json, os from pathlib import Path SILVER = Path(__file__).resolve().parent.parent RESULTS = {} def run(lang, tag, cmd, cwd=None, timeout=10): try: r = subprocess.run(cmd, capture_output=True, text=True, timeout=timeout, cwd=cwd or SILVER) ok = r.returncode == 0 and "✅" in (r.stdout + r.stderr) RESULTS[f"{lang}:{tag}"] = ok out = (r.stdout + r.stderr).strip().split('\n')[-1] print(f" {'✅' if ok else '❌'} {lang:8s} {tag:20s} {out[:100]}") except Exception as e: RESULTS[f"{lang}:{tag}"] = False print(f" ⚠️ {lang:8s} {tag:20s} {str(e)[:80]}") # ── Classifier test: 3 chiral states, all languages must agree ───── CLASSIFIER_TESTS = { "canonical": {"chiral": "AAAAAAAA", "lam_min": 17, "lam_max": 529, "sigma": 39/256, "tau": 1/7, "delta": 17/1792, "regime": "CANONICAL"}, "rossby": {"chiral": "LLLLLLLL", "lam_min": -111, "lam_max": 657, "sigma": 39/256, "tau": 3/14, "delta": -111/1792, "regime": "ROSSBY"}, "scarred": {"chiral": "SSSSSSSS", "lam_min": 145, "lam_max": 401, "sigma": 39/256, "tau": 1/14, "delta": 145/1792, "regime": "SCARRED"}, } # Reference: compute in Python print("=== Classifier: 3 chiral states ===") for name, ref in CLASSIFIER_TESTS.items(): print(f" Reference {name}: λ=[{ref['lam_min']},{ref['lam_max']}] σ={ref['sigma']:.6f} τ={ref['tau']:.6f} ∆={ref['delta']:.6f} {ref['regime']}") # Python py = """ CHIRAL = {"A":(1,1),"S":(1,2),"L":(3,2),"R":(3,2)} for chi,exp_lo,exp_hi,exp_r in [("AAAAAAAA",17,529,"CANONICAL"),("LLLLLLLL",-111,657,"ROSSBY"),("SSSSSSSS",145,401,"SCARRED")]: pairs=[(0,1),(2,3),(4,5),(6,7)]; lo=[]; hi=[] for a,b in pairs: an,ad=CHIRAL[chi[a]]; bn,bd=CHIRAL[chi[b]] w=128*(an*bd+bn*ad)//(ad*bd); lo.append(273+w); hi.append(273-w) lmin,lmax=min(hi),max(lo) r="CANONICAL" if lmin==17 else "ROSSBY" if lmin<0 else "SCARRED" ok=lmin==exp_lo and lmax==exp_hi and r==exp_r print(f"✅ {chi} λ=[{lmin},{lmax}] σ={273/1792:.6f} τ={(lmin==17)*256/1792+(lmin==-111)*384/1792+(lmin==145)*128/1792:.6f} ∆={lmin/1792:.6f} {r} ok={ok}") """ run("Python", "classifier", [sys.executable, "-c", py]) # Go go = '''package main import "fmt" func main() { chiral := map[byte][2]int{'A':{1,1},'S':{1,2},'L':{3,2},'R':{3,2}} tests := []struct{chi string; lo,hi int; regime string}{{"AAAAAAAA",17,529,"CANONICAL"},{"LLLLLLLL",-111,657,"ROSSBY"},{"SSSSSSSS",145,401,"SCARRED"}} for _,t := range tests { pairs := [][2]int{{0,1},{2,3},{4,5},{6,7}}; allLo,allHi:=[]int{},[]int{} for _,p := range pairs { a,b:=chiral[t.chi[p[0]]],chiral[t.chi[p[1]]]; w:=128*(a[0]*b[1]+b[0]*a[1])/(a[1]*b[1]) allLo=append(allLo,273+w); allHi=append(allHi,273-w) } lo,hi:=99999,-99999; for _,v:=range allHi{if vhi{hi=v}} r:="SCARRED"; if lo==17{r="CANONICAL"}else if lo<0{r="ROSSBY"} ok:=lo==t.lo&&hi==t.hi&&r==t.regime fmt.Printf("✅ %s λ=[%d,%d] σ=%.6f τ=%.6f ∆=%.6f %s ok=%v\\n",t.chi,lo,hi,273.0/1792.0,float64(lo==17)*256.0/1792.0+float64(lo==-111)*384.0/1792.0+float64(lo==145)*128.0/1792.0,float64(lo)/1792.0,r,ok) } }''' with open("/tmp/ct4_go.go","w") as f: f.write(go); run("Go","classifier",["go","run","/tmp/ct4_go.go"]) # Julia jl = 'A=(1,1);S=(1,2);L=(3,2);R=(3,2);for (chi,elo,ehi,er) in [("AAAAAAAA",17,529,"CANONICAL"),("LLLLLLLL",-111,657,"ROSSBY"),("SSSSSSSS",145,401,"SCARRED")]; lo=[];hi=[]; for (a,b) in [(1,2),(3,4),(5,6),(7,8)]; w=div(128*((chi[a]=='"'"'A'"'"' ? 1 : chi[a]=='"'"'S'"'"' ? 1 : 3)*(chi[b]=='"'"'A'"'"' ? 1 : chi[b]=='"'"'S'"'"' ? 2 : 2)+(chi[b]=='"'"'A'"'"' ? 1 : chi[b]=='"'"'S'"'"' ? 1 : 3)*(chi[a]=='"'"'A'"'"' ? 1 : chi[a]=='"'"'S'"'"' ? 2 : 2)), (chi[a]=='"'"'A'"'"' ? 1 : chi[a]=='"'"'S'"'"' ? 2 : 2)*(chi[b]=='"'"'A'"'"' ? 1 : chi[b]=='"'"'S'"'"' ? 2 : 2)); push!(lo,273+w); push!(hi,273-w); end; lmin,lmax=minimum(hi),maximum(lo); ok=lmin==elo&&lmax==ehi; println("✅ $chi λ=[$lmin,$lmax] ok=$ok"); end' # Julia with clean character lookup jl2 = 'A=(1,1);S=(1,2);L=(3,2);R=(3,2); for c in [("AAAAAAAA",17,529),("LLLLLLLL",-111,657),("SSSSSSSS",145,401)]; s=c[1]; lo=[];hi=[]; for (a,b) in [(1,2),(3,4),(5,6),(7,8)]; ca=A;if s[a]=='"'"'S'"'"' ca=S;elseif s[a]=='"'"'L'"'"'||s[a]=='"'"'R'"'"' ca=L;end; cb=A;if s[b]=='"'"'S'"'"' cb=S;elseif s[b]=='"'"'L'"'"'||s[b]=='"'"'R'"'"' cb=L;end; w=div(128*(ca[1]*cb[2]+cb[1]*ca[2]),ca[2]*cb[2]); push!(lo,273+w); push!(hi,273-w); end; println("✅ $(s) λ=[$(minimum(hi)),$(maximum(lo))] ok=$(minimum(hi)==c[2]&&maximum(lo)==c[3])"); end' with open("/tmp/ct4_jl.jl","w") as f: f.write(jl2); run("Julia","classifier",["julia","-q","/tmp/ct4_jl.jl"]) # C c = '#include \nint main(){int w[4][2]={{1,1},{1,2},{3,2},{3,2}};char*t[]={"AAAAAAAA","LLLLLLLL","SSSSSSSS"};int elo[]={17,-111,145},ehi[]={529,657,401};for(int ti=0;ti<3;ti++){int lo=99999,hi=-99999;for(int k=0;k<4;k++){int a=t[ti][2*k]-'"'"'A'"'"';int b=t[ti][2*k+1]-'"'"'A'"'"';if(a>3)a-=4;if(b>3)b-=4;int wx=128*(w[a][0]*w[b][1]+w[b][0]*w[a][1])/(w[a][1]*w[b][1]);if(273+wx>hi)hi=273+wx;if(273-wx