From 53e3fa593705a99eb2364e28a102ecebb18e47c2 Mon Sep 17 00:00:00 2001 From: wilcompute <67532012+wilcompute@users.noreply.github.com> Date: Tue, 4 Aug 2026 10:32:18 -0400 Subject: [PATCH 01/20] Passes 3175-3176: add curvature-conditioned sensing engine --- ...3175_3176_curvature_conditioned_sensing.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 analysis/bt3175_3176_curvature_conditioned_sensing.py diff --git a/analysis/bt3175_3176_curvature_conditioned_sensing.py b/analysis/bt3175_3176_curvature_conditioned_sensing.py new file mode 100644 index 000000000..618f2e796 --- /dev/null +++ b/analysis/bt3175_3176_curvature_conditioned_sensing.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +"""Passes 3175-3176: curvature-aware Bayesian sensing. + +The full 48,826-state filter is partitioned into a typed latent: +none / shared-flat / shared-curved. Results are exact for the stated +synthetic channels and deterministic random seeds; they are not lab likelihoods. +""" +from __future__ import annotations +import json, math +from pathlib import Path +import numpy as np +ROOT=Path(__file__).resolve().parents[1] +OUT=ROOT/'data/PART_BT3175_BT3176_CURVATURE_CONDITIONED_SENSING_results.json' +ACTIONS=23; TOTAL_H=48826; NONE_H=45445; FLAT_H=1725; CURVED_H=1656 +CHANNEL=np.array([[.94,.03,.03],[.08,.86,.06],[.08,.06,.86]],float) +def mi(pnone,pf,pc,a,aware): + probs=[pnone]; cond=[CHANNEL[0]] + for t in range(ACTIONS): + probs.extend((float(pf[t]),float(pc[t]))) + cond.extend((CHANNEL[1] if t==a else CHANNEL[0],CHANNEL[2] if t==a else CHANNEL[0])) + p=np.array(probs);c=np.array(cond) + if not aware:c=np.column_stack((c[:,0],c[:,1]+c[:,2])) + py=p@c;ans=0.0 + for ph,row in zip(p,c): + if ph<=0:continue + for y,q in enumerate(row): + if q>0 and py[y]>0:ans+=ph*q*math.log2(q/py[y]) + return ans +def one(rng,shared): + tri=rng.dirichlet(np.ones(ACTIONS)*.7);split=rng.beta(.7,.7,size=ACTIONS) + pf=shared*tri*split;pc=shared*tri*(1-split);pn=1-shared + aware=np.array([mi(pn,pf,pc,a,True) for a in range(ACTIONS)]) + collapsed=np.array([mi(pn,pf,pc,a,False) for a in range(ACTIONS)]) + assert np.all(aware+1e-14>=collapsed) + return {'aware_action':int(np.argmax(aware)),'collapsed_action':int(np.argmax(collapsed)), + 'aware_best_bits':float(np.max(aware)),'collapsed_best_bits':float(np.max(collapsed)), + 'best_gain_bits':float(np.max(aware)-np.max(collapsed))} +def summarize(cases): + gains=[c['best_gain_bits'] for c in cases] + return {'cases':len(cases),'action_changes':sum(c['aware_action']!=c['collapsed_action'] for c in cases), + 'minimum_best_action_gain_bits':min(gains),'mean_best_action_gain_bits':sum(gains)/len(gains), + 'maximum_best_action_gain_bits':max(gains)} +def main(): + rng=np.random.default_rng(3175) + stress=[one(rng,float(rng.uniform(.15,.70))) for _ in range(32)] + operational_mass=.0005*(69/990);operational=[one(rng,operational_mass) for _ in range(32)] + out={'schema':'w33.pass3175_3176.curvature_conditioned_sensing.v1', + 'hypothesis_partition':{'total':TOTAL_H,'none':NONE_H,'flat':FLAT_H,'curved':CURVED_H}, + 'channel_rows_true_none_flat_curved':CHANNEL.tolist(), + 'identity':'I(H;Y)=I(K;Y)+I(H;Y|K); collapsing flat/curved cannot increase information', + 'stress':summarize(stress),'operational_sparse_prior':{'total_shared_pair_mass':operational_mass,**summarize(operational)}, + 'stress_cases':stress,'operational_cases':operational, + 'boundary':'Exact for the explicit synthetic channel and seeds. Curvature is an algebraic latent, not a measured optical field.'} + OUT.write_text(json.dumps(out,indent=2,sort_keys=True)+'\n');print(json.dumps({'stress':out['stress'],'operational':out['operational_sparse_prior']},sort_keys=True)) +if __name__=='__main__':main() From 9cfa32503b0bbb3c9f2577a4f541690555366a2d Mon Sep 17 00:00:00 2001 From: wilcompute <67532012+wilcompute@users.noreply.github.com> Date: Tue, 4 Aug 2026 10:32:58 -0400 Subject: [PATCH 02/20] Pass 3177: add all-194 information frontier --- .../bt3177_all194_information_frontier.py | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 analysis/bt3177_all194_information_frontier.py diff --git a/analysis/bt3177_all194_information_frontier.py b/analysis/bt3177_all194_information_frontier.py new file mode 100644 index 000000000..753ac4042 --- /dev/null +++ b/analysis/bt3177_all194_information_frontier.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +"""Pass 3177: exact frame-local information frontier for all 194 larger universal ISAs.""" +from __future__ import annotations +import itertools,json,math +from collections import Counter,deque +from pathlib import Path +import numpy as np +ROOT=Path(__file__).resolve().parents[1] +OUT=ROOT/'data/PART_BT3177_ALL194_INFORMATION_FRONTIER_results.json' +LIN={'F_p':((0,2,0,0),(1,0,0,0),(0,0,1,0),(0,0,0,1)),'F_f':((1,0,0,0),(0,1,0,0),(0,0,0,2),(0,0,1,0)),'S_p':((1,0,0,0),(1,1,0,0),(0,0,1,0),(0,0,0,1)),'S_f':((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,1,1)),'CX_pf':((1,0,0,0),(0,1,0,2),(1,0,1,0),(0,0,0,1)),'CX_fp':((1,0,1,0),(0,1,0,0),(0,0,1,0),(0,2,0,1))} +I=np.eye(4,dtype=np.int8);NAMES=list(LIN)+[f'Z{i}' for i in range(4)] +M={k:np.array(v,dtype=np.int8) for k,v in LIN.items()};T={k:np.zeros(4,dtype=np.int8) for k in LIN} +for i in range(4):M[f'Z{i}']=I.copy();v=np.zeros(4,dtype=np.int8);v[i]=1;T[f'Z{i}']=v +OPS={n:(2 if n.startswith('CX') else 1) for n in NAMES};V=np.array(list(itertools.product(range(3),repeat=4)),dtype=np.int8);VID={tuple(map(int,v)):i for i,v in enumerate(V)} +def key(a):return bytes((a%3).astype(np.uint8).ravel()) +def closure(names): + gens=[M[n] for n in names];seen={key(I)};arr=[I.copy()];q=deque([I.copy()]) + while q: + a=q.popleft() + for g in gens: + b=(a@g)%3;k=key(b) + if k not in seen:seen.add(k);arr.append(b);q.append(b) + return arr +def rank_stream(vecs): + basis=[];piv=[] + for vv in vecs: + v=np.array(vv,dtype=np.int8)%3 + for b,p in zip(basis,piv): + if v[p]:v=(v-v[p]*b)%3 + nz=np.flatnonzero(v) + if nz.size: + p=int(nz[0]);v=(v*(1 if v[p]==1 else 2))%3 + for i,b in enumerate(basis): + if b[p]:basis[i]=(b-b[p]*v)%3 + j=sum(x
=b['average']-1e-12 and a['minimum']>=b['minimum']-1e-12 and a['normalized']>=b['normalized']-1e-12
+ le=a['variance']<=b['variance']+1e-12 and a['collision_probability']<=b['collision_probability']+1e-12 and a['decoder_units']<=b['decoder_units']
+ strict=(a['average']>b['average']+1e-12 or a['minimum']>b['minimum']+1e-12 or a['normalized']>b['normalized']+1e-12 or a['variance']
Date: Tue, 4 Aug 2026 10:33:19 -0400
Subject: [PATCH 03/20] Pass 3178: add optimal three-edit epoch
---
analysis/bt3178_three_edit_phase_epoch.py | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 analysis/bt3178_three_edit_phase_epoch.py
diff --git a/analysis/bt3178_three_edit_phase_epoch.py b/analysis/bt3178_three_edit_phase_epoch.py
new file mode 100644
index 000000000..ec02098ff
--- /dev/null
+++ b/analysis/bt3178_three_edit_phase_epoch.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+"""Pass 3178: optimal twelve-phase epoch family correcting three arbitrary edits."""
+from __future__ import annotations
+import json,math
+from pathlib import Path
+ROOT=Path(__file__).resolve().parents[1];OUT=ROOT/'data/PART_BT3178_THREE_EDIT_PHASE_EPOCH_results.json'
+Q=24;N=7;T=3;PAYLOAD=(7,2,16,23,20,15,0,2,7,11,16,19);PHASE=(1,3,4,5,6,8,9,10,12,13,14,17)
+def ball_count():
+ by={}
+ for m in range(N-T,N+T+1):
+ total=0
+ for c in range(m+1):
+ if max(N,m)-min(N,c)<=T:total+=math.comb(m,c)*(Q-1)**(m-c)
+ by[str(m)]=total
+ return by,sum(by.values())
+def main():
+ assert set(PHASE).isdisjoint(PAYLOAD) and len(set(PHASE))==12
+ by,total=ball_count();assert total==3667012
+ out={'schema':'w33.pass3178.three_edit_phase_epoch.v1','alphabet_size':Q,'phases':12,'phase_symbols':list(PHASE),'marker_length':N,'corrected_edits':T,'marker_family':'M_p=u_p^7','minimum_marker_distance':7,'minimum_marker_to_payload_distance':7,'optimality':'unique correction of t=3 adversarial edits requires d_min>=2t+1=7','radius_three_ball_by_received_length':by,'radius_three_ball_size_per_phase':total,'total_distinct_phase_labelled_traces':12*total,'clean_payload_symbols_after_marker':0,'proof':'For constant marker a^7 and received word y of length m containing c copies of a, d_L=max(7,m)-min(7,c).','boundary':'Exact combinatorial insdel/substitution theorem. Physical symbol confusion and marker frequency are unmeasured.'}
+ OUT.write_text(json.dumps(out,indent=2,sort_keys=True)+'\n');print(json.dumps(out,sort_keys=True))
+if __name__=='__main__':main()
From 84cd7ab5b5a22cd784451ed3374afecadc06d179 Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:33:46 -0400
Subject: [PATCH 04/20] Pass 3179: add proof-carrying M36 envelope
---
analysis/bt3179_m36_proof_envelope.py | 29 +++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
create mode 100644 analysis/bt3179_m36_proof_envelope.py
diff --git a/analysis/bt3179_m36_proof_envelope.py b/analysis/bt3179_m36_proof_envelope.py
new file mode 100644
index 000000000..cb44e2c5d
--- /dev/null
+++ b/analysis/bt3179_m36_proof_envelope.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+"""Pass 3179: content-addressed proof-carrying M36 candidate envelopes."""
+from __future__ import annotations
+import copy,hashlib,json
+from pathlib import Path
+ROOT=Path(__file__).resolve().parents[1];OUT=ROOT/'data/PART_BT3179_M36_PROOF_ENVELOPE_results.json';FIX=ROOT/'data/PART_BT3179_M36_REJECTED_NEGATIVE_CONTROL.json';SCHEMA='w33.proof_carrying_m36_candidate.v1'
+REQUIRED_ACCEPTED=('projector_sha256','pauli_spectrum_sha256','logical_frame_sha256','clean_success_probability','weyl_frame_negativity','product_stabilizer_fidelity_lower_bound','error_series')
+def canonical(x):return json.dumps(x,sort_keys=True,separators=(',',':'),ensure_ascii=True).encode()
+def digest(payload):return hashlib.sha256(canonical(payload)).hexdigest()
+def seal(payload):return {'schema':SCHEMA,'payload':copy.deepcopy(payload),'sha256':digest(payload)}
+def verify(e):
+ errors=[]
+ if e.get('schema')!=SCHEMA:errors.append('schema')
+ if e.get('sha256')!=digest(e.get('payload',{})):errors.append('digest')
+ p=e.get('payload',{});prov=p.get('provenance',{});cert=p.get('certification',{})
+ if not all(k in prov for k in ('engine_sha256','shard_index','shard_count','source_sha256')):errors.append('provenance')
+ if cert.get('accepted'):
+ missing=[k for k in REQUIRED_ACCEPTED if k not in p.get('witnesses',{})]
+ if missing:errors.append('accepted_missing:'+','.join(missing))
+ return {'valid':not errors,'errors':errors,'accepted':bool(cert.get('accepted',False))}
+def z(i):return [0]*6+[int(j==i) for j in range(6)]
+def main():
+ payload={'candidate':{'name':'negative_Z0_Z1_Z2','generators':[{'vector':z(i),'sign':1} for i in range(3)]},'provenance':{'engine_sha256':'0'*64,'source_sha256':'1'*64,'shard_index':-1,'shard_count':256},'certification':{'accepted':False,'certifier_schema':'w33.pass3134.rank3_certifier.v1','reasons':['single errors not annihilated','zero clean success'],'binary_rank':3,'pairwise_commuting':True,'projector_trace':8,'max_single_error_projection_norm':0.577350269189626},'witnesses':{}}
+ env=seal(payload);ok=verify(env);tampered=copy.deepcopy(env);tampered['payload']['candidate']['name']='tampered';bad=verify(tampered)
+ assert ok['valid'] and not ok['accepted'] and not bad['valid'] and 'digest' in bad['errors']
+ FIX.write_text(json.dumps(env,indent=2,sort_keys=True)+'\n')
+ out={'schema':'w33.pass3179.m36_proof_envelope_test.v1','negative_control':ok,'tamper_test':bad,'envelope_sha256':env['sha256'],'accepted_required_witnesses':list(REQUIRED_ACCEPTED),'promotion_rule':'No M36 candidate may be cited as accepted without a valid content digest, provenance, independent certification and complete witness hash set.','boundary':'Envelope integrity is exact. The negative control is rejected; no accepted M36 candidate is asserted.'}
+ OUT.write_text(json.dumps(out,indent=2,sort_keys=True)+'\n');print(json.dumps(out,sort_keys=True))
+if __name__=='__main__':main()
From b29328664a0f4ac1a724edc3fa9cf970bca69eef Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:34:18 -0400
Subject: [PATCH 05/20] Pass 3180: add routed joint utility
---
analysis/bt3180_routed_joint_utility.py | 51 +++++++++++++++++++++++++
1 file changed, 51 insertions(+)
create mode 100644 analysis/bt3180_routed_joint_utility.py
diff --git a/analysis/bt3180_routed_joint_utility.py b/analysis/bt3180_routed_joint_utility.py
new file mode 100644
index 000000000..ec3c6f42b
--- /dev/null
+++ b/analysis/bt3180_routed_joint_utility.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+"""Pass 3180: joint detector/route/epoch/curvature/ISA utility."""
+from __future__ import annotations
+import json,math
+from collections import Counter,deque
+from pathlib import Path
+import numpy as np
+ROOT=Path(__file__).resolve().parents[1];OUT=ROOT/'data/PART_BT3180_ROUTED_JOINT_UTILITY_results.json'
+TRIS=[(5,6,9),(2,5,9),(4,5,8),(2,4,7),(0,3,6),(0,1,8),(1,2,4),(1,3,5),(3,4,8),(0,4,9),(2,3,8),(4,8,9),(1,7,8),(1,4,6),(0,2,3),(3,7,9),(1,3,9),(2,6,9),(3,5,7),(0,1,7),(3,6,8),(0,4,5),(4,6,7)]
+CHANNEL=np.array([[.94,.03,.03],[.08,.86,.06],[.08,.06,.86]])
+MODES={'current4':(1.8495219521538164,14.175585133744857,.1388888888888889),'low4':(1.905077507709372,15.216323969288219,.1111111111111111),'fast6':(2.41056972808296,13.72936957018747,.12962962962962962)}
+COEFF={'curvature':.35,'route_distance':.025,'route_multiplicity':.008,'isa_capacity':.025,'runtime':.01,'epoch_noncurrent':.03}
+def mi(pn,pf,pc,a,aware):
+ p=[pn];c=[CHANNEL[0]]
+ for t in range(23):p.extend((pf[t],pc[t]));c.extend((CHANNEL[1] if t==a else CHANNEL[0],CHANNEL[2] if t==a else CHANNEL[0]))
+ p=np.array(p);c=np.array(c)
+ if not aware:c=np.column_stack((c[:,0],c[:,1]+c[:,2]))
+ py=p@c;z=0.
+ for ph,row in zip(p,c):
+ for j,q in enumerate(row):
+ if ph>0 and q>0:z+=ph*q*math.log2(q/py[j])
+ return z
+def route_tables():
+ adj=[[] for _ in range(23)]
+ for i in range(23):
+ for j in range(23):
+ if i!=j and set(TRIS[i])&set(TRIS[j]):adj[i].append(j)
+ D=[];W=[]
+ for s in range(23):
+ d=[-1]*23;w=[0]*23;d[s]=0;w[s]=1;q=deque([s])
+ while q:
+ u=q.popleft()
+ for v in adj[u]:
+ if d[v]<0:d[v]=d[u]+1;w[v]=w[u];q.append(v)
+ elif d[v]==d[u]+1:w[v]+=w[u]
+ D.append(d);W.append(w)
+ return adj,D,W
+def main():
+ adj,D,W=route_tables();rng=np.random.default_rng(3180);rows=[]
+ for _ in range(64):
+ shared=float(rng.uniform(.02,.65));tri=rng.dirichlet(np.ones(23)*.8);split=rng.beta(.8,.8,23);pf=shared*tri*split;pc=shared*tri*(1-split);pn=1-shared
+ aware=np.array([mi(pn,pf,pc,a,True) for a in range(23)]);collapsed=np.array([mi(pn,pf,pc,a,False) for a in range(23)]);curv=aware-collapsed
+ loc=int(rng.integers(23));epoch=float(rng.uniform(.6,1));price=float(rng.uniform(0,25));avail={'current4':True,'low4':bool(rng.random()<.9),'fast6':bool(rng.random()<.7)};scores={}
+ for a in range(23):
+ for mode,(cap,L,pcol) in MODES.items():
+ if not avail[mode]:continue
+ runtime=L*(1+price*pcol);scores[(a,mode)]=(aware[a]+COEFF['curvature']*curv[a]-COEFF['route_distance']*D[loc][a]-COEFF['route_multiplicity']*math.log2(max(1,W[loc][a]))+COEFF['isa_capacity']*cap-COEFF['runtime']*runtime-COEFF['epoch_noncurrent']*(1-epoch)*(mode!='current4'))
+ best=max(scores,key=scores.get);base=(int(np.argmax(aware)),'current4');rows.append({'best_action':best[0],'best_mode':best[1],'detector_action':base[0],'utility_gain':scores[best]-scores[base],'origin':loc,'collision_price':price,'epoch_confidence':epoch})
+ gains=[r['utility_gain'] for r in rows];out={'schema':'w33.pass3180.routed_joint_utility.v1','scenarios':64,'route_graph':{'connected':True,'degree_min':min(map(len,adj)),'degree_max':max(map(len,adj)),'diameter':max(max(d) for d in D)},'coefficients':COEFF,'action_changes':sum(r['best_action']!=r['detector_action'] for r in rows),'mode_counts':dict(Counter(r['best_mode'] for r in rows)),'utility_gain':{'minimum':min(gains),'mean':sum(gains)/len(gains),'maximum':max(gains)},'rows':rows,'boundary':'Exact for explicit synthetic posteriors, availability draws and programmable utility coefficients; not a physical optimum.'}
+ OUT.write_text(json.dumps(out,indent=2,sort_keys=True)+'\n');print(json.dumps({k:out[k] for k in ('action_changes','mode_counts','utility_gain')},sort_keys=True))
+if __name__=='__main__':main()
From 131b824458889afc32b2a21229a46516ea18eef8 Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:34:40 -0400
Subject: [PATCH 06/20] Pass 3181: add D4 Wilson-flux census
---
analysis/bt3181_d4_triangle_wilson_flux.py | 24 ++++++++++++++++++++++
1 file changed, 24 insertions(+)
create mode 100644 analysis/bt3181_d4_triangle_wilson_flux.py
diff --git a/analysis/bt3181_d4_triangle_wilson_flux.py b/analysis/bt3181_d4_triangle_wilson_flux.py
new file mode 100644
index 000000000..6275fba48
--- /dev/null
+++ b/analysis/bt3181_d4_triangle_wilson_flux.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+"""Pass 3181: D4 triangle Wilson-flux census."""
+from __future__ import annotations
+import itertools,json
+from collections import Counter
+from pathlib import Path
+ROOT=Path(__file__).resolve().parents[1];OUT=ROOT/'data/PART_BT3181_D4_TRIANGLE_WILSON_FLUX_results.json'
+E=[(i,j) for i in range(4) for j in range(2)];ONE=(0,0);N=[x for x in E if x!=ONE]
+def mul(a,b):
+ i,j=a;k,l=b;return ((i+(k if j==0 else -k))%4,(j+l)%2)
+def inv(a):return next(b for b in E if mul(a,b)==ONE and mul(b,a)==ONE)
+def conj(g,a):return mul(mul(g,a),inv(g))
+def comm(a,b):return mul(mul(mul(a,b),inv(a)),inv(b))
+def k(a,b):return int(comm(a,b)!=ONE)
+def flux(t):a,b,c=t;return k(a,b)^k(b,c)^k(c,a)
+def main():
+ triples=list(itertools.product(N,repeat=3));c=Counter(flux(t) for t in triples);seen=set();orbits=Counter()
+ for t in triples:
+ if t in seen:continue
+ o={tuple(conj(g,x) for x in t) for g in E};seen|=o;orbits[(len(o),flux(t))]+=1
+ assert c=={0:223,1:120} and sum(orbits.values())==106
+ out={'schema':'w33.pass3181.d4_triangle_wilson_flux.v1','definition':'Phi(a,b,c)=kappa(a,b) xor kappa(b,c) xor kappa(c,a)','ordered_nonidentity_triples':343,'flux_zero':223,'flux_one':120,'simultaneous_conjugation_orbits':106,'orbit_census':[{'orbit_size':s,'flux':f,'orbits':n} for (s,f),n in sorted(orbits.items())],'across_23_measured_triangles':{'assignments':7889,'flat_flux':5129,'curved_flux':2760},'theorem':'Phi is invariant under simultaneous conjugation because each D4 commutator lies in the central derived subgroup {1,r^2}.','boundary':'Exact finite non-Abelian holonomy syndrome; not spacetime curvature or measured optical phase.'}
+ OUT.write_text(json.dumps(out,indent=2,sort_keys=True)+'\n');print(json.dumps(out,sort_keys=True))
+if __name__=='__main__':main()
From 7a992dea2c3037837e1d0662282c9fac224fad6e Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:35:02 -0400
Subject: [PATCH 07/20] Pass 3182: add recursive belief virtualization law
---
analysis/bt3182_recursive_belief_virtualization.py | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 analysis/bt3182_recursive_belief_virtualization.py
diff --git a/analysis/bt3182_recursive_belief_virtualization.py b/analysis/bt3182_recursive_belief_virtualization.py
new file mode 100644
index 000000000..8bcc0485b
--- /dev/null
+++ b/analysis/bt3182_recursive_belief_virtualization.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python3
+"""Pass 3182: recursive Holonet belief virtualization law."""
+from __future__ import annotations
+import json
+from pathlib import Path
+ROOT=Path(__file__).resolve().parents[1];OUT=ROOT/'data/PART_BT3182_RECURSIVE_BELIEF_VIRTUALIZATION_results.json';BITS=52
+def main():
+ rows=[]
+ for n in range(1,7):
+ leaves=40**n;cores=(leaves-1)//39;rows.append({'level':n,'leaves':leaves,'W33_cores':cores,'routing_diameter_bound':8*n,'globally_replicated_context_bits':BITS*cores,'active_root_to_leaf_context_bits':BITS*n,'virtualization_ratio':cores/n})
+ out={'schema':'w33.pass3182.recursive_belief_virtualization.v1','context_bits':BITS,'context_breakdown':{'causal':9,'two_edit_masks':36,'action':4,'valid':1,'curvature_state':2},'laws':{'leaves':'40^n','cores':'(40^n-1)/39','global_bits':'52(40^n-1)/39','active_path_bits':'52n','routing_diameter_bound':'8n'},'rows':rows,'interpretation':'A recursively addressed machine need not hold every core live belief on-chip: active execution state grows linearly in depth while the logical network grows exponentially.','boundary':'Exact architectural state-count law under one active root-to-leaf execution path; concurrency, checkpoint storage and physical memory traffic are separate.'}
+ OUT.write_text(json.dumps(out,indent=2,sort_keys=True)+'\n');print(json.dumps(out,sort_keys=True))
+if __name__=='__main__':main()
From 7a1c32192536fa8a8a49c4978e2e221d2ef78aa3 Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:35:51 -0400
Subject: [PATCH 08/20] Passes 3175-3186: add focused closure
---
...bt3175_3186_curvature_routed_inference_summary.py | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 analysis/bt3175_3186_curvature_routed_inference_summary.py
diff --git a/analysis/bt3175_3186_curvature_routed_inference_summary.py b/analysis/bt3175_3186_curvature_routed_inference_summary.py
new file mode 100644
index 000000000..5670c00aa
--- /dev/null
+++ b/analysis/bt3175_3186_curvature_routed_inference_summary.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python3
+"""Passes 3175-3186 focused closure."""
+from pathlib import Path
+import json
+ROOT=Path(__file__).resolve().parents[1];D=ROOT/'data'
+def load(n):return json.loads((D/n).read_text())
+def main():
+ a=load('PART_BT3175_BT3176_CURVATURE_CONDITIONED_SENSING_results.json');b=load('PART_BT3177_ALL194_INFORMATION_FRONTIER_results.json');c=load('PART_BT3178_THREE_EDIT_PHASE_EPOCH_results.json');d=load('PART_BT3179_M36_PROOF_ENVELOPE_results.json');e=load('PART_BT3180_ROUTED_JOINT_UTILITY_results.json');f=load('PART_BT3181_D4_TRIANGLE_WILSON_FLUX_results.json');g=load('PART_BT3182_RECURSIVE_BELIEF_VIRTUALIZATION_results.json')
+ checks={'curvature':a['stress']['action_changes']==1 and a['operational_sparse_prior']['action_changes']==0,'information':b['universal_designs']==194 and b['pareto_count']==8,'epoch':c['radius_three_ball_size_per_phase']==3667012 and c['total_distinct_phase_labelled_traces']==44004144,'envelope':d['negative_control']['valid'] and not d['tamper_test']['valid'],'routed':e['scenarios']==64 and e['action_changes']==8,'flux':f['flux_zero']==223 and f['flux_one']==120 and f['simultaneous_conjugation_orbits']==106,'virtualization':g['rows'][-1]['active_root_to_leaf_context_bits']==312}
+ out={'schema':'w33.pass3175_3186.curvature_routed_inference.v1','status':'PASS' if all(checks.values()) else 'FAIL','checks':checks}
+ (D/'PART_BT3175_BT3186_CURVATURE_ROUTED_INFERENCE_source_summary.json').write_text(json.dumps(out,indent=2,sort_keys=True)+'\n');print(json.dumps(out,sort_keys=True))
+if __name__=='__main__':main()
From 06c300cc34212a1a0421197986f3d9b25f62d293 Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:36:11 -0400
Subject: [PATCH 09/20] Passes 3175-3186: add exact regressions
---
..._bt3175_bt3186_curvature_routed_inference.py | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 tests/test_bt3175_bt3186_curvature_routed_inference.py
diff --git a/tests/test_bt3175_bt3186_curvature_routed_inference.py b/tests/test_bt3175_bt3186_curvature_routed_inference.py
new file mode 100644
index 000000000..a56dd603d
--- /dev/null
+++ b/tests/test_bt3175_bt3186_curvature_routed_inference.py
@@ -0,0 +1,17 @@
+from pathlib import Path
+import json,subprocess,sys
+ROOT=Path(__file__).resolve().parents[1]
+SCRIPTS=['bt3175_3176_curvature_conditioned_sensing.py','bt3177_all194_information_frontier.py','bt3178_three_edit_phase_epoch.py','bt3179_m36_proof_envelope.py','bt3180_routed_joint_utility.py','bt3181_d4_triangle_wilson_flux.py','bt3182_recursive_belief_virtualization.py','bt3175_3186_curvature_routed_inference_summary.py']
+def test_all_generators():
+ for s in SCRIPTS:subprocess.run([sys.executable,str(ROOT/'analysis'/s)],check=True,stdout=subprocess.DEVNULL)
+def load(n):return json.loads((ROOT/'data'/n).read_text())
+def test_curvature_boundary():
+ d=load('PART_BT3175_BT3176_CURVATURE_CONDITIONED_SENSING_results.json');assert d['stress']['action_changes']==1 and d['operational_sparse_prior']['action_changes']==0
+def test_information_frontier():
+ d=load('PART_BT3177_ALL194_INFORMATION_FRONTIER_results.json');assert d['universal_designs']==194 and d['pareto_count']==8
+def test_three_edit_epoch():
+ d=load('PART_BT3178_THREE_EDIT_PHASE_EPOCH_results.json');assert d['marker_length']==7 and d['total_distinct_phase_labelled_traces']==44004144
+def test_proof_envelope():
+ d=load('PART_BT3179_M36_PROOF_ENVELOPE_results.json');assert d['negative_control']['valid'] and not d['tamper_test']['valid']
+def test_routed_flux_virtualization():
+ a=load('PART_BT3180_ROUTED_JOINT_UTILITY_results.json');b=load('PART_BT3181_D4_TRIANGLE_WILSON_FLUX_results.json');c=load('PART_BT3182_RECURSIVE_BELIEF_VIRTUALIZATION_results.json');assert a['action_changes']==8 and b['simultaneous_conjugation_orbits']==106 and c['rows'][-1]['active_root_to_leaf_context_bits']==312
From 26033e5888a72333ab0c892e5fb0e6e6fe455fe3 Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:37:10 -0400
Subject: [PATCH 10/20] Passes 3175-3186: publish research report
---
...T3175_BT3186_curvature_routed_inference.md | 57 +++++++++++++++++++
1 file changed, 57 insertions(+)
create mode 100644 analysis/BT3175_BT3186_curvature_routed_inference.md
diff --git a/analysis/BT3175_BT3186_curvature_routed_inference.md b/analysis/BT3175_BT3186_curvature_routed_inference.md
new file mode 100644
index 000000000..e327a7a97
--- /dev/null
+++ b/analysis/BT3175_BT3186_curvature_routed_inference.md
@@ -0,0 +1,57 @@
+# Passes 3175–3186 — curvature-routed inference
+
+## Executive result
+
+This packet executes five requested fronts and two independent outside-box fronts while preserving the Holonet manuscript boundaries between clock, route, address, support/readout, phase/execution and fail-closed M36 injection.
+
+## 3175–3176 — curvature as a Bayesian latent
+
+The 48,826 hypotheses split into 45,445 non-shared states, 1,725 shared-flat states and 1,656 shared-curved states. For the explicit three-symbol synthetic channel, the exact identity
+
+\[
+I(H;Y)=I(K;Y)+I(H;Y\mid K)
+\]
+
+shows that resolving flat versus curved interactions cannot lose information. In 32 stress posteriors it changes 1 action; the best-action gain ranges from 0.0126970093 to 0.0902425706 bits, mean 0.0355238394. Under the frozen sparse operational shared-pair mass 3.48484848e-5 it changes 0/32 actions and adds only 2.54e-6 to 6.75e-6 bits. Curvature is therefore real and potentially useful after postselection, but not yet a dominant operational control variable.
+
+## 3177 — exact information frontier over all 194 larger ISAs
+
+All 80 universal five-opcode and 114 universal six-opcode sets are recomputed. The six-objective frontier—maximize average, minimum and normalized dispatch information; minimize variance, collisions and decoder units—contains eight designs. Global extrema are:
+
+- maximum average: 2.4141403814 bits, four attainers;
+- maximum worst-frame capacity: 1.7924812504 bits, 22 attainers;
+- maximum normalized capacity: 0.9481541058, four attainers;
+- minimum variance: 0.0357531815, two attainers;
+- minimum collision probability: 1/9, four attainers.
+
+No single design owns all extrema; information-aware ISA selection is intrinsically vector-valued.
+
+## 3178 — optimal three-edit phase code
+
+Twelve payload-unused symbols label twelve constant markers \(M_p=u_p^7\). Their pairwise and payload distances are at least seven, which is optimal because correcting three adversarial insertions, deletions or substitutions requires \(d_{\min}\ge 2t+1=7\). For a received word of length \(m\) containing \(c\) copies of the marker symbol,
+
+\[
+d_L(u^7,y)=\max(7,m)-\min(7,c).
+\]
+
+The exact radius-three ball contains 3,667,012 traces per phase and 44,004,144 phase-labelled traces in total. The corrected marker carries phase directly; zero clean payload symbols are required afterward.
+
+## 3179 — proof-carrying M36 objects
+
+An M36 candidate envelope is canonical JSON with SHA-256 content addressing, shard/engine/source provenance, independent-certifier status and hashed witness slots. Accepted envelopes must carry projector, Pauli-spectrum and logical-frame hashes plus success, negativity, stabilizer-fidelity lower bound and error-series witnesses. The known Z0/Z1/Z2 negative control is sealed as rejected; a one-field mutation fails digest verification. This protects citation integrity but does not create an accepted candidate.
+
+## 3180 — routed joint utility
+
+The 23 measured triangles form a connected route graph of diameter two and degrees 14–18. The explicit programmable utility combines detector mutual information, curvature information, shortest-route distance, route multiplicity, ISA control capacity, runtime cost and epoch confidence. In 64 deterministic scenarios it changes the detector-only action 8 times; mode choices are fast6=45, low4=11 and current4=8. Modelled utility gain is 0 to 0.0892247164, mean 0.0345842444.
+
+## 3181 BONKERS — D4 triangle Wilson flux
+
+Define \(\Phi(a,b,c)=\kappa(a,b)\oplus\kappa(b,c)\oplus\kappa(c,a)\). Over all 343 ordered nonidentity triples, 223 have zero flux and 120 have unit flux. Simultaneous conjugation produces 106 orbits: one size-one flat orbit, 39 size-two flat orbits, 36 size-four flat orbits and 30 size-four curved orbits. Across 23 measured triangles this gives 5,129 flat-flux and 2,760 curved-flux local assignments. It is an algebraic holonomy syndrome, not physical spacetime curvature.
+
+## 3182 BONKERS — recursive belief virtualization
+
+A live context uses 52 bits: 9 causal, 36 edit-mask, 4 action, 1 valid and 2 curvature-state bits. At level \(n\), the Holonet has \(40^n\) leaves and \((40^n-1)/39\) W33 cores. Replicating every context costs \(52(40^n-1)/39\) bits, whereas one active root-to-leaf path costs only \(52n\) bits with routing diameter at most \(8n\). At level six this is 5,461,333,332 replicated bits versus 312 active-path bits, an exact architectural virtualization ratio of 17,504,273.5.
+
+## Evidence ladder
+
+Exact finite: D4 curvature/flux, 194-ISA information census, length-seven epoch theorem, envelope hashes, route graph and recursive counts. Exact for explicit models: sensing/action changes and joint utility. Source-complete pending digital observation: RTL contracts, tests, integrator and workflows. Absent: exhaustive M36 outcome, placed area/timing/power, PDFs and laboratory likelihoods or optics.
From 11d2a04da4ccf0b78e50a750c1abe4d5a27d5c0b Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:37:32 -0400
Subject: [PATCH 11/20] Passes 3175-3186: add typed claim ledger
---
analysis/BT3175_BT3186_CLAIM_LEDGER.md | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 analysis/BT3175_BT3186_CLAIM_LEDGER.md
diff --git a/analysis/BT3175_BT3186_CLAIM_LEDGER.md b/analysis/BT3175_BT3186_CLAIM_LEDGER.md
new file mode 100644
index 000000000..9e1397c79
--- /dev/null
+++ b/analysis/BT3175_BT3186_CLAIM_LEDGER.md
@@ -0,0 +1,19 @@
+# Passes 3175–3186 claim ledger
+
+| Claim | Type | Status | Boundary |
+|---|---|---|---|
+| 48,826 hypotheses partition as 45,445 none, 1,725 flat, 1,656 curved | exact finite | source-observed | Uses frozen D4 hypothesis universe. |
+| Curvature-aware information dominates collapsed information | exact theorem | proved | Data processing / chain rule. |
+| Stress action changes 1/32; sparse operational changes 0/32 | exact model | source-observed | Explicit synthetic channel and seed only. |
+| All 194 larger universal ISAs receive information metrics | exact finite | source-observed | Uniform frames/opcodes, not physical bitrate. |
+| Six-objective information frontier has eight designs | exact finite | source-observed | Separate from full-group runtime frontier. |
+| Twelve length-seven markers correct any three edits | exact theorem | proved | Physical confusion rates absent. |
+| Radius-three ball is 3,667,012 per phase | exact combinatorics | source-observed | Analytic enumeration by received length. |
+| M36 envelope detects tampering | exact digital integrity | source-observed | Does not prove candidate physics. |
+| Negative Z0/Z1/Z2 object is validly sealed and rejected | exact fixture | source-observed | No accepted candidate asserted. |
+| Joint utility changes 8/64 actions | exact model | source-observed | Programmable synthetic coefficients. |
+| D4 triple flux census 223/120 and 106 orbits | exact finite | source-observed | Algebraic holonomy only. |
+| Level-six active path uses 312 bits versus 5,461,333,332 replicated bits | exact architecture | source-observed | One active path; concurrency excluded. |
+| RTL simulation/synthesis/place | digital evidence | pending | No observed area or timing. |
+| Canonical paper integration and PDFs | publication evidence | pending | No compiled-PDF claim. |
+| M36 exhaustive result and laboratory behavior | exhaustive/physical | absent | No no-go, candidate, heat, coherence or optical claim. |
From a3482299d4344ee429a9698af30330b2163cff9d Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:38:07 -0400
Subject: [PATCH 12/20] Passes 3175-3186: add canonical manuscript insert
---
...3186_curvature_routed_inference_insert.tex | 22 +++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 analysis/BT3175_BT3186_curvature_routed_inference_insert.tex
diff --git a/analysis/BT3175_BT3186_curvature_routed_inference_insert.tex b/analysis/BT3175_BT3186_curvature_routed_inference_insert.tex
new file mode 100644
index 000000000..4cf801c19
--- /dev/null
+++ b/analysis/BT3175_BT3186_curvature_routed_inference_insert.tex
@@ -0,0 +1,22 @@
+\section{Curvature-routed proof-carrying inference}
+\label{sec:bt3175-bt3186}
+
+The non-Abelian posterior now carries a typed three-valued interaction latent: no shared measured triangle, shared-flat, or shared-curved. The exact frozen census is $45{,}445+1{,}725+1{,}656=48{,}826$. Resolving the curvature bit cannot reduce sensor information, since
+\[
+I(H;Y)=I(K;Y)+I(H;Y\mid K).
+\]
+For the explicit synthetic channel it changes one of 32 stress-policy actions, but zero of 32 actions under the frozen sparse operational prior. The curvature variable is therefore retained as a diagnostic and postselection coordinate rather than promoted as an unqualified operational advantage.
+
+All 194 universal five- and six-opcode designs were independently enriched with frame-local control information. The six-objective frontier has eight members: maximum mean information is $2.4141403814$ bits per dispatch, maximum worst-frame information is $1.7924812504$ bits, and minimum entropy variance is $0.0357531815$. These extrema occur on different symmetry families, so the machine exposes the information vector rather than naming one universal scalar winner.
+
+The epoch layer advances from two-edit to three-edit correction. Twelve payload-unused symbols define constant phase markers $M_p=u_p^7$. Their mutual and payload distances are at least seven, the minimum possible for three-edit correction. The exact radius-three ball has $3{,}667{,}012$ traces per phase and $44{,}004{,}144$ phase-labelled traces in total; the corrected marker itself carries phase and requires no clean payload symbols afterward.
+
+M36 outputs are now citation-safe objects. A candidate envelope contains canonical generators, engine/shard/source provenance, independent certification, witness hashes and a SHA-256 digest. Any mutation invalidates the envelope. Accepted envelopes must carry projector, Pauli-spectrum and logical-frame hashes plus clean success, negativity, stabilizer-fidelity lower bound and error-series witnesses. The existing $Z_0,Z_1,Z_2$ negative control is sealed and rejected; no accepted candidate is asserted.
+
+The action layer combines detector information, curvature gain, shortest-route distance and multiplicity, epoch confidence, ISA channel capacity and runtime cost with externally programmable coefficients. In the frozen 64-scenario model it changes eight detector-only actions and selects fast-six, low-collision-four and current-four modes $45$, $11$ and $8$ times respectively. This is a controlled-sensing model, not a physical calibration.
+
+Two further exact structures appear. First, the triangle Wilson bit
+\[
+\Phi(a,b,c)=\kappa(a,b)\oplus\kappa(b,c)\oplus\kappa(c,a)
+\]
+is invariant under simultaneous $D_4$ conjugation. Among $7^3=343$ ordered nonidentity triples, $223$ are flat and $120$ curved, forming $106$ conjugation orbits. Second, a recursive level-$n$ Holonet can virtualize live belief: with a 52-bit context, global replication costs $52(40^n-1)/39$ bits while one active root-to-leaf execution path costs $52n$ bits and has routing diameter at most $8n$. These are algebraic and architectural statements; neither is a laboratory field or memory measurement.
From 64549ee87365f32d70aa811c800b298cdaeb5d5a Mon Sep 17 00:00:00 2001
From: wilcompute <67532012+wilcompute@users.noreply.github.com>
Date: Tue, 4 Aug 2026 10:38:26 -0400
Subject: [PATCH 13/20] Passes 3175-3186: add site insert
---
...75_BT3186_curvature_routed_inference_index_insert.html | 8 ++++++++
1 file changed, 8 insertions(+)
create mode 100644 analysis/BT3175_BT3186_curvature_routed_inference_index_insert.html
diff --git a/analysis/BT3175_BT3186_curvature_routed_inference_index_insert.html b/analysis/BT3175_BT3186_curvature_routed_inference_index_insert.html
new file mode 100644
index 000000000..846d419fc
--- /dev/null
+++ b/analysis/BT3175_BT3186_curvature_routed_inference_index_insert.html
@@ -0,0 +1,8 @@
+ The exact D4 posterior now exposes none/flat/curved interaction mass. Curvature changes 1/32 stress-policy actions but 0/32 under the frozen sparse operational prior, so it is retained as a typed diagnostic rather than advertised as a universal control gain. All 194 larger universal ISAs receive exact frame-local information metrics. Their six-objective Pareto frontier has eight members; mean capacity, worst-frame capacity, variance, collisions and decoder size select different symmetry families. Twelve length-seven phase markers correct any three insertions, deletions or substitutions. The exact radius-three ball contains 3,667,012 traces per phase and 44,004,144 phase-labelled traces in total. M36 candidates now require content-addressed provenance, independent certification and complete witness hashes. A rejected negative control is sealed and a one-field mutation fails verification. The routed controller combines detector information, route cost, epoch confidence, non-Abelian curvature and ISA channel capacity. Two outside-box results add a 106-orbit D4 triangle Wilson-flux census and an exact recursive belief-virtualization law.Curvature-routed proof-carrying inference
+