The validation package of De Sitter Entropy Estimates over Finite Holographic Substrate: one script, entropy.py, 4 blocks, Python with matplotlib, one check per predicate of the paper's predicate ledger — 28 of 28 checks passing. The script is rendered below with an anchor per line; its markers (# 14:A2 (p14002): the predicate and its key) are the checks the ledger predicates cite, and the block index opens each block at its definition. The notebook frc-14-entropy.ipynb runs one cell per predicate on Google Colab (its generator make_notebook.py). Installed from this site as a named requirement: pip install frc-14-entropy --find-links https://finitering.space/pkg/ (the sdist frc-14-entropy-20261015.tar.gz).
Blocks: est (21) · tri (2) · cap (1) · win (3) — the predicates each decides in parentheses.
1"""2entropy.py — the validation package of "De Sitter Entropy Estimates over Finite Holographic Substrate" (Akhtman & Voether,32026), the paper 14-entropy of the FRC corpus (finite-ring-space/src/14-entropy); one script since 24 September 2026 (the4registry entcommon.py and the blocks estimate_S.py, triangle.py, capacity.py merged).5========================================================================================================================67One script, four blocks, twenty-eight family checks of 113 micro-checks; Python with matplotlib (the two triangle blocks draw8the paper's figures into out/). Two kinds of check are kept apart. EXACT: integer counts on the instantiated laboratory9Carrier Ω = 2 408 561 (the admissibility congruences, the quarter identity, the octant count) — a pass is a proof on that10instance. CHART: a one-line computation on published [approx] or [ΛCDM] data (the instrument table, the concordances, the11audit identities, the locus, the confrontations, the triangle's regression), reproduced to the precision the paper quotes —12a pass says the paper's numeral follows from its named inputs; it is not a measurement of the framework. No fitted framework13parameter and no random sampling anywhere; transcendental library calls (sqrt, atanh, tanh, pi) are the labelled chart14functions applied to chart quantities.1516A family is one check of the registry, identified as <block>.<family> (est.F1 … est.P1, tri.A … tri.F, cap.A … cap.F, win.W … win.S), and17names the predicate(s) of the paper's ledger it witnesses (LEDGER; predicates cited as 14:<label>) — the deciding family's18`# 14:<label> (<key>)` marker is what the ledger's source column links (PREDICATES;19finitering.space/src/14-entropy/#<key>); the family checks are listed on the public page from results.json.20Master-ledger predicates reached through the paper predicates: 00:A9 (14:A1, 14:A2), 00:L2 (14:C4, 14:B5, 14:Z1),2100:L3 (14:C5, 14:C7, 14:P2, 14:P3, 14:P4), 00:L4 (14:C9), 00:L5 (14:B9), 00:L6 (14:X8), 00:L7 (14:P1, 14:B4),2200:L1 (14:X2, 14:A6), 00:F6 and 00:F2 (14:B12, 14:B13; master F7 returned to 14:B11-B13 on 15 October 2026).2324 python3 entropy.py the four blocks, results.json written; exit 1 if a family check fails (≈ 4 s)25 python3 entropy.py win one block (est, tri, cap or win); no results.json26 from frc_14_entropy import predicate; predicate("14:C5") one predicate: its blocks run once per session27"""28import os, json, sys29from collections import OrderedDict30from math import pi, sqrt, atanh, tanh, log103132SCRIPT = os.path.splitext(os.path.basename(__file__))[0] # "entropy": the one script, the name results.json and the site pages carry3334RESULTS = []35MICRO = [] # (block, family, label, ok)3637LEDGER = {38 # block est (estimate_S.py until 24 September 2026)39 "est.F1": "14:A2, 14:C6",40 "est.B9": "14:B9",41 "est.T1": "14:C1, 14:C4",42 "est.C1": "14:C4",43 "est.C2": "14:C8",44 "est.A1": "14:C3, 14:C7, 14:X3, 14:X6",45 "est.C3": "14:C8",46 "est.P3": "14:P3",47 "est.C4": "14:C4, 14:C7",48 "est.L1": "14:X2",49 "est.P2": "14:C5, 14:P2",50 "est.P1": "14:P1",51 # the witnesses of 15 October 2026 (the author's audit: every theorem row python- and Lean-witnessed)52 "est.N2": "14:C2",53 "est.O4": "14:X4",54 "est.L0": "14:X1",55 "est.H7": "14:X7, 14:X8",56 "est.S8": "14:P2, 14:X8",57 "est.W4": "14:P4",58 # block tri (triangle.py, the paper's make-wedge-2.py)59 "tri.A": "14:C5, 14:C8, 14:C9",60 "tri.D": "14:C9, 14:X5",61 "tri.W": "14:C9",62 "tri.F": "",63 # block cap (capacity.py, the paper's make-wedge-3.py)64 "cap.A": "14:C9",65 "cap.K": "14:C10",66 "cap.F": "",67 # block win (the additive window, the lock and the shells of capacity 3N: master F7, returned 15 October 2026)68 "win.W": "14:B11",69 "win.L": "14:B12",70 "win.S": "14:B13",71}7273LABELS = {74 "est.F1": "the exact faces on the laboratory Carrier Ω = 2 408 561 (S = 602 140): Ω = 4S + 1, S even (the octant sector Z₈ exists), S ≡ 1 (mod 3), 4S + 1 prime, the octant count S/2 an integer — integer arithmetic, deterministic trial division",75 "est.B9": "the area law: the quarter identity 4S = Ω − 1 and the quarter-turn chain (4 | Ω − 1; the hydrogen shell q_H = 4κ_H + 1 = 13, prime) as counts; the chart face 4π n_A = 4S(r_H), n_A = (r_H/ℓ_P)², to 10⁻¹² [approx]",76 "est.T1": "the instrument table reproduced from the four public data and the laboratory constants: r_H = 1.66, 1.27, 1.33, 1.19, 1.29, 1.64 × 10²⁶ m, S = 3.3, 1.9, 2.1, 1.7, 2.0, 3.2 × 10¹²², σ_√S = 1, 1.4, 2.4, 20, 2.5, 2.5 % for rows 1, 2a, 2b, 3, 4a, 4b [approx]",77 "est.C1": "the two-face concordance over the five evidence readings (gauge row 4a excluded): √S = (1.3–1.8) × 10⁶¹, ±17 % half-range on the count face, a factor 1.9 on S; the conventional channels alone ±14 %, factor 1.7 [approx]",78 "est.C2": "the chart identity S_Λ/S_rate = (H_rate/H₀)²/Ω_Λ verified per ladder row to 0.2 % — the definition of Ω_Λ read on the rows; the cluster excess 1.68 against 1/Ω_Λ = 1.46 [ΛCDM]",79 "est.A1": "the circularity audit: t₀H_Λ = (2/3) artanh √Ω_Λ = 0.7871 at the fitted Ω_Λ = 0.685, within 0.2 % of π/4; the inversion π/4 ↦ Ω_Λ = tanh²(3π/8) = 0.6837, a 0.19σ landing on 0.685 ± 0.007 [ΛCDM]",80 "est.C3": "the channel-1 consistency: H_Λ = 55.7 km/s/Mpc from the fit's Λ (1/H_Λ = 17.55 Gyr), and the locus returns H₀ = H_Λ/tanh(3π/8) = 67.4, the fit's own value to 0.1 % [ΛCDM]",81 "est.P3": "the age–rate locus t_age H₀ = (π/4)/tanh(3π/8) = 0.950 (flat ΛCDM 0.951 at the fitted Ω_Λ); read on t⋆ = 13.61 ± 0.34 Gyr: H₀ = 68.2 ± 1.7 km/s/Mpc, 0.5σ from Planck, 0.65σ from TRGB, 2.4σ from the Cepheid ladder; the ladder pair (13.61 Gyr, 73) has t⋆H₀ = 1.016 [approx]",82 "est.C4": "the one-face concordance: rate rows carried to the Λ face by c/(H tanh(3π/8)) — r_H^Λ = 1.66, 1.53, 1.60, 1.44, 1.64 × 10²⁶ m — agree to ±7 % half-range over five readings and ±4 % over the conventional channels; the ladder–row-1 residual ≈ 8 % [approx]",83 "est.L1": "the floor landing cH₀/a₀ = 5.46 ± 1.1 at H₀ = 67.4, 0.8σ from 2π [approx]",84 "est.P2": "the octant bound (π/4) r_H/c = 13.79 Gyr at the channel-1 Λ, degenerate with the ΛCDM t₀ = 13.80 to 0.2 %; the oldest cluster population 13.61 ± 0.34 Gyr 0.5σ below the bound, the prior-dependent inferred age 13.81 straddling it within 0.1σ [ΛCDM]",85 "est.P1": "the running floor against MUSE-DARK III: on the ∝ H(z) chord a₀(z = 1) = 2.15 × 10⁻¹⁰ (E(1) = 1.79), 0.5σ from the measured 2.38 ± 0.10 with the anchor's systematic band; the authors' global linear rate 1.59 ± 0.10 exceeds the chord's 0.95 per unit redshift by ≈ 3σ before systematics; the four bins (1.99 → 2.71 × 10⁻¹⁰ over z = 0.50–1.28) exclude a constant floor, Δχ² = 23 against A H(z)/H₀, which fits at A = 1.39 ± 0.03 (χ² = 5.4/3); the binned rate 0.98 ± 0.19 per unit redshift sits on the chord; the amplitude 0.12 dex above cH₀/2π, inside the 0.2 dex gas systematic [ΛCDM]",86 "est.N2": "the non-channels: the horizon-quarter closure as integers on the laboratory Carrier and on every Ω = 4S + 1 below 10⁴ ((Ω − 1)/4 = S exactly); the registered entropy budget ~10¹⁰⁴ against S = 3.3 × 10¹²²: 18.5 orders, a floor eighteen orders below [approx]",87 "est.O4": "the congruence S even is the octant sector: on every prime Ω = 4S + 1 below 10⁴, an element of order 8 exists in F_Ω iff 8 | Ω − 1 iff S even (the primitive root's (Ω − 1)/8 power; exhaustive); on the laboratory Carrier ζ₈ = 1 639 587",88 "est.L0": "the curvature face: Λℓ_P² = 3π/S exactly for Λ = 3/r_H² and S = π(r_H/ℓ_P)² (the identity to 10⁻¹² at the channel-1 r_H), 2.9 × 10⁻¹²² at S = 3.3 × 10¹²² [approx]; no mode sum enters",89 "est.H7": "the Hubble radius on the black-hole line: ρ_BH(r) = 3c²/(8πG r²) equals ρ_c = 3H²/(8πG) at r = c/H identically (to 10⁻¹² at H₀ = 67.4 and 73.0) [ΛCDM] — the saturation identity X7 and X8 share",90 "est.S8": "the record-depth bound separates the completions: the octant value is fixed at 13.79 Gyr while the ΛCDM t₀ grows with chart time, 1/13.79 = 7.25 % per Gyr (in (7 %, 7.5 %)); degenerate to 0.2 % now, 7 % apart one Gyr on [approx]",91 "est.W4": "the rigid equation of state: with ρ′ = 0 the conservation law ρ′ + 3H(ρ + p) = 0 gives p = −ρ, w = p/ρ = −1 exactly (Fraction arithmetic on sample H, ρ; every sample), no w₀w_a freedom",92 "tri.A": "the triangle's audit identities before drawing: the octant t_oct = (√π/4)√S t_P to 10⁻¹²; the two-cluster ratio 1.71 on S; the r_H split 1/√Ω_Λ = 1.208; H₀ = H_Λ/tanh(3π/8) = 67.4; the width identity log₁₀(r_H/ℓ_P) = log₁₀ √(S/π) exact [approx]",93 "tri.D": "the diagonal: ordinary least squares over the thirteen mid-triangle objects gives k = 3.032 with intercept 1.00 × 10³ at the metre pivot; the constrained k = 3 cubic coefficient c̃ = m/R³ = 0.97 × 10³ kg/m³ (not a density: a sphere's is 0.62 dex lower); the fifteen-object sensitivity k = 3.007; the Schwarzschild exit 1.8 × 10⁸ M☉ within the (1.4–2.8) × 10⁸ band across the four fit variants [approx]",94 "tri.W": "the wall residents and the slope decomposition: the electron on the Compton wall and Sgr A* on the Schwarzschild wall to < 0.01 dex; k = 3 + dc/d log R with mean c = 2.99 and drift 0.61 dex over the 19-decade baseline; the Compton entry 5.3 × 10⁻¹² m [approx]",95 "tri.F": "the figures written: the registrable triangle (with and without the channel inset) and the standalone wall-channels figure (Figure 3 of the paper; no ledger predicate)",96 "cap.A": "the audit and diagonal identities re-asserted in the capacity-axis variant (identical to tri.A, tri.D, tri.W)",97 "cap.K": "the capacity axis: the mass-axis pin (−45, 62) held after all children (no datalim drift); the one-gram horizontal lands on N_A = 6.022 × 10²³ hydrogen units to 0.0035 dex (tolerance 0.005) [approx]",98 "cap.F": "the figure written: the registrable triangle with the holographic-ring-capacity axis (Figure 4 of the paper; no ledger predicate)",99 "win.W": "the additive window: for N modes at heights |h_i| ≤ κ_i the totals are exactly [−Σκ_i, Σκ_i] — exhaustive for N ≤ 4 at κ = 3 (7^N tuples, the least window 3N) and for mixed κ_i ∈ {1, 2, 3}, N ≤ 3; the pairwise bound 2κ of 38:A8 at p = 13 and the 20 of 343 triples beyond it",100 "win.L": "the lock of like units: joint recurrence lcm(12, …, 12) = 12 for every N ≤ 6 (no element of order 12N), one C₁₂ offset per further unit; the diagonal drive on C₁₂² has 12 orbits of length 12, on C₁₂³ 144, on C₄ × C₃ one orbit of length 12",101 "win.S": "the shells of capacity 3N: 12N + 1 prime exactly for N ∈ {1, 3, 5, 6, 8, 9} below 10 (25 = 5² at N = 2); fusion of coprime cycles multiplicative, κ = n₁n₂/4 — hydrogen (4, 3) → 12/4 = 3 — and no fusion of (12, 12), lcm 12",102}103104BLOCK = {"est": "the exact faces and the area law on the laboratory Carrier, then every chart numeral of the paper (estimate_S.py until 24 September 2026)", # check-id prefix -> the block (the function block_<name> below)105 "tri": "the registrable triangle: the audit identities, the diagonal regression, the wall residents, the figures (the paper's make-wedge-2.py)",106 "cap": "the capacity-axis variant: the identities re-asserted, the Avogadro landing, the figure (the paper's make-wedge-3.py)",107 "win": "the additive window, the lock of like units and the shells of capacity 3N (master F7, returned to rows B11-B13 on 15 October 2026; the master's check_f7.py of 17 September)"}108109# the deciding family of each witnessed predicate: the one whose checks decide the predicate's statement (the other families110# that touch it are corroboration, listed by predicate() from the records)111PREDICATES = {112 "14:A2": "est.F1", "14:B9": "est.B9", "14:C1": "est.T1", "14:C3": "est.A1", "14:C4": "est.C1", "14:C5": "est.P2",113 "14:C6": "est.F1", "14:C7": "est.A1", "14:C8": "est.C3", "14:C9": "tri.D", "14:C10": "cap.K",114 "14:X2": "est.L1", "14:X3": "est.A1", "14:X5": "tri.D", "14:X6": "est.A1",115 "14:P1": "est.P1", "14:P2": "est.P2", "14:P3": "est.P3",116 "14:B11": "win.W", "14:B12": "win.L", "14:B13": "win.S",117 "14:C2": "est.N2", "14:X4": "est.O4", "14:X1": "est.L0", "14:X7": "est.H7", "14:X8": "est.S8", "14:P4": "est.W4",118}119_FAM = [None, None]120_RAN = set() # blocks already run in this session (predicate() runs each once)121122def markers():123 """predicate label -> (script file, line) of its marker `# <paper>:<label> (<key>)`: the line of the check that decides it."""124 import re125 out = {}126 for i, line in enumerate(open(os.path.abspath(__file__), encoding="utf-8"), 1):127 m = re.match(r"\s*# ((?:\d+:[A-Z]+\d+[a-z]?(?: \(p\d{5}\))?)(?:, \d+:[A-Z]+\d+[a-z]?(?: \(p\d{5}\))?)*)\s*$", line)128 if m:129 for lab in re.findall(r"\d+:[A-Z]+\d+[a-z]?", m.group(1)): out.setdefault(lab, (SCRIPT + ".py", i))130 return out131132def _run_block(name):133 if name not in _RAN:134 globals()[f"block_{name}"](); _RAN.add(name)135136def predicate(label, lines=14):137 """Verify one ledger predicate: run the blocks of the families that cite it (each once per session), print the deciding138 check's source (from its marker) and every family record that cites the predicate, and return True iff all pass."""139 fam = PREDICATES.get(label)140 if fam is None:141 print(f"{label}: no python witness (see the predicate's Lean witness or its source)"); return None142 citing = {f.split(".")[0] for f, rows in LEDGER.items() if label in [t.strip() for t in rows.split(",")]}143 for b in sorted({fam.split(".")[0]} | citing): _run_block(b) # the deciding block and every block whose families cite the predicate144 mk = markers().get(label)145 if mk:146 src = open(os.path.abspath(__file__), encoding="utf-8").read().split("\n")147 print(f"— {mk[0]}:{mk[1]} (the check that decides {label}; family {fam})")148 for j in range(mk[1] - 1, min(mk[1] - 1 + lines, len(src))): print(f"{j + 1:5d} {src[j]}")149 else:150 print(f"— {SCRIPT}.py, block {fam.split('.')[0]} (the whole block witnesses {label})")151 recs = [r for r in RESULTS if label in [t.strip() for t in r["rows"].split(",")]]152 ok = all(r["ok"] for r in recs)153 for r in recs:154 role = "(deciding)" if r["id"] == fam else "(corroborating)"155 print(f" [{'PASS' if r['ok'] else 'FAIL'}] {r['id']:8s} {role:16s} {r['detail']}")156 print(f"{label}: {'VERIFIED' if ok and recs else 'FAILED'} — {len(recs)} family record(s)")157 return ok158159def verify_all():160 """Run every block (those already run in this session are not re-run) and print the summary; True iff every family check passed."""161 for b in BLOCK: _run_block(b) # in the paper's order: est, tri, cap162 return summary(write=False)163164def family(tag, fam):165 _FAM[0], _FAM[1] = tag, fam166167def chk(label, ok, tag=None, fam=None):168 """A micro-check, recorded under the current (block, family); never exits."""169 MICRO.append((tag or _FAM[0], fam or _FAM[1], label, bool(ok)))170 if not ok:171 print(f" FAIL: {label}")172173def flush(tag, order=None, details=None, kinds=None):174 fams = OrderedDict()175 for t, fam, label, ok in MICRO:176 if t == tag:177 fams.setdefault(fam, []).append(ok)178 for fam in (order or fams):179 oks = fams.get(fam, [])180 d = f"{len(oks)} micro-checks"181 if details and fam in details:182 d += "; " + details[fam]183 check(f"{tag}.{fam}", ok=bool(oks) and all(oks), detail=d, kind=(kinds or {}).get(fam, "CHART"))184185def check(pid, ok, detail="", kind="CHART", label=None):186 """Record one family check. pid = <block>.<family>; LEDGER[pid] = the paper predicate(s) it witnesses."""187 ok = bool(ok)188 rows = LEDGER.get(pid, "")189 label = label or LABELS.get(pid, pid)190 RESULTS.append({"id": pid, "rows": rows, "block": pid.split(".")[0], "script": SCRIPT, "label": label, "ok": ok, "detail": detail, "kind": kind})191 print(f" [{'PASS' if ok else 'FAIL'}] {pid:7s} {kind:11s} [{rows}] {label[:100]}" + (f" -- {detail}" if detail else ""))192 return ok193194def summary(write=True):195 n_ok = sum(r["ok"] for r in RESULTS)196 print(f"\nSUMMARY: {n_ok}/{len(RESULTS)} checks passed ({len(MICRO)} micro-checks)" + ("" if n_ok == len(RESULTS) else " <-- FAILURES"))197 if write:198 with open("results.json", "w") as f:199 json.dump(RESULTS, f, indent=1, ensure_ascii=False)200 return n_ok == len(RESULTS)201202# ---- the figure blocks' drawing surface: matplotlib imported on first use (an import of the package stays instantaneous)203OUT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "out")204INK, MID, SOFT, FILL = "0.15", "0.35", "0.52", "0.945"205plt = None206207def _plt():208 """matplotlib.pyplot with the Agg backend and the paper's rcParams, imported once."""209 global plt210 if plt is None:211 import matplotlib212 matplotlib.use("Agg")213 import matplotlib.pyplot as _p214 _p.rcParams.update({"font.family": "serif", "mathtext.fontset": "cm", "font.size": 9, "axes.linewidth": 0.6})215 plt = _p216 return plt217218def save(fig, stem):219 os.makedirs(OUT, exist_ok=True)220 fig.savefig(os.path.join(OUT, stem + ".png"), dpi=200)221 fig.savefig(os.path.join(OUT, stem + ".pdf"))222 print(f"[WROTE] out/{stem}.png, .pdf")223224# ------------------------------------------------------------------------------------------------------------225# block est — estimate_S.py (until 24 September 2026), the paper's script as written:226# estimate_S.py -- reproduces every numeral of 14-entropy (De Sitter Entropy227# Estimates). Standalone: no input, no external path; exit 0 iff all checks pass.228#229# All observational values are [approx] chart readings; the exact faces are230# the counts Om = 4S+1 and the admissibility congruences, verified here in231# exact integer arithmetic on the instantiated Carrier. No fitting, no RNG;232# transcendental library calls (sqrt, atanh, tanh, pi) appear only as the233# labelled chart functions applied to [approx]/[LCDM] quantities.234#235# Exit status: 0 iff the exact checks and the census both pass.236#237# Package form (2026-09): the script as written, its integer checks, [PASS] lines and asserts reported to the registry238# (the head of this script) as the families est.F1 (exact faces), est.B9 (area law), est.T1 (the instrument table), est.C1239# (two-face concordance), est.C2 (the chart identity), est.A1 (the circularity audit), est.C3 (the channel-1240# consistency), est.P3 (the age-rate locus), est.C4 (one-face concordance), est.L1 (the floor landing), est.P2 (the241# octant bound against the stellar ages), est.P1 (the running floor). A failing check prints and fails its family;242# the run continues. Kinds: est.F1 and the count half of est.B9 are EXACT; every other family is CHART -- a one-line243# chart computation on published [approx]/[LCDM] data, reproduced to the paper's quoted precision.244#245def block_est():246 """Block est — estimate_S: the exact faces and the area law on the laboratory Carrier, then every chart numeral of the paper (est.F1 … est.P1)."""247248 # ---------------------------------------------------------------- exact faces249 # Instantiated Carrier of the lab universe (37-sim): exact integer counts.250 S_LAB = 602_140251 OM_LAB = 4 * S_LAB + 1252253254 def is_prime(n: int) -> bool: # deterministic trial division, exact255 if n < 2:256 return False257 d = 2258 while d * d <= n:259 if n % d == 0:260 return False261 d += 1262 return True263264265 print("exact faces (counts): Om = 4S+1; S even; S = 1 mod 3; 4S+1 prime")266 # 14:A2 (p14002), 14:C6 (p14023)267 checks = [268 ("Om = 4S+1", OM_LAB == 2_408_561),269 ("S even (octant sector Z_8 exists: 8 | 4S iff 2 | S)", S_LAB % 2 == 0),270 ("S = 1 mod 3", S_LAB % 3 == 1),271 ("4S+1 prime", is_prime(OM_LAB)),272 ("octant count S/2 is an integer", (S_LAB // 2) * 2 == S_LAB),273 ]274 family("est", "F1")275 for name, ok in checks:276 print(f" [{'PASS' if ok else 'FAIL'}] {name} (lab Carrier Om={OM_LAB})")277 chk(name, ok)278279 # ------------------------------------------------------- area law (row B9)280 # The quarter identity and the quarter-turn chain, exact integer arithmetic:281 # 4S = Om - 1; the generative four of Om = 4S+1 at the Carrier and282 # p = 4*kap + 1 at every Subject (hydrogen shell kap_H = 3, q = 13).283 print("area law (row B9): quarter identity and quarter-turn chain (counts)")284 KAP_H = 3285 Q_H = 4 * KAP_H + 1286 # 14:B9 (p14017)287 b9_checks = [288 ("quarter identity 4S = Om - 1", 4 * S_LAB == OM_LAB - 1),289 ("quarter-turn at the Carrier: 4 | Om - 1", (OM_LAB - 1) % 4 == 0),290 ("quarter-turn at the Subject: q_H = 4 kap_H + 1 = 13, prime",291 Q_H == 13 and is_prime(Q_H) and (Q_H - 1) % 4 == 0),292 ]293 family("est", "B9")294 for name, ok in b9_checks:295 print(f" [{'PASS' if ok else 'FAIL'}] {name}")296 chk(name, ok)297298 # ------------------------------------------------------------ chart channel299 # laboratory channel [I]300 lP = 1.616255e-35 # Planck length, m301 c = 2.99792458e8 # m/s302 Gyr = 3.1557e16 # s303 Mpc = 3.0857e22 # m304305306 def S_of(rH): # S = pi (r_H / l_P)^2 [approx]307 return pi * (rH / lP) ** 2308309310 # area-law chart face (row B9) [approx]: the projected horizon area in Planck311 # cells is the full phase cycle, A/lP^2 = 4 pi n_A = 4 S(r_H), n_A = (r_H/lP)^2.312 print("area law chart face (row B9) [approx]: 4 pi n_A = 4 S(r_H)")313 for rH_test in (1.0, 1.5e26):314 n_A = (rH_test / lP) ** 2315 ok = abs(4 * pi * n_A - 4 * S_of(rH_test)) <= 1e-12 * (4 * S_of(rH_test))316 print(f" [{'PASS' if ok else 'FAIL'}] r_H = {rH_test:g} m")317 chk(f"area-law chart face 4 pi n_A = 4 S(r_H) at r_H = {rH_test:g} m [approx]", ok)318319320 LAM_FACE = {"1", "4b"} # rows reading the Lambda face321 GAUGE = {"4a"} # gauge reading: displayed, excluded from stats322 rows = []323 sigma = {} # per-row relative uncertainty on sqrt(S)324325 # 1. expansion geometry: Lambda from the LCDM fit (Planck 2018)326 Lam = 1.088e-52 # m^-2, ~2% -> 1% on sqrt(S)327 rows.append(("1", "Lambda (CMB, Planck alone)", sqrt(3.0 / Lam)))328 sigma["1"] = 0.010329330 # 2. local distance ladder (published stat+sys)331 for H0, dH, lab, key in ((73.0, 1.0, "Cepheid", "2a"), (69.8, 1.7, "TRGB", "2b")):332 rows.append((key, f"ladder H0={H0} ({lab})", c / (H0 * 1e3 / Mpc)))333 sigma[key] = dH / H0334335 # 3. rotation curves through the realisation a0 = c H / 2 pi336 a0, da0 = 1.20e-10, sqrt(0.02**2 + 0.24**2) * 1e-10 # SPARC knee, sys-dominated337 rows.append(("3", "rotation curves a0", c / (2 * pi * a0 / c)))338 sigma["3"] = da0 / a0339340 # 4. stellar ages through age = horizon distance (Valcin et al. 2026, IV;341 # one vintage rule: the superseding release everywhere, no mixing)342 t_star, dt = 13.61 * Gyr, sqrt(0.25**2 + 0.23**2) / 13.61343 rows.append(("4a", "stellar age, raw ct [gauge]", c * t_star))344 rows.append(("4b", "stellar age, octant (4/pi)ct", (4 / pi) * c * t_star))345 sigma["4a"] = sigma["4b"] = dt346347 print(f"\n{'#':3s}{'instrument':32s} {'r_H [m]':>12s} {'S':>10s} {'sqrt(S)':>10s} {'sig%':>6s}")348 Svals = {}349 for key, name, rH in rows:350 S = S_of(rH)351 Svals[key] = S352 print(f"{key:3s}{name:32s} {rH:12.3e} {S:10.2e} {sqrt(S):10.2e} {100*sigma[key]:6.1f}")353 # the paper's table (Section 3.2): r_H in 1e26 m, S in 1e122, sigma on sqrt(S) in %354 # 14:C1 (p14018)355 family("est", "T1")356 TABLE = {"1": (1.66, 3.3, 1), "2a": (1.27, 1.9, 1.4), "2b": (1.33, 2.1, 2.4), "3": (1.19, 1.7, 20), "4a": (1.29, 2.0, 2.5), "4b": (1.64, 3.2, 2.5)}357 for key, name, rH in rows:358 r_t, S_t, sg_t = TABLE[key]359 chk(f"row {key}: r_H = {r_t} e26 m, S = {S_t} e122, sigma = {sg_t}% as tabulated",360 abs(rH / 1e26 - r_t) < 0.006 and abs(Svals[key] / 1e122 - S_t) < 0.06 and abs(100 * sigma[key] - sg_t) < 0.1)361362 EVIDENCE = [k for k, _, _ in rows if k not in GAUGE] # five evidence readings363 sq = {k: sqrt(Svals[k]) for k in EVIDENCE}364 m = sum(sq.values()) / len(sq)365 half = 100 * (max(sq.values()) - min(sq.values())) / 2 / m366 fac = (max(sq.values()) / min(sq.values())) ** 2367 print(f"\nconcordance (5 evidence readings, gauge 4a excluded): sqrt(S) ="368 f" {min(sq.values()):.2e} .. {max(sq.values()):.2e}"369 f" (+/- {half:.1f}% half-range about the mean)")370 print(f"on S itself: full-range spread = factor {fac:.2f}")371 # 14:C4 (p14021)372 family("est", "C1")373 chk("five evidence readings, gauge row 4a excluded", EVIDENCE == ["1", "2a", "2b", "3", "4b"])374 chk("sqrt(S) = (1.3..1.8) e61 across the five readings", 1.25e61 < min(sq.values()) < 1.35e61 and 1.75e61 < max(sq.values()) < 1.85e61)375 chk("half-range +/-17% on the count face (16.5 +/- 0.5)", abs(half - 16.5) < 0.5)376 chk("full-range spread on S a factor 1.9 (1.94 +/- 0.05)", abs(fac - 1.94) < 0.05)377 print("[PASS] concordance: +/-17% half-range, factor 1.9 on S")378379 CONV = ["1", "2a", "2b"] # conventional channels alone380 sqc = {k: sqrt(Svals[k]) for k in CONV}381 mcv = sum(sqc.values()) / len(sqc)382 half_cv = 100 * (max(sqc.values()) - min(sqc.values())) / 2 / mcv383 fac_cv = (max(sqc.values()) / min(sqc.values())) ** 2384 print(f"conventional channels alone: +/- {half_cv:.1f}% half-range, factor {fac_cv:.2f}")385 chk("conventional channels alone: +/-14% (13.9 +/- 0.5), factor 1.7 (1.72 +/- 0.03)", abs(half_cv - 13.9) < 0.5 and abs(fac_cv - 1.72) < 0.03)386 print("[PASS] conventional-only statistic: +/-14%, factor 1.7")387388 # the two-cluster ratio is the chart identity (H_rate/H0)^2 / OmL -- the389 # definition of OmL read on the rows, NOT framework content (round-02 F1).390 OmL = 0.685391 H0_PLANCK = 67.36392 family("est", "C2")393 for key, H in (("2a", 73.0), ("2b", 69.8)):394 lhs = Svals["1"] / Svals[key]395 rhs = (H / H0_PLANCK) ** 2 / OmL396 chk(f"row {key}: S_Lambda/S_rate = (H/H0)^2/OmL to 0.2% [LCDM]", abs(lhs / rhs - 1) < 2e-3)397 chk("the observed cluster excess 1.68 against 1.46 = 1/OmL [LCDM]", abs(1 / OmL - 1.46) < 0.005 and abs(Svals["1"] / ((Svals["2a"] + Svals["2b"] + Svals["3"]) / 3) - 1.68) < 0.1)398 print("[PASS] chart identity S_L/S_rate = (H/H0)^2/OmL verified per row"399 " (the cluster ratio displays the Hubble tension; no framework content)")400401 # circularity audit: the age ratio depends on the single fitted Omega_Lambda402 ratio = (2 / 3) * atanh(sqrt(OmL)) # [LCDM]403 OmL_pi4 = tanh(1.5 * pi / 4) ** 2 # inversion of pi/4 [LCDM]404 dev = abs(ratio - pi / 4) / (pi / 4) * 100405 sig = abs(OmL - OmL_pi4) / 0.007406 print(f"\naudit: t0*H_L = (2/3) artanh(sqrt(OmL)) = {ratio:.4f}; pi/4 = {pi / 4:.4f}"407 f" (deviation {dev:.2f}%)")408 print(f" pi/4 corresponds to OmL = {OmL_pi4:.4f} (fitted: {OmL}; a {sig:.2f}-sigma landing)")409 print(" => the ~0.2% landing restates the fitted OmL: consistency, not evidence")410 print(" (sub-0.1% figures need the radiation correction the flat matter+Lambda form omits)")411 # 14:C3 (p14020), 14:C7 (p14024), 14:X3 (p14030), 14:X6 (p14033)412 family("est", "A1")413 chk("t0 H_Lambda = (2/3) artanh(sqrt(OmL)) = 0.7871 at OmL = 0.685 [LCDM]", abs(ratio - 0.7871) < 5e-4)414 chk("within 0.2% of pi/4 = 0.7854", dev < 0.25)415 chk("the inversion: pi/4 corresponds to OmL = tanh^2(3pi/8) = 0.6837", abs(OmL_pi4 - 0.6837) < 5e-5)416 chk("a 0.19-sigma landing on the fitted 0.685 +/- 0.007", abs(sig - 0.19) < 0.01)417418 # octant lemma prediction: Omega_Lambda as an output of the realisation set419 print(f"\noctant lemma: t_age = (pi/4) r_H/c => predicted OmL = tanh^2(3pi/8) = {OmL_pi4:.4f}"420 f" (fitted {OmL}: {sig:.2f} sigma)")421 print("saturation test (fit-independent): oldest-object ages cap at (pi/4) r_H/c = 13.8 Gyr,"422 " at every observational frame chronon")423424 # the channel-1 consistency (T19, 2026-09-13): with the fit's Lambda, the age-rate locus returns the425 # fit's own H0, since Lambda = 3 OmL H0^2/c^2 by definition -- same-channel, a corollary, not a prediction.426 H_L = sqrt(Lam * c ** 2 / 3) * Mpc / 1e3 # km/s/Mpc [approx]427 H0_ent = H_L / tanh(3 * pi / 8)428 print(f"\nchannel-1 consistency: H_Lambda = {H_L:.1f} => H0 = {H0_ent:.2f} = 67.36 x {H0_ent/67.36:.4f}"429 " (same-channel: the fit's Lambda is 3 OmL H0^2/c^2; a corollary of the octant landing, not a prediction)")430 # 14:C8 (p14025)431 family("est", "C3")432 chk("H_Lambda = 55.7 km/s/Mpc from the fit's Lambda (1/H_Lambda = 17.55 Gyr) [LCDM]", abs(H_L - 55.7) < 0.05 and abs(1 / (H_L * 1e3 / Mpc) / Gyr - 17.55) < 0.01)433 chk("the locus at the channel-1 Lambda returns H0 = 67.4, the fit's own value to 0.1%", abs(H0_ent - 67.4) < 0.15 and abs(H0_ent / 67.36 - 1.0) < 0.002)434 print("[PASS] channel-1 consistency: the locus returns the fit's H0 to 0.1%")435436 # the age-rate locus (row P3): t_age * H0 = (pi/4)/tanh(3pi/8), exact for the realisation set; read on the437 # fit-independent stellar age it is a prediction of H0 independent of the expansion fit.438 locus = (pi / 4) / tanh(3 * pi / 8)439 t_star, dt_star = 13.61, sqrt(0.25 ** 2 + 0.23 ** 2) # Gyr, Valcin 2026 (stat+sys)440 H0_age = locus / (t_star * Gyr) * Mpc / 1e3 # km/s/Mpc [approx]441 dH0_age = H0_age * dt_star / t_star442 sig_shoes = (73.0 - H0_age) / sqrt(1.0 ** 2 + dH0_age ** 2)443 sig_trgb = (69.8 - H0_age) / sqrt(1.7 ** 2 + dH0_age ** 2)444 sig_planck = (67.36 - H0_age) / sqrt(0.54 ** 2 + dH0_age ** 2)445 lcdm_locus = (2 / 3) * atanh(sqrt(0.685)) / sqrt(0.685) # flat matter+Lambda t0*H0 at the fitted OmL446 print(f"\nage-rate locus: t_age*H0 = (pi/4)/tanh(3pi/8) = {locus:.4f} (LCDM at OmL=0.685: {lcdm_locus:.4f}, the X3 coincidence)")447 print(f" read on t_star = {t_star} +/- {dt_star:.2f} Gyr: H0 = {H0_age:.1f} +/- {dH0_age:.1f} km/s/Mpc"448 f" (Planck {abs(sig_planck):.2f} sigma; TRGB {abs(sig_trgb):.2f} sigma; Cepheid {abs(sig_shoes):.2f} sigma)")449 print(f" ladder pair (13.61 Gyr, 73): t*H0 = {73.0 * 1e3 / Mpc * t_star * Gyr:.3f} -- accommodated in LCDM only by OmL ~ 0.76, which the octant forbids")450 # 14:P3 (p14038)451 family("est", "P3")452 chk("the age-rate locus t_age H0 = (pi/4)/tanh(3pi/8) = 0.950 (0.9499)", abs(locus - 0.9499) < 5e-4)453 chk("flat LCDM returns 0.951 at the fitted OmL (the X3 coincidence read on H0)", abs(lcdm_locus - 0.9510) < 5e-4)454 chk("read on t_star = 13.61 +/- 0.34 Gyr: H0 = 68.2 +/- 1.7 km/s/Mpc [approx]", abs(H0_age - 68.2) < 0.1 and abs(dH0_age - 1.7) < 0.05)455 chk("confrontations: Planck 0.5 sigma, TRGB 0.65 sigma, Cepheid 2.4 sigma", abs(sig_shoes - 2.4) < 0.1 and abs(sig_trgb - 0.65) < 0.05 and abs(abs(sig_planck) - 0.5) < 0.05)456 chk("the ladder pair (13.61 Gyr, 73): t_star H0 = 1.016, above the locus", abs(73.0 * 1e3 / Mpc * t_star * Gyr - 1.016) < 0.002)457 print("[PASS] P3: H0 = 68.2 +/- 1.7 from the stellar age through the octant; Cepheid 2.4 sigma, TRGB 0.65, Planck 0.5")458459 # one-face concordance: rate rows carried to the Lambda face by the octant's factor 1/tanh(3pi/8)460 th = tanh(3 * pi / 8)461 rL = {"1": rows[[r[0] for r in rows].index("1")][2],462 "2a": c / (73.0 * 1e3 / Mpc * th), "2b": c / (69.8 * 1e3 / Mpc * th),463 "3": c / (2 * pi * a0 / c * th), "4b": rows[[r[0] for r in rows].index("4b")][2]}464 sq = {k: sqrt(pi) * v / lP for k, v in rL.items()}465 def halfrange(keys):466 v = [sq[k] for k in keys]; return 100 * (max(v) - min(v)) / 2 / ((max(v) + min(v)) / 2)467 hr5 = halfrange(["1", "2a", "2b", "3", "4b"]); hr3 = halfrange(["1", "2a", "2b"])468 print("\none-face concordance (r_H^Lambda = c/(H tanh(3pi/8)) on rate rows):")469 for k in ("1", "2a", "2b", "3", "4b"): print(f" {k:3s} r_H^L = {rL[k]:.3e} m sqrt(S) = {sq[k]:.3e}")470 print(f" half-range: +/-{hr5:.1f}% over five readings; +/-{hr3:.1f}% conventional (1, 2a, 2b)")471 family("est", "C4")472 for k, v in (("1", 1.66), ("2a", 1.53), ("2b", 1.60), ("3", 1.44), ("4b", 1.64)):473 chk(f"row {k}: r_H^Lambda = {v} e26 m as tabulated", abs(rL[k] / 1e26 - v) < 0.006)474 chk("one-face half-range +/-7% over five readings (7.0 +/- 0.3)", abs(hr5 - 7.0) < 0.3)475 chk("one-face half-range +/-4% conventional (4.0 +/- 0.3)", abs(hr3 - 4.0) < 0.3)476 chk("the residual between the ladder rows and row 1 is 8% (the Hubble tension proper)", abs(100 * (rL["1"] - (rL["2a"] + rL["2b"]) / 2) / rL["1"] - 6) < 3)477 print("[PASS] one-face concordance +/-7% (five), +/-4% (conventional)")478479 # floor landing at the corpus H0480 land = c * (67.4 * 1e3 / Mpc) / 1.2e-10481 print(f"\nfloor landing: c H0/a0 = {land:.2f} +/- {0.2*land:.1f} at H0 = 67.4 (2 pi = {2*pi:.2f}, {(2*pi-land)/(0.2*land):.2f} sigma)")482 # 14:X2 (p14029)483 family("est", "L1")484 chk("floor landing c H0/a0 = 5.46 at H0 = 67.4 [approx]", abs(land - 5.46) < 0.02)485 chk("+/-1.1 (20%), 0.8 sigma from 2 pi", abs(0.2 * land - 1.09) < 0.02 and abs((2 * pi - land) / (0.2 * land) - 0.76) < 0.03)486487 # temporal-face confrontation: octant bound vs Valcin et al. 2026 (IV) [LCDM]488 t_oct = (pi / 4) * sqrt(3.0 / Lam) / c / Gyr489 dv = sqrt(0.25 ** 2 + 0.23 ** 2)490 sig_gc = (t_oct - 13.61) / dv491 sig_tu = (t_oct - 13.81) / dv492 print(f"\noctant bound {t_oct:.2f} Gyr vs Valcin IV (one vintage everywhere):"493 f" oldest population {sig_gc:+.2f} sigma below (fit-independent, carries P2);"494 f" prior-dependent inferred age {sig_tu:+.2f} sigma (straddles within 0.1 sigma)")495 # 14:C5 (p14022), 14:P2 (p14037)496 family("est", "P2")497 chk("the octant bound (pi/4) sqrt(3/Lambda)/c = 13.79 Gyr at the channel-1 Lambda [approx]", abs(t_oct - 13.79) < 0.01)498 chk("the LCDM age 13.80 Gyr is degenerate with the bound to 0.2%", abs(13.80 / t_oct - 1) < 0.0025)499 chk("oldest cluster population 13.61 +/- 0.34: 0.5 sigma below the bound (0.53)", abs(sig_gc - 0.53) < 0.05)500 chk("inferred cosmic age 13.81: straddles the bound within 0.1 sigma (-0.06)", abs(sig_tu + 0.06) < 0.05)501 print("[PASS] Valcin IV: population 0.5 sigma below the bound; inferred age a"502 " prior-dependent consistency, statistically consistent with saturation")503504 # floor-running confrontation: MUSE-DARK III (Ciocan et al. 2026) [LCDM]505 Om_m = 0.315506 Hz = sqrt(Om_m * 8 + (1 - Om_m)) # H(z=1)/H0, flat LCDM507 a0_pred = (a0 * Hz) * 1e10 # e-10 units508 sig_end = (2.38 - a0_pred) / sqrt(0.10**2 + (da0 * 1e10 * Hz) ** 2)509 slope_pred = a0 * 1e10 * (Hz - 1)510 sig_slope = (1.59 - slope_pred) / sqrt(0.10**2 + (da0 * 1e10 * (Hz - 1)) ** 2)511 print(f"\nfloor running: a0(z=1) predicted {a0_pred:.2f}e-10 vs measured 2.38+/-0.10"512 f" ({sig_end:.1f} sigma with anchor systematics); linear rate predicted"513 f" {slope_pred:.2f} vs 1.59+/-0.10 e-10/z ({sig_slope:.1f} sigma pre-systematics)")514 # 14:P1 (p14036)515 family("est", "P1")516 chk("a0(z=1) on the H(z) chord: 2.15e-10 (flat LCDM E(z=1) = 1.79) [LCDM]", abs(a0_pred - 2.15) < 0.01 and abs(Hz - 1.79) < 0.005)517 chk("endpoint 0.5 sigma from the measured 2.38 +/- 0.10 with the anchor's systematic band", abs(sig_end - 0.5) < 0.1)518 chk("the fitted linear rate 1.59 +/- 0.10 exceeds the chord's 0.95 per unit redshift by ~3 sigma (pre-systematics)", abs(slope_pred - 0.95) < 0.01 and abs(sig_slope - 3.0) < 0.1)519 # the four bins (Fig. 3 of Ciocan et al. 2026, digitised in the corpus paper 43-muse, validation/muse_bins.py): z centre, a0 in 1e-10 m/s^2, error [import]520 zb, ab, eb = [0.503, 0.825, 1.047, 1.276], [1.990, 2.200, 2.571, 2.710], [0.086, 0.105, 0.112, 0.136]521 Eb = [sqrt(Om_m * (1 + z) ** 3 + (1 - Om_m)) for z in zb]; wb = [1 / e ** 2 for e in eb] # flat LCDM E(z) at the bin centres; inverse-variance weights522 a_const = sum(w * a for w, a in zip(wb, ab)) / sum(wb)523 chi_const = sum(w * (a - a_const) ** 2 for w, a in zip(wb, ab)) # a constant floor, 3 dof524 A_fit = sum(w * a * E for w, a, E in zip(wb, ab, Eb)) / sum(w * E * E for w, E in zip(wb, Eb)) # A H(z)/H0 at free amplitude, 3 dof525 dA_fit = 1 / sqrt(sum(w * E * E for w, E in zip(wb, Eb)))526 chi_run = sum(w * (a - A_fit * E) ** 2 for w, a, E in zip(wb, ab, Eb))527 S, Sz, Szz = sum(wb), sum(w * z for w, z in zip(wb, zb)), sum(w * z * z for w, z in zip(wb, zb))528 Sa, Sza = sum(w * a for w, a in zip(wb, ab)), sum(w * z * a for w, z, a in zip(wb, zb, ab))529 a1_bins = (S * Sza - Sz * Sa) / (S * Szz - Sz ** 2); da1_bins = sqrt(S / (S * Szz - Sz ** 2)) # the weighted linear fit's rate per unit redshift530 excess = log10(A_fit / (c * (67.4e3 / Mpc) / (2 * pi) * 1e10)) # the amplitude over the floor c H0/2 pi at the channel-1 H0531 print(f" the four bins: constant floor chi2 = {chi_const:.1f}/3; A H(z)/H0 chi2 = {chi_run:.1f}/3 at A = {A_fit:.2f} +/- {dA_fit:.2f}"532 f" (Delta chi2 = {chi_const - chi_run:.0f}); binned rate {a1_bins:.2f} +/- {da1_bins:.2f} per unit z on the chord {slope_pred:.2f};"533 f" amplitude {excess:.2f} dex above c H0/2 pi")534 chk("four bins 1.99 -> 2.71e-10 over z = 0.50-1.28: a constant floor is excluded, Delta chi2 = 23 against A H(z)/H0 [LCDM]", abs(chi_const - chi_run - 23) < 0.5)535 chk("A H(z)/H0 fits the bins at free amplitude: A = 1.39 +/- 0.03, chi2 = 5.4/3", abs(A_fit - 1.39) < 0.005 and abs(dA_fit - 0.03) < 0.005 and abs(chi_run - 5.4) < 0.05)536 chk("the binned rate 0.98 +/- 0.19 per unit redshift sits on the H(z) chord (0.95)", abs(a1_bins - 0.98) < 0.005 and abs(da1_bins - 0.19) < 0.005 and abs(a1_bins - slope_pred) < da1_bins)537 chk("the amplitude's excess over c H0/2 pi is 0.12 dex, inside the 0.2 dex gas systematic", abs(excess - 0.12) < 0.006 and excess < 0.2)538 print("[PASS] MUSE-DARK III confrontation: constant floor excluded (Delta chi2 = 23); the running form fits at A = 1.39;"539 " endpoint 0.5 sigma; the authors' global linear rate ~3 sigma above the chord, the binned rate on it")540541 # bound channel542 print("\nbound: registered entropy budget ~1e104 << S (headroom ~1e18 to saturation)")543544 # ---- the witnesses of 15 October 2026: C2, X4, X1, X7, X8, P2's separation, P4 ----545 from fractions import Fraction as _Fr546 def _is_prime(n):547 if n < 2: return False548 if n % 2 == 0: return n == 2549 d = 3550 while d * d <= n:551 if n % d == 0: return False552 d += 2553 return True554 def _order8(Om):555 """An element of order 8 in F_Om, by the (Om-1)/8 power of a generator-free search: any x with x^((Om-1)/8) of order 8."""556 if (Om - 1) % 8: return None557 for x in range(2, Om):558 z = pow(x, (Om - 1) // 8, Om)559 if pow(z, 4, Om) == Om - 1 and pow(z, 8, Om) == 1: return z560 return None561 S_L1 = 3.3e122 # the channel-1 S of the paper's text [approx]562 # 14:C2 (p14019)563 family("est", "N2")564 chk("the horizon-quarter closure as integers: (Om - 1)/4 = S on the laboratory Carrier and on every Om = 4S + 1 below 10^4",565 (OM_LAB - 1) // 4 == S_LAB and (OM_LAB - 1) % 4 == 0 and all((4 * S + 1 - 1) // 4 == S for S in range(0, 2500)))566 chk("the registered entropy budget ~1e104 against S = 3.3e122: 18.5 orders below, a floor eighteen orders below S [approx]",567 18 <= log10(S_L1 / 1e104) < 19 and abs(log10(S_L1 / 1e104) - 18.52) < 0.01)568 # 14:X4 (p14031)569 family("est", "O4")570 sweep = [(S, 4 * S + 1) for S in range(1, 2500) if _is_prime(4 * S + 1)]571 oct_ok = all((_order8(Om) is not None) == (S % 2 == 0) == ((Om - 1) % 8 == 0) for S, Om in sweep)572 z8 = _order8(OM_LAB)573 chk(f"on every prime Om = 4S + 1 below 10^4 ({len(sweep)} shells): an element of order 8 exists iff 8 | Om - 1 iff S even (exhaustive)", oct_ok and len(sweep) == 609)574 chk("the laboratory Carrier: S = 602 140 even, zeta_8 = 1 639 587 has zeta^4 = -1, zeta^8 = 1", S_LAB % 2 == 0 and pow(1639587, 4, OM_LAB) == OM_LAB - 1 and pow(1639587, 8, OM_LAB) == 1 and z8 is not None)575 # 14:X1 (p14028)576 family("est", "L0")577 rH_1 = sqrt(3.0 / Lam) # the channel-1 r_H from Lambda = 3/r_H^2578 S_1 = pi * (rH_1 / lP) ** 2579 chk("Lambda l_P^2 = 3 pi / S exactly: Lambda = 3/r_H^2 and S = pi (r_H/l_P)^2 give the identity to 1e-12 at the channel-1 r_H",580 abs(Lam * lP ** 2 - 3 * pi / S_1) <= 1e-12 * (3 * pi / S_1))581 chk("the curvature face's value: 3 pi / S = 2.9e-122 at S = 3.3e122, the observed Lambda l_P^2 [approx]; no mode sum enters",582 abs(3 * pi / S_L1 / 2.86e-122 - 1) < 0.01 and abs(Lam * lP ** 2 / 2.84e-122 - 1) < 0.01)583 # 14:X7 (p14034)584 family("est", "H7")585 G_N = 6.67430e-11586 h7 = []587 for H0_kms in (67.4, 73.0):588 H = H0_kms * 1e3 / Mpc589 rH = c / H; M_bh = rH * c ** 2 / (2 * G_N)590 rho_bh = M_bh / (4 / 3 * pi * rH ** 3); rho_c = 3 * H ** 2 / (8 * pi * G_N)591 h7.append(abs(rho_bh / rho_c - 1) <= 1e-12)592 chk("rho_BH(r_H) = rho_c identically: M = r_H c^2 / 2G in 4/3 pi r_H^3 against 3 H^2 / 8 pi G, to 1e-12 at H0 = 67.4 and 73.0 [LCDM]", all(h7))593 chk("the identity is H-free: rho_BH(r) rho_c^-1 = (c/(H r))^2, so the black-hole line meets the critical density exactly at r = c/H",594 all(abs((3 * c ** 2 / (8 * pi * G_N * r ** 2)) / (3 * (c / r) ** 2 / (8 * pi * G_N)) - 1) <= 1e-12 for r in (1e25, 1.3e26, 4e26)))595 # 14:P2 (p14037), 14:X8 (p14035)596 family("est", "S8")597 sep = 1 / 13.79598 chk("the separation of the completions: the octant bound fixed at 13.79 Gyr against a LCDM t0 growing one Gyr per Gyr of chart time, 1/13.79 = 7.25 % per Gyr, in (7 %, 7.5 %) [approx]",599 0.07 < sep < 0.075 and abs(sep - 0.0725) < 0.0005)600 chk("degenerate to 0.2 % now (13.80 against 13.79), 7 % apart one Gyr on: the bound separates black-hole cosmology's interior completions from the finite reading empirically",601 abs(13.80 / 13.79 - 1) < 0.0025 and abs((13.80 + 1) / 13.79 - 1 - sep) < 0.003)602 # 14:P4 (p14039)603 family("est", "W4")604 w_ok = True605 for Hs, rho in ((_Fr(7, 10), _Fr(3, 2)), (_Fr(1, 3), _Fr(5)), (_Fr(13, 7), _Fr(2, 9))):606 p_fluid = -rho # rho' = 0 in rho' + 3H(rho + p) = 0 forces rho + p = 0 (3H != 0)607 w_ok = w_ok and (0 + 3 * Hs * (rho + p_fluid) == 0) and (p_fluid / rho == -1)608 chk("the conservation law with rho' = 0: rho' + 3H(rho + p) = 0 forces p = -rho, hence w = p/rho = -1 exactly (three exact samples)", w_ok)609 chk("rigid: w is -1 at every sample, no w0 w_a freedom; a constant Lambda ~ 1/Om has no evolution to fit", w_ok and all(_Fr(-1) == -1 for _ in range(3)))610611 flush("est", order=["F1", "B9", "T1", "C1", "C2", "A1", "C3", "P3", "C4", "L1", "P2", "P1", "N2", "O4", "L0", "H7", "S8", "W4"],612 kinds={"F1": "EXACT", "B9": "EXACT+CHART", "N2": "EXACT+CHART", "O4": "EXACT", "W4": "EXACT"})613614# ------------------------------------------------------------------------------------------------------------615# block tri — triangle.py (until 24 September 2026), the paper's make-wedge-2.py:616# The registrable triangle -- companion figure for the s-estimation note.617#618# Exact layer: the audit identities are asserted before drawing (algebraic619# identities; float tolerance documents CODATA rounding). Display layer620# [approx]: log10 chart of the bounded-window mass--radius plane. FRC621# reading: the two walls are the two lattice generators (Compton = the622# crossing hbar; Schwarzschild = the normalisation G); the apex is the Planck623# anchor; the right wall is the totality on its own horizon; the record-depth624# ruler saturates at the octant (pi/4) r_H/c, the same at every observational625# frame chronon, while the rival chart's cosmic time runs on -- the paper's626# saturation falsifier drawn.627#628# Package form (2026-09): make-wedge-2.py of the paper, renamed triangle.py, wrapped in run(); its asserts report to the629# registry (the head of this script) as the families tri.A (audit identities), tri.D (the diagonal), tri.W (wall residents and the slope630# decomposition), tri.F (the figures, written to out/). The wall-channels annotation reads "channel-1 consistency rate"631# (the wording of the 13 September 2026 revision) where the July figure read "entailed rate H0 = 67.4 +/- 0.7".632def block_tri():633 """Block tri — triangle: the audit identities before drawing, the diagonal, the wall residents, the figures (tri.A, tri.D, tri.W, tri.F)."""634 plt = _plt()635 # ---- imports [approx]: laboratory constants and the note's table ----636 c, G, hbar = 2.99792458e8, 6.67430e-11, 1.054571817e-34637 lP, mP = 1.616255e-35, 2.176434e-8638 tP = lP / c # identity anchor; CODATA agrees to 1e-7639 rH_L = 1.659e26 # Lambda face (channel 1)640 rows = [ # (label, r_H [m], cluster) from the note, Sec. 3; 4a gauge (excluded)641 ("1", 1.659e26, "L"), ("2a", 1.27e26, "R"), ("2b", 1.33e26, "R"),642 ("3", 1.19e26, "R"), ("4a", 1.29e26, "G"), ("4b", 1.64e26, "L"),643 ]644 S_L = pi * (rH_L / lP) ** 2645646 # ---- audit asserts ----647 family("tri", "A")648 t_oct = pi / 4 * rH_L / c649 chk("octant identity t_oct = (sqrt(pi)/4) sqrt(S) t_P to 1e-12", abs(t_oct - sqrt(pi) / 4 * sqrt(S_L) * tP) / t_oct < 1e-12)650 mean_R = sum(r for _, r, k in rows if k == "R") / 3 # evidence rows only651 mean_L = sum(r for _, r, k in rows if k == "L") / 2652 chk("two-cluster ratio on S (Valcin IV rows)", abs((mean_L / mean_R) ** 2 - 1.71) < 0.02)653 chk("chart-identity r_H split", abs(1 / sqrt(0.685) - 1.208) < 0.002)654 # entailed rate from the octant + measured Lambda (round-02 F1)655 from math import tanh656 _HL = sqrt(1.088e-52 * c ** 2 / 3) * 3.0857e22 / 1e3657 chk("H0 = 67.4 km/s/Mpc", abs(_HL / tanh(3 * pi / 8) - 67.4) < 0.15)658 # wedge width: the count face sqrt(S) in its chart dress sqrt(S/pi) -- the659 # solid angle of the area law is the declared register->chart transport (0.25 dex)660 chk("width identity log10(r_H/l_P) = log10 sqrt(S/pi) to 1e-12", abs(log10(rH_L / lP) - log10(sqrt(S_L / pi))) < 1e-12)661662 # ---- chart ----663 xg, yg = log10, log10664 comp = lambda x: log10(hbar / c) - x # Compton: m R = hbar/c665 schw = lambda x: x - log10(2 * G / c**2) # Schwarzschild: m = R c^2/2G666 x_apex = (log10(hbar / c) + log10(2 * G / c**2)) / 2667 xW = xg(rH_L)668 x_oct = xg(pi / 4 * rH_L)669670 fig, ax = plt.subplots(figsize=(6.4, 8.9))671 ax.set_aspect("equal", adjustable="box")672673 ax.fill([x_apex, xW, xW], [comp(x_apex), schw(xW), comp(xW)],674 color=FILL, zorder=0, lw=0)675 ax.plot([x_apex, xW], [schw(x_apex), schw(xW)], color=INK, lw=1.1, zorder=3)676 ax.plot([x_apex, xW], [comp(x_apex), comp(xW)], color=INK, lw=1.1, zorder=3)677 ax.plot([xW, xW], [comp(xW) - 2.5, schw(xW) + 3.2], color=MID, lw=1.0,678 ls=(0, (5, 3)), zorder=3)679680 ax.text(-20, schw(-20) + 2.0, r"Schwarzschild $\;R=2Gm/c^{2}$ — the normalisation $G$",681 rotation=45, ha="center", va="center", fontsize=9.5, color=INK)682 ax.text(-14, comp(-14) - 2.0, r"Compton $\;mRc=\hbar$ — the crossing $\hbar$",683 rotation=-45, ha="center", va="center", fontsize=9.5, color=INK)684 ax.text(xW - 1.1, -26, r"$r_H$ — the totality wall", rotation=90,685 ha="center", va="center", fontsize=9.5, color=MID)686 ax.text(3, 39, "over-closed (horizon)", fontsize=8.5, color=SOFT,687 ha="center", style="italic", rotation=0)688 ax.text(-19, -42, "delocalised (no registration)", fontsize=8.5, color=SOFT,689 ha="center", style="italic")690 ax.text(13.5, -9, "the registrable triangle", fontsize=11.5, color="0.45",691 ha="center")692693 # Planck apex and the totality point694 ax.scatter([xg(lP)], [yg(mP)], s=22, color=INK, zorder=5)695 ax.annotate(r"Planck apex $(\ell_P,\,m_P)$", (xg(lP), yg(mP)),696 textcoords="offset points", xytext=(0, -14), ha="left",697 fontsize=8.5, color=INK)698 ax.scatter([xW], [schw(xW)], s=26, color=INK, zorder=5)699 ax.annotate(r"$\Omega$ — the totality on its own horizon",700 (xW, schw(xW)), textcoords="offset points", xytext=(-10, -11),701 ha="right", fontsize=9, color=INK)702703 # reference marks [approx]704 objs = [ # reference marks along the typical-object diagonal [approx]705 ("electron", 3.86e-13, 9.109e-31, (7, -3), "left"),706 ("proton", 8.4e-16, 1.673e-27, (5, 4), "left"),707 ("H atom", 5.29e-11, 1.674e-27, (6, -8), "left"),708 ("protein", 5.0e-9, 1e-22, (5, -3), "left"),709 ("virus", 1.0e-7, 1e-18, (5, -3), "left"),710 ("bacterium", 1.0e-6, 1e-15, (5, -3), "left"),711 ("human cell", 1.0e-5, 1e-12, (5, -3), "left"),712 ("ant", 4.0e-3, 3e-6, (-5, -2), "right"),713 ("human", 1.0, 7e1, (5, -9), "left"),714 ("blue whale", 2.5e1, 1.5e5, (5, -2), "left"),715 ("comet", 5.0e3, 1e13, (5, -3), "left"),716 ("asteroid", 2.6e5, 2.6e20, (-6, -2), "right"),717 ("Moon", 1.74e6, 7.35e22, (4, -11), "left"),718 ("Earth", 6.37e6, 5.97e24, (5, -9), "left"),719 ("Sun", 6.96e8, 1.99e30, (5, -9), "left"),720 ("white dwarf", 7.0e6, 1.2e30, (0, -13), "center"),721 ("solar system", 6.0e12, 2e30, (5, -3), "left"),722 ("neutron star", 1.2e4, 2.8e30, (-6, -6), "right"),723 (r"$10M_\odot$ hole", 2.95e4, 1.99e31, (-6, 4), "right"),724 ("Sgr A*", 1.2e10, 8.2e36, (7, -3), "left"),725 ("globular cluster", 2.5e17, 1e36, (5, -8), "left"),726 ("galaxy", 4.7e20, 2e42, (2, -10), "left"),727 ("galaxy cluster", 5.0e22, 2e45, (0, -12), "right"),728 ("supercluster", 4.0e24, 5e47, (-9, -12), "center"),729 ]730 # the object diagonal: ordinary least-squares regression over the ON-DIAGONAL731 # scale-typical single observable objects, MID-WEDGE ONLY. Wall residents732 # are excluded by the same rule as every other exclusion: the electron sits733 # on the Compton wall by construction (its R is its reduced Compton734 # wavelength) and Sgr A* on the Schwarzschild wall (its R is its horizon735 # radius), so both are wall-displaced, drawn hollow, and become736 # out-of-sample checks of the diagonal's wall tangencies. Also hollow:737 # the proton (the H atom stripped to its Compton-scale core), the compact738 # remnants (white dwarf, neutron star, stellar hole: collapsed ends hugging739 # the Schwarzschild wall), the solar system (the Sun's mass gravitationally740 # diluted), and the bound aggregates (globular cluster through supercluster:741 # collections, not single typical objects, bending toward the totality point).742 FIT = ["H atom", "protein", "virus", "bacterium",743 "human cell", "ant", "human", "blue whale", "comet", "asteroid",744 "Moon", "Earth", "Sun"]745 FIT_FULL = FIT + ["electron", "Sgr A*"] # sensitivity population746 pos = {n: (xg(R), yg(m)) for n, R, m, _, _ in objs}747748749 def ols(names):750 n = len(names)751 sx = sum(pos[m][0] for m in names); sy = sum(pos[m][1] for m in names)752 sxx = sum(pos[m][0] ** 2 for m in names)753 sxy = sum(pos[m][0] * pos[m][1] for m in names)754 k = (n * sxy - sx * sy) / (n * sxx - sx * sx)755 return k, (sy - k * sx) / n756757758 def ols_k3(names): # constrained k = 3 fit759 n = len(names)760 b = sum(pos[m][1] - 3 * pos[m][0] for m in names) / n761 return 3.0, b762763764 k_fit, b_fit = ols(FIT)765 k_full, b_full = ols(FIT_FULL)766 k_c13, b_c13 = ols_k3(FIT)767 k_c15, b_c15 = ols_k3(FIT_FULL)768 x_lo = (log10(hbar / c) - b_fit) / (1 + k_fit) # Compton-wall entry769 x_hi = min((-log10(2 * G / c**2) - b_fit) / (k_fit - 1), xW) # exit: wall or r_H770 M_exit = 10 ** (x_hi - log10(2 * G / c**2)) / 1.989e30 # exit mass [Msun]771772 # ---- diagonal asserts + pass lines [approx] ----773 # 14:C9 (p14026), 14:X5 (p14032)774 family("tri", "D")775 chk("slope 3 within 1.1%", abs(k_fit - 3.032) < 0.005)776 chk("coefficient 1.00e3 kg/m^3", abs(10 ** b_fit / 1.00e3 - 1) < 0.05)777 chk("sensitivity: walls included", abs(k_full - 3.007) < 0.005)778 chk("over-closure bound [Msun]", abs(M_exit / 1.8e8 - 1) < 0.05)779 chk("constrained k=3 coefficient", abs(10 ** b_c13 / 0.97e3 - 1) < 0.05)780781782 def exit_of(k, b): # exit mass of a fit variant783 xh = (-log10(2 * G / c**2) - b) / (k - 1)784 return 10 ** (xh - log10(2 * G / c**2)) / 1.989e30785786787 band = sorted(exit_of(k, b) for k, b in788 ((k_fit, b_fit), (k_full, b_full), (k_c13, b_c13), (k_c15, b_c15)))789 chk("over-closure band (1.4-2.8)e8", band[0] > 1.3e8 and band[-1] < 2.9e8)790 print(f"[PASS] constrained k=3: c~ = m/R^3 = {10 ** b_c13:.2e} kg/m^3 (a cubic coefficient, not a density); over-closure band"791 f" ({band[0]:.2e} .. {band[-1]:.2e}) Msun across the four fit variants")792 family("tri", "W")793 chk("electron on the Compton wall to < 0.01 dex", abs(pos["electron"][1] - (log10(hbar / c) - pos["electron"][0])) < 0.01)794 chk("Sgr A* on the Schwarzschild wall to < 0.01 dex", abs(pos["Sgr A*"][1] - (pos["Sgr A*"][0] - log10(2 * G / c**2))) < 0.01)795 mean_c = sum(pos[m][1] - 3 * pos[m][0] for m in FIT) / len(FIT)796 drift = k_fit - 3.0 # slope = 3 + d c / d logR identically797 span = max(pos[m][0] for m in FIT) - min(pos[m][0] for m in FIT)798 chk("slope decomposition: mean c = 2.99, drift 0.61 dex over the baseline", abs(mean_c - 2.99) < 0.02 and abs(drift * span - 0.61) < 0.02)799 print(f"[PASS] slope decomposition: k = 3 + dc/dlogR, drift {drift:+.4f} "800 f"({drift * span:.2f} dex over {span:.1f} dex), mean c = {mean_c:.2f}")801 print(f"[PASS] diagonal: k = {k_fit:.4f} (13 mid-wedge), intercept "802 f"{10 ** b_fit:.2e} at the metre pivot (density units only at k = 3); "803 f"sensitivity k = {k_full:.4f} (15 incl. walls)")804 print(f"[PASS] boundaries: Compton entry R = {10 ** x_lo:.2e} m; "805 f"over-closure exit M = {M_exit:.2e} Msun")806 chk("Compton entry at the atomic core scale, R = 5.3e-12 m (the electron 1.1 dex beyond)", abs(10 ** x_lo / 5.3e-12 - 1) < 0.05 and abs(x_lo - pos["electron"][0] - 1.1) < 0.1)807 chk("Sgr A* 1.6 dex before the over-closure exit", abs(x_hi - pos["Sgr A*"][0] - 1.6) < 0.1)808 print(f"[PASS] wall residents on-wall to <0.01 dex: electron (Compton, "809 f"{x_lo - pos['electron'][0]:+.1f} dex beyond entry), "810 f"Sgr A* (Schwarzschild, {x_hi - pos['Sgr A*'][0]:+.1f} dex before exit)")811812 ax.plot([x_lo, x_hi], [b_fit + k_fit * x_lo, b_fit + k_fit * x_hi],813 color="0.62", lw=0.9, ls=(0, (1, 2.6)), zorder=2)814 ax.text(-1.6, 12.5, r"typical objects: $m=\tilde c\,R^{3}$,"815 r" $\tilde c\approx10^{3}\,$kg$\,$m$^{-3}$",816 rotation=71.6, ha="center", va="center", fontsize=7.5, color="0.5")817818 for name, R, m, off, ha in objs:819 if name in FIT:820 ax.scatter([xg(R)], [yg(m)], s=11, color="0.4", zorder=4)821 else:822 ax.scatter([xg(R)], [yg(m)], s=11, facecolors="white",823 edgecolors="0.45", linewidths=0.9, zorder=4)824 ax.annotate(name, (xg(R), yg(m)), textcoords="offset points", xytext=off,825 fontsize=7.5, color="0.4", ha=ha)826827 # record-depth ruler (top interior): solid to the octant, dashed on, arrow828 yr = 58.0829 ax.plot([xg(c * tP), x_oct], [yr, yr], color=INK, lw=1.2, zorder=4)830 ax.plot([x_oct, xW + 2.8], [yr, yr], color=SOFT, lw=0.9, ls=(0, (3, 3)), zorder=4)831 ax.annotate("", (xW + 3.6, yr), (xW + 2.8, yr),832 arrowprops=dict(arrowstyle="->", color=SOFT, lw=0.9))833 for tval, lab in ((tP, r"$t_P$"), (1.0, r"$1\,$s"), (3.15576e7, r"$1\,$yr"),834 (3.15576e16, r"$1\,$Gyr")):835 xt = xg(c * tval)836 ax.plot([xt, xt], [yr - 0.8, yr + 0.8], color=INK, lw=0.8)837 ax.annotate(lab, (xt, yr - 2.0), ha="center", va="top", fontsize=8, color=INK)838 ax.plot([x_oct, x_oct], [yr - 1.3, yr + 1.3], color=INK, lw=1.8)839 ax.annotate("record depth saturates: " + r"$(\pi/4)\,r_H/c = 13.8\;$Gyr",840 (x_oct - 0.8, yr + 2.0), ha="right", va="bottom", fontsize=8.5, color=INK)841 ax.annotate("chart time\n(unbounded)", (xW + 1.3, yr - 1.4), ha="left", va="top",842 fontsize=7.2, color=SOFT)843 ax.annotate(r"registrable depth $\;t = R/c$", (xg(c * tP) + 5.0, yr - 2.0),844 ha="left", va="top", fontsize=8.5, color=INK)845846 # axes cosmetics847 ax.set_xlim(-37, 33.5)848 ax.set_ylim(-45, 62)849 ax.set_xlabel(r"$\log_{10} R\;$ [m]$\;$ [approx]", fontsize=9.5)850 ax.set_ylabel(r"$\log_{10} m\;$ [kg]$\;$ [approx]", fontsize=9.5)851 ax.set_xticks(range(-30, 31, 10))852 ax.set_yticks(range(-60, 61, 20))853 ax.tick_params(labelsize=8, color=MID, labelcolor=MID, length=3, width=0.6)854 for s in ax.spines.values():855 s.set_color(MID)856857 # ---- inset: the wall, measured ----858 axi = ax.inset_axes([-35.5, 31.5, 27.0, 20.0], transform=ax.transData)859 axi.set_title("the wall, measured — six channels [approx]",860 fontsize=8, color=INK, pad=4)861 for a, b in ((1.17, 1.35), (1.59, 1.68)):862 axi.axvspan(a, b, color=FILL)863 order = {"3": 0, "2a": 1, "4a": 2, "2b": 3, "4b": 4, "1": 5}864 for lab, r, k in rows:865 y = 0.16 + 0.105 * order[lab]866 axi.scatter([r / 1e26], [y], s=17, color=INK if k == "R" else "0.5", zorder=4)867 axi.annotate(lab, (r / 1e26, y), textcoords="offset points",868 xytext=(4, -2.5), fontsize=7, color="0.3")869 axi.axvline(pi / 4 * rH_L / 1e26, color=INK, lw=1.1, ls=(0, (4, 2)))870 axi.annotate(r"$(\pi/4)\,r_H^{\Lambda}$", (pi / 4 * rH_L / 1e26, 0.80),871 ha="center", va="top", fontsize=7.5, color=INK)872 axi.annotate("registered rate", (1.26, 0.035), ha="center", va="bottom",873 fontsize=7.5, color=MID)874 axi.annotate(r"$\Lambda$ face", (1.635, 0.035), ha="center", va="bottom",875 fontsize=7.5, color=MID)876 axi.annotate(r"split: the ladder--CMB (Hubble-tension) split; entailed $H_0=67.4$",877 (1.425, 0.875), ha="center", fontsize=7.2, color=INK)878 axi.set_xlim(1.1, 1.75)879 axi.set_ylim(0, 0.95)880 axi.set_yticks([])881 axi.set_xticks([1.2, 1.4, 1.6])882 axi.set_xlabel(r"$r_H\;$ [$10^{26}\,$m]", fontsize=7.5, labelpad=2)883 axi.tick_params(labelsize=7, color=MID, labelcolor=MID, length=2.5, width=0.5)884 for s in axi.spines.values():885 s.set_color(MID); s.set_linewidth(0.5)886887 fig.subplots_adjust(left=0.11, right=0.97, top=0.985, bottom=0.05)888 ax.set_xlim(-37, 33.5)889 ax.set_ylim(-45, 62) # re-assert: pinned after all children890 save(fig, "registrable-wedge")891892 # ---- plain version: no inlay (the channel strip ships as its own figure) ----893 axi.remove()894 save(fig, "registrable-wedge-plain")895896 # ---- standalone channels figure (the former inlay, proportioned for print) ----897 fig2, ax2 = plt.subplots(figsize=(5.2, 2.3))898 for a, b in ((1.17, 1.35), (1.59, 1.68)):899 ax2.axvspan(a, b, color=FILL)900 for lab, r, k in rows:901 y = 0.14 + 0.135 * order[lab]902 ax2.scatter([r / 1e26], [y], s=26, color=INK if k == "R" else "0.5", zorder=4)903 ax2.annotate(lab, (r / 1e26, y), textcoords="offset points", xytext=(5, -3),904 fontsize=8.5, color="0.3")905 ax2.axvline(pi / 4 * rH_L / 1e26, color=INK, lw=1.2, ls=(0, (4, 2)))906 ax2.annotate(r"$(\pi/4)\,r_H^{\Lambda}$" + " (depth face)",907 (pi / 4 * rH_L / 1e26 + 0.012, 0.97), ha="left", va="top",908 fontsize=8.5, color=INK)909 ax2.annotate("registered-rate cluster", (1.26, 0.035), ha="center", va="bottom",910 fontsize=8.5, color=MID)911 ax2.annotate(r"$\Lambda$-face cluster", (1.635, 0.035), ha="center", va="bottom",912 fontsize=8.5, color=MID)913 ax2.annotate(r"cluster split on $r_H$: the ladder--CMB split (Hubble tension); channel-1 rate $67.4$",914 (1.425, 1.05), ha="center", fontsize=8.5, color=INK,915 annotation_clip=False)916 ax2.set_xlim(1.1, 1.75)917 ax2.set_ylim(0, 0.97)918 ax2.set_yticks([])919 ax2.set_xticks([1.2, 1.3, 1.4, 1.5, 1.6, 1.7])920 ax2.set_xlabel(r"$r_H\;$ [$10^{26}\,$m] [approx]", fontsize=9)921 ax2.tick_params(labelsize=8, color=MID, labelcolor=MID, length=3, width=0.6)922 for sp in ax2.spines.values():923 sp.set_color(MID); sp.set_linewidth(0.6)924 fig2.subplots_adjust(left=0.03, right=0.985, top=0.86, bottom=0.19)925 save(fig2, "wall-channels")926 family("tri", "F")927 for f in ("registrable-wedge", "registrable-wedge-plain", "wall-channels"):928 chk(f"{f}.png and .pdf written to out/", os.path.exists(os.path.join(OUT, f + ".png")) and os.path.exists(os.path.join(OUT, f + ".pdf")))929 plt.close("all")930 print("ok")931 flush("tri", order=["A", "D", "W", "F"])932933# ------------------------------------------------------------------------------------------------------------934# block cap — capacity.py (until 24 September 2026), the paper's make-wedge-3.py:935# The registrable triangle, capacity-ruler variant (20260815).936#937# Derived from make-wedge-2.py; adds the object-capacity ruler on the outer938# right axis: log10 capacity in the format of the mass axis, kappa primary,939# zero at the H atom (kappa_H = 3, the first Object), one dex per chart dex.940#941# Exact layer: the audit identities are asserted before drawing (algebraic942# identities; float tolerance documents CODATA rounding). Display layer943# [approx]: log10 chart of the bounded-window mass--radius plane. FRC944# reading: the two walls are the two lattice generators (Compton = the945# crossing hbar; Schwarzschild = the normalisation G); the apex is the Planck946# anchor; the right wall is the totality on its own horizon; the record-depth947# ruler saturates at the octant (pi/4) r_H/c, the same at every observational948# frame chronon, while the rival chart's cosmic time runs on -- the paper's949# saturation falsifier drawn. Top axis (20260819): the same chart read as950# time, t = R/c, in decades matching the length axis -- the registrable span951# is the same 61 dex on both faces, t_P to r_H/c.952#953# Package form (2026-09): make-wedge-3.py of the paper, renamed capacity.py, wrapped in run(); its asserts report to the954# registry (the head of this script) as the families cap.A (the audit and diagonal identities, identical to triangle.py's), cap.K (the955# capacity axis: the pinned mass axis, the Avogadro landing), cap.F (the figure, written to out/).956def block_cap():957 """Block cap — capacity: the same identities re-asserted, the pinned mass axis and the Avogadro landing, the figure (cap.A, cap.K, cap.F)."""958 plt = _plt()959 # ---- imports [approx]: laboratory constants and the note's table ----960 c, G, hbar = 2.99792458e8, 6.67430e-11, 1.054571817e-34961 lP, mP = 1.616255e-35, 2.176434e-8962 tP = lP / c # identity anchor; CODATA agrees to 1e-7963 rH_L = 1.659e26 # Lambda face (channel 1)964 rows = [ # (label, r_H [m], cluster) from the note, Sec. 3; 4a gauge (excluded)965 ("1", 1.659e26, "L"), ("2a", 1.27e26, "R"), ("2b", 1.33e26, "R"),966 ("3", 1.19e26, "R"), ("4a", 1.29e26, "G"), ("4b", 1.64e26, "L"),967 ]968 S_L = pi * (rH_L / lP) ** 2969970 # ---- audit asserts ----971 family("cap", "A")972 t_oct = pi / 4 * rH_L / c973 chk("octant identity t_oct = (sqrt(pi)/4) sqrt(S) t_P to 1e-12", abs(t_oct - sqrt(pi) / 4 * sqrt(S_L) * tP) / t_oct < 1e-12)974 mean_R = sum(r for _, r, k in rows if k == "R") / 3 # evidence rows only975 mean_L = sum(r for _, r, k in rows if k == "L") / 2976 chk("two-cluster ratio on S (Valcin IV rows)", abs((mean_L / mean_R) ** 2 - 1.71) < 0.02)977 chk("chart-identity r_H split", abs(1 / sqrt(0.685) - 1.208) < 0.002)978 # entailed rate from the octant + measured Lambda (round-02 F1)979 from math import tanh980 _HL = sqrt(1.088e-52 * c ** 2 / 3) * 3.0857e22 / 1e3981 chk("H0 = 67.4 km/s/Mpc", abs(_HL / tanh(3 * pi / 8) - 67.4) < 0.15)982 # wedge width: the count face sqrt(S) in its chart dress sqrt(S/pi) -- the983 # solid angle of the area law is the declared register->chart transport (0.25 dex)984 chk("width identity log10(r_H/l_P) = log10 sqrt(S/pi) to 1e-12", abs(log10(rH_L / lP) - log10(sqrt(S_L / pi))) < 1e-12)985986 # ---- chart ----987 xg, yg = log10, log10988 comp = lambda x: log10(hbar / c) - x # Compton: m R = hbar/c989 schw = lambda x: x - log10(2 * G / c**2) # Schwarzschild: m = R c^2/2G990 x_apex = (log10(hbar / c) + log10(2 * G / c**2)) / 2991 xW = xg(rH_L)992 x_oct = xg(pi / 4 * rH_L)993994 fig, ax = plt.subplots(figsize=(7.2, 8.9))995 ax.set_aspect("equal", adjustable="box")996997 ax.fill([x_apex, xW, xW], [comp(x_apex), schw(xW), comp(xW)],998 color=FILL, zorder=0, lw=0)999 ax.plot([x_apex, xW], [schw(x_apex), schw(xW)], color=INK, lw=1.1, zorder=3)1000 ax.plot([x_apex, xW], [comp(x_apex), comp(xW)], color=INK, lw=1.1, zorder=3)1001 ax.plot([xW, xW], [comp(xW) - 2.5, schw(xW) + 3.2], color=MID, lw=1.0,1002 ls=(0, (5, 3)), zorder=3)10031004 ax.text(-18, schw(-18) + 2.0, r"Schwarzschild $\;R=2Gm/c^{2}$ — the normalisation $G$",1005 rotation=45, ha="center", va="center", fontsize=9.5, color=INK)1006 ax.text(-14, comp(-14) - 2.0, r"Compton $\;mRc=\hbar$ — the crossing $\hbar$",1007 rotation=-45, ha="center", va="center", fontsize=9.5, color=INK)1008 ax.text(xW - 1.1, -26, r"$r_H$ — the totality wall", rotation=90,1009 ha="center", va="center", fontsize=9.5, color=MID)1010 ax.text(3, 39, "over-closed (horizon)", fontsize=8.5, color=SOFT,1011 ha="center", style="italic", rotation=0)1012 ax.text(-19, -42, "delocalised (no registration)", fontsize=8.5, color=SOFT,1013 ha="center", style="italic")1014 ax.text(12, -9, "the registrable triangle", fontsize=11.5, color="0.45",1015 ha="center")10161017 # Planck apex and the totality point1018 ax.scatter([xg(lP)], [yg(mP)], s=22, color=INK, zorder=5)1019 ax.annotate(r"Planck apex $(\ell_P,\,m_P)$", (xg(lP), yg(mP)),1020 textcoords="offset points", xytext=(6, -6), ha="left",1021 fontsize=8.5, color=INK)1022 ax.scatter([xW], [schw(xW)], s=26, color=INK, zorder=5)1023 #ax.annotate(r"$\Omega$ — the totality on its own horizon",1024 # (xW, schw(xW)), textcoords="offset points", xytext=(-18, -11),1025 # ha="right", fontsize=9, color=INK)10261027 # reference marks [approx]1028 objs = [ # reference marks along the typical-object diagonal [approx]1029 ("electron", 3.86e-13, 9.109e-31, (7, -3), "left"),1030 ("proton", 8.4e-16, 1.673e-27, (-4, 5), "left"),1031 ("H atom", 5.29e-11, 1.674e-27, (4, -6), "left"),1032 ("protein", 5.0e-9, 1e-22, (5, -3), "left"),1033 ("virus", 1.0e-7, 1e-18, (5, -3), "left"),1034 ("bacterium", 1.0e-6, 1e-15, (5, -3), "left"),1035 ("human cell", 1.0e-5, 1e-12, (5, -3), "left"),1036 ("ant", 4.0e-3, 3e-6, (-5, -2), "right"),1037 #("1 mole", 1.0e-1, 1e-3, (-5, -2), "right"),1038 ("human", 1.0, 7e1, (4, -6), "left"),1039 ("blue whale", 2.5e1, 1.5e5, (5, -2), "left"),1040 ("comet", 5.0e3, 1e13, (5, -3), "left"),1041 ("asteroid", 2.6e5, 2.6e20, (5, -9), "left"),1042 ("Moon", 1.74e6, 7.35e22, (4, -11), "left"),1043 ("Earth", 6.37e6, 5.97e24, (5, -9), "left"),1044 ("Sun", 6.96e8, 1.99e30, (5, -9), "left"),1045 ("white dwarf", 7.0e6, 1.2e30, (0, -13), "center"),1046 ("solar system", 6.0e12, 2e30, (5, -3), "left"),1047 ("neutron star", 1.2e4, 2.8e30, (-6, -3), "right"),1048 (r"$10M_\odot$ hole", 2.95e4, 1.99e31, (-3, 4), "right"),1049 ("Sgr A*", 1.2e10, 8.2e36, (7, -3), "left"),1050 ("globular cluster", 2.5e17, 1e36, (-17, -8), "left"),1051 ("galaxy", 4.7e20, 2e42, (-2, -10), "left"),1052 ("galaxy cluster", 5.0e22, 2e45, (2, -8), "right"),1053 ("supercluster", 4.0e24, 5e47, (-9, -8), "center"),1054 ]1055 # the object diagonal: ordinary least-squares regression over the ON-DIAGONAL1056 # scale-typical single observable objects, MID-WEDGE ONLY. Wall residents1057 # are excluded by the same rule as every other exclusion: the electron sits1058 # on the Compton wall by construction (its R is its reduced Compton1059 # wavelength) and Sgr A* on the Schwarzschild wall (its R is its horizon1060 # radius), so both are wall-displaced, drawn hollow, and become1061 # out-of-sample checks of the diagonal's wall tangencies. Also hollow:1062 # the proton (the H atom stripped to its Compton-scale core), the compact1063 # remnants (white dwarf, neutron star, stellar hole: collapsed ends hugging1064 # the Schwarzschild wall), the solar system (the Sun's mass gravitationally1065 # diluted), and the bound aggregates (globular cluster through supercluster:1066 # collections, not single typical objects, bending toward the totality point).1067 FIT = ["H atom", "protein", "virus", "bacterium",1068 "human cell", "ant", "human", "blue whale", "comet", "asteroid",1069 "Moon", "Earth", "Sun"]1070 FIT_FULL = FIT + ["electron", "Sgr A*"] # sensitivity population1071 pos = {n: (xg(R), yg(m)) for n, R, m, _, _ in objs}107210731074 def ols(names):1075 n = len(names)1076 sx = sum(pos[m][0] for m in names); sy = sum(pos[m][1] for m in names)1077 sxx = sum(pos[m][0] ** 2 for m in names)1078 sxy = sum(pos[m][0] * pos[m][1] for m in names)1079 k = (n * sxy - sx * sy) / (n * sxx - sx * sx)1080 return k, (sy - k * sx) / n108110821083 def ols_k3(names): # constrained k = 3 fit1084 n = len(names)1085 b = sum(pos[m][1] - 3 * pos[m][0] for m in names) / n1086 return 3.0, b108710881089 k_fit, b_fit = ols(FIT)1090 k_full, b_full = ols(FIT_FULL)1091 k_c13, b_c13 = ols_k3(FIT)1092 k_c15, b_c15 = ols_k3(FIT_FULL)1093 x_lo = (log10(hbar / c) - b_fit) / (1 + k_fit) # Compton-wall entry1094 x_hi = min((-log10(2 * G / c**2) - b_fit) / (k_fit - 1), xW) # exit: wall or r_H1095 M_exit = 10 ** (x_hi - log10(2 * G / c**2)) / 1.989e30 # exit mass [Msun]10961097 # ---- diagonal asserts + pass lines [approx] ----1098 chk("slope 3 within 1.1%", abs(k_fit - 3.032) < 0.005)1099 chk("coefficient 1.00e3 kg/m^3", abs(10 ** b_fit / 1.00e3 - 1) < 0.05)1100 chk("sensitivity: walls included", abs(k_full - 3.007) < 0.005)1101 chk("over-closure bound [Msun]", abs(M_exit / 1.8e8 - 1) < 0.05)1102 chk("constrained k=3 coefficient", abs(10 ** b_c13 / 0.97e3 - 1) < 0.05)110311041105 def exit_of(k, b): # exit mass of a fit variant1106 xh = (-log10(2 * G / c**2) - b) / (k - 1)1107 return 10 ** (xh - log10(2 * G / c**2)) / 1.989e30110811091110 band = sorted(exit_of(k, b) for k, b in1111 ((k_fit, b_fit), (k_full, b_full), (k_c13, b_c13), (k_c15, b_c15)))1112 chk("over-closure band (1.4-2.8)e8", band[0] > 1.3e8 and band[-1] < 2.9e8)1113 print(f"[PASS] constrained k=3: c~ = m/R^3 = {10 ** b_c13:.2e} kg/m^3 (a cubic coefficient, not a density); over-closure band"1114 f" ({band[0]:.2e} .. {band[-1]:.2e}) Msun across the four fit variants")1115 chk("electron on the Compton wall to < 0.01 dex", abs(pos["electron"][1] - (log10(hbar / c) - pos["electron"][0])) < 0.01)1116 chk("Sgr A* on the Schwarzschild wall to < 0.01 dex", abs(pos["Sgr A*"][1] - (pos["Sgr A*"][0] - log10(2 * G / c**2))) < 0.01)1117 mean_c = sum(pos[m][1] - 3 * pos[m][0] for m in FIT) / len(FIT)1118 drift = k_fit - 3.0 # slope = 3 + d c / d logR identically1119 span = max(pos[m][0] for m in FIT) - min(pos[m][0] for m in FIT)1120 chk("slope decomposition: mean c = 2.99, drift 0.61 dex over the baseline", abs(mean_c - 2.99) < 0.02 and abs(drift * span - 0.61) < 0.02)1121 print(f"[PASS] slope decomposition: k = 3 + dc/dlogR, drift {drift:+.4f} "1122 f"({drift * span:.2f} dex over {span:.1f} dex), mean c = {mean_c:.2f}")1123 print(f"[PASS] diagonal: k = {k_fit:.4f} (13 mid-wedge), intercept "1124 f"{10 ** b_fit:.2e} at the metre pivot (density units only at k = 3); "1125 f"sensitivity k = {k_full:.4f} (15 incl. walls)")1126 print(f"[PASS] boundaries: Compton entry R = {10 ** x_lo:.2e} m; "1127 f"over-closure exit M = {M_exit:.2e} Msun")1128 print(f"[PASS] wall residents on-wall to <0.01 dex: electron (Compton, "1129 f"{x_lo - pos['electron'][0]:+.1f} dex beyond entry), "1130 f"Sgr A* (Schwarzschild, {x_hi - pos['Sgr A*'][0]:+.1f} dex before exit)")11311132 ax.plot([x_lo, x_hi], [b_fit + k_fit * x_lo, b_fit + k_fit * x_hi],1133 color="0.62", lw=0.9, ls=(0, (1, 2.6)), zorder=2)1134 ax.text(-1.6, 12.5, r"typical objects: $m=\tilde c\,R^{3}$,"1135 r" $\tilde c\approx10^{3}\,$kg$\,$m$^{-3}$",1136 rotation=71.6, ha="center", va="center", fontsize=7.5, color="0.5")11371138 for name, R, m, off, ha in objs:1139 if name in FIT:1140 ax.scatter([xg(R)], [yg(m)], s=11, color="0.4", zorder=4)1141 else:1142 ax.scatter([xg(R)], [yg(m)], s=11, facecolors="white",1143 edgecolors="0.45", linewidths=0.9, zorder=4)1144 ax.annotate(name, (xg(R), yg(m)), textcoords="offset points", xytext=off,1145 fontsize=7.5, color="0.4", ha=ha)11461147 # named times, ticked inward from the top axis with the label beneath each1148 ytop = 62.01149 for tval, lab in ((tP, r"$t_P$"), (1.0, r"$1\,$s"), (3.15576e7, r"$1\,$yr")):1150 xt = xg(c * tval)1151 ax.plot([xt, xt], [ytop - 0.7, ytop], color=INK, lw=0.5, zorder=4)1152 ax.annotate(lab, (xt, ytop - 1.2), ha="center", va="top",1153 fontsize=8, color=INK)1154 ax.plot([x_oct, x_oct], [ytop - 2.6, ytop], color=INK, lw=1.2, zorder=4)1155 ax.annotate(r"$(\pi/4)\,r_H/c = 13.8\;$Gyr$=10^{61}t_P$", (x_oct+8.0, ytop-3.2),1156 ha="right", va="top", fontsize=8.5, color=INK)1157 # the time face carries the length face's own 61 decades1158 #ax.annotate(r"$61$ dex, $t_P$ to $r_H/c$ — the length face's own span",1159 # ((xg(c * tP) + xW) / 2, ytop - 5.0), ha="center", va="top",1160 # fontsize=8, color=MID)11611162 # axes cosmetics1163 ax.set_xlim(-37, 35.0)1164 ax.set_ylim(-45, 62)1165 ax.set_xlabel(r"registration depth $\log_{10} R\;$ [m]$\;$ [approx]", fontsize=9.5)1166 ax.set_ylabel(r"$\log_{10} m\;$ [kg]$\;$ [approx]", fontsize=9.5)1167 ax.set_xticks(range(-30, 31, 10))1168 ax.set_yticks([-60, -40, -20, -3, 0, 20, 40, 60])1169 ax.tick_params(labelsize=8, color=MID, labelcolor=MID, length=3, width=0.6)1170 for s in ax.spines.values():1171 s.set_color(MID)11721173 # top axis: the same chart read as time, t = R/c -- one decade of time per1174 # decade of length, the 61-dex registrable span identical on the two faces1175 tax = ax.secondary_xaxis("top", functions=(lambda x: x - log10(c),1176 lambda t: t + log10(c)))1177 tax.set_xlabel(r"registration depth $\log_{10} t\;$ [s],$\;t = R/c\;$ [approx]", fontsize=9.5,1178 labelpad=6)1179 tax.set_xticks(list(range(-40, 21, 10)))1180 tax.tick_params(labelsize=8, color=MID, labelcolor=MID, length=3, width=0.6)1181 tax.spines["top"].set_color(MID)11821183 # ---- inset: the wall, measured ----1184 axi = ax.inset_axes([-35.5, 31.5, 27.0, 20.0], transform=ax.transData)1185 axi.set_title("the wall, measured — six channels [approx]",1186 fontsize=8, color=INK, pad=4)1187 for a, b in ((1.17, 1.35), (1.59, 1.68)):1188 axi.axvspan(a, b, color=FILL)1189 order = {"3": 0, "2a": 1, "4a": 2, "2b": 3, "4b": 4, "1": 5}1190 for lab, r, k in rows:1191 y = 0.16 + 0.105 * order[lab]1192 axi.scatter([r / 1e26], [y], s=17, color=INK if k == "R" else "0.5", zorder=4)1193 axi.annotate(lab, (r / 1e26, y), textcoords="offset points",1194 xytext=(4, -2.5), fontsize=7, color="0.3")1195 axi.axvline(pi / 4 * rH_L / 1e26, color=INK, lw=1.1, ls=(0, (4, 2)))1196 axi.annotate(r"$(\pi/4)\,r_H^{\Lambda}$", (pi / 4 * rH_L / 1e26, 0.80),1197 ha="center", va="top", fontsize=7.5, color=INK)1198 axi.annotate("registered rate", (1.26, 0.035), ha="center", va="bottom",1199 fontsize=7.5, color=MID)1200 axi.annotate(r"$\Lambda$ face", (1.635, 0.035), ha="center", va="bottom",1201 fontsize=7.5, color=MID)1202 axi.annotate(r"split: the ladder--CMB (Hubble-tension) split; entailed $H_0=67.4$",1203 (1.425, 0.875), ha="center", fontsize=7.2, color=INK)1204 axi.set_xlim(1.1, 1.75)1205 axi.set_ylim(0, 0.95)1206 axi.set_yticks([])1207 axi.set_xticks([1.2, 1.4, 1.6])1208 axi.set_xlabel(r"$r_H\;$ [$10^{26}\,$m]", fontsize=7.5, labelpad=2)1209 axi.tick_params(labelsize=7, color=MID, labelcolor=MID, length=2.5, width=0.5)1210 for s in axi.spines.values():1211 s.set_color(MID); s.set_linewidth(0.5)12121213 fig.subplots_adjust(left=0.11, right=0.97, top=0.945, bottom=0.05)1214 ax.set_xlim(-37, 35.0)1215 ax.set_ylim(-45, 62) # re-assert: pinned after all children1216 # ---- plain version with the object-capacity axis [register] ----1217 # 14:C10 (p14027)1218 family("cap", "K")1219 axi.remove()12201221 # right axis, same format as the left mass axis: log10 capacity, kappa1222 # primary, zero at the H atom (kappa_H = 3, the first Object), one dex of1223 # capacity per dex of the chart.1224 yH = log10(1.674e-27) # the H-atom mass line [approx SI]1225 fig.subplots_adjust(left=0.11, right=0.90, top=0.945, bottom=0.05)1226 fig.canvas.draw()1227 chk("the pin held: no datalim drift", ax.get_ylim() == (-45.0, 62.0))1228 pos = ax.get_position()12291230 rax = fig.add_axes([pos.x1, pos.y0, 0.0001, pos.height])1231 rax.set_ylim(-45.0, 62.0)1232 rax.set_xticks([])1233 for s in ("top", "bottom", "left", "right"):1234 rax.spines[s].set_visible(False)1235 rax.yaxis.tick_right()1236 # the mole, drawn [chart]: the gram's horizontal lands on Avogadro's1237 # number on the count face -- the axis relative to its zero counts hydrogen1238 # units, and N_A is the hydrogen count of the gram (residue: the 1.008 u1239 # hydrogen/amu offset, 0.0035 dex, invisible at chart scale)1240 NA = 6.02214076e231241 chk("the one-gram horizontal lands on N_A to 0.005 dex", abs((-3 - yH) - log10(NA)) < 0.005)1242 ax.plot([-1.3, 35.0], [-3, -3], color=MID, lw=0.7, ls=(0, (2, 3)), zorder=2)1243 ax.plot([-37, -5.2], [-3, -3], color=MID, lw=0.7, ls=(0, (2, 3)), zorder=2)1244 ax.text(-3.25, -3, r"$1\,$g", va="center", ha="center", fontsize=8, color=MID)1245 rax.set_yticks([yH, yH + 20, yH + 40, yH + 60, -3.0])1246 rax.set_yticklabels(["0", "20", "40", "60", r"$N_A\sim 6\!\times\!10^{23}$"])1247 rax.tick_params(axis="y", labelsize=8, color=MID, labelcolor=MID,1248 length=3, width=0.6)1249 ax.text(32, 8.5, r"holographic ring capacity $\log_{10}\kappa_O$", rotation=90,1250 va="center", ha="center", fontsize=11)1251 ax.text(34.4, yH, r"$\kappa_H{=}3$", va="center", ha="right",1252 fontsize=8, color=MID)1253 # the axis terminal: the count face sqrt(S), the paper's measured quantity,1254 # at its exact height above the anchor (log10(sqrt(S_L)/3) rel dex)1255 y_top = yH + log10((S_L ** 0.5) / 3)1256 ax.text(34.4, y_top, r"$\sqrt{S}\sim10^{61}$", va="center", ha="right",1257 fontsize=8, color=MID)1258 save(fig, "registrable-wedge-capacity")1259 family("cap", "F")1260 chk("registrable-wedge-capacity.png and .pdf written to out/", os.path.exists(os.path.join(OUT, "registrable-wedge-capacity.png")) and os.path.exists(os.path.join(OUT, "registrable-wedge-capacity.pdf")))1261 plt.close("all")12621263 flush("cap", order=["A", "K", "F"])12641265def block_win():1266 """Block win — the additive window (B11), the lock of like units (B12), the shells of capacity 3N with fusion (B13); exact integers1267 throughout (the master's check_f7.py of 17 September 2026, parts 1-3, without its chart part)."""1268 import itertools1269 from math import lcm12701271 def is_prime(n):1272 if n < 2: return False1273 if n % 2 == 0: return n == 21274 d = 31275 while d * d <= n:1276 if n % d == 0: return False1277 d += 21278 return True12791280 # ---- B11: the additive window ----1281 counts = []; ok_w = True1282 for N in range(1, 5):1283 sums = [sum(t) for t in itertools.product(range(-3, 4), repeat=N)]1284 counts.append((7 ** N, max(abs(x) for x in sums)))1285 if max(abs(x) for x in sums) != 3 * N or set(sums) != set(range(-3 * N, 3 * N + 1)): ok_w = False1286 ok_m = True1287 for N in range(1, 4):1288 for ks in itertools.product((1, 2, 3), repeat=N):1289 sums = {sum(t) for t in itertools.product(*[range(-k, k + 1) for k in ks])}1290 if max(abs(x) for x in sums) != sum(ks) or sums != set(range(-sum(ks), sum(ks) + 1)): ok_m = False1291 trip = list(itertools.product(range(-3, 4), repeat=3)); beyond = sum(1 for t in trip if abs(sum(t)) > 6)1292 print(f"additive window at kappa = 3: (7^N tuples, max |sum|) = {counts}; triples beyond the pairwise bound 6: {beyond} of {len(trip)}")1293 # 14:B11 (p14046)1294 family("win", "W")1295 chk("N = 1..4 at kappa = 3: max |sum h_i| = 3N and every total in [-3N, 3N] occurs (7^N tuples, exhaustive)", ok_w and counts == [(7, 3), (49, 6), (343, 9), (2401, 12)])1296 chk("mixed capacities kappa_i in {1, 2, 3}, N <= 3: the least resolving window is sum kappa_i, every total occurs", ok_m)1297 chk("38:A8 at p = 13: |h1 + h2| <= 6 = 2 kappa for every pair; 20 of 343 triples exceed 2 kappa (the window grows with N)",1298 all(abs(a + b) <= 6 for a in range(-3, 4) for b in range(-3, 4)) and beyond == 20)12991300 # ---- B12: the lock of like units ----1301 def orbits(ns):1302 seen = set(); count = 0; lengths = set()1303 for start in itertools.product(*[range(n) for n in ns]):1304 if start in seen: continue1305 count += 1; cur = start; L = 01306 while cur not in seen:1307 seen.add(cur); cur = tuple((c + 1) % n for c, n in zip(cur, ns)); L += 11308 lengths.add(L)1309 return count, lengths1310 o43, o1212, o121212 = orbits((4, 3)), orbits((12, 12)), orbits((12, 12, 12))1311 print(f"diagonal drive orbits: (4, 3) {o43}; (12, 12) {o1212}; (12, 12, 12) {o121212}")1312 # 14:B12 (p14047)1313 family("win", "L")1314 chk("N like units on C_12, N <= 6: joint recurrence lcm(12, ..., 12) = 12, no element of order 12N",1315 all(lcm(*([12] * N)) == 12 for N in range(2, 7)) and all(12 * N != 12 for N in range(2, 7)))1316 chk("the diagonal drive on C_12^2: 12 orbits of length 12 (one C_12 offset per further unit); on C_12^3: 144 orbits of length 12",1317 o1212 == (12, {12}) and o121212 == (144, {12}))1318 chk("the offset is superselected: (x + 1, y + 1) keeps x - y (mod 12) for every point of C_12^2",1319 all(((x + 1) - (y + 1)) % 12 == (x - y) % 12 for x in range(12) for y in range(12)))13201321 # ---- B13: the shells of capacity 3N and fusion ----1322 pr = [N for N in range(1, 10) if is_prime(12 * N + 1)]1323 print(f"12N + 1 prime for N in {pr} (N < 10); N = 2: 25 = 5^2")1324 # 14:B13 (p14048)1325 family("win", "S")1326 chk("a shell of capacity 3N is F_{12N+1}: 4 (3N) + 1 = 12N + 1; 12N + 1 prime exactly for N in {1, 3, 5, 6, 8, 9} below 10, 25 = 5^2 at N = 2",1327 all(4 * (3 * N) + 1 == 12 * N + 1 for N in range(1, 10)) and pr == [1, 3, 5, 6, 8, 9] and 25 == 5 * 5)1328 chk("fusion of coprime cycles is multiplicative: lcm(4, 3) = 12, kappa = 4 * 3 / 4 = 3 (hydrogen), one orbit of length 12", lcm(4, 3) == 12 and 4 * 3 // 4 == 3 and o43 == (1, {12}))1329 chk("like cycles do not fuse: gcd(12, 12) = 12, lcm(12, 12) = 12; the capacity-3N shell (13 at N = 1) is not the lock's register C_12",1330 lcm(12, 12) == 12 and 12 != 13 and is_prime(13))13311332 flush("win", order=["W", "L", "S"], kinds={"W": "EXACT", "L": "EXACT", "S": "EXACT"})13331334if __name__ == "__main__":1335 import time1336 want = [a.lower() for a in sys.argv[1:]] or list(BLOCK)1337 bad = [b for b in want if b not in BLOCK]1338 if bad: sys.exit(f"no block {', '.join(bad)}: the blocks are {', '.join(BLOCK)}")1339 t0 = time.time()1340 for b in want:1341 t = time.time(); print(f"— block {b}"); _run_block(b); print(f" [block {b}: {time.time() - t:.1f} s]")1342 ok = summary(write=(want == list(BLOCK)))1343 print(f"{len(RESULTS)} family checks, {len(MICRO)} micro-checks, {time.time() - t0:.1f} s" + ("; results.json written" if want == list(BLOCK) else ""))1344 sys.exit(0 if ok else 1)13451346