From 5b1cc2402029a97e4ab14e4b527f64eb4f1299fe Mon Sep 17 00:00:00 2001 From: ahrazzle <38987266+ahrazzle@users.noreply.github.com> Date: Thu, 12 Nov 2026 14:24:14 -0600 Subject: [PATCH] Audit cosmic dawn quasar claims and Wave 10 numerical limits --- README.md | 4 + research/cosmic-dawn-20261112/README.md | 68 +++++ research/cosmic-dawn-20261112/audit.py | 118 ++++++++ research/cosmic-dawn-20261112/results.json | 296 +++++++++++++++++++++ 4 files changed, 486 insertions(+) create mode 100644 research/cosmic-dawn-20261112/README.md create mode 100644 research/cosmic-dawn-20261112/audit.py create mode 100644 research/cosmic-dawn-20261112/results.json diff --git a/README.md b/README.md index 94c8e8d..7ef0bcf 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,10 @@ This repository is **not** a derivation of a new fundamental theory of gravity, 3. **Phenomenological hypotheses & algebraic re-parameterizations (`CONJECTURE`)**: Wave-6 (`wave6_convergence_unification.py`) evaluates algebraic identities where `hbar`, `m`, and `R_H(z)` cancel by definition of `N_fil = 2*pi*m*c*R_H/hbar` (so `8.9580 kpc` is simply the ordinary MOND radius `r_M` of a `6e10 M_sun` galaxy at `a_dS`) and places a handwritten potential threshold `Phi_crit/c^2 = 8.0e-6` (`sigma_1D = 388.1 km/s`) between logarithmic MOND galaxy potentials and the Bullet Cluster. 4. **Elementary Lean 4 arithmetic checks (`PROVEN (ARITHMETIC-LEMMA)`)**: Stock Lean 4 (`Init`, zero Mathlib dependencies) files in `formal/` check the exact integer/rational exponent equations, interval inequalities, and commutative-ring product rearrangements referenced in `CLAIMS.md`. They do **not** prove physical force laws, Bell's theorem, or Weak Equivalence Principle bounds. +## Cosmic dawn audit + +The [cosmic dawn research note](research/cosmic-dawn-20261112/README.md) distinguishes a quasar-pair observation from Wave 10 collapse-scale assumptions. A standard-library probe checks the native calculation, high-wavenumber sensitivity and failed root brackets. The note also states what an extra-dimension test would need to predict. + ## Repository Layout & Verification Commands All Python scripts use only the Python 3 standard library. Each certificate file in `results/*.json` embeds a `sha256_canonical` field equal to the `sha256` checksum of `json.dumps(payload_without_sha_field, sort_keys=True, separators=(",", ":"))` computed by the generator script that writes it (this is a deterministic content checksum for reproducibility, not a cryptographic signature). Raw file digests are recorded in `SHA256SUMS`. diff --git a/research/cosmic-dawn-20261112/README.md b/research/cosmic-dawn-20261112/README.md new file mode 100644 index 0000000..5bd9ed5 --- /dev/null +++ b/research/cosmic-dawn-20261112/README.md @@ -0,0 +1,68 @@ +# Cosmic dawn: a quasar pair and a collapse-scale audit + +This research note separates a new quasar observation from what the repository's Wave 10 calculation predicts. It includes a reproducible numerical probe and a proposed test for a separate question about extra dimensions. + +**Status:** research audit, not a new theory or an observational validation. Research: gpt-forge, three agents using gpt-6-astra at ultra reasoning. Publication preparation: gpt-6.1-sol. Human review pending. + +## What the observation establishes + +[Onorato et al.](https://arxiv.org/html/2609.31835v1) report a physical quasar-pair candidate at redshifts 6.0781 and 6.0785, with a projected separation of 5.56 kpc. Lensing is not excluded. The paper appeared in *The Astrophysical Journal Letters*, 1011, L59, on November 10, 2026 ([DOI](https://doi.org/10.3847/2041-8213/aeb11f)). + +The estimated black hole masses are 1.53 billion and 399 million solar masses. These are virial estimates, with systematic uncertainty of about 0.3 dex, or roughly a factor of two. They are not seed masses measured at formation. + +One companion was found in 199 fields. The inferred small-scale clustering exceeds extrapolated large-scale fits by about 100 to 1,000 times. Section III.4 explicitly warns that such extrapolation is unreliable where both objects occupy one halo. One pair is not a definitive test of LambdaCDM, the standard cosmological model with a cosmological constant and cold dark matter. + +The result motivates better population models and more observations. It does not quantitatively reject standard hierarchical growth or light black hole seeds. This note makes no inference of an 83,900-solar-mass seed. + +## What Wave 10 actually computes + +The audited source is [Wave 10 at commit 8f904ba](https://github.com/Foundation-0/gravity/blob/8f904ba3aad22ce727e92b96bf0c12e229173f8f/wave10_covariant_jeans_unification.py). Its file is unchanged from publication commit `02013ae95fa5913894b829c8e2e63a3efcde9e63`. + +Lines 29–45 set cosmological inputs. Lines 111–165 build the spectrum and growth function. Lines 173–198 compute the collapse scale. Lines 219–233 apply the trapping prescription. Lines 288–300 make a group forecast. + +The calculation solves `sigma_linear(R,0) D(z) = 1.686`. It assigns the total halo mass `M_star = (4 pi/3) rho_mean R^3`, then defines a virial radius at 200 times critical density and `sigma_star = sqrt(G M_star/(2 R200))`. This halo mass is not a black hole seed mass. + +The assumed law `f_trap = max(0, 1 - (sigma_star/sigma_halo)^2)` describes a model fraction. It is not an event-horizon condition. The spectrum uses an Eisenstein–Hu cold dark matter approximation normalized to Planck parameters. Consequently this computation is not an independent prediction that rejects LambdaCDM. “No newly fitted shape parameter” does not mean no assumptions. + +## Reproduced values and a numerical limit + +The following fractions use illustrative halo dispersions. The halo dispersion used in the original quoted calculation is unknown. + +| Spectrum grid | z | Total halo mass, solar masses | sigma_star, km/s | f_trap at 150 km/s | f_trap at 200 km/s | +|---|---:|---:|---:|---:|---:| +| Native: kmax 300, 1,600 steps | 0 | 6.2405 × 10^12 | 185.588 | 0 | 0.138926 | +| Native | 6.08 | 57,809 | 0.856435 | 0.999967401 | 0.999981663 | +| Extended: kmax 100,000, 12,800 steps | 6.08 | 81,907 | 0.961912 | 0.999958877 | 0.999976868 | + +Wavenumbers are in inverse Mpc. Extending the high-wavenumber limit raises the mass by about 42% relative to the native result. The native result is about 29% below the extended result. The extended compactness `2GM/(R200 c^2)` is only `4.12e-11`, far from the Schwarzschild horizon value of one. + +The native redshift grid ends at 5. This probe extends it explicitly to 6.08 and 7. At z = 7 the native radius bracket contains no root. The existing solver does not check that bracket and can return a boundary instead. The probe reports `no_root_in_bracket` and leaves Wave 10 unchanged. + +At fixed cutoff 300, refining from 1,600 to 12,800 steps changes the z = 6.08 mass from 57,808.97 to 57,807.88 solar masses, about 0.0019%. This separates the larger cutoff effect from quadrature resolution. + +The 10,000 and 100,000 cutoffs test numerical convergence under the same spectrum and growth assumptions. Numerical convergence does not validate nonlinear AeST physics or a black hole formation mechanism. + +Run from the repository root with Python 3 and its standard library: + +```sh +python3 -B research/cosmic-dawn-20261112/audit.py +python3 -B research/cosmic-dawn-20261112/audit.py --check +``` + +The probe checks the source hash, extracts constants and the spectrum factory through Python's syntax tree, and changes only two checked literals in memory. It never runs the catalogue or the root script's main function. + +The native literals preserve the original spectrum arithmetic. `results.json` records inputs, assumptions, roots and failed brackets. `--check` regenerates in memory and checks all saved values and statuses with relative numerical tolerance `1e-9` and absolute tolerance `1e-14`. + +## Does falling into a black hole require a fifth dimension? + +Intrinsic curvature does not require an ambient dimension. A funnel picture embeds a two-dimensional spatial slice for visualization. It is not evidence that four-dimensional spacetime bends into a physical fifth dimension. + +In four-dimensional general relativity, a falling clock crosses a regular horizon in finite proper time. See the [MIT relativity lectures](https://ocw.mit.edu/courses/8-033-introduction-to-relativity-and-spacetime-physics-fall-2024/mit8_033_f24_lec_full.pdf) and [Cambridge general relativity notes](https://www.damtp.cam.ac.uk/user/us248/Lectures/Notes/gwnr.pdf). + +A concrete alternative exists: [Randall–Sundrum II brane black holes](https://arxiv.org/abs/1105.2558) can behave four-dimensionally at low curvature and five-dimensionally at radii small relative to the bulk curvature scale. + +Testing this requires an observable beyond the four-dimensional metric and clock predictions, such as multiple ringdown modes after mass and spin are fixed. + +The [current LVK tests](https://dcc.ligo.org/LIGO-P2500781/public) report no overall evidence beyond general relativity. They do not establish a fifth dimension. + +The earlier [hidden-dynamics report](https://github.com/Foundation-0/gravity/blob/02013ae95fa5913894b829c8e2e63a3efcde9e63/research/convergences-20261112/reports/hidden-dynamics.md) discusses limits on what observers can access. That conceptual bridge does not imply an extra physical dimension. Next research should specify a quantitative residual observable before comparing a five-dimensional model with data. diff --git a/research/cosmic-dawn-20261112/audit.py b/research/cosmic-dawn-20261112/audit.py new file mode 100644 index 0000000..81e742c --- /dev/null +++ b/research/cosmic-dawn-20261112/audit.py @@ -0,0 +1,118 @@ +"""Reproduce a bounded Wave 10 numerical audit, without running its catalogue code.""" +import argparse +import ast +import hashlib +import json +import math +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +SOURCE = ROOT / 'wave10_covariant_jeans_unification.py' +PIN = '8f904ba3aad22ce727e92b96bf0c12e229173f8f' +SHA256 = 'af8a2459aa8f5885250ab6b5914c50cc852bcc691982c8ef5cf692603bece927' + + +def factory(kmax, nk): + """Extract only constants and the spectrum factory; adjust two AST literals in memory.""" + raw = SOURCE.read_bytes() + if hashlib.sha256(raw).hexdigest() != SHA256: + raise ValueError('Wave 10 source hash differs from the audited source') + tree = ast.parse(raw) + constants = [n for n in tree.body if isinstance(n, ast.Assign)] + funcs = [n for n in tree.body if isinstance(n, ast.FunctionDef) + and n.name == 'build_eh98_power_spectrum'] + if len(funcs) != 1: + raise ValueError('Expected one spectrum factory') + fn = funcs[0] + replacements = [0, 0] + for node in ast.walk(fn): + if isinstance(node, ast.Assign) and any(isinstance(t, ast.Name) and t.id == 'nk' for t in node.targets): + if not isinstance(node.value, ast.Constant) or node.value.value != 1600: + raise ValueError('Unexpected native nk') + node.value = ast.Constant(nk) + replacements[0] += 1 + if isinstance(node, ast.Call) and isinstance(node.func, ast.Attribute) and node.func.attr == 'log' and len(node.args) == 1 and isinstance(node.args[0], ast.Constant) and node.args[0].value == 300.0: + node.args[0] = ast.Constant(kmax) + replacements[1] += 1 + if replacements != [1, 1]: + raise ValueError('Spectrum replacement count differs') + module = ast.fix_missing_locations(ast.Module(body=constants + [fn], type_ignores=[])) + ns = {'math': math} + exec(compile(module, '', 'exec'), ns) + return ns, ns['build_eh98_power_spectrum']() + + +def point(ns, spectrum, z): + sigma, growth = spectrum + target = ns['DELTA_C_SPH'] / growth(z) + lo, hi = 1e-4, 25.0 + residuals = [sigma(lo) - target, sigma(hi) - target] + result = {'z': z, 'growth': growth(z), 'bracket_Mpc': [lo, hi], + 'endpoint_residuals': residuals} + if not residuals[0] >= 0 >= residuals[1]: + return dict(result, status='no_root_in_bracket') + for _ in range(55): + mid = math.sqrt(lo * hi) + if sigma(mid) > target: + lo = mid + else: + hi = mid + r = (lo + hi) / 2 + mass = 4 * math.pi / 3 * (r * ns['MPC']) ** 3 * ns['OMEGA_M'] * ns['RHO_CRIT0'] + ez2 = ns['OMEGA_M'] * (1 + z) ** 3 + ns['OMEGA_L'] + r200 = (3 * mass / (4 * math.pi * 200 * ns['RHO_CRIT0'] * ez2)) ** (1 / 3) + dispersion = math.sqrt(ns['G'] * mass / (2 * r200)) / 1000 + return dict(result, status='root', R_star_Mpc=r, M_star_Msun=mass / ns['M_SUN'], + sigma_star_kms=dispersion, compactness_2GM_Rc2=2 * ns['G'] * mass / (r200 * ns['C_SI'] ** 2), + f_trap={str(h): max(0, 1 - (dispersion / h) ** 2) for h in [150, 176, 200]}) + + +def generate(): + runs = [] + for kmax, nk in [(300.0, 1600), (300.0, 12800), (1e4, 12800), (1e5, 12800)]: + ns, spectrum = factory(kmax, nk) + runs.append({'kmax_Mpc_inverse': kmax, 'nk': nk, + 'points': [point(ns, spectrum, z) for z in [0.0, 6.08, 7.0]]}) + return {'source_commit': PIN, 'source_sha256': SHA256, + 'inputs': {'kmin_Mpc_inverse': 1e-5, 'radius_bracket_Mpc': [1e-4, 25], + 'root_iterations': 55, 'growth_steps': 1600, + 'halo_sigma_kms_illustrative': [150, 176, 200]}, + 'assumptions': ['Wave 10 Planck 2018 constants and EH98 cold dark matter approximation', + 'sigma(R,0) D(z) = 1.686; total halo mass at mean matter density', + 'R200 uses 200 times critical density; sigma_star squared = GM/(2 R200)', + 'f_trap is an assumed law, not a horizon criterion'], + 'runs': runs} + + +def compare(actual, saved, path='results'): + if type(actual) is not type(saved): + raise ValueError(path + ': type changed') + if isinstance(actual, dict): + if actual.keys() != saved.keys(): + raise ValueError(path + ': keys changed') + for key in actual: + compare(actual[key], saved[key], path + '.' + key) + elif isinstance(actual, list): + if len(actual) != len(saved): + raise ValueError(path + ': length changed') + for i, (a, b) in enumerate(zip(actual, saved)): + compare(a, b, path + '[' + str(i) + ']') + elif isinstance(actual, float): + if not (math.isfinite(actual) and math.isfinite(saved) + and math.isclose(actual, saved, rel_tol=1e-9, abs_tol=1e-14)): + raise ValueError(path + ': numerical value changed') + elif actual != saved: + raise ValueError(path + ': value changed') + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--check', action='store_true') + args = parser.parse_args() + result = generate() + output = Path(__file__).with_name('results.json') + if args.check: + compare(result, json.loads(output.read_text())) + print('Saved numerical values and statuses match regeneration.') + else: + output.write_text(json.dumps(result, indent=2, sort_keys=True) + '\n') diff --git a/research/cosmic-dawn-20261112/results.json b/research/cosmic-dawn-20261112/results.json new file mode 100644 index 0000000..bb274e2 --- /dev/null +++ b/research/cosmic-dawn-20261112/results.json @@ -0,0 +1,296 @@ +{ + "assumptions": [ + "Wave 10 Planck 2018 constants and EH98 cold dark matter approximation", + "sigma(R,0) D(z) = 1.686; total halo mass at mean matter density", + "R200 uses 200 times critical density; sigma_star squared = GM/(2 R200)", + "f_trap is an assumed law, not a horizon criterion" + ], + "inputs": { + "growth_steps": 1600, + "halo_sigma_kms_illustrative": [ + 150, + 176, + 200 + ], + "kmin_Mpc_inverse": 1e-05, + "radius_bracket_Mpc": [ + 0.0001, + 25 + ], + "root_iterations": 55 + }, + "runs": [ + { + "kmax_Mpc_inverse": 300.0, + "nk": 1600, + "points": [ + { + "M_star_Msun": 6240495103799.016, + "R_star_Mpc": 3.348258287597056, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 1.5329176371514945e-06, + "endpoint_residuals": [ + 8.283081121980771, + -1.227797349350784 + ], + "f_trap": { + "150": 0, + "176": 0, + "200": 0.13892645939568027 + }, + "growth": 1.0, + "sigma_star_kms": 185.58809666617304, + "status": "root", + "z": 0.0 + }, + { + "M_star_Msun": 57808.9670997789, + "R_star_Mpc": 0.007031980754131034, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 3.264428733179324e-11, + "endpoint_residuals": [ + 0.5533037453848237, + -8.957574725946731 + ], + "f_trap": { + "150": 0.999967400864116, + "176": 0.999976321004733, + "200": 0.9999816629860653 + }, + "growth": 0.17906115794440475, + "sigma_star_kms": 0.8564347945935794, + "status": "root", + "z": 6.08 + }, + { + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "endpoint_residuals": [ + -0.6665950310594297, + -10.177473502390985 + ], + "growth": 0.158523066680444, + "status": "no_root_in_bracket", + "z": 7.0 + } + ] + }, + { + "kmax_Mpc_inverse": 300.0, + "nk": 12800, + "points": [ + { + "M_star_Msun": 6240495143512.6455, + "R_star_Mpc": 3.34825829469967, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 1.532917643655009e-06, + "endpoint_residuals": [ + 8.2830826750014, + -1.2277973490704945 + ], + "f_trap": { + "150": 0, + "176": 0, + "200": 0.13892645574251283 + }, + "growth": 1.0, + "sigma_star_kms": 185.58809705985857, + "status": "root", + "z": 0.0 + }, + { + "M_star_Msun": 57807.88303344398, + "R_star_Mpc": 0.007031936797967382, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 3.264387922113378e-11, + "endpoint_residuals": [ + 0.5533052984054532, + -8.957574725666442 + ], + "f_trap": { + "150": 0.9999674012716622, + "176": 0.9999763213007619, + "200": 0.99998166321531 + }, + "growth": 0.17906115794440475, + "sigma_star_kms": 0.8564294411107837, + "status": "root", + "z": 6.08 + }, + { + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "endpoint_residuals": [ + -0.6665934780388003, + -10.177473502110695 + ], + "growth": 0.158523066680444, + "status": "no_root_in_bracket", + "z": 7.0 + } + ] + }, + { + "kmax_Mpc_inverse": 10000.0, + "nk": 12800, + "points": [ + { + "M_star_Msun": 6240495143772.618, + "R_star_Mpc": 3.3482582947461648, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 1.5329176436975824e-06, + "endpoint_residuals": [ + 14.12700302466104, + -1.227797349070199 + ], + "f_trap": { + "150": 0, + "176": 0, + "200": 0.13892645571859852 + }, + "growth": 1.0, + "sigma_star_kms": 185.5880970624357, + "status": "root", + "z": 0.0 + }, + { + "M_star_Msun": 81906.54937653067, + "R_star_Mpc": 0.007898030627709116, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 4.1180296765294827e-11, + "endpoint_residuals": [ + 6.397225648065092, + -8.957574725666147 + ], + "f_trap": { + "150": 0.9999588766611336, + "176": 0.9999701292896277, + "200": 0.9999768681218877 + }, + "growth": 0.17906115794440475, + "sigma_star_kms": 0.9619122228629771, + "status": "root", + "z": 6.08 + }, + { + "M_star_Msun": 8492.019944255035, + "R_star_Mpc": 0.003710361902472253, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 1.0262911079502244e-11, + "endpoint_residuals": [ + 5.1773268716208385, + -10.1774735021104 + ], + "f_trap": { + "150": 0.9999897512839093, + "176": 0.9999925556523748, + "200": 0.999994235097199 + }, + "growth": 0.158523066680444, + "sigma_star_kms": 0.4802042399234441, + "status": "root", + "z": 7.0 + } + ] + }, + { + "kmax_Mpc_inverse": 100000.0, + "nk": 12800, + "points": [ + { + "M_star_Msun": 6240495143755.415, + "R_star_Mpc": 3.348258294743088, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 1.532917643694765e-06, + "endpoint_residuals": [ + 15.19174306736545, + -1.2277973490699592 + ], + "f_trap": { + "150": 0, + "176": 0, + "200": 0.13892645572018114 + }, + "growth": 1.0, + "sigma_star_kms": 185.58809706226515, + "status": "root", + "z": 0.0 + }, + { + "M_star_Msun": 81906.56311177606, + "R_star_Mpc": 0.00789803106919348, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 4.118030136909002e-11, + "endpoint_residuals": [ + 7.461965690769503, + -8.957574725665907 + ], + "f_trap": { + "150": 0.9999588766565362, + "176": 0.9999701292862883, + "200": 0.9999768681193016 + }, + "growth": 0.17906115794440475, + "sigma_star_kms": 0.9619122766319769, + "status": "root", + "z": 6.08 + }, + { + "M_star_Msun": 8492.046811358965, + "R_star_Mpc": 0.00371036581542325, + "bracket_Mpc": [ + 0.0001, + 25.0 + ], + "compactness_2GM_Rc2": 1.0262932726064156e-11, + "endpoint_residuals": [ + 6.24206691432525, + -10.17747350211016 + ], + "f_trap": { + "150": 0.9999897512622927, + "176": 0.9999925556366731, + "200": 0.9999942350850396 + }, + "growth": 0.158523066680444, + "sigma_star_kms": 0.4802047463472671, + "status": "root", + "z": 7.0 + } + ] + } + ], + "source_commit": "8f904ba3aad22ce727e92b96bf0c12e229173f8f", + "source_sha256": "af8a2459aa8f5885250ab6b5914c50cc852bcc691982c8ef5cf692603bece927" +}