From f77e1f4ca67fa01fbffb517ffbbbbae4e2102d07 Mon Sep 17 00:00:00 2001 From: Joe Pecoraro Date: Thu, 13 Aug 2026 16:11:10 -0400 Subject: [PATCH 1/2] Add energy-audited SED hypothesis tournament --- .github/pull_request_template.md | 2 +- .github/workflows/test.yml | 3 +- .gitignore | 3 + CITATION.cff | 8 +- CONTRIBUTING.md | 2 +- README.md | 27 +- REPRODUCIBILITY.md | 15 +- docs/STATUS.md | 27 +- docs/claim-ledger.md | 21 +- docs/theory.md | 44 + docs/tournament.md | 219 ++++ examples/demo_hypothesis_tournament.py | 54 + pyproject.toml | 5 +- rust/blueberry_rs/Cargo.lock | 2 +- rust/blueberry_rs/Cargo.toml | 2 +- src/blueberry_circus/__init__.py | 12 +- src/blueberry_circus/tournament.py | 1536 ++++++++++++++++++++++++ src/blueberry_circus/tournament_cli.py | 142 +++ tests/test_tournament.py | 361 ++++++ 19 files changed, 2464 insertions(+), 21 deletions(-) create mode 100644 docs/tournament.md create mode 100644 examples/demo_hypothesis_tournament.py create mode 100644 src/blueberry_circus/tournament.py create mode 100644 src/blueberry_circus/tournament_cli.py create mode 100644 tests/test_tournament.py diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 901cc0f..dfba73d 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -4,7 +4,7 @@ ## Verification -- [ ] `pytest`: 112 passed, 2 xfailed, **0 skipped** (paste the summary line) +- [ ] `pytest`: 134 passed, 2 xfailed, **0 skipped** (paste the summary line) - [ ] `pytest -m rust` run if the integrator/backends changed - [ ] No certificate rule weakened, no check silenced, no `FAIL` converted to a skip - [ ] Which oracles/certificates cover this change: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b2c086c..e025964 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,6 +28,7 @@ jobs: python examples/demo_vacuum_covariance.py python examples/demo_rectification.py python examples/demo_hydrogen_coulomb.py + python examples/demo_hypothesis_tournament.py - name: certificate bundles round-trip, and tampering is rejected run: | python - <<'PY' @@ -61,7 +62,7 @@ jobs: - run: pip install . - run: | cd /tmp - python -c "import blueberry_circus as bc; print(bc.__version__); from blueberry_circus import oracles, symplectic, certify" + python -c "import blueberry_circus as bc; assert bc.__version__ == '0.3.0'; from blueberry_circus import oracles, symplectic, certify, tournament" # A directory named nanarch_certify on sys.path must not shadow the # vendored, SHA-pinned certificate layer. - run: | diff --git a/.gitignore b/.gitignore index 22e2215..ef05d8c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ __pycache__/ build/ dist/ examples/out/ +tournament-*.json +tournament-*.npz +tournament-summary.json rust/**/target/ src/*.egg-info/ target/ diff --git a/CITATION.cff b/CITATION.cff index 92486ce..3911f19 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -11,7 +11,9 @@ abstract: >- provides an isotropic 3-D random-phase ZPF mode sampler, a non-runaway Landau-Lifshitz radiation-reaction integrator, a Strawberry-Fields-style Program/Engine API, physical Bohr normalization, independently integrated - near-ionization rectification, and re-checkable PASS/FAIL/NULL certificates + near-ionization rectification, a complete point-charge drift surface, and an + energy-audited four-arm hypothesis tournament with reproducible finite-mode + confidence intervals. Re-checkable PASS/FAIL/NULL certificates remain anchored to the exactly-solvable oscillator oracle = hbar/(2 m omega0). type: software authors: @@ -24,7 +26,9 @@ keywords: - "hydrogen ground state" - "radiation reaction" - "certified computation" -version: "0.2.0" + - "energy audit" + - "hypothesis tournament" +version: "0.3.0" date-released: "2026-08-13" license: "Apache-2.0" repository-code: "https://github.com/NanarchTech/BlueberryCircus" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4137ada..8e4f6b9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ guarantee. This is a research prototype maintained alongside other work. ```bash python3 -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" -pytest # core suite: must be 112 passed, 2 xfailed, 0 skipped +pytest # core suite: must be 134 passed, 2 xfailed, 0 skipped sh scripts/build_rust.sh && pytest -m rust # if your change touches the integrator pip install ".[jax]" && pytest -m jax # if your change touches backends ``` diff --git a/README.md b/README.md index 4312caf..aaec9e0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![test](https://github.com/NanarchTech/BlueberryCircus/actions/workflows/test.yml/badge.svg)](https://github.com/NanarchTech/BlueberryCircus/actions/workflows/test.yml) ![status](https://img.shields.io/badge/status-simulation--first%20prototype-1f6feb) -![tests](https://img.shields.io/badge/tests-112%20core%20passed%20·%202%20xfail%20·%200%20skip-2ea043) +![tests](https://img.shields.io/badge/tests-134%20core%20passed%20·%202%20xfail%20·%200%20skip-2ea043) ![python](https://img.shields.io/badge/python-3.10%2B-1f6feb) ![backends](https://img.shields.io/badge/backends-numpy%20·%20rust%20·%20jax-d29922) ![deps](https://img.shields.io/badge/runtime%20deps-numpy%20only-2ea043) @@ -18,6 +18,13 @@ BlueberryCircus is a Python laboratory for testing stochastic electrodynamics, not a proof that classical vacuum noise reproduces hydrogen. Its linear oscillator remains an exact benchmark, while its Coulomb sector evaluates three narrower claims: Puthoff’s circular-orbit absorption and radiation balance, Nieuwenhuizen’s near-ionization rectification threshold \(L_c=16/(5\pi\sqrt3)\), and Setterfield’s proposed static vacuum co-scaling, which leaves dimensionless hydrogen dynamics unchanged after time rescaling. The v0.1.0 escape run is retained only as an accelerated numerical stress test because its damping ratio is about 13,000 times the physical Bohr-unit value and it unbinds in less than one tenth of an orbit, so it cannot stand as a reproduction of physical hydrogen self-ionization; certificates verify numerical claims under explicit assumptions, not the truth of SED itself. +Version 0.3.0 adds an energy-audited hypothesis tournament. It computes the +complete point-charge `D(E,L)` surface before testing a driven Setterfield map, +a reciprocal finite shell, an inverse-square control, and a conservative +multipole-storage surrogate. Its finite-mode statistics validate the +perturbative response kernel, not a nonlinear long-time trajectory. See the +[tournament specification](docs/tournament.md). + Artifact label: simulation-repo ## Features @@ -30,6 +37,10 @@ Artifact label: simulation-repo - Analytic oracles: Bohr radius, ground-state energy, angular momentum, oscillator variance - Physical Bohr units and an independently integrated near-ionization threshold - Static Setterfield co-scaling map with a trajectory-conjugacy regression test +- Complete point-charge drift surface with perihelion-adapted quadrature +- Seven-channel energy ledgers and a closed five-state classification vocabulary +- Four preregistered hypothesis arms with exact zero-parameter recovery controls +- Chunkable 32-seed/2,048-mode research command with deterministic JSON/NPZ output - Phase-space covariance with symplectic readout - Seeded ensemble runs for power balance - Cole–Zou moving spectral window @@ -92,6 +103,9 @@ print(o.hydrogen_ground_state_energy(bc.SI) / bc.E_CHARGE) # -13.605693 (eV) | **Rectification threshold** | $L_c=$ **0.5880841551** | independent improper quadrature vs $16/(5\pi\sqrt3)$ | `residual_le_tol` | | Critical perihelion | $r_p=$ **0.172921 $a_0$** | $L_c^2/2$ near-ionization asymptote | — | | Setterfield static co-scaling | trajectory conjugacy **<10⁻⁹** | $x_U(Ut)=x_1(t)$ and mapped velocities | regression | +| Point-charge drift surface | **18 preregistered cells** | full Eq. (2.34), both endpoint limits | regression | +| Inverse-square defining maximum | $H_{\max}=$ **7.327** at $\mu\approx0.590$ | printed kernel gives $d_c\approx-53.69$, not prose −35.8 | quadrature | +| Multipole closed Hamiltonian | relative total-energy error **<10⁻⁶** | no ZPF or damping | conservation | | **Orbit conservation** (no radiation) | $\Delta E/E \sim 10^{-14}$ | exact | `residual_le_tol` | | **numpy ↔ Rust agreement** | spring case **bit-identical**, orbit 7×10⁻¹⁴ | — | — | | **Independent recheck** | Rust re-derives the verdicts | rejects tampered bundles | separate stack | @@ -122,7 +136,6 @@ Operation (| apply) ─▶ Program.compile() ─▶ Backend ─▶ Result | | check | passes if | tier | |---|---|---|---| | **O0** | field statistics | discrete → continuum, rel-err < 5% | A | -| **O1** | Puthoff circular-orbit power balance | $P_{\rm abs}=P_{\rm rad}$ and $m\omega_0r_0^2=\hbar$ | A | | **O2** | **spring variance, the gate** | $\langle x^2\rangle=\hbar/2m\omega_0$ to ~1% | A | | **O3** | hydrogen radial density | → $4r^2e^{-2r}$ (CPU-day ensembles) | B · `xfail` | | **O4** | phase-space conjecture | N–L §3 (NULL where the dynamics don't reach) | B | @@ -135,6 +148,9 @@ O2 remains the normalization gate: if the simulated field does not give $\hbar/2 - The published long-duration 3-D studies report self-ionization, including later relativistic and renormalized-noise attempts. BlueberryCircus does not claim to reproduce those physical timescales with its accelerated fixture. - Nieuwenhuizen rectification is a conditional drift in energy space. It does not establish equilibrium vacuum-energy extraction, usable net work, or evasion of detailed balance; broken symmetry alone is insufficient. - Setterfield co-scaling is represented as a speculative static hypothesis. Its invariants and trajectory conjugacy show that the static profile is dynamically inert after time reparameterization. +- A time-dependent Setterfield profile is an externally driven variable-mass Hamiltonian; any apparent suppression with nonzero parameter work is classified `ACTIVE_CONTROL`. +- The finite-shell and multipole arms are response/surrogate models. They are not validated electron or proton structure models. The stochastic tournament is perturbative and does not replace a physical-timescale nonlinear ensemble. +- Direct quadrature of Nieuwenhuizen's printed inverse-square kernel gives $d_c\approx-53.69$, while the paper's prose quotes −35.8 from its endpoint. Both are retained explicitly; neither establishes a physical inverse-square force. - Matching the quantum 1s density remains a CPU-day frontier, marked strict-`xfail` rather than faked. - **The orbit is chaotic.** The code is deterministic and byte-reproducible on a fixed machine, but quantities like `r_max` depend on floating-point summation order and shift across machines. The certified quantities, meaning the conservation laws and the tolerance-gated checks, are stable. Raw chaotic outputs are not, and shouldn't be quoted as if they were. - Non-relativistic, with dipole and point-charge approximations and a finite, band-limited background field. Each run is faithful only out to bounded times. @@ -151,13 +167,14 @@ Framework and code © Joe Pecoraro / Nanarch Technologies, Inc., Apache-2.0. The - B. Setterfield, *ZPE and Atomic Constants’ Behavior*, [behaviorzpe3.html](https://www.barrysetterfield.org/behaviorzpe3.html) (speculative scaling proposal, tested here as a hypothesis only). - T. M. Nieuwenhuizen, *Stochastic Electrodynamics: Renormalized Noise in the Hydrogen Ground-State Problem*, **Front. Phys. 8, 335 (2020)**, [doi:10.3389/fphy.2020.00335](https://doi.org/10.3389/fphy.2020.00335). - G. Moddel & O. Dmitriyeva, *Extraction of Zero-Point Energy from the Vacuum*, [arXiv:0910.5893](https://arxiv.org/abs/0910.5893) (equilibrium/detailed-balance assessment). +- J. A. E. Rodríguez, extended-charge motivation, [arXiv:1201.6168](https://arxiv.org/abs/1201.6168) (the implemented multipole oscillator is a clearly labeled surrogate). The certificate layer is vendored inside the package (`blueberry_circus/_vendor/nanarch_certify`, a near-verbatim mirror of Nanarch's canonical copy), so `import blueberry_circus` works from a fresh checkout. See [`PROVENANCE.md`](PROVENANCE.md) and [`NOTICE`](NOTICE). ## Run it ```bash -pytest # core suite: 112 passed, 2 xfailed, 0 skipped +pytest # core suite: 134 passed, 2 xfailed, 0 skipped sh scripts/build_rust.sh && pytest -m rust # optional: Rust backend cross-language tests pip install ".[jax]" && pytest -m jax # optional: JAX backend tests pytest -m verify # optional: needs BLUEBERRY_VERIFY_BIN @@ -165,11 +182,13 @@ python examples/demo_sho_ground_state.py # certified spring ground state python examples/demo_vacuum_covariance.py # full vacuum covariance certificate python examples/demo_rectification.py # certified Puthoff + O5 threshold python examples/demo_hydrogen_coulomb.py # accelerated Coulomb stress fixture +python examples/demo_hypothesis_tournament.py # reduced schema/ledger smoke +blueberry-tournament --profile preregistered --arm all # manifest only ```
-**[docs/STATUS.md](docs/STATUS.md)** · **[docs/theory.md](docs/theory.md)** · **[docs/comparison.md](docs/comparison.md)** +**[docs/STATUS.md](docs/STATUS.md)** · **[docs/theory.md](docs/theory.md)** · **[docs/tournament.md](docs/tournament.md)** · **[docs/comparison.md](docs/comparison.md)** *Nanarch Technologies — Photonic & Quantum Intelligence Systems* diff --git a/REPRODUCIBILITY.md b/REPRODUCIBILITY.md index 915c9fd..4f87aab 100644 --- a/REPRODUCIBILITY.md +++ b/REPRODUCIBILITY.md @@ -20,6 +20,8 @@ python3 examples/demo_sho_ground_state.py # -> out/sho_ground_state_certific python3 examples/demo_vacuum_covariance.py # -> out/vacuum_covariance_certificate.json python3 examples/demo_rectification.py # -> out/rectification_certificate.json python3 examples/demo_hydrogen_coulomb.py # -> out/hydrogen_certificate.json, out/hydrogen_radial.npz +python3 examples/demo_hypothesis_tournament.py # -> out/hypothesis_tournament_smoke.json +blueberry-tournament --profile preregistered --arm all # manifest only; no computation ``` Tests set `pythonpath = ["src"]` via `pyproject.toml`; `conftest.py` and the @@ -29,7 +31,7 @@ without installation. ## Verified result (2026-08-13, macOS workstation: CPython 3.14.2) ``` -pytest 112 passed, 2 xfailed, 0 skipped (core, default) +pytest 134 passed, 2 xfailed, 0 skipped (core, default) pytest -m rust 4 passed (Rust cdylib built) pytest -m jax 4 passed (JAX installed) pytest -m verify 3 skipped (no BLUEBERRY_VERIFY_BIN on this run) @@ -53,6 +55,9 @@ pytest -m verify 3 skipped (no BLUEBERRY_VERIFY_BIN | Puthoff circular `P_abs` vs `P_rad` | **<1×10⁻¹²** | analytic balance | | Nieuwenhuizen improper quadrature vs `16/(5π√3)` | **9.5×10⁻¹³ absolute** | Eq. (2.30) vs Eq. (2.31) | | Setterfield `U=1` vs `U=4` mapped trajectory | **<1×10⁻⁹** | static conjugacy | +| full point-charge surface | **18 finite cells** plus both analytic endpoints | Nieuwenhuizen Eq. (2.34) | +| inverse-square printed-kernel maximum | **`Hmax≈7.327`, `dc≈-53.69`** | transformed quadrature, orders 48/64 | +| tournament random-phase convergence | **32 stored seeds; 2,048→4,096 modes** | normalized change `<10%` or `NULL` | ## Caveats (house honesty policy) @@ -66,3 +71,11 @@ pytest -m verify 3 skipped (no BLUEBERRY_VERIFY_BIN ensemble averaging over seeds and longer integration. The *linear ground state itself* is nonetheless certified exactly via the quadrature oracle (C2), which needs no time integration. +- Tournament JSON is deterministic and authoritative: it stores the complete + config, seeds, resolutions, confidence intervals, and ledgers. Optional NPZ + arrays are redundant. A full run must be requested explicitly with + `blueberry-tournament --profile preregistered ... --execute`; ordinary CI + executes only the reduced schema/ledger smoke. +- The tournament's stochastic layer samples the perturbative quadratic response + kernel. It is not a long-time nonlinear trajectory and cannot be cited as a + reproduction of physical hydrogen self-ionization or stabilization. diff --git a/docs/STATUS.md b/docs/STATUS.md index 977efbf..ca61ebc 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -1,6 +1,6 @@ # BlueberryCircus verification status -v0.2.0. Verified on a macOS workstation (CPython 3.14.2; exact dependency and +v0.3.0. Verified on a macOS workstation (CPython 3.14.2; exact dependency and tool versions are printed by the release gate) on 2026-08-13. Pass counts are environment-specific; reproduce locally before citing them. @@ -8,7 +8,7 @@ environment-specific; reproduce locally before citing them. | Command | Result | Requires | |---|---|---| -| `pytest` (default = core) | **112 passed · 2 xfailed (strict) · 0 skipped** | numpy only | +| `pytest` (default = core) | **134 passed · 2 xfailed (strict) · 0 skipped** | numpy only | | `pytest -m rust` | 4 passed | `sh scripts/build_rust.sh` | | `pytest -m jax` | 4 passed | `pip install ".[jax]"` | | `pytest -m verify` | 3 passed with a verifier binary; skips without | `BLUEBERRY_VERIFY_BIN` | @@ -51,6 +51,29 @@ inertness, not the empirical scaling proposal. physical Bohr value and sustained positive energy begins at `0.06956` orbit. It is retained only as an accelerated numerical stress test. +## Hypothesis tournament (`tournament.py`) + +The baseline report evaluates Nieuwenhuizen's complete finite-energy +point-charge surface over 18 preregistered `(E,L)` cells. It recovers the +near-ionization sign change, agrees with the PR1 asymptote within one percent at +the independently evaluated `E=-0.001` probe, and recovers the exact circular +endpoint. The default stochastic +gate executes 32 stored seeds at 2,048 and 4,096 modes, halving the nominal +timestep and returning `NULL` when normalized drift changes by ten percent or +more. + +All four zero-parameter arms recover the identical baseline cell. The driven +Setterfield Hamiltonian records `partial H/partial t` as external work; the +finite shell applies one reciprocal form factor to both powers; the +inverse-square arm integrates the printed source kernel; and the +Rodríguez-inspired multipole surrogate conserves its closed total Hamiltonian. +None can emit `STABLE_GROUND_STATE`. + +The inverse-square audit is a new negative reproducibility result. Orders 48 +and 64 give `H_max≈7.327` near `mu≈0.590`, hence the defining +`d_c=-H_max²≈-53.69`. The paper's prose `-35.8` squares only its quoted +`H(0)=5.99`, despite stating an all-`mu` criterion. Reports retain both values. + **Cross-language enclosure:** the Rust `cdylib` backend is **bit-identical** to numpy on the SHO case (max|Δx| = 0.0) and agrees to ~7e-14 on the Kepler orbit; the JAX backend agrees to ≤1e-6. diff --git a/docs/claim-ledger.md b/docs/claim-ledger.md index dcb7fa6..2691392 100644 --- a/docs/claim-ledger.md +++ b/docs/claim-ledger.md @@ -3,10 +3,11 @@ ## Objective and scope BlueberryCircus is a simulation-repo that retires normalization and accounting -risks in stochastic-electrodynamics calculations. Version 0.2.0 narrows the +risks in stochastic-electrodynamics calculations. Version 0.2.0 narrowed the Coulomb claims to three reproducible objects: a circular-orbit power balance, a near-ionization drift threshold, and a static co-scaling conjugacy. It does not -validate SED as a theory of hydrogen. +validate SED as a theory of hydrogen. Version 0.3.0 adds a perturbative, +energy-audited hypothesis tournament without enlarging that physical claim. The Nanarch technical orientation supplies the systems discipline rather than a hydrogen equation: page 4, Eq. (1) requires an explicit state space, governing @@ -25,6 +26,13 @@ near-term milestones. | Critical near-parabolic perihelion is `Lc^2/2 = 0.172921... a0` | Nieuwenhuizen 2016, text following Eq. (2.37) | `critical_angular_momentum()` consumer | `pytest tests/test_rectification.py` | focused gate passed | | Setterfield's static profile preserves `alpha`, `a0`, `E_h`, `beta`, and `tau omega_B` and is a time conjugacy | [Setterfield, §3](https://www.barrysetterfield.org/behaviorzpe3.html); represented as a speculative hypothesis only | `setterfield_rescale()` and mapped ZPF trajectory test | `pytest tests/test_setterfield.py` | focused gate passed | | The v0.1.0 escape fixture is accelerated by about 13,000 and unbinds in under 0.1 orbit | Direct audit of tagged fixture `e83470b`; no physical-timescale inference | `demo_hydrogen_coulomb.py`, `test_watchdog.py` | `pytest tests/test_watchdog.py` | focused gate passed | +| Full point-charge `D(E,L)` recovers both `f(1)=1/2` and the PR1 near-ionization asymptote | Nieuwenhuizen 2016, Eqs. (2.23)--(2.35); conditional perturbative drift only | `tournament.nieuwenhuizen_gain_function()` and surface report | `pytest tests/test_tournament.py` | focused gate passed | +| All energy reports satisfy the seven-channel ledger identity | Explicit sign convention in [`tournament.md`](tournament.md#energy-identity) | `EnergyLedger` | `pytest tests/test_tournament.py` | deterministic `<1e-6`; stochastic `<1%` | +| Dynamic Setterfield suppression with parameter work is active control | Canonical `H=p²/(2U²)-1/r`; hypothesis, not empirical cosmology | `SetterfieldDrive` | `pytest tests/test_tournament.py` | canonical ledger passed | +| A reciprocal shell applies `sin(kR)/(kR)` identically to absorption and radiation | Spherical-shell Fourier form factor; response hypothesis | `FiniteShellResponse` | `pytest tests/test_tournament.py` | `R=0` exact recovery passed | +| Printed inverse-square kernel has `H_max≈7.327`, `d_c≈-53.69`; paper prose says `-35.8` from `H(0)` | Nieuwenhuizen 2016, Eqs. (3.19)--(3.27); source-level discrepancy, not a physical force claim | `InverseSquareControl.critical_d()` | `pytest tests/test_tournament.py` | orders 48/64 agree near `1e-3` | +| Closed Rodríguez-inspired multipole surrogate conserves particle-plus-mode energy | [Rodríguez 2014](https://arxiv.org/abs/1201.6168) as motivation only; local Hamiltonian is an explicit surrogate | `MultipoleStorage` | `pytest tests/test_tournament.py` | deterministic gate passed | +| 32 stored seeds reproduce 2,048→4,096-mode confidence intervals and convergence decisions | Finite-mode random-phase quadrature of perturbative response, not a nonlinear trajectory | `stochastic_cell()` | `pytest tests/test_tournament.py` | focused gate passed | ## Assumptions, limitations, and rejected claims @@ -38,6 +46,13 @@ near-term milestones. context rather than locally reproduced timescale claims. - Broken symmetry alone does not demonstrate net work or evade detailed balance. No certificate has that interpretation. +- `CHANNEL_SUPPRESSED` names one preregistered drift channel. It is not a stable + ground state, and `STABLE_GROUND_STATE` is not an allowed result token. +- The finite-mode layer validates a response-kernel quadrature. It does not + reproduce the physical timescale of the published nonlinear simulations. +- The calculated inverse-square maximum contradicts the paper's prose + threshold. Both values are reported; neither is silently privileged as an + empirical result. ## Executable deliverables and acceptance thresholds @@ -45,6 +60,8 @@ near-term milestones. python -m pytest python examples/demo_rectification.py python examples/demo_hydrogen_coulomb.py +python examples/demo_hypothesis_tournament.py +blueberry-tournament --profile preregistered --arm all # manifest, no run ``` The analytic gates are: Bohr identities `<1e-12` relative error, circular power diff --git a/docs/theory.md b/docs/theory.md index 367520f..eb87c4c 100644 --- a/docs/theory.md +++ b/docs/theory.md @@ -144,6 +144,50 @@ co-scaling is dynamically inert after time reparameterization. A genuinely time-dependent `U(t)` is a different, driven problem whose parameter work must be recorded explicitly. +### 5.5 Full drift surface and hypothesis tournament + +Version 0.3.0 evaluates Nieuwenhuizen's complete finite-energy point-charge +drift before changing the model. With `k=sqrt(-2E)`, `kappa=kL`, and +`epsilon²=1-kappa²`, Equation (2.34) is + + D(E,L) = beta² k⁸(2+epsilon²)[k f(kappa)-kappa]/(2 kappa⁶). + +The nested definition of `f(kappa)` is numerically nontrivial near a radial +orbit. Equations (2.23)--(2.25) cancel all short-history terms through cubic +order, so evaluating the unfactored numerator loses the signal at the +perihelion. `tournament.py` performs this cancellation coefficient by +coefficient, then uses perihelion-adapted Gauss--Legendre maps. This is why the +same routine can recover both the circular result `f(1)=1/2` and the PR1 radial +limit rather than splicing an empirical interpolation between them. + +The tournament ledger is + + Delta E_mech = W_ZPF - E_rad - Delta E_Schott + + W_external + W_internal + residual. + +This identity blocks three common category errors. Parametric work in a dynamic +Setterfield profile cannot masquerade as passive vacuum stabilization; +energy stored in the multipole surrogate cannot disappear; and a finite shell +cannot attenuate radiation without applying the same reciprocal form factor to +absorption. + +The stochastic layer samples the *quadratic perturbative response kernel* with +finite random phases. It does not integrate a nonlinear physical hydrogen atom +for the very long times used in the negative published simulations. Its purpose +is narrower: reproduce confidence intervals from stored seeds, check the +2,048-to-4,096-mode/timestep convergence rule, and refuse a classification when +the response calculation is resolution-dependent. Full equations, parameter +grids, classifications, and commands are in [`tournament.md`](tournament.md). + +The inverse-square source has an internal numerical inconsistency worth making +explicit. Direct integration of the kernel printed in Nieuwenhuizen's Eqs. +(3.19)--(3.27) gives `H_max approximately 7.327` near `mu=0.590`, hence the +defining `d_c=-H_max² approximately -53.69`. The prose value `-35.8` follows +from squaring only its quoted endpoint `H(0)=5.99`, even though the stated +criterion is a maximum over the whole repulsive branch. BlueberryCircus records +both values and uses the calculated maximum. This does not validate the added +force; it only makes the paper's mathematical test reproducible. + ## 6. The vacuum-covariance certificate Boyer's oracle (§4) pins one number, `⟨x²⟩`. The vacuum-covariance certificate diff --git a/docs/tournament.md b/docs/tournament.md new file mode 100644 index 0000000..cf3c3f7 --- /dev/null +++ b/docs/tournament.md @@ -0,0 +1,219 @@ +# Energy-audited SED hydrogen hypothesis tournament + +## Scope + +The tournament asks a deliberately narrower question than “is hydrogen stable +in stochastic electrodynamics?” It asks whether one of four explicitly defined +model changes suppresses the positive, near-ionization energy-drift channel of +the point-charge calculation while closing every energy ledger and surviving +resolution and coupling checks. + +No result may be called `STABLE_GROUND_STATE`; that token is absent from the +classification vocabulary. The only possible aggregate results are +`CHANNEL_SUPPRESSED`, `ACTIVE_CONTROL`, `NO_EFFECT`, `DESTABILIZED`, and `NULL`. +Channel suppression is not a proof of a stationary distribution. In particular, +nonlinear rectification means conditional drift in energy/angular-momentum +space. It is not equilibrium vacuum-energy extraction. Broken symmetry does not +by itself establish cyclic net work or evade detailed balance. + +`CHANNEL_SUPPRESSED` requires an absolutely negative upper confidence bound in +every low-`L` cell. `ACTIVE_CONTROL` takes precedence when such a negative cell +requires recorded external work. `DESTABILIZED` means a positive shift resolved +above the matched point-charge confidence interval. An arm that neither closes +the target channel nor significantly worsens it is `NO_EFFECT`; a missing +cell, open ledger, or failed resolution/coupling gate is `NULL`. + +## Point-charge baseline first + +Every report begins with the full point-charge surface on the preregistered +Cartesian grid + +```text +E = {-0.05, -0.02, -0.01} Hartree +L/hbar = {0.45, 0.55, Lc-0.01, Lc+0.01, 0.65, 0.8} +``` + +For `k=sqrt(-2E)`, `kappa=kL`, and `epsilon²=1-kappa²`, the implemented rate is +Nieuwenhuizen's Equation (34), + +```text +D(E,L) = beta² k⁸ (2+epsilon²) [k f(kappa)-kappa] / (2 kappa⁶). +``` + +`f(kappa)` is evaluated from the complete nested improper integral in Equation +(29), not interpolated between endpoints. A tangent map concentrates nodes near +the eccentric perihelion. The exact cancellation through cubic order as +`s -> t` is performed as a Taylor-series division before numerical evaluation; +otherwise direct floating-point subtraction fails for the low-`kappa` cells. +The implementation recovers `f(0)=16/(5 pi sqrt(3))`, `f(1)=1/2`, the circular +Puthoff curve, and the PR1 per-revolution asymptote + +```text +Delta = 3 pi beta² [Lc-L] / L⁶. +``` + +## Energy identity + +Every cell stores the seven requested channels using one sign convention: + +```text +Delta E_mech = W_ZPF - E_rad - Delta E_Schott + + W_external + W_internal + residual. +``` + +`E_rad` is a non-negative loss magnitude. `W_external` and `W_internal` are +signed work on the particle. The Schott term is the final-minus-initial boundary +energy and is zero for the closed orbit-averaged calculation. Deterministic +Hamiltonian fixtures must close below `1e-6` Hartree; stochastic response +ledgers must close within one percent. Classification re-derives closure from +the six physical channels and compares it with the stored residual, so a +tampered residual cannot turn an open ledger into a passing one. + +## Four preregistered arms + +### SetterfieldDrive + +The speculative dynamic profile is + +```text +U(t) = exp[A sin(Omega t + phi)], m(t)=U(t)². +``` + +The static Setterfield map leaves the Coulomb coefficient invariant, so the +canonical driven Hamiltonian is + +```text +H(x,p,t) = p²/[2m(t)] - 1/r, +xdot = p/m(t), pdot = -x/r³, +partial H/partial t = -mdot p²/(2m²). +``` + +The last expression is integrated at the same Runge--Kutta stages as the orbit +and entered as external parameter work. A negative drift obtained with nonzero +parameter work is `ACTIVE_CONTROL`, never passive stabilization. The grid is +`A={0.01,0.05,0.1}`, `Omega/omega_B={0.1,1,10}`, and four phases separated by +`pi/2`. + +### FiniteShellResponse + +The reciprocal spherical-shell amplitude response + +```text +F(kR) = sin(kR)/(kR) +``` + +is applied identically to absorption and radiation; both powers therefore +receive the same `F²` factor at every response frequency. `R=0` is an exact +point-charge recovery control. The hypothesis radii are +`R/a0={alpha², 1e-3, 1e-2, 0.1, 0.3}`. Applying a form factor to only one side +of the ledger is prohibited because that would manufacture nonreciprocal gain. + +### InverseSquareControl + +This arm uses + +```text +V(r) = -1/r - d/(2r²), +d = {alpha², 0, -10, -35.8, -40}. +``` + +The `d=0` path calls the finite-energy point-charge implementation exactly. +For nonzero `d`, the near-ionization gain and loss are evaluated from +Nieuwenhuizen's published Equations (54)--(64). + +There is a material discrepancy in that paper. Its prose obtains `d_c=-35.8` +by using only the quoted endpoint `H(0)=5.99`, while its criterion says +`H(mu)