substrate_atomic.py

Particle-physics backbone and lattice geometry

The Tier 1 rows: vortex packing fraction, Higgs VEV, fine-structure constant, the Koide relation, the lepton mass ratios, the baryon asymmetry, and the lattice-geometry numbers that ride the same constants.

Download substrate_atomic.py   751 lines  ·  standard library only  ·  run with python3 scripts/substrate_atomic.py

Back to the source-code overview.

scripts/substrate_atomic.py
#!/usr/bin/env python3
"""
substrate_atomic.py — reproduce the atomic / particle-physics predictions
=========================================================================

Companion reproduction script for the standalone science intro,
``arxiv/bridge-paper.qmd``.  Where ``substrate_galactic.py`` reproduces the
cosmological (DESI / Hubble-tension) side, this script reproduces the
particle-physics *backbone* predictions of the framework — the rows of the
"Tier 1" tables (§sec-tier1a, §sec-tier1b) that live on the particle-physics
side, plus the lattice-geometry and live-prediction numbers that ride the same
constants:

    Quantity               Expression                     Predicted   Observed    Disc.
    ---------------------  -----------------------------  ----------  ----------  ------
    Vortex packing f       4π/(K√2)                       0.5666      0.5655      0.20%
    Higgs VEV  v           √(8π · m_eff² c⁴ · ν)          246.1 GeV   246.22 GeV  -0.06%
    Fine-structure α       sin²δ₀ · sin²θ_W / π           1/135.1     1/137.04    +1.45%
    Koide lepton Q         1/3 + (√2)²/6                  2/3         0.666660    9 ppm
    Min localized modon    hc/ξ = 2π m₁c²                 12.8 meV    — (3 THz)   crossover
    m_μ/m_e, m_τ/m_e       (1+√2 cosθ_k)², δ=2/9 rad      206.77      206.768     0.001%
    B-DNA bp/turn          2π r f / h                     10.47       10.5        0.3%
    Microtubule wall       3/(2f)                         2.648       2.594       2.0%
    W/Z ratio cosθ_W       √(1−sin²θ_W)                   0.877       0.882       -0.5%
    (g−2)/2                α/2π                           0.00116     0.00116     tree
    Baryon asymmetry η_B   ε_χ⁹, ε_χ=√(π ln2)/K           5.8e-10     6.1e-10     5%
    Lightest neutrino m_ν  m_eff/ν = m₁                   2 meV       Σ≲70 meV    live

All "come directly from the same equations" (bridge-paper.qmd, §sec-tier1a):
a single dynamical thread — the mutual-friction coupling
α_mf = tan²θ_W = sin²θ_W/(1−sin²θ_W) — and one geometric backbone,
the Larichev–Reznik structure constant K = j₁₁² + 1.  The lattice-geometry
block (GJO vertical period, the Baym-8π structural gap, the coherence ceiling
ℓ_L, the coherence-lifetime ladder) rides the same ξ_SC2, K and ν.

Design goals (mirroring substrate_galactic.py):
  * pure Python standard library only — ``python3 scripts/substrate_atomic.py``
    runs with no third-party dependencies (no numpy / scipy);
  * every constant labelled with its source (CODATA 2018, PDG, Planck 2018);
  * every step cross-referenced to an equation anchor in bridge-paper.qmd.

Run:
    python3 scripts/substrate_atomic.py
"""

import math

# ══════════════════════════════════════════════════════════════════════════
#  Measured input constants
# ══════════════════════════════════════════════════════════════════════════
# Fundamental constants — CODATA 2018.
HBAR = 1.054571817e-34      # reduced Planck constant  [J·s]
C    = 2.99792458e8         # speed of light           [m/s]
H    = 2 * math.pi * HBAR   # Planck constant          [J·s]
M_E  = 9.1093837015e-31     # electron mass            [kg]
G    = 6.67430e-11          # gravitational constant   [m³ kg⁻¹ s⁻²]

# Unit helpers.
EV   = 1.602176634e-19      # 1 eV in joules           [J]

# Electroweak input — PDG, MS-bar at M_Z.  The paper quotes sin²θ_W = 0.2312.
SIN2_THETA_W = 0.23121

# Cosmology — Planck 2018 (TT,TE,EE+lowE+lensing).  Used only for the packing
# fraction's measured value (bridge-paper.qmd, footnote ^rhodm).
OMEGA_C_H2 = 0.1200         # cold dark matter density parameter  Ω_c h²
MPC        = 3.0856775814913673e22   # 1 megaparsec in metres      [m]

# First positive zero of the Bessel function J₁ (bridge-paper.qmd, @eq-K).
# Hard-coded to avoid a scipy dependency; value is a standard mathematical
# constant, j₁₁ = 3.8317059702075123...
J11 = 3.8317059702075123

# Observed reference values (for the discrepancy column).
F_OBS      = 0.5655         # measured packing fraction ρ_DM c ξ_SC2⁴/ℏ
V_HIGGS_OBS = 246.21965e9   # Higgs vacuum expectation value            [eV]
ALPHA_INV_OBS = 137.035999  # inverse fine-structure constant
Q_KOIDE_OBS = 0.666660      # measured charged-lepton Koide ratio

# Charged-lepton masses (PDG), used only to *check* the Koide ratio.  [MeV/c²]
M_E_MEV, M_MU_MEV, M_TAU_MEV = 0.51099895, 105.6583755, 1776.86

# Observed charged-lepton mass ratios (PDG), for the three-phase clock (^eq-muon).
MU_E_OBS  = 206.7682830    # m_μ/m_e
TAU_E_OBS = 3477.23        # m_τ/m_e

# Electroweak boson masses (PDG), for the W/Z ratio (^t2-wz).  [GeV/c²]
M_W_GEV, M_Z_GEV = 80.377, 91.1876

# Observed baryon-to-photon ratio (Planck 2018), for η_B (^t2-etab).
ETA_B_OBS = 6.1e-10

# Neutrino oscillation splittings (PDG / NuFIT), normal ordering.  [meV]
DM21_MEV = 8.7             # √Δm²_21  (solar)
DM31_MEV = 50.0            # √Δm²_31  (atmospheric)

# B-DNA geometry (chemistry-fixed inputs), for the pitch prediction (^eq-dna).
DNA_R_ANG = 10.0           # backbone helix radius        [Å]
DNA_H_ANG = 3.4            # base rise per step           [Å]
DNA_BP_OBS = 10.5          # measured bp/turn (solution)
# Microtubule 13-protofilament, 3-start wall (cryo-EM), for R/h_mon (^eq-mt).
MT_RH_OBS = 10.6 / 4.087   # observed R/h_mon = 2.594

# Boltzmann constant — CODATA 2018 — for the coherence-ceiling energy (^t2-reachnull).
KB = 1.380649e-23          # [J/K]


# ══════════════════════════════════════════════════════════════════════════
#  Derived substrate quantities (shared by every prediction below)
# ══════════════════════════════════════════════════════════════════════════

def alpha_mf(sin2_thetaW: float = SIN2_THETA_W) -> float:
    """Mutual-friction coupling α_mf = tan²θ_W = sin²θ_W/(1−sin²θ_W).

    bridge-paper.qmd §sec-hbar, footnote ^eq-amf.  The single dynamical thread
    that feeds every prediction here: sin²θ_W = 0.2312 ⇒ α_mf = 0.3008.
    """
    return sin2_thetaW / (1.0 - sin2_thetaW)


def K_struct(j11: float = J11) -> float:
    """Larichev–Reznik modon structure constant K = j₁₁² + 1 = 15.68.

    bridge-paper.qmd @eq-K.  The geometric backbone: the first J₁ lobe laid
    across one lattice cell (interior wavenumber p ξ = j₁₁) with the exterior
    decaying over one coherence length (q ξ = 1), so p² + q² = K/ξ².
    """
    return j11**2 + 1.0


def m_eff() -> float:
    """Effective circulation quantum  m_eff = m_e / α_mf  [kg].

    bridge-paper.qmd @eq-mass, footnote ^meff.  One quantum of dc1 circulation:
    m_eff c² = m_e c² / α_mf = 0.511 / 0.3008 ≈ 1.70 MeV.  A property of the
    substrate, shared by every sector.
    """
    return M_E / alpha_mf()


def xi_SC2() -> float:
    """Electroweak-scaffold lattice cell size  ξ_SC2  [m].

    bridge-paper.qmd @eq-route2:  ξ_SC2 = (K ℏ α_mf / (2 m_e c))^(1/3) ≈ 96.9 μm.
    Assembled from modon matching (K), the SC2 gravitational normalisation
    (the 2), and the Gross–Pitaevskii core balance, with the mass relation
    m_eff α_mf = m_e trading the substrate mass for the measured electron mass.
    """
    return (K_struct() * HBAR * alpha_mf() / (2.0 * M_E * C)) ** (1.0 / 3.0)


def xi_CP(rho_DM: float) -> float:
    """Cosmological (close-packing) lattice cell size  ξ_CP  [m].

    bridge-paper.qmd @eq-route1:  ξ_CP = (ℏ / (ρ_DM c))^(1/4) ≈ 111.8 μm.
    From the Volovik speed c = ℏ/(m₁ξ), composition n₁m₁ = ρ_DM, and
    close-packing n₁ξ³ = 1 — inputs ℏ, c, ρ_DM alone.
    """
    return (HBAR / (rho_DM * C)) ** 0.25


def rho_DM() -> float:
    """Dark-matter mass density from Planck Ω_c h²  [kg/m³].

    bridge-paper.qmd footnote ^rhodm:  ρ_DM = Ω_c h² · ρ_crit/h², with
    ρ_crit/h² = 3 (100 km/s/Mpc)² / (8πG) = 1.878e-26 kg/m³, giving
    ρ_DM = 0.1200 · 1.878e-26 = 2.254e-27 kg/m³.
    """
    H100 = 100.0e3 / MPC                 # 100 km/s/Mpc in s⁻¹
    rho_crit_over_h2 = 3.0 * H100**2 / (8.0 * math.pi * G)
    return OMEGA_C_H2 * rho_crit_over_h2


def m1_dc1() -> float:
    """dc1 substrate mass on the electroweak side  m₁ = ℏ/(c ξ_SC2)  [kg].

    bridge-paper.qmd @eq-c (Volovik speed).  m₁c² ≈ 2 meV — the single dc1
    quantum per cell.  Read from ξ_SC2 so it is the electroweak-leg value that
    the Higgs VEV, ν, and the minimum modon energy all share.
    """
    return HBAR / (C * xi_SC2())


def condensation_number() -> float:
    """Condensation number  ν = m_eff / m₁  on the electroweak side (≈8.3e8).

    bridge-paper.qmd @eq-nu.  The count of dc1 quanta (m₁ ≈ 2 meV) in one
    effective quantum, with m₁ = ℏ/(c ξ_SC2) read from the electroweak cell —
    the value an electroweak observable (the Higgs VEV) must take.
    """
    return m_eff() / m1_dc1()


def sc2_identity() -> dict:
    """SC2 normalization  κ_q Ω_v = 4π c²  — check that m_eff cancels (@eq-sc2).

    bridge-paper.qmd @eq-sc2, footnote ^eq-sc2.  κ_q = 2πℏ/m_eff is the effective
    quantum's circulation, Ω_v = 2 m_eff c²/ℏ its Compton (zitterbewegung) clock;
    their product is 4π c² identically — m_eff cancels, so SC2 adds no dynamics,
    only the Gauss's-law 4π that normalizes the lattice's induced gravity and
    heads the packing fraction.  We also verify the two forms of ξ_SC2 agree:
    the substrate-mass form ξ_SC2³ = (K/2)·ℏ/(m_eff c)  (@eq-route2-sub) and the
    measured-electron form ξ_SC2 = (K ℏ α_mf / (2 m_e c))^(1/3)  (@eq-route2).
    """
    m_e_quantum = m_eff()
    kappa_q = 2.0 * math.pi * HBAR / m_e_quantum          # circulation quantum
    Omega_v = 2.0 * m_e_quantum * C**2 / HBAR             # Compton clock
    product = kappa_q * Omega_v                           # must be 4π c²

    xi_sub = (K_struct() / 2.0 * HBAR / (m_e_quantum * C)) ** (1.0 / 3.0)
    return {
        'kappa_Omega': product,
        'four_pi_c2':  4.0 * math.pi * C**2,
        'match':       abs(product - 4.0 * math.pi * C**2) < 1e-6 * C**2,
        'xi_from_meff': xi_sub,
        'xi_from_me':   xi_SC2(),
        'xi_forms_match': abs(xi_sub - xi_SC2()) < 1e-12,
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 1 — vortex packing fraction (the bridge equation)
# ══════════════════════════════════════════════════════════════════════════

def packing_fraction() -> dict:
    """Bridge equation:  geometric f = 4π/(K√2) vs measured ρ_DM c ξ_SC2⁴/ℏ.

    bridge-paper.qmd @eq-f and @eq-bridge (§sec-bridge-eq).  The paper's central
    claim: the parameter-free geometric occupancy of one cell equals the
    measured occupancy (from ρ_DM, c, ξ_SC2) to within Planck's ~1% on ρ_DM,
    central values coinciding to 0.20%.
    """
    rho = rho_DM()
    xi = xi_SC2()

    f_geometric = 4.0 * math.pi / (K_struct() * math.sqrt(2.0))   # @eq-bridge
    f_measured  = rho * C * xi**4 / HBAR                          # @eq-f
    # Equivalent form: f_measured == (xi_SC2 / xi_CP)**4
    assert abs(f_measured - (xi / xi_CP(rho))**4) < 1e-9

    return {
        'label':      'Vortex packing fraction',
        'expression': '4π/(K√2)',
        'predicted':  f_geometric,
        'observed':   f_measured,
        'pred_str':   f'{f_geometric:.4f}',
        'obs_str':    f'{f_measured:.4f}',
        'disc_str':   f'{100 * (f_geometric - f_measured) / f_measured:+.2f}%',
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 2 — Higgs vacuum expectation value
# ══════════════════════════════════════════════════════════════════════════

def higgs_vev() -> dict:
    """Higgs VEV:  v = √(8π · m_eff² c⁴ · ν)  =  √(8π ν) · m_eff c².

    bridge-paper.qmd Tier-1 table + footnote ^eq-vev.  Built from the effective
    quantum m_eff c² = 1.70 MeV and the condensation number ν ≈ 8.3e8 — the
    √ν is the relativistic Bose-field amplitude law, the 8π = 2·4π_SC2 the
    gravitational (Gauss × radiation-EOS) normalisation.  Never references v.
    """
    m_eff_energy = m_eff() * C**2 / EV          # m_eff c²  [eV]  (≈1.70e6)
    nu = condensation_number()

    v = math.sqrt(8.0 * math.pi * nu) * m_eff_energy   # [eV]

    return {
        'label':      'Higgs VEV v',
        'expression': '√(8π m_eff² c⁴ ν)',
        'predicted':  v,
        'observed':   V_HIGGS_OBS,
        'pred_str':   f'{v / 1e9:.1f} GeV',
        'obs_str':    f'{V_HIGGS_OBS / 1e9:.2f} GeV',
        'disc_str':   f'{100 * (v - V_HIGGS_OBS) / V_HIGGS_OBS:+.2f}%',
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 3 — fine-structure constant
# ══════════════════════════════════════════════════════════════════════════

def fine_structure() -> dict:
    """Fine-structure constant:  α = sin²δ₀ · sin²θ_W / π.

    bridge-paper.qmd Tier-1 table + footnote ^eq-delta.  The vortex-scattering
    phase δ₀ is fixed by the same Weinberg angle through α_mf = ½ sin 2δ₀,
    with the weak-scattering branch (α ≪ 1) selecting δ₀ = 18.48°.  Tree-level;
    the residual +1.45% awaits the modon self-energy (vacuum polarisation).
    """
    # α_mf = ½ sin(2δ₀)  ⇒  δ₀ = ½ arcsin(2 α_mf), weak-scattering branch.
    delta0 = 0.5 * math.asin(2.0 * alpha_mf())          # radians (= 18.48°)
    alpha = math.sin(delta0)**2 * SIN2_THETA_W / math.pi

    return {
        'label':      'Fine-structure α',
        'expression': 'sin²δ₀ sin²θ_W / π',
        'predicted':  alpha,
        'observed':   1.0 / ALPHA_INV_OBS,
        'pred_str':   f'1/{1/alpha:.1f}',
        'obs_str':    f'1/{ALPHA_INV_OBS:.2f}',
        'disc_str':   f'{100 * (alpha - 1/ALPHA_INV_OBS) / (1/ALPHA_INV_OBS):+.2f}%',
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 4 — Koide charged-lepton relation (parameter-free)
# ══════════════════════════════════════════════════════════════════════════

def koide() -> dict:
    """Koide relation:  Q = 1/3 + (√2)²/6 = 2/3, exactly.

    bridge-paper.qmd Tier-1 table + footnote ^eq-koide.  Three generations are
    the three 120°-separated branches of one Z₃ (Y-junction) node, so the phase
    cancels and Q = 1/3 + A²/6 for any δ; the lattice pairing-√2 quantises the
    amplitude at A = √2, giving Q = 2/3 with no free parameter.  We also check
    it against the measured lepton masses.
    """
    A = math.sqrt(2.0)
    Q_pred = 1.0 / 3.0 + A**2 / 6.0                     # = 2/3 exactly

    # Cross-check against PDG masses: Q = Σm / (Σ√m)².
    roots = [math.sqrt(m) for m in (M_E_MEV, M_MU_MEV, M_TAU_MEV)]
    Q_from_masses = sum((M_E_MEV, M_MU_MEV, M_TAU_MEV)) / sum(roots)**2

    ppm = abs(Q_pred - Q_KOIDE_OBS) / Q_KOIDE_OBS * 1e6
    return {
        'label':      'Koide lepton Q',
        'expression': '1/3 + (√2)²/6',
        'predicted':  Q_pred,
        'observed':   Q_from_masses,
        'pred_str':   f'{Q_pred:.6f}',
        'obs_str':    f'{Q_from_masses:.6f}',
        'disc_str':   f'{ppm:.0f} ppm',
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 5 — minimum localized-modon energy (the infrared floor)
# ══════════════════════════════════════════════════════════════════════════

def min_modon_energy() -> dict:
    """Minimum localized modon:  E_min = hc/ξ = 2π m₁ c²  (@eq-emin, ^eq-floor).

    bridge-paper.qmd §sec-modon + Tier-1a row.  The Larichev–Reznik matching has
    no interior/exterior solution below one cell, so the smallest *localized*
    modon is exactly ξ wide (λ = ξ) and carries E_min = hc/ξ; the Volovik
    relation ℏ/ξ = m₁c collapses this to the parameter-free 2π m₁c² — the 2π one
    full cell circulation, m₁c² the dc1 rest energy per cell.  This is a
    crossover at λ = ξ (ν ≈ 3 THz), not a spectral cutoff.
    """
    m1c2 = m1_dc1() * C**2                              # dc1 rest energy [J]
    E_min = 2.0 * math.pi * m1c2                        # = h c / ξ_SC2
    xi = xi_SC2()
    E_min_check = H * C / xi                            # hc/ξ form
    assert abs(E_min - E_min_check) < 1e-9 * E_min
    return {
        'label':      'Min localized modon',
        'expression': 'hc/ξ = 2π m₁c²',
        'E_min_meV':  E_min / EV * 1e3,
        'nu_THz':     C / xi / 1e12,                    # ν_floor = c/ξ
        'lambda_um':  xi * 1e6,                         # λ = ξ
        'm1c2_meV':   m1c2 / EV * 1e3,
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 6 — charged-lepton mass ratios (the three-phase clock)
# ══════════════════════════════════════════════════════════════════════════

def lepton_ratios() -> dict:
    """Three-phase clock:  √m_k ∝ 1 + √2 cos(δ + 2πk/3),  δ = 2/9 rad  (^eq-muon).

    bridge-paper.qmd §sec-tier1b + footnote ^eq-muon.  Fixing A = √2 (hence the
    Koide Q = 2/3) and the electron scale leaves one number, the phase δ where
    the rigid 120°-separated triad sits on its circle.  The data pick the rational
    δ = 2/9 rad (pairing-two over three-fold-squared, and 3δ = 2/3 = Q exactly),
    and that one number lands *both* ratios: m_μ/m_e = 206.77 and m_τ/m_e = 3477.5.
    The electron is the branch nearest the massless edge (smallest amplitude).
    """
    A = math.sqrt(2.0)
    delta = 2.0 / 9.0
    amp = [(1.0 + A * math.cos(delta + 2.0 * math.pi * k / 3.0))**2
           for k in range(3)]
    m_e_b, m_mu_b, m_tau_b = sorted(amp)               # electron = smallest
    mu_e  = m_mu_b / m_e_b
    tau_e = m_tau_b / m_e_b
    return {
        'delta':     delta,
        'mu_e':      mu_e,
        'tau_e':     tau_e,
        'mu_e_obs':  MU_E_OBS,
        'tau_e_obs': TAU_E_OBS,
        'mu_disc':   100.0 * (mu_e - MU_E_OBS) / MU_E_OBS,
        'tau_disc':  100.0 * (tau_e - TAU_E_OBS) / TAU_E_OBS,
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 7 — packing fraction locks a helix: B-DNA and the microtubule
# ══════════════════════════════════════════════════════════════════════════

def dna_bp_per_turn() -> dict:
    """B-DNA turns-per-pitch:  N = 2π r f / h  with tan α_pitch = f  (^eq-dna).

    bridge-paper.qmd §sec-tier1b.  The packing fraction f locks the pitch angle
    of the counter-rotating duplex to itself; with the chemistry-fixed radius
    r ≈ 10 Å and rise h = 3.4 Å the turns-per-pitch is 2π r f / h = 10.47 bp/turn
    (observed 10.5 ± 0.1), and the pitch angle itself is tan α_pitch = f = 0.5666.
    """
    f = 4.0 * math.pi / (K_struct() * math.sqrt(2.0))
    N = 2.0 * math.pi * DNA_R_ANG * f / DNA_H_ANG
    return {
        'label':      'B-DNA bp/turn',
        'expression': '2π r f / h',
        'predicted':  N,
        'observed':   DNA_BP_OBS,
        'f':          f,
        'disc':       100.0 * (N - DNA_BP_OBS) / DNA_BP_OBS,
    }


def microtubule_wall() -> dict:
    """Microtubule 3-start wall:  R/h_mon = 3/(2f)  (^eq-mt).

    bridge-paper.qmd §sec-tier1b.  The closed-cylinder counterpart of the DNA
    pitch: the 13-protofilament, 3-start lateral helix locks tan α_3start to f/π
    (one Gauss π absorbed by the closed topology), giving R/h_mon = 3/(2f) = 2.648
    against the cryo-EM 10.6/4.087 = 2.594.
    """
    f = 4.0 * math.pi / (K_struct() * math.sqrt(2.0))
    Rh = 3.0 / (2.0 * f)
    return {
        'label':      'Microtubule R/h',
        'expression': '3/(2f)',
        'predicted':  Rh,
        'observed':   MT_RH_OBS,
        'disc':       100.0 * (Rh - MT_RH_OBS) / MT_RH_OBS,
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 8 — W/Z mass ratio and the anomalous moment
# ══════════════════════════════════════════════════════════════════════════

def weinberg_wz() -> dict:
    """W/Z mass ratio:  M_W/M_Z = cos θ_W = √(1 − sin²θ_W)  (^t2-wz).

    bridge-paper.qmd §sec-tier2.  The standard gauge relation, but read as the
    equatorial spin velocity β_eq of the fermion's counter-rotating boundary
    shell: cos θ_W = β_eq.  Predicts 0.877 against the measured 80.4/91.2 = 0.882;
    the 0.5% residual is the on-shell/pole-mass radiative shift.
    """
    cos_tw = math.sqrt(1.0 - SIN2_THETA_W)
    obs = M_W_GEV / M_Z_GEV
    return {
        'label':      'W/Z ratio cosθ_W',
        'expression': '√(1−sin²θ_W)',
        'predicted':  cos_tw,
        'observed':   obs,
        'disc':       100.0 * (cos_tw - obs) / obs,
    }


def anomalous_moment() -> dict:
    """Electron anomalous moment:  (g−2)/2 = α/2π = η²  (^t2-g2, ^t2-quark).

    bridge-paper.qmd §sec-tier2.  The electron is a dual-spin gyroscope (g = 2 at
    leading order); the Schwinger term is the g = 2 asymmetry made quantitative,
    η² = α/2π with a 1/2π shell-averaging factor.  Uses the framework's own
    fine-structure α from fine_structure() so the whole chain is self-contained.
    """
    alpha = fine_structure()['predicted']
    a_e = alpha / (2.0 * math.pi)
    alpha_codata = 1.0 / ALPHA_INV_OBS
    a_e_obs = alpha_codata / (2.0 * math.pi)           # Schwinger 1-loop value
    return {
        'label':      '(g−2)/2 = α/2π',
        'expression': 'α/2π',
        'predicted':  a_e,
        'observed':   a_e_obs,
        'disc':       100.0 * (a_e - a_e_obs) / a_e_obs,
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 9 — baryon asymmetry from the modon chirality bias
# ══════════════════════════════════════════════════════════════════════════

def baryon_asymmetry() -> dict:
    """Baryon asymmetry:  η_B = ε_χ⁹,  ε_χ = √(π ln2)/K = 0.0942  (^t2-etab).

    bridge-paper.qmd §sec-tier2.  All three Sakharov conditions native to the
    boil; the per-interface CP bias ε_χ is fixed by the same modon factor
    K = j₁₁²+1 that sets the packing fraction (the √(π ln2) the entropy of the one
    fillable Majorana zero mode per paired vortex), frozen across the 3×3 = 9
    chirality-bearing interfaces of a three-quark baryon: η_B = ε_χ⁹ = 5.8e-10
    against the observed (6.1 ± 0.04)e-10.  The exponent 9 is a *bet*, not derived.
    """
    eps = math.sqrt(math.pi * math.log(2.0)) / K_struct()
    eta_B = eps ** 9
    return {
        'label':      'Baryon asymmetry η_B',
        'expression': 'ε_χ⁹, ε_χ=√(π ln2)/K',
        'eps_chi':    eps,
        'predicted':  eta_B,
        'observed':   ETA_B_OBS,
        'disc':       100.0 * (eta_B - ETA_B_OBS) / ETA_B_OBS,
    }


# ══════════════════════════════════════════════════════════════════════════
#  Prediction 10 — the lightest neutrino mass and the sum (live)
# ══════════════════════════════════════════════════════════════════════════

def neutrino_masses() -> dict:
    """Neutrino masses:  m_ν,1 = m_eff/ν = m₁ ≈ 2 meV, normal ordering  (^t2-neutrino).

    bridge-paper.qmd §sec-live.  The neutrino is the barest knot, so it sits at
    the floor of the ladder, α_mf^eff = 1/ν, forcing m_ν,1 = m_eff/ν = m₁ — the
    one fermion mass placed with no new parameter.  Folding in the measured
    splittings gives m_ν ≈ {2, 8.9, 50} meV and Σ ≈ 61 meV; inverted ordering
    would give ~102 meV, above the DESI+CMB ceiling, so normal ordering is forced.
    """
    m1_meV = m1_dc1() * C**2 / EV * 1e3                 # = m_eff/ν, the floor
    m_nu = [m1_meV,
            math.sqrt(m1_meV**2 + DM21_MEV**2),
            math.sqrt(m1_meV**2 + DM31_MEV**2)]
    # Inverted ordering: the lightest state sits at the same floor, but the two
    # heavy near-degenerate states both sit at ~√Δm²_31, so Σ ≈ m₁ + 2√(m₁²+Δm²_31).
    Sigma_inv = m1_meV + 2.0 * math.sqrt(m1_meV**2 + DM31_MEV**2)
    return {
        'm_nu':        m_nu,
        'sum_normal':  sum(m_nu),
        'sum_inverted': Sigma_inv,
        'm1_floor':    m1_meV,
    }


# ══════════════════════════════════════════════════════════════════════════
#  The shape of the lattice — vertical geometry and the two macroscopic scales
# ══════════════════════════════════════════════════════════════════════════

def gjo_period() -> dict:
    """Vertical period:  d_GJO = ξ √(ln2/(8π)) = 0.166 ξ ≈ 16 μm  (@eq-dgjo).

    bridge-paper.qmd §sec-sheets.  The Glaberson–Johnson–Ostermeier instability
    of the vortex lines threading the sheet stack selects one wavelength; two
    standard classical-fluid inputs (Feynman's Ω, Saffman's line tension) close it
    with the short-distance cutoff ξ_GP = ξ/√2, so ln(ξ/ξ_GP) = ½ln2 and
    d_GJO = ξ√(ln2/8π).  Like-handed sheets repeat at ~16 μm, a counter-rotating
    boundary falls at the half-period ~8 μm — the substrate's octave.
    """
    xi = xi_SC2()
    d = xi * math.sqrt(math.log(2.0) / (8.0 * math.pi))
    return {
        'ratio':     d / xi,                           # 0.166
        'd_gjo_um':  d * 1e6,                           # ~16 μm
        'half_um':   d / 2.0 * 1e6,                     # ~8 μm boundary octave
    }


def baym_gap() -> dict:
    """Structural gap:  gravitational (4π) vs elastic (8π) core, ratio 2^(1/24)(4π/K)^(1/4).

    bridge-paper.qmd §sec-four-factors, footnote ^eq-gap.  A convincing check: had
    SC2 used Baym's lattice-elastic 8π (Tkachenko shear wave) instead of the
    gravitational 4π, the core would be 76.9 μm versus the GP value 79.0 μm — a
    2.7% difference the bridge equation predicts to 0.04% as the fixed ratio
    2^(1/24)(4π/K)^(1/4) = 0.9739 (the GR factor 2^(1/3) lifting the gravitational
    core above the elastic one).  Both are core (healing-length) scales.
    """
    K = K_struct()
    core_gp = xi_CP(rho_DM()) / math.sqrt(2.0)         # 79.0 μm = ξ_CP/√2
    core_baym = (HBAR * K / (4.0 * m_eff() * C)) ** (1.0 / 3.0)  # 76.9 μm
    ratio = core_baym / core_gp
    pred = 2.0 ** (1.0 / 24.0) * (4.0 * math.pi / K) ** 0.25
    return {
        'core_gp_um':   core_gp * 1e6,
        'core_baym_um': core_baym * 1e6,
        'ratio':        ratio,
        'ratio_pred':   pred,
    }


def coherence_ceiling() -> dict:
    """Second macroscopic scale (a null):  ℓ_L = (ν/4π)^(1/3) ξ = (c/v_L) ξ ≈ 3.9 cm  (^t2-reachnull).

    bridge-paper.qmd §sec-live.  Read as a length, the condensation number ν sets
    an upper bound — the coherence envelope of the substrate's softest structured
    mode, ℓ_L = (ν/4π)^(1/3) ξ ≈ 400 ξ ≈ 3.9 cm (ℏω₀ ≈ 5 μeV, ω₀ = c/ℓ_L).  Unlike
    a spectral line this is a *smoothness ceiling* — buried thermally, by overlap,
    and by f_cross ~ 1e-15 — so it promises no signal, the opposite of a numerology
    hit.  It is the same v_L = c(4π/ν)^(1/3) as the Landau velocity, read as a length.
    """
    xi = xi_SC2()
    nu = condensation_number()
    ell_L = (nu / (4.0 * math.pi)) ** (1.0 / 3.0) * xi
    omega0 = C / ell_L
    hbar_omega0_ueV = HBAR * omega0 / EV * 1e6
    T_omega0_mK = HBAR * omega0 / KB * 1e3
    return {
        'ell_L_cm':      ell_L * 100.0,
        'ratio_to_cell': ell_L / xi,                   # ~400 = c/v_L
        'hbar_omega0_ueV': hbar_omega0_ueV,            # ~5 μeV
        'T_omega0_mK':   T_omega0_mK,                  # ~60 mK
    }


def coherence_lifetime_ladder() -> dict:
    """Coherence-lifetime ladder:  τ_N/τ_0 = (1/α_mf)^N,  rungs spaced ln(1/α_mf) ≈ 1.20  (^t2-coherence).

    bridge-paper.qmd §sec-live.  A balanced wrapping shell re-catches all but the
    dissipative fraction α_mf of whatever leaks through it, so coherence lifetime
    climbs geometrically per shell: the per-shell factor is 1/α_mf ≈ 3.32 and the
    log-lifetime rung spacing is ln(1/α_mf) ≈ 1.20 — the substrate ladder's √2
    size-comb run on the time axis instead.
    """
    a_mf = alpha_mf()
    return {
        'per_shell':   1.0 / a_mf,                     # 3.32
        'log_spacing': math.log(1.0 / a_mf),           # 1.20
    }


# ══════════════════════════════════════════════════════════════════════════
#  Report
# ══════════════════════════════════════════════════════════════════════════

def main() -> None:
    line = '═' * 78
    print(line)
    print('  SUBSTRATE — ATOMIC / PARTICLE-PHYSICS BACKBONE PREDICTIONS')
    print('  reproducing arxiv/bridge-paper.qmd  §sec-tier1a/1b, §sec-tier2, §sec-live')
    print(line)

    # --- shared intermediate quantities ------------------------------------
    a_mf = alpha_mf()
    K = K_struct()
    print('\n  Shared substrate quantities')
    print('  ' + '-' * 44)
    print(f'    sin²θ_W                 = {SIN2_THETA_W:.5f}   (PDG)')
    print(f'    α_mf = tan²θ_W          = {a_mf:.4f}     (§sec-hbar, ^eq-amf)')
    print(f'    j₁₁ (first zero of J₁)  = {J11:.4f}')
    print(f'    K = j₁₁² + 1            = {K:.4f}    (@eq-K)')
    print(f'    m_eff c² = m_e c²/α_mf  = {m_eff()*C**2/EV/1e6:.3f} MeV  (@eq-mass)')
    print(f'    ξ_SC2 (electroweak)     = {xi_SC2()*1e6:.1f} μm    (@eq-route2)')
    print(f'    ξ_CP  (cosmology)       = {xi_CP(rho_DM())*1e6:.1f} μm   (@eq-route1)')
    print(f'    ρ_DM (Planck Ω_c h²)    = {rho_DM():.3e} kg/m³  (^rhodm)')
    print(f'    ν = m_eff/m₁            = {condensation_number():.2e}  (@eq-nu)')

    sc2 = sc2_identity()
    print(f'    SC2:  κ_q Ω_v = 4π c²   = {"OK" if sc2["match"] else "FAIL":<8}'
          f' m_eff cancels (@eq-sc2); ξ_SC2 forms agree: '
          f'{"OK" if sc2["xi_forms_match"] else "FAIL"}')

    # --- Tier 1a — backbone prediction table --------------------------------
    results = [packing_fraction(), higgs_vev(), fine_structure(), koide()]

    print('\n  Tier 1a — backbone predictions   (§sec-tier1a)')
    print('  ' + '-' * 74)
    hdr = f'    {"Quantity":<24}{"Expression":<21}{"Predicted":>11}{"Observed":>12}{"Disc.":>9}'
    print(hdr)
    print('  ' + '-' * 74)
    for r in results:
        print(f'    {r["label"]:<24}{r["expression"]:<21}'
              f'{r["pred_str"]:>11}{r["obs_str"]:>12}{r["disc_str"]:>9}')

    # Minimum localized-modon energy (the infrared floor / crossover).
    fl = min_modon_energy()
    fl_nu = f'{fl["nu_THz"]:.1f} THz'
    print(f'    {"Min localized modon":<24}{"hc/ξ = 2π m₁c²":<21}'
          f'{fl["E_min_meV"]:>8.2f} meV{"crossover":>12}{fl_nu:>9}')

    # --- Tier 1b — helix locks (packing fraction f as a chiral projection) ---
    dna = dna_bp_per_turn()
    mt  = microtubule_wall()
    lep = lepton_ratios()
    print('\n  Tier 1b — predictions with an open factor   (§sec-tier1b)')
    print('  ' + '-' * 74)
    print(hdr)
    print('  ' + '-' * 74)
    mu_d  = f'{lep["mu_disc"]:+.3f}%'
    tau_d = f'{lep["tau_disc"]:+.3f}%'
    dna_d = f'{dna["disc"]:+.1f}%'
    mt_d  = f'{mt["disc"]:+.1f}%'
    print(f'    {"m_μ/m_e (δ=2/9 rad)":<24}{"(1+√2 cosθ_k)²":<21}'
          f'{lep["mu_e"]:>11.3f}{lep["mu_e_obs"]:>12.3f}{mu_d:>9}')
    print(f'    {"m_τ/m_e (δ=2/9 rad)":<24}{"(1+√2 cosθ_k)²":<21}'
          f'{lep["tau_e"]:>11.1f}{lep["tau_e_obs"]:>12.1f}{tau_d:>9}')
    print(f'    {dna["label"]:<24}{dna["expression"]:<21}'
          f'{dna["predicted"]:>11.2f}{dna["observed"]:>12.1f}{dna_d:>9}')
    print(f'    {mt["label"]:<24}{mt["expression"]:<21}'
          f'{mt["predicted"]:>11.3f}{mt["observed"]:>12.3f}{mt_d:>9}')

    # --- Tier 2 — clean electroweak / cosmological numerics ------------------
    wz  = weinberg_wz()
    g2  = anomalous_moment()
    eta = baryon_asymmetry()
    print('\n  Tier 2 — physics re-derived (clean numerics)   (§sec-tier2)')
    print('  ' + '-' * 74)
    print(hdr)
    print('  ' + '-' * 74)
    wz_d  = f'{wz["disc"]:+.1f}%'
    eta_p = f'{eta["predicted"]:.2e}'
    eta_o = f'{eta["observed"]:.2e}'
    eta_d = f'{eta["disc"]:+.0f}%'
    print(f'    {wz["label"]:<24}{wz["expression"]:<21}'
          f'{wz["predicted"]:>11.4f}{wz["observed"]:>12.4f}{wz_d:>9}')
    print(f'    {g2["label"]:<24}{g2["expression"]:<21}'
          f'{g2["predicted"]:>11.6f}{g2["observed"]:>12.6f}{"tree":>9}')
    print(f'    {eta["label"]:<24}{eta["expression"]:<21}'
          f'{eta_p:>11}{eta_o:>12}{eta_d:>9}')
    print(f'      (ε_χ = √(π ln2)/K = {eta["eps_chi"]:.4f}, frozen across 3×3=9 interfaces)')

    # --- Live predictions — neutrino masses ---------------------------------
    nu_m = neutrino_masses()
    print('\n  Live predictions — testable now   (§sec-live)')
    print('  ' + '-' * 74)
    print(f'    Lightest ν mass  m_ν,1 = m_eff/ν = m₁ = {nu_m["m1_floor"]:.1f} meV'
          f'  (^t2-neutrino)')
    print(f'    Normal ordering  m_ν = '
          f'{{{nu_m["m_nu"][0]:.1f}, {nu_m["m_nu"][1]:.1f}, {nu_m["m_nu"][2]:.1f}}} meV,'
          f'  Σm_ν = {nu_m["sum_normal"]:.1f} meV  (DESI+CMB ≲70)')
    print(f'    Inverted ordering would give Σ ≈ {nu_m["sum_inverted"]:.0f} meV'
          f'  → forbidden, so normal ordering is forced')

    # --- The shape of the lattice — vertical geometry & macroscopic scales ---
    gjo = gjo_period()
    bg  = baym_gap()
    cc  = coherence_ceiling()
    cl  = coherence_lifetime_ladder()
    print('\n  The shape of the lattice   (§sec-sheets, §sec-live)')
    print('  ' + '-' * 74)
    print(f'    GJO vertical period   d_GJO = {gjo["ratio"]:.3f} ξ = '
          f'{gjo["d_gjo_um"]:.1f} μm  (octave {gjo["half_um"]:.0f}/{gjo["d_gjo_um"]:.0f} μm)  (@eq-dgjo)')
    print(f'    Baym 8π structural gap: core 4π = {bg["core_gp_um"]:.1f} μm vs '
          f'8π = {bg["core_baym_um"]:.1f} μm')
    print(f'      ratio {bg["ratio"]:.4f} vs predicted 2^(1/24)(4π/K)^¼ = '
          f'{bg["ratio_pred"]:.4f}  (^eq-gap)')
    print(f'    Coherence ceiling ℓ_L = (ν/4π)^⅓ ξ = {cc["ell_L_cm"]:.2f} cm '
          f'(≈{cc["ratio_to_cell"]:.0f} ξ, ℏω₀ = {cc["hbar_omega0_ueV"]:.1f} μeV,'
          f' {cc["T_omega0_mK"]:.0f} mK)  (^t2-reachnull)')
    print(f'    Coherence-lifetime ladder: τ_N/τ_0 = (1/α_mf)^N, '
          f'1/α_mf = {cl["per_shell"]:.2f}, rung ln = {cl["log_spacing"]:.2f}  (^t2-coherence)')
    print(line)


if __name__ == '__main__':
    main()