From d4083708c8f9efeaf23c3dabc5c57ea3756e83bf Mon Sep 17 00:00:00 2001 From: ahrazzle <38987266+ahrazzle@users.noreply.github.com> Date: Thu, 12 Nov 2026 16:00:00 -0600 Subject: [PATCH 1/5] Assess remaining research value with reproducible controls --- .github/workflows/value-assessment-probes.yml | 26 + README.md | 4 + research/value-assessment-20261112/README.md | 114 +++ .../value-assessment-20261112/VALIDATION.md | 14 + research/value-assessment-20261112/check.py | 102 ++ .../closure/caustic_control.py | 200 ++++ .../closure/independent-checks.json | 227 +++++ .../closure/independent-review.md | 128 +++ .../closure/independent_checks.py | 167 ++++ .../closure/research.md | 194 ++++ .../closure/results.json | 587 +++++++++++ .../closure/sources.json | 139 +++ .../convergences/derivation.md | 77 ++ .../convergences/evidence.json | 913 +++++++++++++++++ .../convergences/probe.py | 319 ++++++ .../convergences/research.md | 132 +++ .../convergences/sources.json | 184 ++++ .../formal/Wave11MachianZeroEnergy.lean | 64 ++ .../inputs/formal/Wave12QuasarCollapse.lean | 51 + .../inputs/manifest.json | 35 + .../wave11_machian_pairing_certificates.json | 110 +++ ...ave12_cosmic_dawn_quasar_certificates.json | 123 +++ .../wave11_machian_pairing_unification.py | 253 +++++ .../wave12_cosmic_dawn_quasar_collapse.py | 414 ++++++++ .../observations/evidence.json | 22 + .../observations/probe.py | 312 ++++++ .../observations/research.md | 286 ++++++ .../observations/results.json | 925 ++++++++++++++++++ .../observations/retrieval-addendum.json | 78 ++ .../observations/retrieval.json | 22 + .../observations/sources.json | 109 +++ .../publication-manifest.json | 251 +++++ .../requirements-review.txt | 3 + .../requirements.txt | 2 + .../value-assessment-20261112/test_check.py | 44 + .../wave12/evidence.json | 256 +++++ .../value-assessment-20261112/wave12/probe.py | 185 ++++ .../wave12/research.md | 93 ++ .../wave12/sources.json | 83 ++ 39 files changed, 7248 insertions(+) create mode 100644 .github/workflows/value-assessment-probes.yml create mode 100644 research/value-assessment-20261112/README.md create mode 100644 research/value-assessment-20261112/VALIDATION.md create mode 100644 research/value-assessment-20261112/check.py create mode 100644 research/value-assessment-20261112/closure/caustic_control.py create mode 100644 research/value-assessment-20261112/closure/independent-checks.json create mode 100644 research/value-assessment-20261112/closure/independent-review.md create mode 100644 research/value-assessment-20261112/closure/independent_checks.py create mode 100644 research/value-assessment-20261112/closure/research.md create mode 100644 research/value-assessment-20261112/closure/results.json create mode 100644 research/value-assessment-20261112/closure/sources.json create mode 100644 research/value-assessment-20261112/convergences/derivation.md create mode 100644 research/value-assessment-20261112/convergences/evidence.json create mode 100644 research/value-assessment-20261112/convergences/probe.py create mode 100644 research/value-assessment-20261112/convergences/research.md create mode 100644 research/value-assessment-20261112/convergences/sources.json create mode 100644 research/value-assessment-20261112/inputs/formal/Wave11MachianZeroEnergy.lean create mode 100644 research/value-assessment-20261112/inputs/formal/Wave12QuasarCollapse.lean create mode 100644 research/value-assessment-20261112/inputs/manifest.json create mode 100644 research/value-assessment-20261112/inputs/results/wave11_machian_pairing_certificates.json create mode 100644 research/value-assessment-20261112/inputs/results/wave12_cosmic_dawn_quasar_certificates.json create mode 100644 research/value-assessment-20261112/inputs/wave11_machian_pairing_unification.py create mode 100644 research/value-assessment-20261112/inputs/wave12_cosmic_dawn_quasar_collapse.py create mode 100644 research/value-assessment-20261112/observations/evidence.json create mode 100644 research/value-assessment-20261112/observations/probe.py create mode 100644 research/value-assessment-20261112/observations/research.md create mode 100644 research/value-assessment-20261112/observations/results.json create mode 100644 research/value-assessment-20261112/observations/retrieval-addendum.json create mode 100644 research/value-assessment-20261112/observations/retrieval.json create mode 100644 research/value-assessment-20261112/observations/sources.json create mode 100644 research/value-assessment-20261112/publication-manifest.json create mode 100644 research/value-assessment-20261112/requirements-review.txt create mode 100644 research/value-assessment-20261112/requirements.txt create mode 100644 research/value-assessment-20261112/test_check.py create mode 100644 research/value-assessment-20261112/wave12/evidence.json create mode 100644 research/value-assessment-20261112/wave12/probe.py create mode 100644 research/value-assessment-20261112/wave12/research.md create mode 100644 research/value-assessment-20261112/wave12/sources.json diff --git a/.github/workflows/value-assessment-probes.yml b/.github/workflows/value-assessment-probes.yml new file mode 100644 index 0000000..297176b --- /dev/null +++ b/.github/workflows/value-assessment-probes.yml @@ -0,0 +1,26 @@ +name: Research value assessment probes +on: + pull_request: + paths: + - 'research/value-assessment-20261112/**' + - '.github/workflows/value-assessment-probes.yml' + push: + paths: + - 'research/value-assessment-20261112/**' + - '.github/workflows/value-assessment-probes.yml' + workflow_dispatch: +permissions: + contents: read +jobs: + reproduce: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.14' + cache: pip + cache-dependency-path: research/value-assessment-20261112/requirements.txt + - run: python -m pip install -r research/value-assessment-20261112/requirements.txt + - run: python -B -m unittest discover -s research/value-assessment-20261112 -p test_check.py + - run: python -B research/value-assessment-20261112/check.py diff --git a/README.md b/README.md index 68671a1..9219522 100644 --- a/README.md +++ b/README.md @@ -46,3 +46,7 @@ All Python scripts use only the Python 3 standard library. Each certificate file - `CHANGELOG.md` -- Reconciled chronological history across Waves 1-12 matching `CLAIMS.md` and code identifiers.- - mic-Dawn quasar confrontation, and next-agent handoff queue. - `CHANGELOG.md` -- Reconciled chronological history across Waves 1-12 matching `CLAIMS.md` and code identifiers. + +## Research value assessment + +The [12 November assessment](research/value-assessment-20261112/) records the Wave 11/12 audit, bounded research directions, reproducible controls and stopping gates. diff --git a/research/value-assessment-20261112/README.md b/research/value-assessment-20261112/README.md new file mode 100644 index 0000000..993e790 --- /dev/null +++ b/research/value-assessment-20261112/README.md @@ -0,0 +1,114 @@ +# Which threads merit further research? + +**Yes: there are specific questions worth pursuing. The evidence supports two bounded research directions and one preliminary theory test. It does not establish a common mechanism behind gravity, cosmic creation, fractals and quantum measurement.** + +This assessment follows the [nine-route exploration](https://github.com/Foundation-0/gravity/pull/8) and [cosmic-dawn audit](https://github.com/Foundation-0/gravity/pull/9). It refreshes all four repositories, tests the strongest remaining connections and records where a promising analogy stops making a physical prediction. + +Research was performed by agents using gpt-6-astra with the requested ultra reasoning. Publication preparation uses gpt-6.1-sol. Calculations and independent agent review are recorded with the artifacts. Human scientific review remains pending. No new astronomical observations or individual-galaxy likelihood fit are claimed. + +## Decisions supported by this pass + +| Question | Decision | What was established | Next result that would justify continuation | +| --- | --- | --- | --- | +| Does the galactic acceleration scale evolve with cosmic expansion? | Pursue calibration and inference design. Hold a new observational claim | Exact calibration symmetries and synthetic controls identify what the data must constrain independently. Published work already reports evolution and compares simple scalings. | Recover the selected galaxies and joint uncertainties, independently constrain calibration drift, and recover injected evolution under the actual selection. | +| Does the lattice fold produce an unusual mechanical response? | Pursue one specified interaction model | The declared ideal spring network changes from three nonzero relaxed homogeneous moduli to one. A weak-spring completion changes the limiting response. | Establish the crossover under a physically chosen force law, including finite-strain and stability limits, and settle relevant prior art. | +| Can dark-field collapse generate a useful effective pressure? | Pursue a finite AeST action, constraint and response test | A cold-wave control develops a rising pressure proxy without mode scattering. The proxy alone cannot establish thermalization. | Fix one complete branch, construct admissible states, and predict responses across permitted preparations before a nonlinear collapse study. | +| Does lost interference determine readable environmental records? | Correct the interpretation. Park a new research programme | An established photon-scattering model separates decoherence from record production. The radiation's angular state matters. | A specified illumination or detector problem with a prediction absent from existing work. | +| Does the quasar pair validate the proposed heavy-seed mechanism? | Reject the current inference | Wave 12 reproduces the quoted numerical scale, but that quantity is total halo mass. The trapping fraction is prescribed and no seed-formation solution is calculated. | A dynamical formation model and comparative likelihood against ordinary growth alternatives. | +| Do future recollapse or a fifth dimension follow from the current evidence? | Park. Reject those deductions | Past expansion does not select a unique future continuation. Four-dimensional gravity already predicts black-hole clock effects. | A specified model with an observable that separates it from an adequate baseline. | + +“Pursue” means a defined next test is worth doing. It does not mean that the preferred explanation is likely true. “Reject the current inference” identifies a failed logical step without excluding every possible future completion of the idea. + +## The observational thread now has a precise obstacle + +The [acceleration study](observations/research.md) uses the empirical radial acceleration relation, with its characteristic scale written as `a0(z) = A E(z)^q`, where `E = H/H0`. A constant scale has `q=0`. A Hubble-tracking scale has `q=1`. These are testable phenomenological alternatives, not complete gravity theories. + +Let `b = B E^s` multiply the nominal baryonic acceleration and `k = C E^u` convert true total acceleration to measured acceleration. In the low-acceleration limit, the inferred slope combines `q + s + 2u`. Evolution of the physical scale and evolution of calibration therefore cannot be separated from that limit alone. + +The full interpolation has an exact symmetry as well: shifting `(q,s,u)` to `(q+d,s+d,u-d)` leaves every predicted measured acceleration unchanged. Even adding a local, zero-redshift normalization leaves this drift ambiguity. This is a property of the declared inference model, not evidence that a particular survey has errors of the required size. + +Independent calibration can break the ambiguity. The calculation gives conditional precision requirements and tests recovery with known calibration, acceleration-range holdouts, shared radial errors and a designed selection counterexample. It also shows why recasting the same masses and velocities as a Tully-Fisher relation does not supply independent evidence. + +The literature and data-access review distinguish published fit summaries, parent survey cubes, best-fit catalogues and the selected sample's joint posteriors. A fresh individual-galaxy fit is not yet supported by the retrieved inputs. The next useful contribution is a reproducible, independently calibrated inference, rather than another curve through published bins. + +## The geometry thread produces a narrower, tangible result + +The [mechanics report](convergences/research.md) and [derivation](convergences/derivation.md) hold the original fifteen bars fixed as unstressed central springs. After internal relaxation, the open geometry supports three independent homogeneous stress combinations. A nonzero fold supports one. The surviving stress has mixed-sign principal values, so it is not an ordinary fluid-like pressure response. + +Adding twenty-one explicitly declared weak springs removes the singular response at fixed positive added stiffness. Taking the fold to zero before removing those springs gives a different tensor from removing them first. Both the formula and the numerical controls are included. + +The added springs have their rest lengths reset at each reference configuration. This is a comparison family, not a manufactured material following one unchanged interaction law. The result concerns homogeneous elasticity. The completed model's full spectrum and nonlinear stability remain untested. + +Rank-one elasticity, framework flexibility and soft modes are established subjects. The project increment is the calculation for this particular fold and its stated weak-interaction completion. The [prior-art comparison](convergences/research.md) includes pentamode and unimode distinctions. + +Historical priority of that result is unresolved. A physically specified crossover or load response would be worth testing. A claim of a new universality class would be premature. + +## The collapse thread needs a better discriminator + +The [caustic control](closure/research.md) begins with coherent cold infall. A pressure-over-density proxy rises by 5.08 times through the first caustic, even though every Fourier occupation remains conserved and no modes scatter into each other. Filtered density and stress approach the corresponding collisionless multistream solution as physical dispersion decreases. + +This does not show that interacting AeST cannot develop an approximate pressure law. It shows that finite stress, smooth collapse and a rising proxy would not demonstrate such a law. Three admissible cold reference preparations also have identical density and zero local mean velocity while their stresses span a factor of four. + +The finite next test in the report specifies the full action and branch, checks the canonical constraints, then measures density, current and stress responses. A large three-dimensional simulation is justified only after that test identifies physical states, retained variables and a controlled range below the effective-theory cutoff. + +This connects the original question about what survives annihilation or collapse to a practical distinction: conserved charge, bound energy, collisionless stress and thermal pressure are different forms of persistence. The existence of one does not establish the others. + +## What the new gravity work changes + +The [Wave 11/12 audit](wave12/research.md) now traces the quoted `83,913.96` solar masses and `f_trap = 0.9999699` to explicit Wave 12 inputs. The extended spectrum converges for that calculation. This resolves the earlier missing provenance and high-wavenumber concern for the new result. + +The result remains a total halo mass, with an adopted baryon allotment of about 13,126 solar masses and virial compactness around `4.19e-11`. It supplies no black-hole formation condition. This does not rule out later collapse under a different, specified mechanism. + +The claimed absolute light-seed clock barrier also depends on opacity, efficiency, duty and accretion history. The audit gives counterexamples to the universal exclusion while retaining those physical qualifications. Direct radial integration changes the quoted infall times. An arithmetic error in the Lean chirp-mass bound has a separate [scoped correction](https://github.com/Foundation-0/gravity/pull/10). + +The Wave 11 future-collapse and condensate-origin proposals remain conditional. An alternative future equation of state matches the whole observed past and avoids the proposed turnaround. The minimal condensate construction still needs its stability, source or boundary mechanism, and allowed interactions specified. Algebraic symmetry alone does not establish a creation event or forbid all pair conversion. + +## How the repositories connect + +| Repository | Concrete role in the next work | +| --- | --- | +| [gravity](https://github.com/Foundation-0/gravity) | Keep physical assumptions, calibrated observational tests, action-derived dynamics and arithmetic proofs distinct. | +| [fractals](https://github.com/Foundation-0/fractals) | Test which repeated structures retain a response after interactions, resolution and weak forces change. | +| [physics0](https://github.com/Foundation-0/physics0) | Track the variables and preparations needed for prediction. Distinguish geometry, dynamics and readable records. | +| [astr0](https://github.com/Foundation-0/astr0) | Find the independent measurements, catalogue joins and informative non-events that distinguish competing explanations. | + +The useful convergence is methodological and physical: a description can hide a degree of freedom, an interaction or a calibration that changes the apparent conclusion. Joining descriptions becomes productive when it yields a measurable distinction. These calculations identify several such distinctions without turning their resemblance into a common law. + +Further work should stop or change direction when independent calibration cannot distinguish the proposed laws, a mechanical effect has no useful range under a specified interaction, or an AeST branch lacks admissible states and a controlled approximation. Those are reviewable outcomes, including when the answer is negative. + +## Reproduction and provenance + +Use Python 3.14 in a disposable virtual environment, then run from the repository root: + +```sh +python -m venv /tmp/value-assessment-env +/tmp/value-assessment-env/bin/python -m pip install -r research/value-assessment-20261112/requirements.txt +/tmp/value-assessment-env/bin/python -B -m unittest discover -s research/value-assessment-20261112 -p test_check.py +/tmp/value-assessment-env/bin/python -B research/value-assessment-20261112/check.py +``` + +The runner regenerates all four probes in a temporary copy and compares saved scientific results. Floats use relative tolerance `1e-7` and absolute tolerance `1e-20`. The listed conservation and roundoff diagnostics use explicit upper bounds in `check.py`. Integers, booleans, structure and text must match. Version labels are excluded. Each probe also checks its own analytic and numerical assertions. + +The six files under `inputs/` are historical Wave 11/12 sources, proof statements and certificates from gravity `70a1204a536b3dca0b3053d1a056daf22601ac00`. The manifest records their SHA-256 digests and upstream URLs. The runner checks every digest before execution. The Wave 12 loader also refuses a changed Python source before executing it. + +These inputs deliberately retain the historical C33 error so the audit remains reproducible. + +The other assessed snapshots are fractals `48b923bd25dbcfef7fa8e8399d4144592145f0ef`, physics0 `913468f093f82d869dc58b404039ea0a416cfb80`, and astr0 `67cafe2defc44d5a4e17815fc7329f65eeef45eb`. Source registries beside each report identify the primary literature and additional pinned inputs. + +Publication preparation refreshed gravity main to `364fa3e`, which adds C31-C33 descriptions to `CLAIMS.md` without changing the audited Python inputs. That index repeats the historical C33 exponent error. The scoped correction covers the proof and index. The conditional scientific assessment remains applicable. + +The focused workflow runs this bundle's checks. The repository's broad `lake build` has separate Wave 5/6/7 syntax and duplicate-declaration failures. A passing assessment runner is not a full repository build or a proof of the physical claims. + +Companion notes: [fractals](https://github.com/Foundation-0/fractals/tree/aeva/research-value-assessment-20261112/research/value-assessment-20261112), [physics0](https://github.com/Foundation-0/physics0/tree/aeva/research-value-assessment-20261112/research/value-assessment-20261112), and [astr0](https://github.com/Foundation-0/astr0/tree/aeva/research-value-assessment-20261112/research/value-assessment-20261112). + +The earlier companions are [fractals PR 4](https://github.com/Foundation-0/fractals/pull/4), [physics0 PR 8](https://github.com/Foundation-0/physics0/pull/8), and [astr0 PR 9](https://github.com/Foundation-0/astr0/pull/9). + +## Independent review and publication changes + +The [independent scientific review](closure/independent-review.md) checks the Wave 12 arithmetic, future continuation, folded tensor and photon kernel. Its author wrote the separate closure route and did not author the reviewed Wave 12 or convergence probes. Its reviewed hashes identify the original research artifacts. + +The publication copy uses the halo-to-seed label “unsupported identification”, and the mechanics report cites pentamode prior art and distinguishes mixed-sign stress from isotropic pressure. The review retains its original pending status as a historical record. + +These publication edits are recorded by the final manifest. Human scientific review remains pending. + +The optional independent reviewer script requires SymPy in addition to the main dependencies. It is included with its saved checks for inspection and is separate from the four-probe CI job. Its optional versions are pinned in `requirements-review.txt`. Running `python -B research/value-assessment-20261112/closure/independent_checks.py` regenerates reviewer results and current artifact hashes, so use a disposable copy to preserve the historical review record. diff --git a/research/value-assessment-20261112/VALIDATION.md b/research/value-assessment-20261112/VALIDATION.md new file mode 100644 index 0000000..296b1cf --- /dev/null +++ b/research/value-assessment-20261112/VALIDATION.md @@ -0,0 +1,14 @@ +# Validation record + +Prepared on 12 November 2026. Publication preparation used Python 3.14 with NumPy 2.5.4 and SciPy 1.18.1 already present in the environment. No installed runtime was changed. + +- The runner checks all six historical SHA-256 digests before executing any source input. +- The Wave 12 loader independently checks each executed source digest. +- Five comparator and integrity controls pass. They cover a scientific-result change, a boolean change, malformed structure, nonfinite output, excessive roundoff residual, changed source, and loss of a small scientific signal. +- All four probes, including the 26-assertion synthetic observation design, regenerate successfully. Their scientific results match saved outputs under the documented tolerances. + +The focused CI workflow reproduces this bundle. The separate broad Lean build has existing Wave 5/6/7 errors. Hosted CI status must be read from the current pull request and is not implied by these local results. + +The historical Wave 12 proof is retained under `inputs/` as evidence of the audit. The corrected direct Lean check and its build limits are recorded in [the scoped correction](https://github.com/Foundation-0/gravity/pull/10). The immutable historical inputs do not incorporate that correction. + +The optional independent reviewer checks also reproduce with SymPy 1.14.0. Their scientific output matches the saved review result. Their historical author-artifact hashes are retained separately from the current publication manifest. diff --git a/research/value-assessment-20261112/check.py b/research/value-assessment-20261112/check.py new file mode 100644 index 0000000..f5bc91b --- /dev/null +++ b/research/value-assessment-20261112/check.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +"""Reproduce the four assessment probes without changing saved evidence.""" +from __future__ import annotations +import hashlib +import json +import math +import re +from pathlib import Path +import shutil +import subprocess +import sys +import tempfile + +HERE = Path(__file__).resolve().parent +# Version labels do not describe scientific output. +ENVIRONMENT_KEYS = {'environment'} +# Roundoff diagnostics retain the control's accuracy boundary. Scientific +# observables, error curves, and all other numbers use the tighter comparison. +DIAGNOSTIC_LIMITS = { + 'continuity_relative_residual': 1e-9, + 'momentum_relative_residual': 1e-9, + 'time_reversal_relative_field_error': 1e-12, + 'modal_occupation_max_change': 1e-12, + 'high_k_mass_fraction_abs_k_gt_n_over_4': 1e-20, + 'resolution_2048_4096_max_absolute_difference': 1e-10, + 'max_formula_matrix_error': 2e-11, + 'max_self_stress_force_error': 2e-12, + 'quadrature_refinement_max_error': 1e-12, +} + + +def compare(actual, expected, location='root'): + key = location.rsplit('.', 1)[-1] + # Only the analytically null eigenvalues of the ideal fold are roundoff. + match = re.fullmatch(r'convergences.mechanics.fold_rows\[(\d+)\].mandel_elastic_eigenvalues\[(\d+)\]', location) + if match and int(match[2]) < (3 if int(match[1]) == 0 else 5): + assert all(math.isfinite(v) and abs(v) < 1e-12 for v in (actual, expected)), location + return + match = re.fullmatch(r'convergences.mechanics.fold_rows\[(\d+)\].compatibility_smallest_three_singular_values\[(\d+)\]', location) + if match and (int(match[1]) == 0 or int(match[2]) == 2): + assert all(math.isfinite(v) and 0 <= v < 1e-12 for v in (actual, expected)), location + return + # Momentum and symmetry-center velocity vanish analytically in this control. + if location.startswith('closure.') and key in {'momentum_mean', 'mean_velocity', 'central_velocity'}: + assert all(math.isfinite(v) and abs(v) < 2e-12 for v in (actual, expected)), location + return + if key in DIAGNOSTIC_LIMITS: + for value in (actual, expected): + assert isinstance(value, (float, int)) and not isinstance(value, bool), location + assert math.isfinite(value) and 0 <= value < DIAGNOSTIC_LIMITS[key], (location, value) + elif isinstance(expected, bool): + assert isinstance(actual, bool) and actual == expected, (location, actual, expected) + elif isinstance(expected, dict): + assert isinstance(actual, dict) and actual.keys() == expected.keys(), location + for key in expected: + if key not in ENVIRONMENT_KEYS: + compare(actual[key], expected[key], f'{location}.{key}') + elif isinstance(expected, list): + assert isinstance(actual, list) and len(actual) == len(expected), location + for i, (a, e) in enumerate(zip(actual, expected)): + compare(a, e, f'{location}[{i}]') + elif isinstance(expected, int): + assert isinstance(actual, int) and not isinstance(actual, bool) and actual == expected, (location, actual, expected) + elif isinstance(expected, float): + assert isinstance(actual, (float, int)) and not isinstance(actual, bool), location + assert math.isfinite(actual) and math.isfinite(expected), location + assert math.isclose(actual, expected, rel_tol=1e-7, abs_tol=1e-20), (location, actual, expected) + else: + assert actual == expected, (location, actual, expected) + + +def verify_inputs(root=HERE): + manifest = json.loads((root / 'inputs/manifest.json').read_text()) + for item in manifest['files']: + path = root / 'inputs' / item['path'] + assert hashlib.sha256(path.read_bytes()).hexdigest() == item['sha256'], item['path'] + + +def main(): + verify_inputs() + with tempfile.TemporaryDirectory(prefix='value-assessment-check-') as directory: + temporary = Path(directory) / 'bundle' + shutil.copytree(HERE, temporary) + probes = [ + ('wave12', 'probe.py', 'evidence.json', ['--repo', str(temporary / 'inputs'), '--output', 'evidence.json']), + ('closure', 'caustic_control.py', 'results.json', []), + ('convergences', 'probe.py', 'evidence.json', []), + ('observations', 'probe.py', 'results.json', ['--output', 'results.json']), + ] + for name, script, output, arguments in probes: + work = temporary / name + (work / output).unlink() + result = subprocess.run([sys.executable, '-B', script, *arguments], cwd=work, capture_output=True, text=True) + if result.returncode: + raise RuntimeError(f'{name}: {result.stdout}\n{result.stderr}') + compare(json.loads((work / output).read_text()), json.loads((HERE / name / output).read_text()), name) + print(f'PASS {name}: regenerated {output}') + print('PASS four probes and six immutable source hashes') + + +if __name__ == '__main__': + main() diff --git a/research/value-assessment-20261112/closure/caustic_control.py b/research/value-assessment-20261112/closure/caustic_control.py new file mode 100644 index 0000000..d2610ee --- /dev/null +++ b/research/value-assessment-20261112/closure/caustic_control.py @@ -0,0 +1,200 @@ +#!/usr/bin/env python3 +"""A coherent caustic control, not AeST and not a new physical theory. + +Run: python3 caustic_control.py +Requires numpy and scipy. All units are dimensionless. No gravity, collisions, +nonlinear wave interaction, thermal bath, forcing or fitted parameters appear. +""" +from pathlib import Path +import json +import math +import platform + +import numpy as np +import scipy +from scipy.special import jv, jvp, j0 + + +OUT = Path(__file__).resolve().parent + + +def grid(n): + return np.arange(n) * (2 * np.pi / n), np.fft.fftfreq(n, 1/n) + + +def smooth(a, k, ell): + return np.fft.ifft(np.fft.fft(a) * np.exp(-0.5 * (ell*k)**2)).real + + +def wave(eps, t, ell, n=4096): + x, k = grid(n) + initial = np.exp(1j*np.cos(x)/eps) + initial_hat = np.fft.fft(initial) + evolution = np.exp(-0.5j*eps*k*k*t) + phat = initial_hat * evolution + psi = np.fft.ifft(phat) + px = np.fft.ifft(1j*k*phat) + pxx = np.fft.ifft(-k*k*phat) + pt = 0.5j*eps*pxx + pxt = np.fft.ifft(1j*k*np.fft.fft(pt)) + rho = abs(psi)**2 + j = eps*np.imag(np.conj(psi)*px) + # Differentiate the represented field before forming products. Applying + # three derivatives to FFT roundoff in rho needlessly magnifies noise. + rhoxx = 2*(abs(px)**2 + np.real(np.conj(psi)*pxx)) + flux = eps*eps*(abs(px)**2 - rhoxx/4) + r = smooth(rho, k, ell) + jm = smooth(j, k, ell) + fluxm = smooth(flux, k, ell) + stress = fluxm - jm*jm/r + rhot = 2*np.real(np.conj(psi)*pt) + jt = eps*np.imag(np.conj(pt)*px + np.conj(psi)*pxt) + dxj = np.fft.ifft(1j*k*np.fft.fft(j)).real + dxflux = np.fft.ifft(1j*k*np.fft.fft(flux)).real + reverse = np.fft.ifft(np.fft.fft(np.conj(psi))*evolution) + norm = np.linalg.norm + occupancy = abs(phat/n)**2 + checks = { + 'mass_mean': float(rho.mean()), + 'energy_mean': float((eps*eps*abs(px)**2/2).mean()), + 'momentum_mean': float(j.mean()), + 'continuity_relative_residual': float(norm(rhot+dxj)/max(norm(rhot), 1.0)), + 'momentum_relative_residual': float(norm(jt+dxflux)/max(norm(jt), 1.0)), + 'time_reversal_relative_field_error': float(norm(reverse-np.conj(initial))/norm(initial)), + 'modal_occupation_max_change': float(np.max(abs(occupancy-abs(initial_hat/n)**2))), + 'momentum_distribution_second_moment': float(np.sum((eps*k)**2*occupancy)), + 'momentum_distribution_fourth_moment': float(np.sum((eps*k)**4*occupancy)), + 'momentum_distribution_kurtosis': float(np.sum((eps*k)**4*occupancy)/np.sum((eps*k)**2*occupancy)**2), + 'high_k_mass_fraction_abs_k_gt_n_over_4': float(occupancy[abs(k)>n/4].sum()/occupancy.sum()), + } + central = { + 'density': float(r[0]), + 'mean_velocity': float(jm[0]/r[0]), + 'stress': float(stress[0]), + 'stress_over_density': float(stress[0]/r[0]), + 'K_5_over_3_proxy': float(stress[0]/r[0]**(5/3)), + } + return r, jm, stress, central, checks + + +def classical(t, ell, n=4096): + """Exact Fourier moments of x=q-t sin(q), v=-sin(q), uniform q. + + n_m=J_m(mt), j_m=i J_m'(mt), M2_m=-J_m''(mt) for m>0. + A Gaussian filter makes truncation above |m|=ceil(12/ell) negligible. + """ + _, k = grid(n) + rhoh = np.zeros(n, complex) + jh = np.zeros(n, complex) + m2h = np.zeros(n, complex) + rhoh[0] = 1 + m2h[0] = 0.5 + active = (abs(k)>0) & (abs(k)<=math.ceil(12/ell)) + order = abs(k[active]).astype(int) + arg = order*t + weight = np.exp(-0.5*(ell*order)**2) + rhoh[active] = jv(order, arg)*weight + jh[active] = 1j*np.sign(k[active])*jvp(order, arg, 1)*weight + m2h[active] = -jvp(order, arg, 2)*weight + rho, j, m2 = [np.fft.ifft(n*h).real for h in (rhoh, jh, m2h)] + assert rho.min() > 0 + stress = m2-j*j/rho + return rho, j, stress + + +def central_quadrature(t, ell, nq=131072): + """Independent Lagrangian quadrature, without Eulerian binning.""" + q = 2*np.pi*(np.arange(nq)+0.5)/nq - np.pi + xx = q-t*np.sin(q) + v = -np.sin(q) + weight = sum(np.exp(-0.5*((xx+2*np.pi*m)/ell)**2) + for m in range(-2,3))/(math.sqrt(2*np.pi)*ell) + rho = 2*np.pi*np.mean(weight) + j = 2*np.pi*np.mean(weight*v) + flux = 2*np.pi*np.mean(weight*v*v) + return rho, j, flux-j*j/rho + + +def run(): + convergence=[] + checks=[] + time_rows=[] + for ell in [0.1,0.2,0.4]: + rc,jc,pc = classical(1.5, ell) + qr,qj,qp = central_quadrature(1.5,ell) + assert np.allclose([rc[0],jc[0],pc[0]],[qr,qj,qp],rtol=2e-11,atol=2e-12) + for eps in [0.08,0.04,0.02,0.01]: + r,j,p,c,ch = wave(eps,1.5,ell) + for key,expected in [('mass_mean',1),('energy_mean',0.25),('momentum_mean',0)]: + assert abs(ch[key]-expected)<2e-12 + assert ch['time_reversal_relative_field_error']<1e-12 + assert ch['continuity_relative_residual']<1e-9 + assert ch['momentum_relative_residual']<1e-9 + assert ch['high_k_mass_fraction_abs_k_gt_n_over_4']<1e-20 + assert abs(ch['momentum_distribution_second_moment']-0.5)<2e-12 + assert abs(ch['momentum_distribution_fourth_moment']-(0.375+eps*eps/2))<2e-12 + row={'eps':eps,'ell':ell,'t':1.5,'central':c, + 'density_relative_L2_error_vs_collisionless':float(np.linalg.norm(r-rc)/np.linalg.norm(rc)), + 'stress_relative_L2_error_vs_collisionless':float(np.linalg.norm(p-pc)/np.linalg.norm(pc)), + 'classical_central_density':float(rc[0]),'classical_central_stress':float(pc[0])} + convergence.append(row) + checks.append({'eps':eps,'ell':ell,**ch}) + for t in [0,0.5,0.9,1.0,1.2,1.5,2,3,6,12]: + r,j,p,c,ch=wave(0.02,t,0.2) + time_rows.append({'t':t,**c,'mean_coarse_stress':float(p.mean())}) + # Resolution is varied at fixed physical dispersion and filter. + r1,j1,p1,_,_=wave(0.01,1.5,0.2,n=2048) + r2,j2,p2,_,_=wave(0.01,1.5,0.2,n=4096) + refinement=float(max(np.max(abs(r1-r2[::2])),np.max(abs(j1-j2[::2])),np.max(abs(p1-p2[::2])))) + assert refinement<1e-10 + # A literal rho-only stress closure fails across controlled infall speeds. + # Use cold regular initial sheets x_i(q)=q-D_i sin(q), v=-a sin(q). + # At the SAME t=1, D_i+a*t=1.5 makes rho identical; velocity and + # stress scale as a and a^2. Symmetry gives local u(0)=0 for each. + rc,jc,pc=classical(1.5,0.2) + pair=[{'infall_amplitude':a,'initial_displacement_amplitude':1.5-a, + 'physical_time':1.0,'dimensionless_age':1.5, + 'first_caustic_time':(1-(1.5-a))/a, + 'central_density':float(rc[0]),'central_velocity':float(a*jc[0]/rc[0]), + 'central_stress':float(a*a*pc[0])} for a in [0.75,1,1.5]] + # In strict planar collapse embedded in 3D, the kinetic stress has rank 1. + eigenvalues=[float(pc[0]),0.0,0.0] + # Arcsine distribution arises from the velocity marginal v=-sin(q). + # Its perturbation response is J0(kt); a Gaussian at variance 1/2 differs. + response=[{'k_t':z,'arcsine_density_response':float(j0(z)), + 'gaussian_same_variance_density_response':float(np.exp(-z*z/4))} + for z in [0,1,2,2.404825557695773,3,4,6]] + # Exact quantum torus recurrence: exp(-i eps k^2 T/2)=1 at T=4pi/eps. + _,_,_,initial,_=wave(0.02,0,0.2) + _,_,_,recur,_=wave(0.02,4*np.pi/0.02,0.2) + assert abs(initial['K_5_over_3_proxy']-recur['K_5_over_3_proxy'])<1e-10 + results={ + 'scope':'Exact free Schrodinger and collisionless caustic controls. NOT AeST; no gravity, collisions or interacting-wave thermalization.', + 'equations':{'wave':'i eps psi_t = -eps^2 psi_xx/2', + 'initial':'psi(x,0)=exp(i cos(x)/eps), x on [0,2pi)', + 'kinetic':'x(q,t)=q-t sin(q), v=-sin(q), uniform q', + 'first_classical_caustic_time':1, + 'wave_momentum_flux':'eps^2 |psi_x|^2 - eps^2 rho_xx/4', + 'coarse_stress':'GaussianFilter(momentum_flux)-GaussianFilter(j)^2/GaussianFilter(rho)'}, + 'environment':{'python':platform.python_version(),'numpy':np.__version__,'scipy':scipy.__version__}, + 'convergence':convergence,'conservation_and_reversibility':checks, + 'central_time_series_eps_002_ell_02':time_rows, + 'resolution_2048_4096_max_absolute_difference':refinement, + 'matched_density_velocity_different_infall_stress':pair, + 'planar_classical_stress_eigenvalues_at_center':eigenvalues, + 'planar_normalized_anisotropy_frobenius_over_trace':float(math.sqrt(2/3)), + 'generated_velocity_marginal':{'density':'1/(pi sqrt(1-v^2)) on |v|<1', + 'variance':0.5,'fourth_moment':0.375,'kurtosis':1.5, + 'same_variance_gaussian_fourth_moment':0.75,'same_variance_gaussian_kurtosis':3}, + 'long_wavelength_response_of_homogenized_kinetic_control':response, + 'torus_recurrence':{'eps':0.02,'time':float(4*np.pi/0.02),'initial_central':initial,'recurrent_central':recur}, + 'tests':'All assertions passed. Fourier kinetic moments checked against independent Lagrangian quadrature.' + } + (OUT/'results.json').write_text(json.dumps(results,indent=2)+'\n') + print(json.dumps({'tests':results['tests'],'refinement':refinement, + 'convergence_ell_02':[x for x in convergence if x['ell']==0.2], + 'time_series':time_rows,'matched_pair':pair},indent=2)) + + +if __name__=='__main__': + run() diff --git a/research/value-assessment-20261112/closure/independent-checks.json b/research/value-assessment-20261112/closure/independent-checks.json new file mode 100644 index 0000000..68ba2f8 --- /dev/null +++ b/research/value-assessment-20261112/closure/independent-checks.json @@ -0,0 +1,227 @@ +{ + "artifact_sha256": { + "wave12/research.md": "40ef0b35838a93b0faa83c5723f748e1edba0018c660712f559f5060638a2cc5", + "wave12/probe.py": "d5045f63124d78d3ae4387f67f3adcdfdf8574957623f65bae046999dcb70f96", + "wave12/evidence.json": "ea42c793f43dcb5f475794212459c1f55c6fc3d5e6e3ec913e31122632398f3d", + "wave12/sources.json": "9a380924d8c9e64a174f86077f65609106e61389cb112ded1672814e83fa7de3", + "convergences/research.md": "c26788bb39b07ac6bc426b5a8ddee725dd7ae8c27e6a390f3a22c5464228f239", + "convergences/derivation.md": "d722d7ea613e35a1adc2f8fd05cc0d3ea7120b3f5e86c19c46e71528e9db4d63", + "convergences/probe.py": "dbe5bb373376bffdbfa1f7c63ee57eea7d8b524620f7cd3e221f03760594f372", + "convergences/evidence.json": "67e764c24c8176811478c615be497c3c7dd0a6654fd94166e9652b2a0d1afc66", + "convergences/sources.json": "0d058f74cfd0d286fa0039ca524adec08bb182662637bfec4f27126d31a2a8fa" + }, + "astrophysics": { + "age_window_Myr": 734.0997922979537, + "growth": [ + { + "efficiency": 0.1, + "opacity_factor": 1, + "time_Myr": 827.0784108740284, + "duty": 1.1266566474362067 + }, + { + "efficiency": 0.1, + "opacity_factor": 0.8775, + "time_Myr": 725.7613055419598, + "duty": 0.9886412081252715 + }, + { + "efficiency": 0.057190958417936644, + "opacity_factor": 1, + "time_Myr": 451.5364663110016, + "duty": 0.6150886719332208 + } + ], + "halo": { + "radius_pc": 191.82394059178895, + "compactness": 4.1869158108105286e-11, + "baryon_budget_Msun": 13126.042397237956, + "temperature_K": 139.0432709264797 + }, + "infall": [ + { + "case": "Newton", + "time_Myr": 384.8231820895311, + "quadrature_error_Myr": 2.000183869963256e-12 + }, + { + "case": "MOND_const", + "time_Myr": 200.07513758300058, + "quadrature_error_Myr": 1.6485746246683689e-09 + }, + { + "case": "MOND_H", + "time_Myr": 121.71667661411158, + "quadrature_error_Myr": 6.789085635548359e-12 + }, + { + "case": "two_branch", + "time_Myr": 127.15620463316782, + "quadrature_error_Myr": 3.3374606473313817e-09 + } + ], + "future": { + "integral_1_to_infinity": 0.5931047420252846, + "rho_DE_limit": 0.16875383457574408, + "strict_H2_lower_bound_all_a_ge_1": 0.11156556028863915, + "renormalized_curvature_H2_lower_bound": 0.11224057562694213 + }, + "chirp": { + "lower": 2154145352572133, + "incorrect": 540000000000000, + "correct": 2160000000000000, + "upper": 2170844073787392 + } + }, + "symbolic_mechanics": { + "derived_internal_tensions": [ + "a/4 + t/2", + "a/4 - t/2", + "a/4 + t/2", + "a/4 - t/2", + "a/4 - t/2", + "a/4 + t/2", + "a/4 - t/2", + "a/4 + t/2", + "-3*a/4 - t/2", + "-3*a/4 + t/2", + "-3*a/4 + t/2", + "-3*a/4 - t/2" + ], + "norm_squared": "11*a**2/4 + 3*t**2 + 3", + "determinant": "(t + x)*(2*t**2 - t*x + x**2)", + "bridge_rotation_rank": 2, + "added_rotation_minor_determinant": 2 + }, + "independent_QR_mechanics": { + "endpoint_contact_count": 36, + "added_count": 21, + "method": "Independent enlarged contact search, translation gauge, full QR energy projection", + "limit_distance": 0.21318848803387838, + "rows": [ + { + "s": 0, + "eta": 1e-06, + "eigenvalues": [ + 2.524530494171507e-07, + 6.117205479877821e-07, + 1.1205289011486676e-06, + 0.09763139339704513, + 0.09763200197001182, + 0.1952625128454998 + ], + "distance_to_open": 1.997673878558609e-06, + "distance_to_fold": 0.2131889175751914 + }, + { + "s": 0.01, + "eta": 1e-08, + "eigenvalues": [ + 2.5680886350991184e-09, + 6.069450998230845e-09, + 1.1341258870918388e-08, + 1.2148467449182562e-05, + 2.6500125441353255e-05, + 0.103421673898198 + ], + "distance_to_open": 0.2131972279748765, + "distance_to_fold": 0.004129364707359724 + }, + { + "s": 0.01, + "eta": 1e-06, + "eigenvalues": [ + 2.56808808231693e-07, + 6.069423713677523e-07, + 1.1341226727288303e-06, + 0.001200348702301728, + 0.0026129131773679915, + 0.10349788976634891 + ], + "distance_to_open": 0.21028814994275757, + "distance_to_fold": 0.005063921818610704 + }, + { + "s": 0.01, + "eta": 0.0001, + "eigenvalues": [ + 2.568032804969814e-05, + 6.06669574227687e-05, + 0.00011338013370410546, + 0.0547349707086351, + 0.09040122998634707, + 0.12861822636887654 + ], + "distance_to_open": 0.08571212745652276, + "distance_to_fold": 0.12786871079527468 + }, + { + "s": 1, + "eta": 1e-06, + "eigenvalues": [ + 1.0237805454576387e-06, + 1.2427331876597885e-06, + 1.979704385640963e-06, + 2.05121516455304e-06, + 3.668578802398917e-06, + 0.18055668536326314 + ], + "distance_to_open": 0.2873289467639079, + "distance_to_fold": 0.20340175163553578 + }, + { + "s": 0.0001, + "eta": 0.0001, + "eigenvalues": [ + 2.5249067740912287e-05, + 6.113854191491685e-05, + 0.0001120346014454173, + 0.09767395452669889, + 0.09772527397722852, + 0.19539016699434938 + ], + "distance_to_open": 0.00024063440794034547, + "distance_to_fold": 0.21331881304999878 + }, + { + "s": 0.0001, + "eta": 1e-16, + "eigenvalues": [ + 2.5249616783161034e-17, + 6.116783312564282e-17, + 1.120665661789287e-16, + 1.1756657881255984e-09, + 2.5276211933363277e-09, + 0.10337408200893845 + ], + "distance_to_open": 0.21318848904902185, + "distance_to_fold": 4.1349060084659e-05 + } + ] + }, + "symbolic_photon_caps": { + "alpha_aligned_cap_exact_polynomial_ratio": "(b + 1)*(9*b**6 - 35*b**4 + 235*b**2 + 1135)/(64*(11*b**2 + 11*b + 20))", + "rows": [ + { + "sky_fraction": 0.25, + "alpha": 0.9886917519358407, + "decoherence_rate_relative": 0.353125 + }, + { + "sky_fraction": 0.5, + "alpha": 0.88671875, + "decoherence_rate_relative": 0.5 + }, + { + "sky_fraction": 0.99, + "alpha": 0.021108545366358342, + "decoherence_rate_relative": 0.9793278 + }, + { + "sky_fraction": 1.0, + "alpha": 0.0, + "decoherence_rate_relative": 1.0 + } + ] + } +} diff --git a/research/value-assessment-20261112/closure/independent-review.md b/research/value-assessment-20261112/closure/independent-review.md new file mode 100644 index 0000000..1c97e82 --- /dev/null +++ b/research/value-assessment-20261112/closure/independent-review.md @@ -0,0 +1,128 @@ +# Independent scientific review of Wave 12 and convergences + +The key arithmetic and mathematical derivations pass independent checks. The reports support conditional astrophysical benchmarks, a specific folded-framework elasticity result, and a photon-model interpretation correction. Two wording and attribution changes remain before publication. Their status is **pending publisher verification**, not assumed resolved. + +Reviewer: gpt-forge, requested gpt-6-astra model and ultra reasoning, 12 November 2026. The reviewer authored the separate closure route, but did not author the Wave 12 or convergence artifacts reviewed here. No author artifact, repository, public comment or branch was changed in this review. + +**Findings requiring publication changes** + +1. **Use “unsupported identification” for the halo-to-seed step.** The Wave 12 table calls it “Falsified identification.” Its calculation determines a total halo mass, not a black-hole mass. The low virial compactness and 13,126-solar-mass baryon allotment establish the starting configuration and available ordinary matter. They do not exclude later collapse of a proposed nonbaryonic component. + + The report's surrounding discussion already acknowledges the missing formation mechanism. The table should retain “reject the current inference” and replace the categorical label. This is a qualification of the verdict, not a challenge to the mass calculation. **Status: pending publisher verification.** + +2. **Add explicit rank-one and pentamode prior art to the mechanics novelty boundary.** The self-stress projection and rank-one elastic dyad are established framework mechanics. Nassar, Chen and Huang's section 3 constructs materials supporting a single stress state and relates them to Milton and Cherkaev's pentamodes. + + The project increment can be this geometry's folded tensor and the specified weak-spring crossover, subject to a more targeted priority search. [Primary paper](https://pmc.ncbi.nlm.nih.gov/articles/PMC6283905/). + + The supported stress has mixed principal signs, so it is not ordinary isotropic positive pressure. Those signs do not disqualify every generalized pentamode interpretation. One hard strain combination with five easy combinations also differs from a unimode mechanism, which has one easy macroscopic path. [Milton's unimode definition](https://arxiv.org/abs/1205.6213). **Status: pending publisher verification.** + +No arithmetic defect or invalid rank argument was found in the reviewed probes. The independent checks are in [independent_checks.py](independent_checks.py) and [independent-checks.json](independent-checks.json). They do not import either author probe. + +**Wave 12 checks and physical limits** + +The author's full Wave 12 probe was rerun to a separate reviewer output. Its parsed JSON agrees exactly with the saved author evidence. Separate calculations then checked the more consequential quantities without using that probe's functions. + +| Quantity | Independent value | Assessment | +|---|---:|---| +| Available time, z=20 to z=6.0783 | 734.099792 Myr | Adaptive scale-factor integration agrees. | +| Pure-H growth, efficiency 0.10 | 827.078411 Myr | Conditional shortfall confirmed. | +| Primordial ionized opacity, efficiency 0.10 | 725.761306 Myr | Required duty 0.988641. | +| Pure-H, fixed Schwarzschild efficiency | 451.536466 Myr | Required duty 0.615089. | +| Virial radius of the quoted total halo mass | 191.823941 pc | Confirms the halo interpretation. | +| Virial compactness | 4.186916e-11 | The stated virial configuration is not a black hole. | +| Neutral-gas virial temperature | 139.043 K | Does not establish atomic-cooling direct collapse. | + +The low-efficiency and opacity calculations invalidate a universal time-budget exclusion under the broader allowed assumptions. They do not establish a successful accretion history. Fixed Schwarzschild efficiency over many growth e-folds requires a spin-evolution assumption. Coherent prograde accretion need not preserve it. Near-unity duty leaves little room for delayed seeding or interruptions. + +The reports retain those limitations. The current observed Eddington ratio also cannot serve as an observed lifetime average. The quasar paper favors a physical pair while retaining a lensing alternative, so a binary interpretation remains conditional. [Onorato et al., sections III.1 and III.3](https://arxiv.org/html/2609.31835v1). + +The MOND infall correction passes a different integration method. For the implemented force, put y=r/r0 and b=sqrt(gN(r0)/a0). Its dimensionless inward acceleration is + +```text +F(y) = (1+extra)/y² + 1/[y² (exp(b/y)-1)]. +``` + +The energy acquired from rest is + +```text +U(y) = (1+extra)(1/y-1) + + {log[1-exp(-b/y)] - log[1-exp(-b)]}/b. +``` + +Integrating dy/sqrt(2U), with y=1-u² to remove the starting-point singularity, gives 384.823182 Myr for Newtonian baryons and 200.075138, 121.716677 and 127.156205 Myr for the three reported modified-force cases. These agree with the author's radial ODE solution. + +This proves that substituting only the outer acceleration into the Newtonian fall-time coefficient is not exact for the implemented force. Both calculations remain static, radial point-mass models. They do not establish filamentary gas delivery, angular-momentum loss, a self-consistent MOND environment or seed formation. + +The chirp-mass integer bounds also check independently. The erroneous middle expression is 540,000,000,000,000. The corrected expression is 2,160,000,000,000,000, between the stated lower and upper bounds. This review confirms that algebra, not the later proof-fix branch or its CI. The coordinator separately reviewed that branch. + +**A stronger future-expansion counterexample** + +The proposed continuation matches the past CPL function and its first derivative at a=1. For a>1, it has + +```text +1+w(a) = [0.25+1.10(a-1)] exp[-(a-1)] > 0. +``` + +Its density decreases to a strictly positive limit. The integral can be evaluated directly using the exponential integral E1: + +```text +I = integral_1^infinity [(1+w(a))/a] da + = 1.10 - 0.85 e E1(1) + = 0.5931047420252846. +rho_DE(infinity)/rho_DE(1) = exp(-3I) = 0.16875383457574408. +``` + +For every a>=1, the matter term is nonnegative, this dark-energy density is at least its limiting value, and -0.004/a² is at least -0.004. Consequently the source normalization gives + +```text +H²/H0² >= Omega_L exp(-3I) - 0.004 = 0.11156556028863915 > 0. +``` + +Renormalizing Omega_L to include the stated curvature raises the bound to 0.11224057562694213. This proves absence of a future turnaround for this continuation without relying on a finite numerical grid. It is a non-identifiability counterexample, not a forecast that this alternative equation of state occurs. + +**Mechanics: independent symbolic and numerical checks** + +Starting from the six motif vertices and fifteen bar vectors, a symbolic solution of force balance with bridge tensions (1,-1,-1) reproduces all twelve internal tensions in the derivation. It gives + +```text +N = 11a²/4 + 3t² + 3, +det(xI+tC) = (x+t)(x²-xt+2t²). +``` + +The bridge constraints on the octahedron's rotation kernel have rank two. The selected three added-spring rotation rows have determinant two. These confirm the ideal rank change and the removal of the open-state internal rotation kernel by positive added stiffness. + +An independent endpoint-contact search over a larger translation box finds the same 36 contacts, including 21 additions. A separate calculation fixes one vertex's translation gauge and uses a full QR projection to eliminate internal motion. It reproduces the quoted weak-spring eigenvalues and limit paths without using the author's singular-value projection. + +The Frobenius distance between the two limiting tensors is 0.21318848803387838. At s=1e-4, eta=s gives distance 0.0002406344 to the open tensor. Eta=s^4 instead gives distance 0.0000413491 to the folded limiting tensor. The noncommuting limits are supported both by the stated rank argument and the independent projection. + +The conclusions require the report's declared scope. Each added spring's rest length is reset at each reference fold. This compares a family of unstressed models. It is not one fixed material transported along its fold. The positive homogeneous moduli do not prove nonlinear stability, boundary stability or stability at every nonzero wavevector. + +The fifteen-row compatibility matrix leaves at least three zero modes per wavevector in the original eighteen-coordinate model. The sampled reciprocal grid cannot exclude unsampled singular wavevectors. The report preserves these limits. The growing internal relaxation near s=0 also requires infinitesimal strain before the small-fold limit. + +Further research is justified only as a geometry-specific response problem with a chosen physical weak interaction and applied load. Rank-one elasticity itself is not a new universality class. Historical priority of this exact fold formula remains unresolved. + +**Photon comparison** + +The author's complete `--check` replay passes. An independent calculation also averages the angular kernel over relative azimuth and integrates the resulting polynomial exactly for aligned caps. It reproduces the four quoted receptivities and decoherence-rate ratios, including alpha=0.88671875 for a hemisphere and alpha=0 for isotropic illumination. + +The primary paper defines the ratio used in equations 21 and 27, and its equation 5 concerns squared coherence. Therefore the report's factor-of-two distinction for amplitude decay is correct. Its warning that an asymptotic redundancy parameter is not a detector bit count is also necessary. [Riedel and Zurek](https://arxiv.org/html/1102.3179v2). + +This is a reimplementation and a useful project interpretation correction. It does not establish a new photon-information law. Detector aperture, access restrictions and a measured angular field would require a different specified experiment. + +**Reviewed artifact hashes** + +Paths are relative to `coordination/value-assessment-20261112`. These identify the versions reviewed. A later publisher edit needs a final hash and content check before the two findings above can be marked resolved. + +| Artifact | SHA-256 | +|---|---| +| wave12/research.md | 40ef0b35838a93b0faa83c5723f748e1edba0018c660712f559f5060638a2cc5 | +| wave12/probe.py | d5045f63124d78d3ae4387f67f3adcdfdf8574957623f65bae046999dcb70f96 | +| wave12/evidence.json | ea42c793f43dcb5f475794212459c1f55c6fc3d5e6e3ec913e31122632398f3d | +| wave12/sources.json | 9a380924d8c9e64a174f86077f65609106e61389cb112ded1672814e83fa7de3 | +| convergences/research.md | c26788bb39b07ac6bc426b5a8ddee725dd7ae8c27e6a390f3a22c5464228f239 | +| convergences/derivation.md | d722d7ea613e35a1adc2f8fd05cc0d3ea7120b3f5e86c19c46e71528e9db4d63 | +| convergences/probe.py | dbe5bb373376bffdbfa1f7c63ee57eea7d8b524620f7cd3e221f03760594f372 | +| convergences/evidence.json | 67e764c24c8176811478c615be497c3c7dd0a6654fd94166e9652b2a0d1afc66 | +| convergences/sources.json | 0d058f74cfd0d286fa0039ca524adec08bb182662637bfec4f27126d31a2a8fa | + +Not independently established here: empirical galaxy-scaling identifiability, the full source-paper halo mass function, nonlinear gravitational collapse, real-material response, exhaustive literature priority, or the publication branch's final CI state. These limits do not undermine the conditional checks above. diff --git a/research/value-assessment-20261112/closure/independent_checks.py b/research/value-assessment-20261112/closure/independent_checks.py new file mode 100644 index 0000000..6dc9c6a --- /dev/null +++ b/research/value-assessment-20261112/closure/independent_checks.py @@ -0,0 +1,167 @@ +"""Independent review calculations. Does not import or edit author probes.""" +from pathlib import Path +import hashlib +import itertools +import json +import math + +import numpy as np +from scipy.integrate import quad +from scipy.linalg import qr +from scipy.special import exp1 +import sympy as sp + +ROOT=Path(__file__).resolve().parents[1] +OUT=Path(__file__).resolve().parent + + +def astrophysics(): + G=6.67430e-11; c=299792458.; mp=1.67262192369e-27 + sigmaT=6.6524587321e-29; Msun=1.98847e30; Mpc=3.085677581491367e22 + Myr=1e6*365.25*86400.; h=.6736; H0=100*h*1000/Mpc + om=(.02237+.1200+.00064)/h**2; ob=.02237/h**2; oc=.1200/h**2 + rad=9.236e-5; lam=1-om-rad; z=6.0783 + E=lambda a:math.sqrt(rad/a**4+om/a**3+lam) + window=quad(lambda a:1/(a*E(a)),1/21,1/(1+z),epsabs=1e-13)[0]/H0/Myr + tE=sigmaT*c/(4*math.pi*G*mp)/Myr + growth=[] + for eps,opacity in [(.1,1),(.1,1-.245/2),(1-math.sqrt(8/9),1)]: + t=tE*opacity*eps/(1-eps)*math.log(1.5e9/100) + growth.append({'efficiency':eps,'opacity_factor':opacity,'time_Myr':t,'duty':t/window}) + mass=83913.9617*Msun + Hz=H0*E(1/(1+z)); rhoCrit=3*Hz**2/(8*math.pi*G) + rvir=(3*mass/(4*math.pi*200*rhoCrit))**(1/3) + halo={'radius_pc':rvir/(Mpc/1e6),'compactness':2*G*mass/(rvir*c*c), + 'baryon_budget_Msun':mass/Msun*ob/om,'temperature_K':1.22*mp*G*mass/(2*rvir*1.380649e-23)} + r0=30*Mpc/1000; mb=5e10*Msun; g0=G*mb/r0**2 + timeunit=math.sqrt(r0/g0)/Myr + ftrap=1-(.969924/(250/math.sqrt(2)))**2 + times=[] + # Independent energy integral using an analytic antiderivative of the + # source's RAR force, rather than solving the author's radial ODE. + for name,a0,extra in [('Newton',None,0),('MOND_const',1.2e-10,0), + ('MOND_H',c*Hz/(2*math.pi),0),('two_branch',1.2e-10,oc/ob*ftrap)]: + b=math.sqrt(g0/a0) if a0 else None + def energy(y): + newton=(1+extra)*(1/y-1) + if b is None:return newton + return newton+(math.log(-math.expm1(-b/y))-math.log(-math.expm1(-b)))/b + def f(u): + if u==0: + outer=(1+extra) if b is None else (1+extra)+1/math.expm1(b) + return math.sqrt(2/outer) + if u==1:return 0 + return 2*u/math.sqrt(2*energy(1-u*u)) + value,error=quad(f,0,1,epsabs=1e-11,epsrel=1e-11) + times.append({'case':name,'time_Myr':value*timeunit,'quadrature_error_Myr':error*timeunit}) + integral=1.1-.85*math.e*float(exp1(1)) + rhoinf=math.exp(-3*integral) + # w+1>0, so rho_DE(a)>=rhoinf for a>=1. The matter term is positive, + # and curvature -0.004/a^2 >= -0.004. This is an all-future bound. + future={'integral_1_to_infinity':integral,'rho_DE_limit':rhoinf, + 'strict_H2_lower_bound_all_a_ge_1':(1-om)*rhoinf-.004, + 'renormalized_curvature_H2_lower_bound':(1-om+.004)*rhoinf-.004} + return {'age_window_Myr':window,'growth':growth,'halo':halo,'infall':times,'future':future, + 'chirp':{'lower':19*647**5,'incorrect':15**3*4**2*10**10, + 'correct':15**3*4**3*10**10,'upper':19*648**5}} + + +def mechanical_symbolic(): + a,t,x=sp.symbols('a t x',real=True) + eye=sp.eye(3); C=sp.Matrix([[0,-1,-1],[1,0,-1],[1,-1,0]]) + points=[sign*eye[:,axis] for axis in range(3) for sign in (1,-1)] + edges=[(i,j) for i in range(6) for j in range(i+1,6) if i//2!=j//2] + R=sp.zeros(15,18) + L=(a+2)*eye+t*C; D=a*eye+t*C + for n,(i,j) in enumerate(edges+[(0,1),(2,3),(4,5)]): + v=points[j]-points[i] + if n>=12:v+=L[n-12,:].T + for k in range(3):R[n,3*i+k]=-v[k];R[n,3*j+k]=v[k] + unknown=sp.symbols('w:12') + w=sp.Matrix([*unknown,1,-1,-1]) + solution=sp.solve(list(R.T*w),unknown,dict=True) + assert len(solution)==1 + w=w.subs(solution[0]) + assert R.T*w==sp.zeros(18,1) + N=sp.expand((w.T*w)[0]) + assert sp.simplify(N-(11*a*a+12*t*t+12)/4)==0 + T=sp.diag(1,-1,-1) + M=D.T*T*L/sp.sqrt(2) + assert sp.simplify(M-M.T)==sp.zeros(3) + det=sp.factor((x*eye+t*C).det()) + assert sp.expand(det-(x+t)*(x*x-x*t+2*t*t))==0 + rotation=sp.Matrix([[0,1,-1],[-1,0,-1],[1,1,0]]) + torque=sp.Matrix([[0,2,-2],[0,0,-1],[-1,1,-1]]) + assert rotation.rank()==2 and torque.det()==2 + return {'derived_internal_tensions':[str(y) for y in w[:12]],'norm_squared':str(N), + 'determinant':str(det),'bridge_rotation_rank':rotation.rank(), + 'added_rotation_minor_determinant':int(torque.det())} + + +def mechanical_numeric(): + p=np.vstack([sign*np.eye(3)[i] for i in range(3) for sign in (1,-1)]) + C=np.array([[0,-1,-1],[1,0,-1],[1,-1,0]]) + def cell(s):return (2+math.sqrt(2)*(1-s*s)/(1+s*s))*np.eye(3)+2*s/(1+s*s)*C + base=[(i,j,(0,0,0)) for i in range(6) for j in range(i+1,6) if i//2!=j//2] + base += [(2*i,2*i+1,tuple(np.eye(3,dtype=int)[i])) for i in range(3)] + canon=lambda edge:min(edge,(edge[1],edge[0],tuple(-x for x in edge[2]))) + contacts=set() + for i,j,n in itertools.product(range(6),range(6),itertools.product(range(-3,4),repeat=3)): + v=p[j]-p[i]+np.array(n)@cell(1) + if v@v==2:contacts.add(canon((i,j,n))) + extra=sorted(contacts-{canon(b) for b in base}) + assert len(extra)==21 + basis=[np.diag(np.eye(3)[i]) for i in range(3)] + for i,j in [(1,2),(0,2),(0,1)]: + E=np.zeros((3,3));E[i,j]=E[j,i]=1/math.sqrt(2);basis.append(E) + def elasticity(s,eta): + R=[];B=[] + for k,(i,j,n) in enumerate(base+extra): + v=p[j]-p[i]+np.array(n)@cell(s);d=v/np.linalg.norm(v) + r=np.zeros(18);r[3*i:3*i+3]=-d;r[3*j:3*j+3]+=d + weight=1 if k<15 else math.sqrt(eta) + R.append(r[:15]*weight) # Fix vertex 5 translation gauge. + B.append([d@E@v*weight for E in basis]) + Q,_=qr(np.array(R),mode='full') + projected=Q[:,15:].T@np.array(B) + return projected.T@projected/np.linalg.det(cell(s)) + L0=2+math.sqrt(2);Kopen=np.zeros((6,6));Kopen[:3,:3]=(3*np.eye(3)+np.ones((3,3)))/(9*L0) + v=np.array([1,-1,-1,0,0,0]);Kfold=2*np.outer(v,v)/(17*L0) + rows=[] + for s,eta in [(0,1e-6),(.01,1e-8),(.01,1e-6),(.01,1e-4),(1,1e-6),(1e-4,1e-4),(1e-4,1e-16)]: + K=elasticity(s,eta) + rows.append({'s':s,'eta':eta,'eigenvalues':np.linalg.eigvalsh(K).tolist(), + 'distance_to_open':float(np.linalg.norm(K-Kopen)), + 'distance_to_fold':float(np.linalg.norm(K-Kfold))}) + return {'endpoint_contact_count':len(contacts),'added_count':len(extra), + 'method':'Independent enlarged contact search, translation gauge, full QR energy projection', + 'limit_distance':float(np.linalg.norm(Kopen-Kfold)),'rows':rows} + + +def photons(): + u,v,b=sp.symbols('u v b',real=True) + # Average over the relative azimuth analytically before integration. + kernel=(1+u*u*v*v+(1-u*u)*(1-v*v)/2)*(u-v)**2 + den=sp.integrate(kernel,(v,-1,1),(u,b,1)) + num=sp.integrate(kernel,(v,-1,b),(u,b,1)) + alpha=sp.factor(num/den) + rows=[] + for f in [sp.Rational(1,4),sp.Rational(1,2),sp.Rational(99,100),sp.Integer(1)]: + low=1-2*f + rows.append({'sky_fraction':float(f),'alpha':float(alpha.subs(b,low)), + 'decoherence_rate_relative':float((den/den.subs(b,-1)).subs(b,low))}) + return {'alpha_aligned_cap_exact_polynomial_ratio':str(alpha),'rows':rows} + + +def main(): + files=['wave12/research.md','wave12/probe.py','wave12/evidence.json','wave12/sources.json', + 'convergences/research.md','convergences/derivation.md','convergences/probe.py', + 'convergences/evidence.json','convergences/sources.json'] + result={'artifact_sha256':{f:hashlib.sha256((ROOT/f).read_bytes()).hexdigest() for f in files}, + 'astrophysics':astrophysics(),'symbolic_mechanics':mechanical_symbolic(), + 'independent_QR_mechanics':mechanical_numeric(),'symbolic_photon_caps':photons()} + (OUT/'independent-checks.json').write_text(json.dumps(result,indent=2)+'\n') + print(json.dumps(result,indent=2)) + + +if __name__=='__main__':main() diff --git a/research/value-assessment-20261112/closure/research.md b/research/value-assessment-20261112/closure/research.md new file mode 100644 index 0000000..67c8ea2 --- /dev/null +++ b/research/value-assessment-20261112/closure/research.md @@ -0,0 +1,194 @@ +# Caustic stress: the remaining research value + +**Decision: pursue a finite AeST action, constraint and response test. Park the proposed three-dimensional collapse calculation until that test passes. Reject the inference that caustic smoothing plus a rising pressure proxy establishes a thermal dark fluid or a universal 185 km/s floor.** + +Prepared on 12 November 2026 by gpt-forge, research model gpt-6-astra, requested reasoning effort ultra. This note assesses the read-only gravity snapshot `70a1204a536b3dca0b3053d1a056daf22601ac00`. It also reads the earlier issue-5 report and reviewed analytic checks in the verified publication snapshot `02013ae95fa5913894b829c8e2e63a3efcde9e63`. The source snapshots were not edited during the assessment. + +The useful question is whether the stress left by collapse becomes predictable from a small set of large-scale variables. Stress is the momentum transported by unresolved motions and field gradients. A positive stress can exist without a temperature, an equilibrium equation of state, or efficient thermalization. + +The new calculation below starts with cold infall and follows it through an actual caustic in a controlled reference problem. It tests a proposed discriminator. It does not evolve AeST. + +**What the literature already supplies** + +The original AeST paper explicitly states that its linear effective-fluid variables do not close: pressure depends on additional vector perturbations. Its Minkowski scalar spectrum includes a zero-frequency branch and a propagating branch. The latter has an oscillation frequency, not an established relaxation rate. + +Thus a large mode frequency alone does not imply that initial excitation has been forgotten. [Skordis and Zlosnik, equations 7–12 and Stability and waves](https://arxiv.org/html/2007.00082v3). + +The full Hamiltonian treatment provides six physical degrees of freedom and the constraint system for the published action. It is a starting point for constructing physical initial states. An added higher-derivative operator needs a new analysis. [Bataki, Skordis and Zlosnik](https://arxiv.org/html/2307.15126v3). + +Two primary results change the value assessment. Babichev and Ramazanov show a classical complex-field completion of pressureless flow and suitable k-essence models, with restricted initial data. They distinguish this construction from a quantum ultraviolet completion. + +Mocz and colleagues study the Schrödinger–Poisson correspondence with collisionless Vlasov–Poisson dynamics, including caustics and multistreaming. These results already establish that a field may smooth a caustic and still carry collisionless-like stress. + +Neither is an AeST completion. [Babichev and Ramazanov, sections 2–3](https://arxiv.org/html/1704.03367v3), [Mocz et al., sections II–IV](https://arxiv.org/html/1801.03507v2). + +Anisotropic stress and its relation to collapse history are also established in cosmological collisionless simulations. Merely recovering them would be a benchmark reproduction. [Buehlmann and Hahn](https://arxiv.org/abs/1812.07489). + +The 2025 connection between AeST and mimetic formulations provides alternate variables and constraints under stated conditions. Its conclusion leaves the caustic question open. It does not supply a healthy regularizer, an entropy law, or a nonlinear collapse solution. [Domènech and Ganz, section VI](https://arxiv.org/html/2503.11174v1). + +The remaining incremental opportunity is therefore **an AeST-specific, quantitatively controlled response law and its domain of validity**. A general claim that coarse fields can develop stress would add little to existing work. + +**A cold-collapse control that the proposed entropy diagnostic can misclassify** + +The reproducible [probe](caustic_control.py) uses a free complex field on a periodic interval of length \(2\pi\): + +\[ +i\epsilon\partial_t\psi=-\frac{\epsilon^2}{2}\partial_x^2\psi, +\qquad \psi(x,0)=\exp[i\cos x/\epsilon]. +\] + +Here \(\epsilon\) is a fixed physical dispersion parameter in dimensionless units. The density is initially one and the phase velocity is \(v=-\sin x\). There is no gravity, collision term, nonlinear wave interaction, bath or continuing drive. The reference cold particles obey + +\[ +x(q,t)=q-t\sin q,\qquad v(q,t)=-\sin q, +\] + +with uniform mass per label \(q\). Their Jacobian is \(1-t\cos q\), so the first caustic occurs at \(t=1\). The particle distribution remains a well-defined multistream measure after that time. This ballistic map is not a nonlinear gravitational solution or an AeST approximation derived from its action. + +The wave evolution is exact for every represented Fourier mode: + +\[ +\widehat\psi_k(t)=\widehat\psi_k(0) +\exp[-i\epsilon k^2t/2]. +\] + +No time-stepping algorithm or numerical viscosity is used. The field is smooth across the reference caustic. The momentum density and momentum flux follow directly from its equation: + +\[ +\rho=|\psi|^2,\qquad +j=\epsilon\operatorname{Im}(\psi^*\psi_x),\qquad +T=\epsilon^2|\psi_x|^2-\frac{\epsilon^2}{4}\rho_{xx}, +\] + +\[ +\rho_t+j_x=0,\qquad j_t+T_x=0. +\] + +For a periodic Gaussian filter with Fourier multiplier \(e^{-\ell^2k^2/2}\), measure + +\[ +\bar\rho=W_\ell*\rho,\quad \bar j=W_\ell*j,\quad +\tau_{xx}=W_\ell*T-\bar j^2/\bar\rho. +\] + +The filtered flux includes the field-gradient contribution. Replacing it with velocity variance alone would be a different diagnostic. In this planar calculation \(\tau_{xx}\) is longitudinal stress, not an isotropic three-dimensional pressure. Define \(K_{5/3}=\tau_{xx}/\bar\rho^{5/3}\) only to test the proposed proxy. No first law or adiabatic index has been derived for it. + +For \(\epsilon=0.02\), \(\ell=0.2\), at the symmetry center: + +| Time | Filtered density | Longitudinal stress | \(K_{5/3}\) proxy | +|---:|---:|---:|---:| +| 0 | 1.000000 | 0.038442 | 0.038442 | +| 0.9 | 3.843709 | 1.119290 | 0.118675 | +| 1.5 | 4.790675 | 2.658210 | 0.195252 | +| 3 | 1.185239 | 0.401579 | 0.302525 | +| 6 | 0.514422 | 0.063302 | 0.191669 | + +The proxy rises by 5.08 times from the initial state to \(t=1.5\). It already rises before the caustic. Its initial nonzero value comes from averaging an orderly velocity gradient over a finite spatial window. The initial microscopic flow is cold. Every Fourier occupation \(|\widehat\psi_k|^2\) is constant throughout this experiment. + +There is no scattering between these modes and no relaxation to a thermal momentum distribution. The mode momentum distribution has variance 1/2 and fourth moment \(3/8+\epsilon^2/2\), also checked numerically. At \(\epsilon=0.02\), its kurtosis is 1.5008 throughout, compared with 3 for a Gaussian. This does not identify the field with a classical thermal gas. + +Complex conjugation at \(t=1.5\), followed by evolution for another 1.5 time units, recovers the conjugated initial field to a relative error below \(5.5\times10^{-16}\). Conjugating once more returns the original state. Mean mass is 1 and mean energy is 0.25, conserved within \(2\times10^{-12}\). Mean momentum vanishes at the same tolerance. + +The maximum relative residuals of the local mass and momentum balances are \(2.4\times10^{-12}\) and \(6.2\times10^{-10}\). The latter differentiates a flux and is more sensitive to floating-point error. All checks pass. + +Time reversibility alone does not refute thermodynamics: interacting Hamiltonian systems can also have useful irreversible coarse descriptions. The decisive facts here are the noninteracting generator, its conserved mode occupations, and the collisionless reference comparison. The reversal checks that the displayed proxy increase was not caused by dissipative numerics. + +Periodicity also precludes interpreting retained box energy as retention in an isolated halo. The exact recurrence at \(4\pi/\epsilon\) is a property of this control, not a prediction about astrophysical systems. + +**Resolution, dispersion and filter controls** + +At fixed physical \(\epsilon=0.01\), \(\ell=0.2\), doubling the grid from 2,048 to 4,096 points changes the sampled filtered density, current and stress by at most \(1.8\times10^{-15}\). The fraction of field norm above one quarter of the grid size in Fourier wave number is below \(7\times10^{-29}\). Spatial resolution is varied independently of the physical dispersion. + +The classical Fourier density coefficients are \(\rho_m(t)=J_m(mt)\). For \(m>0\), current and second-moment coefficients are \(iJ'_m(mt)\) and \(-J''_m(mt)\). Their zero modes are 0 and 1/2. These formulas follow by integrating the exact particle map over \(q\). The script independently checks their filtered central moments against direct Lagrangian quadrature. + +At \(t=1.5\), \(\ell=0.2\), reducing dispersion gives: + +| \(\epsilon\) | Relative density error against classical moments | Relative stress error against classical moments | +|---:|---:|---:| +| 0.08 | 4.9750% | 4.5935% | +| 0.04 | 1.2264% | 1.4111% | +| 0.02 | 0.3040% | 0.3721% | +| 0.01 | 0.0758% | 0.0943% | + +These are spatial \(L^2\) errors after the same filter. They establish convergence for this test and these parameters, not a general convergence theorem. Repeating with \(\ell=0.1,0.2,0.4\) is recorded in [results.json](results.json). At \(\epsilon=0.02\), the central stress is 2.47052, 2.65821 and 2.00613 respectively. The corresponding proxies are 0.195324, 0.195252 and 0.254133. + +A near match at two filter choices is therefore not evidence of a universal thermodynamic state variable. + +**What the control says about closure** + +Use three regular cold initial sheets, + +\[ +x_i(q)=q-D_i\sin q,\qquad v_i(q)=-a\sin q, +\] + +with \((a,D_i)=(0.75,0.75),(1,0.5),(1.5,0)\). Their initial Jacobians are positive. At the same time \(t=1\), all have the identical position map \(x=q-1.5\sin q\) and therefore the same entire density profile. At the symmetry center, all have zero mean velocity. Their stresses differ because the infall speeds differ: + +| \(a\) | First caustic time | Central filtered density | Central mean velocity | Central stress at \(t=1\) | +|---:|---:|---:|---:|---:| +| 0.75 | 1/3 | 4.772108 | 0 | 1.491776 | +| 1.00 | 1/2 | 4.772108 | 0 | 2.652046 | +| 1.50 | 2/3 | 4.772108 | 0 | 5.967103 | + +This is a fourfold stress range at equal local density, velocity, time and filter. It excludes a universal stress function of only those quantities for this ensemble. It does not exclude a closure that retains energy, velocity gradients or additional moments. The full velocity profiles of these preparations differ away from the center. The example does not claim otherwise. + +Embedded in three spatial dimensions with no transverse motion, the classical stress eigenvalues are \((\tau_{xx},0,0)\). Its traceless part has Frobenius norm \(\sqrt{2/3}\operatorname{tr}\tau\). This is strong anisotropy, which an isotropic pressure would discard. Transverse dynamics in a different interacting theory could change that result. + +Even retaining pressure need not suffice. The conserved velocity marginal generated by the uniform cold sine preparation is the arcsine distribution + +\[ +g(v)=\frac{1}{\pi\sqrt{1-v^2}},\qquad |v|<1. +\] + +It has variance 1/2 and fourth moment 3/8. A Gaussian with the same variance has fourth moment 3/4. As a separate response control, prepare spatially homogeneous versions of each marginal, multiply by \(1+\eta\cos kx\), and evolve by free streaming. The normalized density responses are \(J_0(kt)\) and \(e^{-(kt)^2/4}\). At \(kt=2.40482556\), one is zero and the other is 0.235558. + +These responses concern deliberately prepared homogeneous kinetic states. They are not a claim that the finite-time wave solution has exactly become homogeneous, nor a simulation of a perturbation applied to AeST. + +The calculation verifies a necessary diagnostic distinction. Its mathematics and physical mechanism are established. Its project value is preventing a false positive in issue #5 and supplying a cheap regression case. + +**The finite AeST gate** + +The earlier reviewed compensated linear construction remains conditional on a full canonical initial-data check. This pass did not complete that map or run an interacting AeST model. Failure of the proxy above does not prove that AeST cannot form an approximate pressure closure. It shows that the proposed evidence would not establish one. + +| Step | Deliverable and dependencies | Pass criterion | Stop or change criterion | +|---|---|---|---| +| 1. Choose one physical branch | Full \(\mathcal F(\mathcal Y,\mathcal Q)\), constants, matter sector, background, units and parameter provenance. Start with the published action before adding a regulator. Requires a theory choice, not a large codebase. | Every coefficient and derivative needed by the linear equations is fixed, and the background solves those equations. | If several inequivalent choices remain hidden under “AeST,” park the collapse task. An arbitrary convenient choice only tests that declared model. | +| 2. Construct physical states | Gauge-fixed linear state, canonical map, all constraints, and the earlier compensated pair. Needs symbolic algebra, the published Hamiltonian equations, and independent review. | Both states satisfy the linearized constraints at the retained order. Their stress difference is gauge independent and changes an observable response. | If the pair is gauge or inadmissible, withdraw it. Recompute whether any allowed hidden mode affects retained observables. | +| 3. Measure response | A small ODE solver for each Fourier mode, a wave-number grid, growing-mode and permitted extra-mode preparations. Measure density/current/stress transfer functions. No three-dimensional mesh is required. | A declared set of retained variables predicts held-out preparations over the intended scale and time interval within a tolerance chosen before fitting. Report the error of a two-variable closure and the improvement from adding the relevant mode. | Persistent preparation dependence requires an extra state variable or memory kernel. An unstable selected branch or invalid approximation stops that branch. | +| 4. Decide on collapse | Full action-derived stress and energy flux, intended cutoff and candidate regulator, with a controlled parameter range. | There is a credible interval between resolved physical dispersive scales and the effective-theory cutoff, and an explicit observable that distinguishes competing outcomes. | If omitted operators become important before or at the caustic, the continuation is completion dependent. Do not label it an AeST prediction or launch a three-dimensional production study. | + +For a concrete internal acceptance target, use a 5% normalized response error over the declared domain, with numerical error at least ten times smaller. These numbers are prospective project tolerances, not laws of nature or observational constraints. Pressure errors alone are insufficient if density or lensing-related metric responses are inaccurate. + +The allowed initial-mode amplitudes also require a physical preparation argument. Unrestricted large excitations could make any restricted approximation fail by construction. + +One can expose the issue without guessing a pressure formula. After fixing constraints, split the linear physical state into retained variables \(x\) and omitted variables \(y\): + +\[ +\dot x=A_{xx}x+A_{xy}y,\qquad +\dot y=A_{yx}x+A_{yy}y. +\] + +For constant coefficients, eliminating \(y\) gives + +\[ +\dot x(t)=A_{xx}x(t)+A_{xy}e^{A_{yy}t}y(0) ++\int_0^t A_{xy}e^{A_{yy}(t-s)}A_{yx}x(s)\,ds. +\] + +The second term preserves initial preparation and the integral preserves prior evolution. In an expanding background, the exponential becomes the appropriate propagator between two times. A local approximation is earned by showing that these terms are negligible or compressible into specified extra variables over the domain of interest. + +Oscillation averaging, expansion damping and nonlinear scattering are different possible reasons. The calculation must identify which one is operating. + +A reasonable first allocation is two focused theory sessions for the action and constraint specification, followed by one implementation and one independent-review session for the linear response. This is a scope estimate, not a completion promise. Required software is symbolic algebra plus a small numerical ODE implementation. + +Required expertise is the AeST canonical reduction and its cosmological perturbations. No new observational dataset, GPU cluster or general relativity simulation framework is needed for this gate. If the first two sessions do not yield a reviewable fixed branch and constraint map, retain the open question and stop spending on simulation infrastructure. + +Only a passing gate would justify a small nonlinear experiment. Its target should be a measured stress response and lifetime after infall, with energy export and transverse effects checked in stages. Selecting a universal velocity scale requires a cosmological population calculation after that. It cannot be inferred from one periodic pancake, and the present control selects no velocity in km/s. + +**Extra-dimensional interpretation** + +Park this route within the current project. Five-dimensional braneworld black holes already have explicit constructions whose low-curvature brane limit reproduces four-dimensional general relativity. Their existence is not evidence that ordinary redshift or a horizon requires an extra dimension. [Figueras and Wiseman](https://arxiv.org/abs/1105.2558). + +Reopen only for a specified action, geometry, boundary conditions and a calculated observable that differs from an adequate four-dimensional baseline. A dimensional reinterpretation without that difference supplies no falsifiable incremental target. This is a judgment about the formulation and research value, not a general exclusion of extra dimensions. + +All new numerical evidence is in [results.json](results.json). Source scope and limitations are in [sources.json](sources.json). The probe is a validated diagnostic control. The AeST response gate remains proposed work. diff --git a/research/value-assessment-20261112/closure/results.json b/research/value-assessment-20261112/closure/results.json new file mode 100644 index 0000000..a349664 --- /dev/null +++ b/research/value-assessment-20261112/closure/results.json @@ -0,0 +1,587 @@ +{ + "scope": "Exact free Schrodinger and collisionless caustic controls. NOT AeST; no gravity, collisions or interacting-wave thermalization.", + "equations": { + "wave": "i eps psi_t = -eps^2 psi_xx/2", + "initial": "psi(x,0)=exp(i cos(x)/eps), x on [0,2pi)", + "kinetic": "x(q,t)=q-t sin(q), v=-sin(q), uniform q", + "first_classical_caustic_time": 1, + "wave_momentum_flux": "eps^2 |psi_x|^2 - eps^2 rho_xx/4", + "coarse_stress": "GaussianFilter(momentum_flux)-GaussianFilter(j)^2/GaussianFilter(rho)" + }, + "environment": { + "python": "3.14.6", + "numpy": "2.5.4", + "scipy": "1.18.1" + }, + "convergence": [ + { + "eps": 0.08, + "ell": 0.1, + "t": 1.5, + "central": { + "density": 6.801780954909236, + "mean_velocity": -3.635302483675793e-16, + "stress": 3.1432397797491625, + "stress_over_density": 0.4621201124509171, + "K_5_over_3_proxy": 0.12872802588873716 + }, + "density_relative_L2_error_vs_collisionless": 0.23760216139529852, + "stress_relative_L2_error_vs_collisionless": 0.21655426264612257, + "classical_central_density": 4.614511611463204, + "classical_central_stress": 2.472895766974232 + }, + { + "eps": 0.04, + "ell": 0.1, + "t": 1.5, + "central": { + "density": 4.49855383564312, + "mean_velocity": -6.356240013786649e-16, + "stress": 2.5290890406890485, + "stress_over_density": 0.5622004611016256, + "K_5_over_3_proxy": 0.206304760438973 + }, + "density_relative_L2_error_vs_collisionless": 0.06564568971209125, + "stress_relative_L2_error_vs_collisionless": 0.06493822363742678, + "classical_central_density": 4.614511611463204, + "classical_central_stress": 2.472895766974232 + }, + { + "eps": 0.02, + "ell": 0.1, + "t": 1.5, + "central": { + "density": 4.583740069933028, + "mean_velocity": -7.515922895958718e-16, + "stress": 2.47052032630207, + "stress_over_density": 0.5389747866610958, + "K_5_over_3_proxy": 0.19532378337238593 + }, + "density_relative_L2_error_vs_collisionless": 0.018224567933264733, + "stress_relative_L2_error_vs_collisionless": 0.021466714184463002, + "classical_central_density": 4.614511611463204, + "classical_central_stress": 2.472895766974232 + }, + { + "eps": 0.01, + "ell": 0.1, + "t": 1.5, + "central": { + "density": 4.60847236665815, + "mean_velocity": -5.312540469742985e-16, + "stress": 2.472514308655823, + "stress_over_density": 0.5365149472402664, + "K_5_over_3_proxy": 0.1937360767066503 + }, + "density_relative_L2_error_vs_collisionless": 0.004589328793627462, + "stress_relative_L2_error_vs_collisionless": 0.005921548334615017, + "classical_central_density": 4.614511611463204, + "classical_central_stress": 2.472895766974232 + }, + { + "eps": 0.08, + "ell": 0.2, + "t": 1.5, + "central": { + "density": 5.116809580614984, + "mean_velocity": -1.7377558447657535e-16, + "stress": 2.7169550685696118, + "stress_over_density": 0.5309861595910833, + "K_5_over_3_proxy": 0.17882038722349786 + }, + "density_relative_L2_error_vs_collisionless": 0.049750398710495386, + "stress_relative_L2_error_vs_collisionless": 0.04593455529575715, + "classical_central_density": 4.772107863668246, + "classical_central_stress": 2.652045918129872 + }, + { + "eps": 0.04, + "ell": 0.2, + "t": 1.5, + "central": { + "density": 4.8499198042205425, + "mean_velocity": -3.421320224767065e-16, + "stress": 2.6759646111363296, + "stress_over_density": 0.5517544040228514, + "K_5_over_3_proxy": 0.19257035753160504 + }, + "density_relative_L2_error_vs_collisionless": 0.012263782571841799, + "stress_relative_L2_error_vs_collisionless": 0.014110630465660032, + "classical_central_density": 4.772107863668246, + "classical_central_stress": 2.652045918129872 + }, + { + "eps": 0.02, + "ell": 0.2, + "t": 1.5, + "central": { + "density": 4.790675110494954, + "mean_velocity": -3.3179619403212396e-16, + "stress": 2.6582099863246462, + "stress_over_density": 0.554871688230599, + "K_5_over_3_proxy": 0.19525166818937345 + }, + "density_relative_L2_error_vs_collisionless": 0.0030400397426329517, + "stress_relative_L2_error_vs_collisionless": 0.003720790519737914, + "classical_central_density": 4.772107863668246, + "classical_central_stress": 2.652045918129872 + }, + { + "eps": 0.01, + "ell": 0.2, + "t": 1.5, + "central": { + "density": 4.7766932657907795, + "mean_velocity": -2.5070135264967054e-16, + "stress": 2.653592741021475, + "stress_over_density": 0.5555292319114767, + "K_5_over_3_proxy": 0.1958643280900424 + }, + "density_relative_L2_error_vs_collisionless": 0.0007583085901567792, + "stress_relative_L2_error_vs_collisionless": 0.0009430605541564936, + "classical_central_density": 4.772107863668246, + "classical_central_stress": 2.652045918129872 + }, + { + "eps": 0.08, + "ell": 0.4, + "t": 1.5, + "central": { + "density": 3.47079353367001, + "mean_velocity": -5.682639833337974e-17, + "stress": 1.985871663405915, + "stress_over_density": 0.5721664639918983, + "K_5_over_3_proxy": 0.2495953821760082 + }, + "density_relative_L2_error_vs_collisionless": 0.004042324387463501, + "stress_relative_L2_error_vs_collisionless": 0.012173424868379018, + "classical_central_density": 3.4533000548212858, + "classical_central_stress": 2.0074136186630716 + }, + { + "eps": 0.04, + "ell": 0.4, + "t": 1.5, + "central": { + "density": 3.4578462338295655, + "mean_velocity": -1.7971046472684434e-16, + "stress": 2.002213014595276, + "stress_over_density": 0.5790347167571487, + "K_5_over_3_proxy": 0.25322164084239673 + }, + "density_relative_L2_error_vs_collisionless": 0.0010509498758515838, + "stress_relative_L2_error_vs_collisionless": 0.00307551872236874, + "classical_central_density": 3.4533000548212858, + "classical_central_stress": 2.0074136186630716 + }, + { + "eps": 0.02, + "ell": 0.4, + "t": 1.5, + "central": { + "density": 3.454446604311201, + "mean_velocity": -1.18291805566839e-16, + "stress": 2.0061261533418704, + "stress_over_density": 0.5807373461318508, + "K_5_over_3_proxy": 0.25413282614749777 + }, + "density_relative_L2_error_vs_collisionless": 0.0002651811840931197, + "stress_relative_L2_error_vs_collisionless": 0.0007711031705905792, + "classical_central_density": 3.4533000548212858, + "classical_central_stress": 2.0074136186630716 + }, + { + "eps": 0.01, + "ell": 0.4, + "t": 1.5, + "central": { + "density": 3.4535873042306915, + "mean_velocity": -2.0043861155398715e-17, + "stress": 2.007092561475563, + "stress_over_density": 0.5811616689165052, + "K_5_over_3_proxy": 0.25436069492820945 + }, + "density_relative_L2_error_vs_collisionless": 6.644668743562441e-05, + "stress_relative_L2_error_vs_collisionless": 0.0001929185824878082, + "classical_central_density": 3.4533000548212858, + "classical_central_stress": 2.0074136186630716 + } + ], + "conservation_and_reversibility": [ + { + "eps": 0.08, + "ell": 0.1, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.25000000000000006, + "momentum_mean": -6.938893903907228e-18, + "continuity_relative_residual": 2.3224007330232665e-12, + "momentum_relative_residual": 6.116561814088929e-10, + "time_reversal_relative_field_error": 4.811956100817836e-16, + "modal_occupation_max_change": 1.3877787807814457e-17, + "momentum_distribution_second_moment": 0.5, + "momentum_distribution_fourth_moment": 0.37820000000000004, + "momentum_distribution_kurtosis": 1.5128000000000001, + "high_k_mass_fraction_abs_k_gt_n_over_4": 1.1503654703601024e-30 + }, + { + "eps": 0.04, + "ell": 0.1, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.2500000000000001, + "momentum_mean": -1.249000902703301e-16, + "continuity_relative_residual": 1.3964308807939469e-12, + "momentum_relative_residual": 9.028009939416989e-11, + "time_reversal_relative_field_error": 5.450072324819847e-16, + "modal_occupation_max_change": 1.3877787807814457e-17, + "momentum_distribution_second_moment": 0.5000000000000001, + "momentum_distribution_fourth_moment": 0.37580000000000013, + "momentum_distribution_kurtosis": 1.5031999999999999, + "high_k_mass_fraction_abs_k_gt_n_over_4": 4.539395260887846e-30 + }, + { + "eps": 0.02, + "ell": 0.1, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.2500000000000001, + "momentum_mean": -9.71445146547012e-17, + "continuity_relative_residual": 8.418815272682181e-13, + "momentum_relative_residual": 3.963882657712924e-11, + "time_reversal_relative_field_error": 5.247285398049557e-16, + "modal_occupation_max_change": 1.3877787807814457e-17, + "momentum_distribution_second_moment": 0.5, + "momentum_distribution_fourth_moment": 0.3752, + "momentum_distribution_kurtosis": 1.5008, + "high_k_mass_fraction_abs_k_gt_n_over_4": 1.8154213065842795e-29 + }, + { + "eps": 0.01, + "ell": 0.1, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.25000000000000006, + "momentum_mean": -6.938893903907228e-18, + "continuity_relative_residual": 6.806172544445448e-13, + "momentum_relative_residual": 1.5111202906286288e-11, + "time_reversal_relative_field_error": 5.433704267099638e-16, + "modal_occupation_max_change": 1.0408340855860843e-17, + "momentum_distribution_second_moment": 0.5, + "momentum_distribution_fourth_moment": 0.37505, + "momentum_distribution_kurtosis": 1.5002, + "high_k_mass_fraction_abs_k_gt_n_over_4": 6.918327300521662e-29 + }, + { + "eps": 0.08, + "ell": 0.2, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.25000000000000006, + "momentum_mean": -6.938893903907228e-18, + "continuity_relative_residual": 2.3224007330232665e-12, + "momentum_relative_residual": 6.116561814088929e-10, + "time_reversal_relative_field_error": 4.811956100817836e-16, + "modal_occupation_max_change": 1.3877787807814457e-17, + "momentum_distribution_second_moment": 0.5, + "momentum_distribution_fourth_moment": 0.37820000000000004, + "momentum_distribution_kurtosis": 1.5128000000000001, + "high_k_mass_fraction_abs_k_gt_n_over_4": 1.1503654703601024e-30 + }, + { + "eps": 0.04, + "ell": 0.2, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.2500000000000001, + "momentum_mean": -1.249000902703301e-16, + "continuity_relative_residual": 1.3964308807939469e-12, + "momentum_relative_residual": 9.028009939416989e-11, + "time_reversal_relative_field_error": 5.450072324819847e-16, + "modal_occupation_max_change": 1.3877787807814457e-17, + "momentum_distribution_second_moment": 0.5000000000000001, + "momentum_distribution_fourth_moment": 0.37580000000000013, + "momentum_distribution_kurtosis": 1.5031999999999999, + "high_k_mass_fraction_abs_k_gt_n_over_4": 4.539395260887846e-30 + }, + { + "eps": 0.02, + "ell": 0.2, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.2500000000000001, + "momentum_mean": -9.71445146547012e-17, + "continuity_relative_residual": 8.418815272682181e-13, + "momentum_relative_residual": 3.963882657712924e-11, + "time_reversal_relative_field_error": 5.247285398049557e-16, + "modal_occupation_max_change": 1.3877787807814457e-17, + "momentum_distribution_second_moment": 0.5, + "momentum_distribution_fourth_moment": 0.3752, + "momentum_distribution_kurtosis": 1.5008, + "high_k_mass_fraction_abs_k_gt_n_over_4": 1.8154213065842795e-29 + }, + { + "eps": 0.01, + "ell": 0.2, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.25000000000000006, + "momentum_mean": -6.938893903907228e-18, + "continuity_relative_residual": 6.806172544445448e-13, + "momentum_relative_residual": 1.5111202906286288e-11, + "time_reversal_relative_field_error": 5.433704267099638e-16, + "modal_occupation_max_change": 1.0408340855860843e-17, + "momentum_distribution_second_moment": 0.5, + "momentum_distribution_fourth_moment": 0.37505, + "momentum_distribution_kurtosis": 1.5002, + "high_k_mass_fraction_abs_k_gt_n_over_4": 6.918327300521662e-29 + }, + { + "eps": 0.08, + "ell": 0.4, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.25000000000000006, + "momentum_mean": -6.938893903907228e-18, + "continuity_relative_residual": 2.3224007330232665e-12, + "momentum_relative_residual": 6.116561814088929e-10, + "time_reversal_relative_field_error": 4.811956100817836e-16, + "modal_occupation_max_change": 1.3877787807814457e-17, + "momentum_distribution_second_moment": 0.5, + "momentum_distribution_fourth_moment": 0.37820000000000004, + "momentum_distribution_kurtosis": 1.5128000000000001, + "high_k_mass_fraction_abs_k_gt_n_over_4": 1.1503654703601024e-30 + }, + { + "eps": 0.04, + "ell": 0.4, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.2500000000000001, + "momentum_mean": -1.249000902703301e-16, + "continuity_relative_residual": 1.3964308807939469e-12, + "momentum_relative_residual": 9.028009939416989e-11, + "time_reversal_relative_field_error": 5.450072324819847e-16, + "modal_occupation_max_change": 1.3877787807814457e-17, + "momentum_distribution_second_moment": 0.5000000000000001, + "momentum_distribution_fourth_moment": 0.37580000000000013, + "momentum_distribution_kurtosis": 1.5031999999999999, + "high_k_mass_fraction_abs_k_gt_n_over_4": 4.539395260887846e-30 + }, + { + "eps": 0.02, + "ell": 0.4, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.2500000000000001, + "momentum_mean": -9.71445146547012e-17, + "continuity_relative_residual": 8.418815272682181e-13, + "momentum_relative_residual": 3.963882657712924e-11, + "time_reversal_relative_field_error": 5.247285398049557e-16, + "modal_occupation_max_change": 1.3877787807814457e-17, + "momentum_distribution_second_moment": 0.5, + "momentum_distribution_fourth_moment": 0.3752, + "momentum_distribution_kurtosis": 1.5008, + "high_k_mass_fraction_abs_k_gt_n_over_4": 1.8154213065842795e-29 + }, + { + "eps": 0.01, + "ell": 0.4, + "mass_mean": 1.0000000000000002, + "energy_mean": 0.25000000000000006, + "momentum_mean": -6.938893903907228e-18, + "continuity_relative_residual": 6.806172544445448e-13, + "momentum_relative_residual": 1.5111202906286288e-11, + "time_reversal_relative_field_error": 5.433704267099638e-16, + "modal_occupation_max_change": 1.0408340855860843e-17, + "momentum_distribution_second_moment": 0.5, + "momentum_distribution_fourth_moment": 0.37505, + "momentum_distribution_kurtosis": 1.5002, + "high_k_mass_fraction_abs_k_gt_n_over_4": 6.918327300521662e-29 + } + ], + "central_time_series_eps_002_ell_02": [ + { + "t": 0, + "density": 1.0000000000000004, + "mean_velocity": 7.310148342550405e-17, + "stress": 0.0384418268066823, + "stress_over_density": 0.03844182680668229, + "K_5_over_3_proxy": 0.038441826806682275, + "mean_coarse_stress": 0.019605280423838353 + }, + { + "t": 0.5, + "density": 1.8818916234791638, + "mean_velocity": 1.7556312053706096e-16, + "stress": 0.21697755956145276, + "stress_over_density": 0.115297585075762, + "K_5_over_3_proxy": 0.07564097849357981, + "mean_coarse_stress": 0.03326274953323083 + }, + { + "t": 0.9, + "density": 3.8437092497427088, + "mean_velocity": 1.8515246962042502e-16, + "stress": 1.1192902926159576, + "stress_over_density": 0.2912005617206559, + "K_5_over_3_proxy": 0.11867480382880854, + "mean_coarse_stress": 0.10682384842764445 + }, + { + "t": 1.0, + "density": 4.51779030602901, + "mean_velocity": 1.5868336001978937e-16, + "stress": 1.5720676381111143, + "stress_over_density": 0.3479726883324318, + "K_5_over_3_proxy": 0.12732913212153898, + "mean_coarse_stress": 0.14934009521527608 + }, + { + "t": 1.2, + "density": 5.524273649871285, + "mean_velocity": -5.363596524142275e-17, + "stress": 2.5099729910651325, + "stress_over_density": 0.454353486113711, + "K_5_over_3_proxy": 0.14539308183563748, + "mean_coarse_stress": 0.26236925768800523 + }, + { + "t": 1.5, + "density": 4.790675110494954, + "mean_velocity": -3.3179619403212396e-16, + "stress": 2.6582099863246462, + "stress_over_density": 0.554871688230599, + "K_5_over_3_proxy": 0.19525166818937345, + "mean_coarse_stress": 0.3720216209482372 + }, + { + "t": 2, + "density": 2.3227521097737522, + "mean_velocity": -1.0562207704855248e-16, + "stress": 1.1974143670434767, + "stress_over_density": 0.5155153500905058, + "K_5_over_3_proxy": 0.29392714256021285, + "mean_coarse_stress": 0.3521927735270587 + }, + { + "t": 3, + "density": 1.1852392170237338, + "mean_velocity": -3.7879301627135936e-17, + "stress": 0.4015794594614709, + "stress_over_density": 0.338817222459008, + "K_5_over_3_proxy": 0.30252513908874296, + "mean_coarse_stress": 0.2552728804214495 + }, + { + "t": 6, + "density": 0.5144217392972806, + "mean_velocity": -2.3399543916136425e-17, + "stress": 0.06330205081229684, + "stress_over_density": 0.12305477388799667, + "K_5_over_3_proxy": 0.19166916804929665, + "mean_coarse_stress": 0.3883173827627806 + }, + { + "t": 12, + "density": 0.8042969608295748, + "mean_velocity": 4.551503040740517e-16, + "stress": 0.2449686328248758, + "stress_over_density": 0.3045748582366993, + "K_5_over_3_proxy": 0.3521678983931367, + "mean_coarse_stress": 0.44135492571341306 + } + ], + "resolution_2048_4096_max_absolute_difference": 1.7763568394002505e-15, + "matched_density_velocity_different_infall_stress": [ + { + "infall_amplitude": 0.75, + "initial_displacement_amplitude": 0.75, + "physical_time": 1.0, + "dimensionless_age": 1.5, + "first_caustic_time": 0.3333333333333333, + "central_density": 4.772107863668246, + "central_velocity": 0.0, + "central_stress": 1.491775828948053 + }, + { + "infall_amplitude": 1, + "initial_displacement_amplitude": 0.5, + "physical_time": 1.0, + "dimensionless_age": 1.5, + "first_caustic_time": 0.5, + "central_density": 4.772107863668246, + "central_velocity": 0.0, + "central_stress": 2.652045918129872 + }, + { + "infall_amplitude": 1.5, + "initial_displacement_amplitude": 0.0, + "physical_time": 1.0, + "dimensionless_age": 1.5, + "first_caustic_time": 0.6666666666666666, + "central_density": 4.772107863668246, + "central_velocity": 0.0, + "central_stress": 5.967103315792212 + } + ], + "planar_classical_stress_eigenvalues_at_center": [ + 2.652045918129872, + 0.0, + 0.0 + ], + "planar_normalized_anisotropy_frobenius_over_trace": 0.816496580927726, + "generated_velocity_marginal": { + "density": "1/(pi sqrt(1-v^2)) on |v|<1", + "variance": 0.5, + "fourth_moment": 0.375, + "kurtosis": 1.5, + "same_variance_gaussian_fourth_moment": 0.75, + "same_variance_gaussian_kurtosis": 3 + }, + "long_wavelength_response_of_homogenized_kinetic_control": [ + { + "k_t": 0, + "arcsine_density_response": 1.0, + "gaussian_same_variance_density_response": 1.0 + }, + { + "k_t": 1, + "arcsine_density_response": 0.7651976865579665, + "gaussian_same_variance_density_response": 0.7788007830714049 + }, + { + "k_t": 2, + "arcsine_density_response": 0.22389077914123562, + "gaussian_same_variance_density_response": 0.36787944117144233 + }, + { + "k_t": 2.404825557695773, + "arcsine_density_response": -9.586882554916807e-17, + "gaussian_same_variance_density_response": 0.2355583817481849 + }, + { + "k_t": 3, + "arcsine_density_response": -0.2600519549019335, + "gaussian_same_variance_density_response": 0.10539922456186433 + }, + { + "k_t": 4, + "arcsine_density_response": -0.3971498098638473, + "gaussian_same_variance_density_response": 0.01831563888873418 + }, + { + "k_t": 6, + "arcsine_density_response": 0.15064525725099698, + "gaussian_same_variance_density_response": 0.00012340980408667956 + } + ], + "torus_recurrence": { + "eps": 0.02, + "time": 628.3185307179587, + "initial_central": { + "density": 1.0000000000000004, + "mean_velocity": 7.310148342550405e-17, + "stress": 0.0384418268066823, + "stress_over_density": 0.03844182680668229, + "K_5_over_3_proxy": 0.038441826806682275 + }, + "recurrent_central": { + "density": 0.9999999999999976, + "mean_velocity": 6.773476436106012e-17, + "stress": 0.03844182680668345, + "stress_over_density": 0.038441826806683545, + "K_5_over_3_proxy": 0.03844182680668361 + } + }, + "tests": "All assertions passed. Fourier kinetic moments checked against independent Lagrangian quadrature." +} diff --git a/research/value-assessment-20261112/closure/sources.json b/research/value-assessment-20261112/closure/sources.json new file mode 100644 index 0000000..c1bc87e --- /dev/null +++ b/research/value-assessment-20261112/closure/sources.json @@ -0,0 +1,139 @@ +{ + "prepared_at": "2026-11-12", + "seat": "gpt-forge", + "model": "gpt-6-astra", + "requested_reasoning_effort": "ultra", + "repository_head": "70a1204a536b3dca0b3053d1a056daf22601ac00", + "repository_edit_scope": "Read only; outputs only in the coordinator-owned closure directory", + "sources": [ + { + "id": "aest-original", + "title": "New Relativistic Theory for Modified Newtonian Dynamics", + "url": "https://arxiv.org/html/2007.00082v3", + "authors": "Constantinos Skordis and Tom Zlosnik", + "inspected": "Equations 7-12, Stability and waves, Discussion", + "supports": "Linear fluid pressure depends on extra vector data; scalar mode spectrum has zero-frequency and propagating branches; nonlinear formation is an open problem in this paper.", + "limits": "No new nonlinear conclusion; a frequency is not a damping rate." + }, + { + "id": "aest-hamiltonian", + "title": "Aether scalar tensor theory: Hamiltonian Formalism", + "url": "https://arxiv.org/html/2307.15126v3", + "authors": "Marianthi Bataki, Constantinos Skordis and Tom Zlosnik", + "inspected": "Primary HTML, together with the prior independently reviewed model specification", + "supports": "Canonical formulation and constraints of the reference AeST action; six physical degrees of freedom.", + "limits": "This pass did not implement the canonical map or extend it to higher derivatives." + }, + { + "id": "babichev-completion", + "title": "Caustic free completion of pressureless perfect fluid and k-essence", + "url": "https://arxiv.org/html/1704.03367v3", + "authors": "Eugeny Babichev and Sabir Ramazanov", + "inspected": "Introduction, sections 2, 3.3 and 3.4, conclusions", + "supports": "A canonical complex-field classical completion can remove a pressureless caustic under specific initial-data assumptions; the nonrelativistic limit relates to the Schrodinger equation.", + "limits": "Not a quantum UV completion or AeST completion. Does not establish a thermal fluid." + }, + { + "id": "mocz-correspondence", + "title": "On the Schrodinger-Poisson--Vlasov-Poisson correspondence", + "url": "https://arxiv.org/html/1801.03507v2", + "authors": "Philip Mocz, Lachlan Lancaster, Anastasia Fialkov, Fernando Becerra and Pierre-Henri Chavanis", + "inspected": "Abstract, introduction, equations 1-7 and discussion of smoothing and shell crossing", + "supports": "Field descriptions can reproduce collisionless multistream phenomena; unsmoothed density interference and smoothed moments need distinction.", + "limits": "Published self-gravitating correspondence is not an AeST result. Our control is free Schrodinger without self-gravity." + }, + { + "id": "anisotropy", + "title": "Large-Scale Velocity Dispersion and the Cosmic Web", + "url": "https://arxiv.org/abs/1812.07489", + "authors": "Michael Buehlmann and Oliver Hahn", + "inspected": "Primary arXiv abstract and primary publication section 2 at https://doi.org/10.1093/mnras/stz1243", + "supports": "Anisotropic velocity dispersion after collapse and its dependence on collapse history are established results.", + "limits": "Cosmological collisionless simulations, not AeST. General novelty claim only." + }, + { + "id": "mimetic-map", + "title": "Connecting Relativistic MOND Theories with Mimetic Gravity", + "url": "https://arxiv.org/html/2503.11174v1", + "authors": "Guillem Domenech and Alexander Ganz", + "inspected": "Abstract, introduction, section VI conclusion", + "supports": "Conditional reformulation between constraints; caustic questions and possible movement between scalar/vector formulations explicitly left open.", + "limits": "Does not validate a new regulator or solve nonlinear AeST closure; conditions on timelike fields and branch maps matter." + }, + { + "id": "braneworld", + "title": "Gravity and large black holes in Randall-Sundrum II braneworlds", + "url": "https://arxiv.org/abs/1105.2558", + "authors": "Pau Figueras and Toby Wiseman", + "inspected": "Primary abstract and metadata", + "supports": "Known explicit RSII solutions approach four-dimensional GR at low curvature and have model-specific corrections.", + "limits": "Only abstract-level claim used. Not evidence that observed horizons require five dimensions." + }, + { + "id": "issue5", + "title": "Wave-10 Theory & PDE Handoff: 1D/3D Nonlinear AeST Pancake Collapse Test for Dark-WHIM Fluid Closure", + "url": "https://github.com/Foundation-0/gravity/issues/5", + "inspected": "Primary public issue snapshot 2026-11-12 and existing report/model specification", + "supports": "Defines the repository research conjecture and requested collapse test.", + "limits": "Conjecture, not an established result. The GitHub connector was unavailable; browser tool read the public page." + }, + { + "id": "own-control", + "title": "Cold sine collapse and coherent wave control", + "local": [ + "caustic_control.py", + "results.json" + ], + "classification": "Own reproducible calculation of established equations; regression benchmark, not claimed new physics", + "supports": "A rising pressure proxy, finite stress and a smooth caustic continuation do not establish a thermal closure. Filtered field moments converge to a collisionless reference in this experiment.", + "limits": "No gravity, AeST action, cosmological expansion, nonlinear wave interactions, thermal bath, transverse modes or open-boundary retention." + } + ], + "prior_artifacts": [ + { + "bytes": 14645, + "sha256": "da5e849ef72b7514a504918f717b901e4b36c0d38d5c275e2a411dc7f6681b44", + "repository_relative_path": "research/convergences-20261112/reports/issue-5.md" + }, + { + "bytes": 10427, + "sha256": "29306f48b0a4f0a6823aa3219bfffa586e7a093c2ec310ac31c1324d01c64341", + "repository_relative_path": "research/convergences-20261112/reports/issue-5-sources.json" + }, + { + "bytes": 9611, + "sha256": "907347f115bc998eebdb2572fcc1a33807e2235a4846897e39f02487ee1c2a1e", + "repository_relative_path": "research/convergences-20261112/probes/issue-5/model-and-tests.md" + }, + { + "bytes": 5232, + "sha256": "5b44368ff160041ee6a4e845ca8acc553daca3ceb63c9d4f6829ee568fe9a2d9", + "repository_relative_path": "research/convergences-20261112/probes/issue-5/closure-review.md" + }, + { + "bytes": 7423, + "sha256": "152df722a98699e38f83fd0bb5138a0e57aed2cb049a995588cb463c9e198031", + "repository_relative_path": "research/convergences-20261112/probes/issue-5/independent-review.md" + } + ], + "not_done": [ + "AeST full canonical constraint map", + "AeST nonlinear evolution", + "Specified higher-derivative AeST extension", + "Physical cutoff calculation", + "Thermodynamic entropy derivation", + "Cosmological population or 185 km/s scale derivation", + "Independent review of the new probe by a separate agent" + ], + "validation": { + "command": "python3 caustic_control.py", + "exit_code": 0, + "validation_kind": "Exact spectral propagation, exact classical Fourier comparison, independent quadrature, mass/energy/momentum balances, grid refinement, mode occupations and time reversal", + "prose_check": { + "command": "check-prose.py research.md", + "exit_code": 0 + }, + "initial_numerical_issue": "An initial local momentum residual exceeded 1e-9 because differentiating the density FFT three times amplified roundoff. Computing rho_xx from differentiated field products gives the same exact momentum flux and the stated passing residuals. Physical parameters and continuum equations were unchanged." + }, + "prior_publication_head": "02013ae95fa5913894b829c8e2e63a3efcde9e63" +} diff --git a/research/value-assessment-20261112/convergences/derivation.md b/research/value-assessment-20261112/convergences/derivation.md new file mode 100644 index 0000000..6f74f18 --- /dev/null +++ b/research/value-assessment-20261112/convergences/derivation.md @@ -0,0 +1,77 @@ +# Folded homogeneous elastic tensor + +This note derives the formula in `research.md` for the declared ideal spring model. It uses linear internal relaxation within one periodic cell. It does not establish nonlinear stability or historical priority. + +The motif is pᵢ± = ±eᵢ, i = 1,2,3. The twelve intra-cell edges connect vertices on different axes. Bridge i joins +eᵢ to −eᵢ in the next cell along row i of L. Let + +```text +C = [[0,-1,-1], [1,0,-1], [1,-1,0]] +a = √2(1-s²)/(1+s²), t = 2s/(1+s²) +L = (a+2)I + tC, D = aI + tC. +``` + +The bridge vectors are the rows of D, whose length is √2 because a² + 2t² = 2. The original octahedron edges have the same length. All spring rest lengths equal √2 and the reference configuration has zero tension. + +**Rank of the compatibility matrix.** + +The octahedron edges give rank 12. Their kernel consists of its three translations and three rotations. Under a rotation vector ω, the relative displacement across bridge i at zero wavevector is −2ω × eᵢ. Its extension is proportional to t ω·(eᵢ × Cᵢ). + +The three row vectors eᵢ × Cᵢ are (0,1,−1), (−1,0,−1) and (1,1,0). They have rank two, their only left dependence being row 1 minus row 2 minus row 3. Thus the full 15-by-18 compatibility matrix has rank 14 whenever t > 0, and its self-stress space has dimension one. At t = 0 its rank is 12. + +**An explicit equilibrium tension vector.** + +Set the three bridge tensions to (1,−1,−1). In the vertex ordering (+x,−x,+y,−y,+z,−z), the intra-cell tensions are: + +| Edges | Tension | +|---|---| +| (+x,+y), (+x,+z), (−x,−y), (−x,−z) | a/4 + t/2 | +| (+x,−y), (+x,−z), (−x,+y), (−x,+z) | a/4 − t/2 | +| (+y,+z), (−y,−z) | −3a/4 − t/2 | +| (+y,−z), (−y,+z) | −3a/4 + t/2 | + +Substitution at each vertex gives zero resultant force. The squared Euclidean norm of all fifteen tensions is N = (11a² + 12t² + 12)/4. This tension vector spans ker Rᵀ when t > 0. + +**Projection onto the self-stress.** + +For homogeneous symmetric strain E and internal displacement u, the linear extensions are Ru + BE. Minimising their squared norm projects BE onto ker Rᵀ. Consequently the relaxed energy per cell volume V is + +```text +W(E) = (wᵀ BE)² / (2 N V). +``` + +Force balance cancels motif-position terms in wᵀBE. Only the three bridge translations remain. Their contribution is M:E, with + +```text +T = diag(1,-1,-1) +M = Dᵀ T L / √2. +``` + +TC is symmetric, so M is symmetric. In the orthonormal strain basis (xx,yy,zz,√2 yz,√2 xz,√2 xy), this gives K = mmᵀ/(NV), with m = mandel(M). This is the formula independently checked against the full compatibility matrix in `probe.py`. + +M is nonzero throughout the path. More strongly, its inertia is one positive and two negative eigenvalues. Its determinant cannot vanish: for x ≥ 0, + +```text +det(xI + tC) = (x+t)(x² - xt + 2t²). +``` + +For D, x = a and (a,t) never equals (0,0). For L, x = a+2 > 0. Both determinants are positive. Since det T = 1, det M is positive. At s = 0, M = (2+√2)T. Continuity then preserves its inertia. This excludes interpreting the single supported stress as isotropic positive pressure. + +**The two ideal limits.** + +Let L₀ = 2+√2 and v = (1,−1,−1,0,0,0). Substituting a → √2 and t → 0 into the folded formula gives + +```text +Kfold-limit = 2 vvᵀ / (17 L₀). +``` + +Evaluating the open geometry before discarding its other two self-stresses gives a different tensor: its 3-by-3 normal block is (3I+J)/(9L₀), where J has every entry equal to one, and its remaining entries vanish. This is the source project's open-state tensor in the rescaled coordinates used here. + +**What the positive weak-spring control proves.** + +The added twenty-one springs contribute η/2 times a nonnegative quadratic extension energy, with all rest lengths reset at the selected reference state. For fixed s, the minimum energy converges to the original minimum as η decreases to zero. The lower bound is the original minimum. Evaluating the completed energy on any original minimiser supplies an upper bound differing by a finite quantity times η. + +At s = 0, three selected added edges constrain all three original rotations. Number the motif vertices 0 through 5 in the order above. The edges (0,1,[0,1,1]), (0,2,[1,0,0]) and (0,3,[0,1,1]) have rotation rows proportional to (0,2,−2), (0,0,−1) and (−1,1,−1). Their integer determinant is 2. Normalising the bond directions changes no rank. + +Thus every η > 0 gives internal rank 15 at s = 0, leaving only translations. This rank and the relaxed tensor remain continuous in a neighbourhood of s = 0. Taking s to zero first, and then η, gives the open tensor. Reversing the limits gives the folded limiting tensor. + +The distinct analytic limits, supported by the two numerical paths in `evidence.json`, establish noncommutation for this completion. The crossover values are model dependent. They are not a prediction for a particular hinge, bond-bending interaction or compound. diff --git a/research/value-assessment-20261112/convergences/evidence.json b/research/value-assessment-20261112/convergences/evidence.json new file mode 100644 index 0000000..74dc7ed --- /dev/null +++ b/research/value-assessment-20261112/convergences/evidence.json @@ -0,0 +1,913 @@ +{ + "date": "2026-11-12", + "mechanics": { + "model": "Unit masses and unstressed unit central springs on original 15 bars. Fixed reference fold; linear periodic internal relaxation; energy per current cell volume.", + "claim_scope": "Mathematical extension of a specified framework. No real-material constants, nonlinear stability, or novelty priority.", + "mandel_order": [ + "xx", + "yy", + "zz", + "sqrt(2)yz", + "sqrt(2)xz", + "sqrt(2)xy" + ], + "closed_form": { + "a": "sqrt(2)*(1-s^2)/(1+s^2)", + "t": "2*s/(1+s^2)", + "L": "(2+a)I+t*C", + "D": "a*I+t*C", + "C": [ + [ + 0.0, + -1.0, + -1.0 + ], + [ + 1.0, + 0.0, + -1.0 + ], + [ + 1.0, + -1.0, + 0.0 + ] + ], + "T": [ + 1, + -1, + -1 + ], + "M": "D.T*T*L/sqrt(2)", + "stress_norm_squared": "(11*a^2+12*t^2+12)/4", + "elastic_tensor": "K=mandel(M)*mandel(M).T/(stress_norm_squared*det(L)), 0 1e-10)) + selfstress = left[:, rank:] + _, _, cell = geometry(s) + K = B.T @ selfstress @ selfstress.T @ B / np.linalg.det(cell) + response = -np.linalg.pinv(C, rcond=1e-12) @ B + return K, response, rank, singular + + +def exact_selfstress(a, t): + """Closed form, bridge tensions (1,-1,-1), intra-bond order BONDS[:12].""" + return np.array([a/4+t/2, a/4-t/2, a/4+t/2, a/4-t/2, + a/4-t/2, a/4+t/2, a/4-t/2, a/4+t/2, + -3*a/4-t/2, -3*a/4+t/2, + -3*a/4+t/2, -3*a/4-t/2, 1., -1., -1.]) + + +def fcc_extra_bonds(): + """Integer endpoint enumeration; exactly 21 unoriented nonbar contacts.""" + _, _, cell = geometry(1.) + candidates = set() + for i, j, shift in itertools.product(range(6), range(6), + itertools.product(range(-2, 3), repeat=3)): + if i == j and shift == (0, 0, 0): + continue + v = MOTIF[j] - MOTIF[i] + np.array(shift) @ cell + if v @ v != 2: + continue + edge = (i, j, shift) + reverse = (j, i, tuple(-n for n in shift)) + candidates.add(min(edge, reverse)) + original = {min((i, j, tuple(n)), (j, i, tuple(-n))) for i, j, n in BONDS} + extra = sorted(candidates - original) + assert len(candidates) == 36 and len(extra) == 21 + return [(i, j, np.array(shift)) for i, j, shift in extra] + + +def mechanics(): + rows, max_formula_error, max_force_error = [], 0., 0. + for s in (0., 1e-5, .001, .01, .1, .25, .5, .75, 1.): + a, t, cell = geometry(s) + C, B, vectors = compatibility(s) + np.testing.assert_allclose(np.sum(vectors*vectors, axis=1), 2, atol=1e-13) + K, response, rank, singular = static_elasticity(s) + lambdas = np.linalg.eigvalsh(K) + assert rank == (12 if s == 0 else 14) + assert np.sum(lambdas > 1e-10) == (3 if s == 0 else 1) + stress = exact_selfstress(a, t) + force_error = float(np.max(np.abs(C.T @ stress))) + max_force_error = max(max_force_error, force_error) + np.testing.assert_allclose(stress @ stress, (11*a*a+12*t*t+12)/4, atol=1e-12) + # Macroscopic stress follows from equilibrium: motif coordinates cancel. + D = a * np.eye(3) + t * SHEAR + M = D.T @ np.diag([1., -1., -1.]) @ cell / math.sqrt(2) + np.testing.assert_allclose(M, M.T, atol=1e-12) + m = np.array([np.sum(M * strain) for strain in MANDEL]) + np.testing.assert_allclose(B.T @ stress, m, atol=2e-12) + if s > 0: + formula = np.outer(m, m) / ((stress @ stress) * np.linalg.det(cell)) + error = float(np.max(np.abs(K-formula))) + max_formula_error = max(max_formula_error, error) + np.testing.assert_allclose(K, formula, atol=2e-11) + # This stress has two negative and one positive principal value. + principal = np.linalg.eigvalsh(M) + assert principal[1] < 0 < principal[2] + rows.append({"s": s, "zero_modes_at_q0": 18-rank, + "self_stresses_at_q0": 15-rank, + "mandel_elastic_eigenvalues": lambdas.tolist(), + "exx_internal_displacement_norm_per_unit_strain": + float(np.linalg.norm(response[:, 0])), + "unnormalized_supported_stress_principal_values": principal.tolist(), + "compatibility_smallest_three_singular_values": singular[-3:].tolist()}) + # Analytic s->0+ modulus, distinct from evaluating exactly at s=0. + limit = 6 / (17 * (2 + math.sqrt(2))) + assert abs(rows[1]["mandel_elastic_eigenvalues"][-1]-limit) < 1e-9 + # Generic q is an extra check on extensive mechanisms, already known at s=0. + bloch = [] + phases = [np.array(q)*2*math.pi/6 for q in itertools.product(range(6), repeat=3)] + for s in (0., .1, .5, 1.): + histogram = {} + for q in phases: + C, _, _ = compatibility(s, q) + rank = int(np.sum(np.linalg.svd(C, compute_uv=False) > 1e-10)) + nullity = 18-rank + assert nullity >= 3 + histogram[str(nullity)] = histogram.get(str(nullity), 0) + 1 + bloch.append({"s": s, "sampled_wavevectors": len(phases), + "zero_mode_count_histogram": histogram}) + # Direct finite-length energy tests the Hessian along its linear minimizer. + finite = [] + for s, strain_size in ((.1, 1e-5), (.01, 1e-7), (.001, 1e-9)): + K, response, _, _ = static_elasticity(s) + _, _, vectors = compatibility(s) + _, _, cell = geometry(s) + direction = response[:, 0].reshape(6, 3) + def energy(h): + return .5 * sum((np.linalg.norm(v + h*(MANDEL[0] @ v + direction[j]-direction[i])) + - math.sqrt(2))**2 for (i, j, _), v in zip(BONDS, vectors)) + measured = (energy(strain_size)+energy(-strain_size)) / strain_size**2 + predicted = float(np.linalg.det(cell) * K[0, 0]) + relative_error = abs(measured-predicted)/predicted + assert relative_error < 1e-4 + finite.append({"s": s, "strain_size": strain_size, + "relative_energy_hessian_error": relative_error}) + extra = fcc_extra_bonds() + # Exact integer torque minor on the original open-state rotation kernel. + # Actual unnormalised extensions have a common factor L0=2+sqrt(2). + selected = [(0, 1, (0, 1, 1)), (0, 2, (1, 0, 0)), (0, 3, (0, 1, 1))] + assert all(any(i == p and j == q and tuple(n) == shift for p, q, n in extra) + for i, j, shift in selected) + rotation_rows = [np.cross((MOTIF[j]-MOTIF[i]).astype(int), shift).tolist() + for i, j, shift in selected] + u, v, w = rotation_rows + exact_det = (u[0]*(v[1]*w[2]-v[2]*w[1]) - u[1]*(v[0]*w[2]-v[2]*w[0]) + + u[2]*(v[0]*w[1]-v[1]*w[0])) + assert exact_det == 2 + completion = [] + for s in (0., .001, .01, .1, .5, 1.): + for eta in (1e-8, 1e-6, 1e-4): + K, _, rank, _ = static_elasticity(s, eta, extra) + eigen = np.linalg.eigvalsh(K) + assert rank == 15 and eigen[0] > 0 + completion.append({"s": s, "extra_spring_stiffness": eta, + "mandel_elastic_eigenvalues": eigen.tolist()}) + # Two simultaneous limit paths distinguish the two iterated limits. + # eta=s is large relative to s^2; eta=s^4 is small relative to s^2. + K_cubic = np.zeros((6, 6)) + L0 = 2 + math.sqrt(2) + K_cubic[:3, :3] = (3*np.eye(3)+np.ones((3, 3))) / (9*L0) + v_limit = np.array([1., -1., -1., 0., 0., 0.]) + K_fold_limit = 2*np.outer(v_limit, v_limit)/(17*L0) + np.testing.assert_allclose(static_elasticity(0.)[0], K_cubic, atol=1e-13) + limit_paths = [] + for s in (.01, .001, .0001): + for path_name, eta in (("eta=s", s), ("eta=s^4", s**4)): + K, response, _, _ = static_elasticity(s, eta, extra) + limit_paths.append({"path": path_name, "s": s, "eta": eta, + "distance_to_cubic_tensor": float(np.linalg.norm(K-K_cubic)), + "distance_to_fold_limit_tensor": float(np.linalg.norm(K-K_fold_limit)), + "exx_internal_displacement_norm_per_unit_strain": float(np.linalg.norm(response[:, 0]))}) + assert limit_paths[-2]["distance_to_cubic_tensor"] < 3e-4 + assert limit_paths[-1]["distance_to_fold_limit_tensor"] < 5e-5 + assert limit_paths[-2]["distance_to_fold_limit_tensor"] > .21 + assert limit_paths[-1]["distance_to_cubic_tensor"] > .21 + fixed_regularization_response = [] + for s in (0., 1e-6, 1e-5, 1e-4, .001, .01, .1): + _, response, _, _ = static_elasticity(s, 1e-6, extra) + fixed_regularization_response.append({"s": s, "eta": 1e-6, + "exx_internal_displacement_norm_per_unit_strain": float(np.linalg.norm(response[:, 0]))}) + # Null controls: treating vector springs as scalar graph edges is rejected. + K0 = static_elasticity(0.)[0] + Khalf = static_elasticity(.5)[0] + assert np.linalg.norm(K0-Khalf) > .1 + return {"model": "Unit masses and unstressed unit central springs on original 15 bars. Fixed reference fold; linear periodic internal relaxation; energy per current cell volume.", + "claim_scope": "Mathematical extension of a specified framework. No real-material constants, nonlinear stability, or novelty priority.", + "mandel_order": ["xx", "yy", "zz", "sqrt(2)yz", "sqrt(2)xz", "sqrt(2)xy"], + "closed_form": {"a": "sqrt(2)*(1-s^2)/(1+s^2)", "t": "2*s/(1+s^2)", + "L": "(2+a)I+t*C", "D": "a*I+t*C", "C": SHEAR.tolist(), + "T": [1, -1, -1], "M": "D.T*T*L/sqrt(2)", + "stress_norm_squared": "(11*a^2+12*t^2+12)/4", + "elastic_tensor": "K=mandel(M)*mandel(M).T/(stress_norm_squared*det(L)), 0 0 the three bridge constraints have rank two on the rotation space. Hence rank R rises from 12 to 14, leaving one self-stress among fifteen bonds. + +There is also a closed expression for the tensor. Define + +```text +a = √2(1-s²)/(1+s²), t = 2s/(1+s²) +C = [[0,-1,-1], [1,0,-1], [1,-1,0]] +L = (2+a)I + tC, D = aI + tC +T = diag(1,-1,-1), M = Dᵀ T L / √2 +N = (11a² + 12t² + 12)/4 +K(s) = mandel(M) mandel(M)ᵀ / (N det L), 0 < s ≤ 1 +``` + +The bridge tensions of the surviving self-stress are proportional to (1,−1,−1). The script lists all twelve internal tensions and checks force balance. M is the corresponding macroscopic stress tensor. Its two negative and one positive principal values rule out interpreting this response as an ordinary fluid-like bulk modulus. + +The explicit formula agrees with independent singular-value projections to 3.4 × 10⁻¹³ across the tested folds. Direct changes in spring lengths reproduce the predicted quadratic energy within 3.2 × 10⁻⁷ relative error in three small-strain checks. These checks do not establish nonlinear stability or global minimization over finite flexes. + +The original bars also leave at least three zero modes at every wavevector because R has fifteen rows and eighteen columns. A 216-point reciprocal grid at each of four folds confirms that lower bound. Away from the open endpoint, only the zero wavevector has an extra zero mode on these grids. The grid is not a proof excluding every additional singular wavevector. + +**Weak additional forces remove the discontinuity at fixed stiffness.** + +The strain relaxation becomes singular near the open configuration. Under unit xx strain, the minimum-norm internal displacement grows approximately as 1.00418/s. Its norm is 100.4 at s = 0.01 and 1004.2 at s = 0.001. Infinitesimal strain must therefore precede the small-fold limit. A finite imposed strain cannot be kept fixed while trusting this linear displacement indefinitely. + +The sensitivity control adds exactly twenty-one extra central springs per cell, on pairs that become the additional fcc contacts. Every added spring has stiffness η. Its rest length is set to its separation at the selected reference fold. This is an explicit comparison family, not one unchanged material followed through its motion. It introduces no hidden prestress or constraint pinning a joint to space. + +All eighteen tested combinations of six folds and three positive η values have six positive homogeneous moduli. At fixed nonzero fold, the five formerly zero moduli become small positive values as η decreases. Near the open configuration, two of them grow relative to η because the ideal relaxation needed such large internal motion. + +The added-force control tests homogeneous strain only. It does not certify the completed models' spectrum at nonzero wavevector, boundary stability or nonlinear stability. Positive homogeneous moduli alone would not establish those properties. + +For s = 0.01: + +| Added stiffness η | Six elastic eigenvalues, ascending | +|---:|---| +| 10⁻⁸ | 2.57×10⁻⁹, 6.07×10⁻⁹, 1.13×10⁻⁸, 1.21×10⁻⁵, 2.65×10⁻⁵, 0.103 | +| 10⁻⁶ | 2.57×10⁻⁷, 6.07×10⁻⁷, 1.13×10⁻⁶, 0.00120, 0.00261, 0.103 | +| 10⁻⁴ | 2.57×10⁻⁵, 6.07×10⁻⁵, 0.000113, 0.0547, 0.0904, 0.129 | + +At fixed η = 10⁻⁶, the internal-response norm is 422.4 at s = 0.001, 99.0 at s = 0.01 and 10.05 at s = 0.1. It stays finite as s approaches zero. Thus a large response survives over part of the parameter range, while the ideal 1/s divergence does not survive at fixed positive added stiffness. + +The two iterated limits differ. Let L₀ = 2 + √2 and v = (1,−1,−1,0,0,0) in Mandel coordinates. Taking s to zero before η gives the open tensor, whose normal-strain block is (3I + J)/(9L₀), where J is the all-ones matrix. The shear block vanishes as η then vanishes. Taking η to zero before s gives 2vvᵀ/(17L₀). Their Frobenius distance is 0.213188488. + +The numerical paths resolve this difference without setting either parameter exactly to zero: + +| Path at s = 10⁻⁴ | η | Distance to open tensor | Distance to folded limiting tensor | +|---|---:|---:|---:| +| η = s | 10⁻⁴ | 0.0002406 | 0.2133188 | +| η = s⁴ | 10⁻¹⁶ | 0.2131885 | 0.00004135 | + +This control rejects the claim that a geometric fold alone robustly produces an abrupt physical stiffness transition. It supports the narrower question of which weak forces and imposed loads set the observable crossover. A bend-energy law, a chosen fabrication geometry or an atomistic force model would be different declared models and would require their own checks. + +**Verdict: pursue bounded mechanics. Park material and fundamental claims.** The current evidence warrants an independently reviewed derivation of the folded elastic tensor and its response under one physically specified weak interaction. It does not warrant calling the structure a stable fluid analogue, a new universality class or a prediction for CaB₆. + +Stop the broader research claim if the folded tensor and its regularization are already in the relevant framework literature, or if a physically chosen interaction erases every useful range of enhanced response. A failed priority search still leaves a useful implementation check. Progress would mean a reproducible crossover or load response tied to an actual design, with finite-strain and stability limits stated. + +**The photon connection has a known answer and a specific project use.** + +The Witness Map's photon populations specify temperature and dilution, but no angular state. Its `info(k,dx)` factor enters a decoherence-rate approximation. Those inputs cannot determine the rate of readable records. Dilution and angular mixing are different physical changes. + +[Riedel and Zurek's 2011 scattering calculation](https://arxiv.org/html/1102.3179v2) supplies a receptivity α between zero and one, with redundancy-rate parameter α/τD. Its assumptions include elastic dipole scattering, negligible recoil, initially independent photons and a specified uniformly illuminated sky region. + +The probe integrates their angular kernel for eighteen caps and orientations. This is a reimplementation of established theory. + +For a cap aligned with the position separation, the calculated values are: + +| Fraction of sky illuminated | Decoherence rate relative to isotropic illumination | α | +|---:|---:|---:| +| 0.25 | 0.353125 | 0.988692 | +| 0.50 | 0.500000 | 0.886719 | +| 0.99 | 0.979328 | 0.021109 | +| 1.00 | 1.000000 | 0 | + +Angular quadrature refinement changes these results by at most 1.3 × 10⁻¹⁵. An analytic integral checks the denominator. Equalising the decoherence rates by dimming the brighter cases leaves α unchanged, so the same interference-decay clock can accompany different record rates. The ideal isotropic case is a limiting model, not a measurement of a real room. + +The paper's τD governs squared coherence. The interference amplitude decays at half that rate. Any companion to the map must retain this convention and must not present the asymptotic redundancy parameter as a detector's bit count. The arbitrary photon fragments in the model also differ from a specified finite-aperture instrument. + +**Verdict: pursue the bounded interpretation correction. Park new research here.** A useful companion would distinguish decoherence, spreading competition and accessible records, with an explicit radiation model. + +A new physics investigation needs a specified illumination or detector configuration whose prediction is absent from existing work. Reproducing the isotropic counterexample again would not meet that threshold. + +To reproduce the calculations, run `python3 probe.py`, then `python3 probe.py --check`, in this directory. NumPy is the only external dependency. The check compares against the saved output in the same numerical environment. The analytic and energy assertions specify the scientific tolerances independently of exact JSON replay. The assessed source snapshots and installed runtime were not changed. diff --git a/research/value-assessment-20261112/convergences/sources.json b/research/value-assessment-20261112/convergences/sources.json new file mode 100644 index 0000000..54c20f0 --- /dev/null +++ b/research/value-assessment-20261112/convergences/sources.json @@ -0,0 +1,184 @@ +{ + "date": "2026-11-12", + "seat": "gpt-forge", + "model": "gpt-6-astra", + "reasoning_effort": "ultra", + "task": "Broad cross-repository value assessment; at most two selected avenues", + "snapshot_repositories": { + "gravity": { + "head": "70a1204a536b3dca0b3053d1a056daf22601ac00", + "status": "" + }, + "fractals": { + "head": "48b923bd25dbcfef7fa8e8399d4144592145f0ef", + "status": "" + }, + "physics0": { + "head": "913468f093f82d869dc58b404039ea0a416cfb80", + "status": "" + }, + "astr0": { + "head": "67cafe2defc44d5a4e17815fc7329f65eeef45eb", + "status": "" + } + }, + "incentre_source": { + "repository": "Foundation-0/incentre-lattices", + "head": "2d374fff2a59cc9331566733043a4bb25c1040bf", + "files": [ + { + "path": "README.md", + "blob_sha": "dc718351e634ff14a068f4defb96ae5723f17d17", + "sha256": "38b87aad99378cc9de6d80f2a603b89402bdf11147356020a5c9f14b7bb3e1a4", + "url": "https://github.com/Foundation-0/incentre-lattices/blob/2d374fff2a59cc9331566733043a4bb25c1040bf/README.md" + }, + { + "path": "research/1-mechanics.md", + "blob_sha": "8faacd2aae947dd0a2de6f7fcaa42dff204d04fe", + "sha256": "bfa41c6c2a7eac84e3f7eb7569b73810948daba3f59cfa640bff36348962263a", + "url": "https://github.com/Foundation-0/incentre-lattices/blob/2d374fff2a59cc9331566733043a4bb25c1040bf/research/1-mechanics.md" + }, + { + "path": "results/rigidity-nd/PROOF.md", + "blob_sha": "c9cb065c828e84155f7baf415290bd065344290e", + "sha256": "159e6ad160819d48be563cd50333ab12c13ce578f1b44080c622142b4972ede3", + "url": "https://github.com/Foundation-0/incentre-lattices/blob/2d374fff2a59cc9331566733043a4bb25c1040bf/results/rigidity-nd/PROOF.md" + }, + { + "path": "papers/source/main.tex", + "blob_sha": "b0ff84aeb476ec2f8bae0479097649421efe0051", + "sha256": "ce86312702a728a56738208e3ecaea451ca541a367fb56688550a2e8c5bcc452", + "url": "https://github.com/Foundation-0/incentre-lattices/blob/2d374fff2a59cc9331566733043a4bb25c1040bf/papers/source/main.tex" + }, + { + "path": "results/fold-continuous-fcc/PROOF.md", + "blob_sha": "966bffe597948d7b53ead878925567d5fbf331cc", + "sha256": "45d1021cc3a7fcac11276a4c09b4367903731d041190f9e65685d0d8411d158e", + "url": "https://github.com/Foundation-0/incentre-lattices/blob/2d374fff2a59cc9331566733043a4bb25c1040bf/results/fold-continuous-fcc/PROOF.md" + } + ], + "inspection": "README, mechanics note and rigidity proof read; main paper source searched for folded elasticity and prior-art scope; exact path independently transcribed from existing convergence probe. Reads at pinned ref verified source hashes. No source repository edited." + }, + "existing_convergence_bundle": { + "immutable_publication_ref": "02013ae95fa5913894b829c8e2e63a3efcde9e63", + "inputs": [ + { + "path": "README.md", + "sha256": "a243f487aef5796a9469aa0db3d053fe0ed422ccf6751e2e0efd9c8d6f5b47bd" + }, + { + "path": "reports/repetition.md", + "sha256": "f31a619732acf94da7c8c3c1e367ccfdc1eb5ded788a6131e94eaac6647b528d" + }, + { + "path": "reports/relations.md", + "sha256": "ada0c350438fd80ef831edbff6e7916c4fab28811c23f8404078bdc6e6a34039" + }, + { + "path": "reports/hidden-dynamics.md", + "sha256": "5a8be63d649fa8ad8e842d13a99062b882068fb7594880ddc6e11932d52d5e52" + }, + { + "path": "probes/repetition/graph_vs_geometry.py", + "sha256": "25fa573c327f74d2b1f7a3836f252c40eacf2d55891835c20407da4f90e6c1d4" + }, + { + "path": "probes/robustness/robustness_probes.py", + "sha256": "b98d004c35dd8d22c93c2882f909be5739be8d5a289e8c31548253bd9485c12e" + } + ] + }, + "primary_sources": [ + { + "id": "M1", + "title": "Topological Boundary Modes in Isostatic Lattices", + "authors": "C. L. Kane and T. C. Lubensky", + "year": 2014, + "url": "https://arxiv.org/html/1308.0554v2", + "inspection": "Primary full-text equations 1-2 and mechanical matrix derivation", + "supports": "Compatibility matrices, zero modes, self-stress and Maxwell-Calladine counting", + "limits": "Does not establish our folded elastic formula or topology of this underconstrained network." + }, + { + "id": "M2", + "title": "Rigid unit modes and intrinsic flexibility in linearly bridged framework structures", + "authors": "Andrew L. Goodwin", + "year": 2006, + "url": "https://doi.org/10.1103/PhysRevB.74.134302", + "inspection": "Publisher abstract read; full article requires subscription. Oxford repository metadata inspected.", + "supports": "Extensive rigid unit modes are known in bridged framework families, including Prussian-blue topology.", + "limits": "No claim that full text excludes folded elastic formulas. Priority unresolved." + }, + { + "id": "Q1", + "title": "Redundant Information from Thermal Illumination: Quantum Darwinism in Scattered Photons", + "authors": "C. Jess Riedel and Wojciech H. Zurek", + "year": 2011, + "url": "https://arxiv.org/html/1102.3179v2", + "inspection": "Primary full text, sections 2.1-2.4, equations 18,21,25-27 and Fig.4 discussion.", + "supports": "Angular receptivity, separation of decoherence and redundancy, isotropic limit, squared-coherence convention.", + "limits": "Specified long-wavelength dipole model; no aperture-specific observed information rate. The displayed HTML includes incidental transcription errors; no dimensional prefactor was used." + }, + { + "id": "Q0", + "title": "Quantum Darwinism in an Everyday Environment: Huge Redundancy in Scattered Photons", + "authors": "C. Jess Riedel and Wojciech H. Zurek", + "year": 2010, + "url": "https://arxiv.org/html/1001.3419v2", + "inspection": "Primary text initial comparison; full numerical follow-up uses Q1.", + "supports": "Earlier point-source and isotropic limits already identified by the existing convergence study." + } + ], + "known_versus_incremental": { + "known": "Framework topology, open-state zero bands, open-state homogeneous elasticity and exact fold are existing source-project results. Extensive rigid-unit modes have older literature. Photon angular receptivity is known theory.", + "incremental": "Closed-form relaxed homogeneous elastic tensor along the exact equal-bar fold; explicit weak extra-spring completion and order-of-limits calculation. Not found in inspected project passages, not claimed as a priority discovery.", + "unverified": "Historical priority of the folded tensor; nonlinear stability; finite-amplitude equilibria; all-wavevector rigidity of completed spring models; real material interactions; measured illumination." + }, + "environment": { + "python": "3.14.6 (v3.14.6:c63aec69bd5, Jun 10 2026, 08:07:54) [Clang 21.0.0 (clang-2100.1.1.101)]", + "numpy": "2.5.4", + "platform": "macOS-27.0.1-arm64-arm-64bit-Mach-O", + "machine": "arm64" + }, + "tool_notes": [ + "GitHub connector fetch unavailable (Unknown tool). Read-only gh API used.", + "RSC full-text requests for Li-Refson-Dove 2023 were blocked (403). No technical claim relies on that unread article." + ], + "data_statement": "No observational data fitted or acquired. All new numerical outputs are synthetic mathematical calculations under explicit assumptions.", + "files": { + "probe.py": { + "sha256": "dbe5bb373376bffdbfa1f7c63ee57eea7d8b524620f7cd3e221f03760594f372" + }, + "evidence.json": { + "sha256": "67e764c24c8176811478c615be497c3c7dd0a6654fd94166e9652b2a0d1afc66" + }, + "research.md": { + "sha256": "c26788bb39b07ac6bc426b5a8ddee725dd7ae8c27e6a390f3a22c5464228f239" + }, + "derivation.md": { + "sha256": "d722d7ea613e35a1adc2f8fd05cc0d3ea7120b3f5e86c19c46e71528e9db4d63" + } + }, + "validation": { + "probe_execution": "PASS", + "saved_evidence_exact_replay": "PASS", + "research_prose_gate": "PASS", + "closed_form_vs_SVD_max_error": 3.384653668447868e-13, + "finite_length_max_relative_error": 3.197457694573648e-07, + "angular_quadrature_refinement_max_error": 1.2212453270876722e-15, + "completed_network_all_wavevector_stability": "NOT TESTED", + "new_observations": "NONE", + "open_state_completion_rotation_minor": "Exact integer determinant 2", + "derivation_prose_gate": "PASS" + }, + "independent_review_prior_art": [ + { + "url": "https://pmc.ncbi.nlm.nih.gov/articles/PMC6283905/", + "role": "Nassar, Chen and Huang section 3; one supported stress state and pentamode prior art; checked in independent scientific review." + }, + { + "url": "https://arxiv.org/abs/1205.6213", + "role": "Milton unimode definition; one easy macroscopic path differs from five easy strain combinations." + } + ] +} diff --git a/research/value-assessment-20261112/inputs/formal/Wave11MachianZeroEnergy.lean b/research/value-assessment-20261112/inputs/formal/Wave11MachianZeroEnergy.lean new file mode 100644 index 0000000..b044e41 --- /dev/null +++ b/research/value-assessment-20261112/inputs/formal/Wave11MachianZeroEnergy.lean @@ -0,0 +1,64 @@ +/- + Foundation-0 / gravity -- Wave-11 Arithmetic & CPT Polynomial Lemmas (formal/Wave11MachianZeroEnergy.lean) + ========================================================================================================== + Stock Lean 4 Init verification (zero external dependencies, zero simp warnings) of + three exact algebraic/integer identities accompanying Wave 11 (C-28, C-29, C-30): + + 1. c28_machian_induction_partition_unity: + Checks over Int (scaled by 3) that gravitomagnetic horizon induction (2/3) plus + gravitoelectric horizon shift (1/3) sums to unity (2 + 1 = 3), and Sciama's + 2 * (1/2) = 1 compactness relation. + 2. c30_cpt_pair_opposite_noether_charge: + For the CPT-even kinetic polynomial P(u) = (u^2 - q0^2)^2, the Noether charge + numerator J(u) = 4 * u * (u^2 - q0^2) satisfies J(-u) + J(u) = 0 identically for + all integers u, q0 (exact net-zero Noether charge across a pair-produced (+u, -u) + sheet pair). + 3. c30_cpt_pair_equal_positive_dust_density: + For the same polynomial, the Legendre energy-density numerator + rho(u) = u * J(u) - (u^2 - q0^2)^2 = (u^2 - q0^2) * (3 * u^2 + q0^2) satisfies + rho(-u) = rho(u) identically, and whenever q0^2 < u^2, 0 < rho(u) on BOTH the + forward (+u) and CPT-conjugate (-u) branches. + + NOTE: Certifies only the literal polynomial/integer statements above; physical + cosmological CPT pair creation and Machian modified inertia remain CONJECTURES. + Disclosure: Written by AI agent (Gemini, Google, via orda-aska for Foundation-0); + not yet reviewed by a person. + License: Apache-2.0 (code) / CC-BY-4.0 (documentation & proofs). +-/ + +namespace Foundation0.Gravity.Wave11 + +theorem c28_machian_induction_partition_unity : + (2 : Int) + 1 = 3 /\ (2 : Int) * 1 = 2 := by + decide + +def noetherJ (u q0 : Int) : Int := + 4 * u * (u * u - q0 * q0) + +def legendreRho (u q0 : Int) : Int := + (u * u - q0 * q0) * (3 * (u * u) + q0 * q0) + +theorem neg_sq_eq (u : Int) : (-u) * (-u) = u * u := by + rw [Int.neg_mul, Int.mul_neg, Int.neg_neg] + +theorem c30_cpt_pair_opposite_noether_charge (u q0 : Int) : + noetherJ (-u) q0 + noetherJ u q0 = 0 := by + unfold noetherJ + rw [neg_sq_eq] + have h1 : 4 * (-u) = -(4 * u) := Int.mul_neg 4 u + rw [h1, Int.neg_mul] + exact Int.add_left_neg (4 * u * (u * u - q0 * q0)) + +theorem c30_cpt_pair_equal_dust_density (u q0 : Int) : + legendreRho (-u) q0 = legendreRho u q0 := by + unfold legendreRho + rw [neg_sq_eq] + +theorem c30_supercritical_branch_positive_dust_density (uSq q0Sq : Int) + (hNonNeg : 0 <= q0Sq) (hSup : q0Sq < uSq) : + 0 < (uSq - q0Sq) * (3 * uSq + q0Sq) := by + have h1 : 0 < uSq - q0Sq := by omega + have h2 : 0 < 3 * uSq + q0Sq := by omega + exact Int.mul_pos h1 h2 + +end Foundation0.Gravity.Wave11 diff --git a/research/value-assessment-20261112/inputs/formal/Wave12QuasarCollapse.lean b/research/value-assessment-20261112/inputs/formal/Wave12QuasarCollapse.lean new file mode 100644 index 0000000..c59f796 --- /dev/null +++ b/research/value-assessment-20261112/inputs/formal/Wave12QuasarCollapse.lean @@ -0,0 +1,51 @@ +/- + Foundation-0 / gravity -- Wave-12 Cosmic-Dawn Quasar Collapse & Binary Bounds (formal/Wave12QuasarCollapse.lean) + ================================================================================================================= + Stock Lean 4 Init verification (zero external dependencies, zero simp warnings) of + three exact integer/rational inequalities accompanying Wave 12 (C-31, C-32, C-33) + on J1602+4228AB (Napowawa'enakaulua, Onorato et al. 2026, ApJL 1011, L59, arXiv:2609.31835): + + 1. c31_kerr_spin_salpeter_penalty: + Checks over Int that raising thin-disk radiative efficiency from eps_1 = 1/10 + to Kerr spin eps_2 = 2/10 increases the Salpeter factor eps / (1 - eps) from + 1/9 to 1/4, an exact factor of 9/4 > 2, worsening the Cosmic-Dawn Pop III + seed-growth clock. + 2. c32_cosmic_dawn_condensate_trapping_inversion: + Checks over Int that for Press-Schechter nonlinear dispersion sigma_*(z=6.08) <= 2 km/s, + protogalactic halo dispersion sigma_halo = 177 km/s, and z=0 dispersion sigma_*(0) = 185 km/s, + sigma_*(6.08)^2 < sigma_halo^2 < sigma_*(0)^2 and 9998 * sigma_halo^2 < 10000 * (sigma_halo^2 - 4), + certifying that the same halo velocity scale that expels condensate dust at z = 0 (f_trap = 0) + traps > 99.98% of condensate dust at Cosmic Dawn (z = 6.08). + 3. c33_super_eddington_and_chirp_mass_bounds: + Checks over Int that both observed Eddington ratios (123/100 and 107/100) exceed unity + and that the binary chirp mass M_c for M_1 = 15 * 10^8 M_sun and M_2 = 4 * 10^8 M_sun + satisfies 19 * (647)^5 < 15^3 * 4^2 * 10^10 < 19 * (648)^5 (i.e. 6.47e8 M_sun < M_c < 6.48e8 M_sun). + + NOTE: Certifies only the literal integer inequalities above; astrophysical seed formation, + lensing exclusion, and nonlinear AeST + phonon collapse at z = 6.08 remain model-dependent + or CONJECTURES as documented in CLAIMS.md. + Disclosure: Written by AI agent (Gemini, Google, via orda-aska for Foundation-0); + not yet reviewed by a person. + License: Apache-2.0 (code) / CC-BY-4.0 (documentation & proofs). +-/ + +namespace Foundation0.Gravity.Wave12 + +theorem c31_kerr_spin_salpeter_penalty : + (1 : Int) * 4 * 9 = 9 * 4 /\ (2 : Int) * 4 < 9 := by + decide + +theorem c32_cosmic_dawn_condensate_trapping_inversion : + (2 : Int) * 2 < 177 * 177 + /\ (177 : Int) * 177 < 185 * 185 + /\ (9998 : Int) * (177 * 177) < 10000 * (177 * 177 - 2 * 2) := by + decide + +theorem c33_super_eddington_and_chirp_mass_bounds : + (100 : Int) < 123 + /\ (100 : Int) < 107 + /\ (19 : Int) * (647 ^ 5) < (15 ^ 3) * (4 ^ 2) * (10 ^ 10) + /\ (15 : Int) ^ 3 * (4 ^ 2) * (10 ^ 10) < 19 * (648 ^ 5) := by + decide + +end Foundation0.Gravity.Wave12 diff --git a/research/value-assessment-20261112/inputs/manifest.json b/research/value-assessment-20261112/inputs/manifest.json new file mode 100644 index 0000000..e1dba58 --- /dev/null +++ b/research/value-assessment-20261112/inputs/manifest.json @@ -0,0 +1,35 @@ +{ + "source_commit": "70a1204a536b3dca0b3053d1a056daf22601ac00", + "files": [ + { + "path": "wave12_cosmic_dawn_quasar_collapse.py", + "sha256": "d0eec3e85d06b501dbe0d0a0e8969baf9b3faaf308e84718ac40b9ac96fb2aaf", + "upstream_url": "https://github.com/Foundation-0/gravity/blob/70a1204a536b3dca0b3053d1a056daf22601ac00/wave12_cosmic_dawn_quasar_collapse.py" + }, + { + "path": "wave11_machian_pairing_unification.py", + "sha256": "911fbd9f428728daf1fe02de998fec5b519292c7739e0bac13f111a1bea00306", + "upstream_url": "https://github.com/Foundation-0/gravity/blob/70a1204a536b3dca0b3053d1a056daf22601ac00/wave11_machian_pairing_unification.py" + }, + { + "path": "formal/Wave12QuasarCollapse.lean", + "sha256": "643bb2ed80cc11f90b07296a83e16c841b60501b89b4045ea471d8eddb24d2c3", + "upstream_url": "https://github.com/Foundation-0/gravity/blob/70a1204a536b3dca0b3053d1a056daf22601ac00/formal/Wave12QuasarCollapse.lean" + }, + { + "path": "formal/Wave11MachianZeroEnergy.lean", + "sha256": "781d83ac1bf12407f0a682b8abbe67a4ec101d78751ee0fa611c9a0f8a307573", + "upstream_url": "https://github.com/Foundation-0/gravity/blob/70a1204a536b3dca0b3053d1a056daf22601ac00/formal/Wave11MachianZeroEnergy.lean" + }, + { + "path": "results/wave12_cosmic_dawn_quasar_certificates.json", + "sha256": "493be7e0c615633eb77398c668f2d06a04fe21dd7bc6739e9b68649f9901da78", + "upstream_url": "https://github.com/Foundation-0/gravity/blob/70a1204a536b3dca0b3053d1a056daf22601ac00/results/wave12_cosmic_dawn_quasar_certificates.json" + }, + { + "path": "results/wave11_machian_pairing_certificates.json", + "sha256": "9d05bb78b81b45aeda49edf6cfb9f734d761968ec4d06111aa1064cbc73eb359", + "upstream_url": "https://github.com/Foundation-0/gravity/blob/70a1204a536b3dca0b3053d1a056daf22601ac00/results/wave11_machian_pairing_certificates.json" + } + ] +} diff --git a/research/value-assessment-20261112/inputs/results/wave11_machian_pairing_certificates.json b/research/value-assessment-20261112/inputs/results/wave11_machian_pairing_certificates.json new file mode 100644 index 0000000..6a99edc --- /dev/null +++ b/research/value-assessment-20261112/inputs/results/wave11_machian_pairing_certificates.json @@ -0,0 +1,110 @@ +{ + "schema": "FOUNDATION-0/GRAVITY-WAVE11-MACHIAN-PAIRING/1.0", + "claim_c28_machian_inertia_and_horizon_induction": { + "epistemic_status": "COMPUTED (KNOWN MACHIAN & UNRUH-DE SITTER IDENTITIES; MODIFIED INERTIA VS GRAVITY OPEN)", + "hubble_radius_Mpc": 4450.6, + "hubble_critical_mass_Msun": 4.65e+22, + "sciama_compactness_GMH_over_RH_c2": 0.5, + "sciama_potential_integral_over_c2": 0.75, + "frame_dragging_induction_partition": { + "gravitomagnetic_K_gm": 0.666667, + "gravitoelectric_K_ge": 0.333333, + "total_inertial_coefficient_K_tot": 1.0 + }, + "horizon_acceleration_benchmarks_m_s2": { + "empirical_sparc_a0": 1.2e-10, + "milgrom_cH0_over_2pi": 1.0416e-10, + "unruh_desitter_cH_Lambda_over_2pi": 8.6195e-11, + "verlinde_cH0_over_6": 1.0907e-10 + }, + "audit_caveats": { + "linear_sciama_ppn_gamma": 0, + "gr_and_aest_ppn_gamma": 1, + "earth_1AU_acceleration_over_a0": 49420000.0, + "uds_1AU_naive_relative_offset": -4.047e-08, + "note": "Linearized vector Sciama/Treder models give PPN gamma=0 (half GR light bending); AeST restores Phi=Psi (gamma=1). Time-local F=m*mu(a/a0)*a violates momentum conservation on multi-body orbits unless formulated non-locally (Milgrom 1994)." + } + }, + "claim_c29_zero_energy_and_desi_turnaround": { + "epistemic_status": "COMPUTED (FRIEDMANN & ADM HAMILTONIAN IDENTITIES UNDER STATED EOS INPUTS)", + "adm_hamiltonian_constraint": "H_grav + H_matter = 0 identically in GR and 3+1D AeST (Bataki et al. 2024 Eq. 43a)", + "desi_thawing_eos_inputs": { + "w0": -0.75, + "wa": -0.85 + }, + "future_deceleration_onset_scale_factor_a_slow": 1.3897, + "closed_universe_recollapse_turnarounds": [ + { + "Omega_k": -0.001, + "turnaround_scale_factor_a_max": 315.18, + "asymptotic_matter_curvature_ratio_Omega_m_over_abs_Omega_k": 315.18 + }, + { + "Omega_k": -0.004, + "turnaround_scale_factor_a_max": 78.8, + "asymptotic_matter_curvature_ratio_Omega_m_over_abs_Omega_k": 78.8 + }, + { + "Omega_k": -0.01, + "turnaround_scale_factor_a_max": 31.52, + "asymptotic_matter_curvature_ratio_Omega_m_over_abs_Omega_k": 31.52 + } + ], + "machian_a0_redshift_evolution_tracks": [ + { + "z": 0.0, + "a0_H_z_over_a0_z0_LCDM": 1.0, + "a0_H_z_over_a0_z0_DESI": 1.0, + "a0_sqrt_rhoDE_over_a0_z0_DESI": 1.0 + }, + { + "z": 0.5, + "a0_H_z_over_a0_z0_LCDM": 1.3223, + "a0_H_z_over_a0_z0_DESI": 1.355, + "a0_sqrt_rhoDE_over_a0_z0_DESI": 1.0619 + }, + { + "z": 1.0, + "a0_H_z_over_a0_z0_LCDM": 1.7906, + "a0_H_z_over_a0_z0_DESI": 1.7959, + "a0_sqrt_rhoDE_over_a0_z0_DESI": 1.0138 + }, + { + "z": 2.0, + "a0_H_z_over_a0_z0_LCDM": 3.0323, + "a0_H_z_over_a0_z0_DESI": 3.0048, + "a0_sqrt_rhoDE_over_a0_z0_DESI": 0.8704 + } + ] + }, + "claim_c30_cpt_pair_bifurcation_and_noether_remnant": { + "epistemic_status": "COMPUTED (KINETIC MEXICAN-HAT & COGENESIS ALGEBRA) & CONJECTURE (COSMOLOGICAL CPT PAIR-CREATION ORIGIN OF CONDENSATE CHARGE)", + "unbroken_creation_state_u0": { + "w_u0_exact": -1.0 + }, + "cpt_conjugate_pair_branches": { + "forward_sheet_plus": { + "u_value": 1.000001, + "noether_charge_J0_dimless": 8e-06, + "dust_energy_density_dimless": 8e-06, + "dust_equation_of_state_w_dust": 5e-07 + }, + "cpt_conjugate_sheet_minus": { + "u_value": -1.000001, + "noether_charge_J0_dimless": -8e-06, + "dust_energy_density_dimless": 8e-06, + "dust_equation_of_state_w_dust": 5e-07 + } + }, + "global_net_noether_charge_sum": 0.0, + "both_sheets_positive_dust_gravity": true, + "baryon_dark_matter_remnant_scales": { + "planck_Omega_c_over_Omega_b": 5.3643, + "visible_baryon_to_photon_eta_B": 6.12e-10, + "visible_pair_annihilation_completion": 0.9999999994, + "cogenesis_equal_charge_particle_mass_GeV": 5.033, + "audit_distinction": "Collisionless 5.03 GeV ADM particles would form cold dwarf cusps (sigma_J = 0), failing galactic RAR without MOND; storing the conserved cogenesis/Bogoliubov Noether charge in the coherent P(Q, Y) condensate keeps linear dust scaling while preserving galactic phonons and the Wave-10 Dark-WHIM Jeans floor." + } + }, + "sha256_canonical": "9a79b9e2184fcc70cb0e6b250615b57c7492af36d0a605f563bafa0ea87942f5" +} diff --git a/research/value-assessment-20261112/inputs/results/wave12_cosmic_dawn_quasar_certificates.json b/research/value-assessment-20261112/inputs/results/wave12_cosmic_dawn_quasar_certificates.json new file mode 100644 index 0000000..fbbc6c6 --- /dev/null +++ b/research/value-assessment-20261112/inputs/results/wave12_cosmic_dawn_quasar_certificates.json @@ -0,0 +1,123 @@ +{ + "schema": "FOUNDATION-0/GRAVITY-WAVE12-COSMIC-DAWN-QUASAR-PAIR/1.0", + "claim_c31_salpeter_seed_and_clustering_wall": { + "epistemic_status": "COMPUTED (KNOWN-FRAMEWORK COSMOLOGICAL & SALPETER IDENTITIES; LENSING & VIRIAL MASS CAVEATS NOTED)", + "observed_system": { + "designation": "J1602+4228AB (Napowawa'enakaulua)", + "z_sys_A": 6.0781, + "z_sys_B": 6.0785, + "cosmic_age_at_z_Myr": 911.72, + "angular_diameter_distance_kpc": 1194860.2, + "computed_projected_sep_pkpc": 5.68, + "reported_projected_sep_pkpc": 5.56, + "M_BH_A_Msun": 1500000000.0, + "M_BH_B_Msun": 400000000.0, + "lambda_Edd_A": 1.23, + "lambda_Edd_B": 1.07, + "reported_clustering_excess_orders_of_magnitude": "2 to 3 (100x to 1000x over extrapolated high-z quasar clustering in 199 JWST Aether fields)" + }, + "salpeter_timescales_Myr": { + "pure_H_eps_0p10": 50.05, + "primordial_H_He_eps_0p10": 43.92, + "spinning_Kerr_pure_H_eps_0p20": 112.62 + }, + "growth_windows_Myr": { + "from_z20_to_z6p08": 734.1, + "from_z30_to_z6p08": 813.05 + }, + "seed_duty_cycle_audit_for_J1602A_1p5e9_Msun": { + "popIII_100Msun_efoldings": 16.524, + "popIII_100Msun_req_time_Edd1_eps0p10_Myr": 827.08, + "popIII_100Msun_duty_from_z20_Edd1_eps0p10": 1.127, + "popIII_100Msun_duty_from_z20_obsEdd1p23_eps0p10": 0.916, + "popIII_100Msun_duty_from_z20_Edd1_Kerr_eps0p20": 2.535, + "dcbh_1e5Msun_efoldings": 9.616, + "dcbh_1e5Msun_duty_from_z20_Edd1_eps0p10": 0.656, + "dcbh_1e5Msun_duty_from_z20_obsEdd1p23_eps0p10": 0.533 + }, + "seed_duty_cycle_audit_for_J1602B_4p0e8_Msun": { + "popIII_100Msun_efoldings": 15.202, + "popIII_100Msun_duty_from_z20_Edd1_eps0p10": 1.037, + "dcbh_1e5Msun_efoldings": 8.294, + "dcbh_1e5Msun_duty_from_z20_obsEdd1p07_eps0p10": 0.529 + }, + "scientific_caveats": [ + "Single-epoch broad-line virial BH masses carry ~2x (0.3 dex) systematic uncertainty.", + "Spectral slopes, dust attenuation, and [O III] outflow shapes differ between A and B (favoring a physical pair), but archival HST imaging shows a candidate foreground galaxy near B; a full lens model is pending (Onorato et al. 2026)." + ] + }, + "claim_c32_two_branch_condensate_and_phonon_collapse": { + "epistemic_status": "COMPUTED (WAVE-10 SIGMA_*(Z) EXTENSION & MOND FREE-FALL) & CONJECTURE (COSMIC-DAWN DCBH SEEDING)", + "planck_nonlinear_collapse_at_z6p08": { + "R_star_comoving_Mpc": 0.00796, + "M_star_Msun": 83914.0, + "sigma_star_z6p08_kms": 0.97, + "sigma_star_z0_kms": 185.59, + "host_177kms_trapping_at_z6p08": 0.99997, + "host_177kms_trapping_at_z0": 0.0 + }, + "lcdm_gaussian_halo_rarity_at_z6p08": [ + { + "halo_mass_Msun": 1000000000000.0, + "comoving_lagrangian_radius_Mpc": 1.819, + "sigma_lin_z6p08": 0.3987, + "gaussian_peak_height_nu": 4.23 + }, + { + "halo_mass_Msun": 5000000000000.0, + "comoving_lagrangian_radius_Mpc": 3.11, + "sigma_lin_z6p08": 0.3133, + "gaussian_peak_height_nu": 5.38 + } + ], + "feeder_filament_30pkpc_5e10Msun_infall": { + "g_baryon_m_s2": 7.7437e-12, + "a0_const_m_s2": 1.2e-10, + "a0_hubble_cHz_over_2pi_m_s2": 1.1057e-09, + "free_fall_time_pure_baryon_Newton_Myr": 384.82, + "free_fall_time_MOND_const_a0_Myr": 182.27, + "free_fall_time_MOND_Hubble_a0_Myr": 109.04, + "free_fall_time_two_branch_trapped_condensate_Myr": 122.79 + }, + "dynamical_friction_audit_note": "Pure baryon-only MOND slows kpc-scale galaxy mergers due to absent dark-halo dynamical friction (Nipoti et al. 2008), whereas in the two-branch condensate sigma_*(z=6.08) = 0.97 km/s << sigma_halo keeps f_trap = 0.99997, supplying both deep central DCBH potentials and Chandrasekhar dynamical friction at z = 6.08 before late-time cosmic-web shocks heat the condensate to 185.59 km/s by z = 0." + }, + "claim_c33_slim_disk_and_binary_gw_budget": { + "epistemic_status": "COMPUTED (SLIM-DISK ADVECTION & PETERS 1964 GW INSPIRAL IDENTITIES)", + "slim_disk_photon_trapping_benchmarks": [ + { + "dimensionless_mass_inflow_mdot": 1.0, + "radiated_lambda_Edd_slim_disk": 1.0, + "popIII_100Msun_to_1p5e9Msun_time_Myr": 827.08 + }, + { + "dimensionless_mass_inflow_mdot": 2.0, + "radiated_lambda_Edd_slim_disk": 2.0, + "popIII_100Msun_to_1p5e9Msun_time_Myr": 413.54 + }, + { + "dimensionless_mass_inflow_mdot": 3.0, + "radiated_lambda_Edd_slim_disk": 2.811, + "popIII_100Msun_to_1p5e9Msun_time_Myr": 275.69 + }, + { + "dimensionless_mass_inflow_mdot": 5.0, + "radiated_lambda_Edd_slim_disk": 3.833, + "popIII_100Msun_to_1p5e9Msun_time_Myr": 165.42 + } + ], + "kinematic_projection_at_5p56_pkpc": { + "v_circ_BHs_only_kms": 38.34, + "v_circ_with_1p5e11Msun_host_kms": 342.79, + "observed_delta_v_los_kms": 15.0, + "required_abs_sin_i_cos_psi": 0.0438 + }, + "gravitational_wave_inspiral_budget": { + "chirp_mass_Msun": 647350000.0, + "t_GW_at_5p56_pkpc_Myr": 4.872e+20, + "t_GW_at_0p10_pc_Myr": 50.99, + "t_GW_at_0p05_pc_Myr": 3.19, + "nanograv_relevance": "At 5.56 pkpc, pure GW emission is negligible (t_GW = 4.87e+20 Myr); Chandrasekhar dynamical friction and stellar/condensate loss-cone scattering must harden the pair to 0.05-0.10 pc, after which GW inspiral merges the M_c = 6.47e+08 M_sun binary in 3.19-50.99 Myr, feeding the nHz GW background." + } + }, + "sha256_canonical": "f46cc3be82489f450d1a3ce8c583fad15970050f938bd4c8b5510fe704ba48b6" +} diff --git a/research/value-assessment-20261112/inputs/wave11_machian_pairing_unification.py b/research/value-assessment-20261112/inputs/wave11_machian_pairing_unification.py new file mode 100644 index 0000000..9c47dbc --- /dev/null +++ b/research/value-assessment-20261112/inputs/wave11_machian_pairing_unification.py @@ -0,0 +1,253 @@ +""" +Foundation-0 / gravity -- Wave-11 Machian Horizon Inertia, Zero-Energy Creation, DESI Turnaround & CPT Pair-Condensate Audit (C-28..C-30; M-09) +attribution: Written by AI agent (Gemini, Google, via orda-aska for Foundation-0); not yet reviewed by a person. +license: Apache-2.0 (code) / CC-BY-4.0 (results). +""" + +from __future__ import annotations +import hashlib +import json +import math +import sys +from pathlib import Path + +C_SI = 299792458.0 +C_KMS = 299792.458 +G = 6.67430e-11 +HBAR = 1.054571817e-34 +K_B = 1.380649e-23 +M_P = 1.67262192369e-27 +M_SUN = 1.98847e30 +MPC = 3.085677581491367e22 +AU = 1.495978707e11 +A0_EMP = 1.20e-10 + +H_LITTLE = 0.6736 +H0_SI = (100.0 * H_LITTLE * 1000.0) / MPC +R_H = C_SI / H0_SI +RHO_CRIT0 = 3.0 * (H0_SI ** 2) / (8.0 * math.pi * G) +OMEGA_B = 0.02237 / (H_LITTLE ** 2) +OMEGA_C = 0.1200 / (H_LITTLE ** 2) +OMEGA_M = (0.02237 + 0.1200 + 0.00064) / (H_LITTLE ** 2) +OMEGA_L = 1.0 - OMEGA_M + + +def audit_c28_machian_inertia_and_horizon_scales() -> dict: + """Evaluates Sciama (1953) / Braun (2026) Machian induction identities, Milgrom (1999) Unruh-de Sitter scales, and PPN/locality caveats.""" + m_hubble = (4.0 / 3.0) * math.pi * (R_H ** 3) * RHO_CRIT0 + sciama_compactness = (G * m_hubble) / (R_H * (C_SI ** 2)) + sciama_potential_integral = (2.0 * math.pi * G * RHO_CRIT0 * (R_H ** 2)) / (C_SI ** 2) + # Braun (2026, EPJC 86, 1215): gravitomagnetic induction K_gm = (2 H0^2 R_H^2)/(3 c^2) = 2/3 + gravitoelectric K_ge = 1/3 = 1 + k_gm = (2.0 * (H0_SI ** 2) * (R_H ** 2)) / (3.0 * (C_SI ** 2)) + k_ge = 1.0 / 3.0 + + a_h0 = C_SI * H0_SI + a_ds_2pi = a_h0 / (2.0 * math.pi) + a_lambda = a_h0 * math.sqrt(OMEGA_L) + a_uds_2pi = a_lambda / (2.0 * math.pi) + a_verlinde = a_h0 / 6.0 + + # Unruh-de Sitter excess thermal acceleration Delta_a(a) = sqrt(a^2 + a_0_eff^2) - a_0_eff + # Compare circular-orbit equivalence vs eccentric/solar-system non-locality requirement (Milgrom 1994, Ann. Phys. 229, 384) + a_earth = (G * M_SUN) / (AU ** 2) + uds_earth_fractional_shift = math.sqrt(1.0 + ((2.0 * A0_EMP) / a_earth) ** 2) - 1.0 - ((2.0 * A0_EMP) / a_earth) + + return { + "epistemic_status": "COMPUTED (KNOWN MACHIAN & UNRUH-DE SITTER IDENTITIES; MODIFIED INERTIA VS GRAVITY OPEN)", + "hubble_radius_Mpc": round(R_H / MPC, 2), + "hubble_critical_mass_Msun": float(f"{m_hubble / M_SUN:.4e}"), + "sciama_compactness_GMH_over_RH_c2": round(sciama_compactness, 6), + "sciama_potential_integral_over_c2": round(sciama_potential_integral, 6), + "frame_dragging_induction_partition": { + "gravitomagnetic_K_gm": round(k_gm, 6), + "gravitoelectric_K_ge": round(k_ge, 6), + "total_inertial_coefficient_K_tot": round(k_gm + k_ge, 6), + }, + "horizon_acceleration_benchmarks_m_s2": { + "empirical_sparc_a0": A0_EMP, + "milgrom_cH0_over_2pi": float(f"{a_ds_2pi:.4e}"), + "unruh_desitter_cH_Lambda_over_2pi": float(f"{a_uds_2pi:.4e}"), + "verlinde_cH0_over_6": float(f"{a_verlinde:.4e}"), + }, + "audit_caveats": { + "linear_sciama_ppn_gamma": 0, + "gr_and_aest_ppn_gamma": 1, + "earth_1AU_acceleration_over_a0": float(f"{a_earth / A0_EMP:.3e}"), + "uds_1AU_naive_relative_offset": float(f"{uds_earth_fractional_shift:.3e}"), + "note": "Linearized vector Sciama/Treder models give PPN gamma=0 (half GR light bending); AeST restores Phi=Psi (gamma=1). Time-local F=m*mu(a/a0)*a violates momentum conservation on multi-body orbits unless formulated non-locally (Milgrom 1994).", + }, + } + + +def audit_c29_zero_energy_and_desi_turnaround() -> dict: + """Evaluates closed-FLRW / ADM zero-energy cancellation and DESI-motivated thawing dark-energy deceleration & turnaround.""" + w0_desi = -0.75 + wa_desi = -0.85 + + def rho_de_rel(a: float) -> float: + return (a ** (-3.0 * (1.0 + w0_desi + wa_desi))) * math.exp(3.0 * wa_desi * (a - 1.0)) + + def accel_sign_term(a: float) -> float: + # proportional to -ddot(a)/a: negative means accelerating, positive means decelerating (slowing down) + w_a = w0_desi + wa_desi * (1.0 - a) + return OMEGA_M * (a ** -3.0) + OMEGA_L * rho_de_rel(a) * (1.0 + 3.0 * w_a) + + # Bisection for future scale factor a_slow > 1 where cosmic expansion stops accelerating and begins slowing down: + lo_s, hi_s = 1.0, 2.5 + for _ in range(70): + mid_s = 0.5 * (lo_s + hi_s) + if accel_sign_term(mid_s) < 0.0: + lo_s = mid_s + else: + hi_s = mid_s + a_slow = 0.5 * (lo_s + hi_s) + + # Turnaround scale factor a_turn where H(a_turn)^2 = 0 in a spatially closed S^3 universe (Omega_k < 0) with decaying DE: + closed_turnarounds = [] + for ok_abs in [0.001, 0.004, 0.010]: + lo_t, hi_t = 2.0, 2000.0 + for _ in range(80): + mt = 0.5 * (lo_t + hi_t) + h2 = OMEGA_M * (mt ** -3.0) + OMEGA_L * rho_de_rel(mt) - ok_abs * (mt ** -2.0) + if h2 > 0.0: + lo_t = mt + else: + hi_t = mt + closed_turnarounds.append({ + "Omega_k": -ok_abs, + "turnaround_scale_factor_a_max": round(0.5 * (lo_t + hi_t), 2), + "asymptotic_matter_curvature_ratio_Omega_m_over_abs_Omega_k": round(OMEGA_M / ok_abs, 2), + }) + + # Evolving horizon acceleration a_0(z) = c H(z) / (2*pi) vs c H_Lambda(z) / (2*pi) at z = 0, 1, 2 (connecting to PR #4): + a0_evolution_comparison = [] + for z in [0.0, 0.5, 1.0, 2.0]: + a = 1.0 / (1.0 + z) + ez_lcdm = math.sqrt(OMEGA_M * ((1.0 + z) ** 3) + OMEGA_L) + ez_desi = math.sqrt(OMEGA_M * ((1.0 + z) ** 3) + OMEGA_L * rho_de_rel(a)) + a0_evolution_comparison.append({ + "z": z, + "a0_H_z_over_a0_z0_LCDM": round(ez_lcdm, 4), + "a0_H_z_over_a0_z0_DESI": round(ez_desi, 4), + "a0_sqrt_rhoDE_over_a0_z0_DESI": round(math.sqrt(rho_de_rel(a)), 4), + }) + + return { + "epistemic_status": "COMPUTED (FRIEDMANN & ADM HAMILTONIAN IDENTITIES UNDER STATED EOS INPUTS)", + "adm_hamiltonian_constraint": "H_grav + H_matter = 0 identically in GR and 3+1D AeST (Bataki et al. 2024 Eq. 43a)", + "desi_thawing_eos_inputs": {"w0": w0_desi, "wa": wa_desi}, + "future_deceleration_onset_scale_factor_a_slow": round(a_slow, 4), + "closed_universe_recollapse_turnarounds": closed_turnarounds, + "machian_a0_redshift_evolution_tracks": a0_evolution_comparison, + } + + +def audit_c30_cpt_pair_bifurcation_and_cogenesis() -> dict: + """Evaluates CPT-even Mexican-hat kinetic condensate P(Q) = K_2 (Q^2/Q_0^2 - 1)^2 - Lambda_DE and cogenesis scales.""" + # Dimensionless u = Q / Q_0 around u = 0 (unbroken creation maximum) and u = +/- (1 + eps) (CPT-conjugate branches) + # P(u) / K_2 = (u^2 - 1)^2 - lam, rho(u) / K_2 = u * 4*u*(u^2 - 1) - (u^2 - 1)^2 + lam = (u^2 - 1)*(3*u^2 + 1) + lam + lam = 2.0 # illustrative Lambda_DE / K_2 > 1 so rho(0) > 0 at symmetric creation point + p_u0 = 1.0 - lam + rho_u0 = -1.0 + lam + w_u0 = p_u0 / rho_u0 + + eps = 1.0e-6 + branches = {} + for label, sign in [("forward_sheet_plus", +1.0), ("cpt_conjugate_sheet_minus", -1.0)]: + u = sign * (1.0 + eps) + j0_dimless = 4.0 * u * (u * u - 1.0) + rho_dust_dimless = u * j0_dimless - ((u * u - 1.0) ** 2) + p_dust_dimless = (u * u - 1.0) ** 2 + branches[label] = { + "u_value": round(u, 7), + "noether_charge_J0_dimless": round(j0_dimless, 9), + "dust_energy_density_dimless": round(rho_dust_dimless, 9), + "dust_equation_of_state_w_dust": float(f"{p_dust_dimless / rho_dust_dimless:.4e}"), + } + + net_noether_charge = ( + branches["forward_sheet_plus"]["noether_charge_J0_dimless"] + + branches["cpt_conjugate_sheet_minus"]["noether_charge_J0_dimless"] + ) + + # Cogenesis / Asymmetric Dark Matter mass ratio vs condensate chemical-potential interpretation: + omega_c_over_b = OMEGA_C / OMEGA_B + m_p_gev = (M_P * (C_SI ** 2)) / 1.602176634e-10 + adm_equal_number_mass_gev = omega_c_over_b * m_p_gev + eta_b_cmb = 6.12e-10 + annihilated_pair_fraction_visible = 1.0 - eta_b_cmb + + return { + "epistemic_status": ( + "COMPUTED (KINETIC MEXICAN-HAT & COGENESIS ALGEBRA) & " + "CONJECTURE (COSMOLOGICAL CPT PAIR-CREATION ORIGIN OF CONDENSATE CHARGE)" + ), + "unbroken_creation_state_u0": { + "w_u0_exact": round(w_u0, 6), + }, + "cpt_conjugate_pair_branches": branches, + "global_net_noether_charge_sum": round(net_noether_charge, 12), + "both_sheets_positive_dust_gravity": bool( + branches["forward_sheet_plus"]["dust_energy_density_dimless"] > 0.0 + and branches["cpt_conjugate_sheet_minus"]["dust_energy_density_dimless"] > 0.0 + ), + "baryon_dark_matter_remnant_scales": { + "planck_Omega_c_over_Omega_b": round(omega_c_over_b, 4), + "visible_baryon_to_photon_eta_B": eta_b_cmb, + "visible_pair_annihilation_completion": round(annihilated_pair_fraction_visible, 10), + "cogenesis_equal_charge_particle_mass_GeV": round(adm_equal_number_mass_gev, 3), + "audit_distinction": ( + "Collisionless 5.03 GeV ADM particles would form cold dwarf cusps (sigma_J = 0), " + "failing galactic RAR without MOND; storing the conserved cogenesis/Bogoliubov Noether " + "charge in the coherent P(Q, Y) condensate keeps linear dust scaling while preserving " + "galactic phonons and the Wave-10 Dark-WHIM Jeans floor." + ), + }, + } + + +def emit_or_verify(cert: dict, out_path: Path) -> None: + canonical = json.dumps(cert, sort_keys=True, separators=(",", ":")).encode("utf-8") + cert["sha256_canonical"] = hashlib.sha256(canonical).hexdigest() + rendered = json.dumps(cert, indent=2) + "\n" + if "--check" in sys.argv: + assert out_path.is_file(), f"Missing certificate file: {out_path}" + on_disk_text = out_path.read_text(encoding="utf-8") + on_disk_obj = json.loads(on_disk_text) + stored_sha = on_disk_obj.pop("sha256_canonical", None) + disk_canonical = json.dumps(on_disk_obj, sort_keys=True, separators=(",", ":")).encode("utf-8") + assert stored_sha == hashlib.sha256(disk_canonical).hexdigest(), "Canonical SHA-256 mismatch on disk" + assert stored_sha == cert["sha256_canonical"], "Recomputed canonical SHA-256 mismatch" + assert on_disk_text == rendered, "Certificate file is not byte-identical to generator output" + print(f"CHECK OK (byte-identical): {out_path.name} sha256_canonical={stored_sha}") + else: + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text(rendered, encoding="utf-8") + print(f"WROTE {out_path.name} sha256_canonical={cert['sha256_canonical']}") + + +def main() -> int: + c28 = audit_c28_machian_inertia_and_horizon_scales() + c29 = audit_c29_zero_energy_and_desi_turnaround() + c30 = audit_c30_cpt_pair_bifurcation_and_cogenesis() + + assert c28["sciama_compactness_GMH_over_RH_c2"] == 0.5 + assert c28["frame_dragging_induction_partition"]["total_inertial_coefficient_K_tot"] == 1.0 + assert 1.35 <= c29["future_deceleration_onset_scale_factor_a_slow"] <= 1.45 + assert c30["unbroken_creation_state_u0"]["w_u0_exact"] == -1.0 + assert c30["global_net_noether_charge_sum"] == 0.0 + assert c30["both_sheets_positive_dust_gravity"] is True + + cert11 = { + "schema": "FOUNDATION-0/GRAVITY-WAVE11-MACHIAN-PAIRING/1.0", + "claim_c28_machian_inertia_and_horizon_induction": c28, + "claim_c29_zero_energy_and_desi_turnaround": c29, + "claim_c30_cpt_pair_bifurcation_and_noether_remnant": c30, + } + out_path = Path(__file__).resolve().parent / "results" / "wave11_machian_pairing_certificates.json" + emit_or_verify(cert11, out_path) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/research/value-assessment-20261112/inputs/wave12_cosmic_dawn_quasar_collapse.py b/research/value-assessment-20261112/inputs/wave12_cosmic_dawn_quasar_collapse.py new file mode 100644 index 0000000..ab9ad18 --- /dev/null +++ b/research/value-assessment-20261112/inputs/wave12_cosmic_dawn_quasar_collapse.py @@ -0,0 +1,414 @@ +""" +Foundation-0 / gravity -- Wave-12 Cosmic-Dawn Compact Quasar Pair Audit: J1602+4228AB / Napowawa'enakaulua (C-31..C-33; M-10) +Evaluates Onorato et al. (2026, ApJL 1011, L59, arXiv:2609.31835; NOIRLab Release noirlab2627) against: + - C-31: Cosmic-Dawn age budget, Salpeter e-folding bottleneck (Schwarzschild vs Kerr spin; pure-H vs H+He), and Pop III vs DCBH seed requirements. + - C-32: Two-branch condensate + MOND phonon collapse at z = 6.0783 (evaluating exact Planck-2018 sigma_*(z=6.0783) vs z=0 Dark-WHIM inversion and MOND free-fall speedup). + - C-33: Slim-disk photon-trapping super-Eddington growth, binary orbital / projection constraints at 5.56 pkpc, and Peters (1964) GW chirp-mass budget. +attribution: Written by AI agent (Gemini, Google, via orda-aska for Foundation-0); not yet reviewed by a person. +license: Apache-2.0 (code) / CC-BY-4.0 (results). +""" + +from __future__ import annotations +import hashlib +import json +import math +import sys +from pathlib import Path + +C_SI = 299792458.0 +C_KMS = 299792.458 +G = 6.67430e-11 +M_P = 1.67262192369e-27 +SIGMA_T = 6.6524587321e-29 +M_SUN = 1.98847e30 +MPC = 3.085677581491367e22 +KPC = MPC / 1000.0 +PC = MPC / 1.0e6 +YR = 365.25 * 86400.0 +MYR = 1.0e6 * YR +A0_EMP = 1.20e-10 + +# Planck 2018 flat cosmology including relativistic radiation density Omega_r for high-z accuracy +H_LITTLE = 0.6736 +H0_SI = (100.0 * H_LITTLE * 1000.0) / MPC +OMEGA_B = 0.02237 / (H_LITTLE ** 2) +OMEGA_C = 0.1200 / (H_LITTLE ** 2) +OMEGA_M = (0.02237 + 0.1200 + 0.00064) / (H_LITTLE ** 2) +OMEGA_R = 9.236e-5 +OMEGA_L = 1.0 - OMEGA_M - OMEGA_R +RHO_CRIT0 = 3.0 * (H0_SI ** 2) / (8.0 * math.pi * G) +N_S = 0.9649 +SIGMA_8_TARGET = 0.8111 + +# Observed J1602+4228AB (Napowawa'enakaulua) parameters from Onorato et al. (2026, ApJL 1011, L59; arXiv:2609.31835) +Z_SYS_A = 6.0781 +Z_SYS_B = 6.0785 +Z_PAIR = 0.5 * (Z_SYS_A + Z_SYS_B) +THETA_ARCSEC = 0.98 +DELTA_V_OBS_KMS = 15.0 +M_BH_A_MSUN = 1.5e9 +M_BH_B_MSUN = 4.0e8 +LAM_EDD_A = 1.23 +LAM_EDD_B = 1.07 + + +def e_hubble(z: float) -> float: + zp1 = 1.0 + z + return math.sqrt(OMEGA_R * (zp1 ** 4) + OMEGA_M * (zp1 ** 3) + OMEGA_L) + + +def cosmic_age_myr(z: float, n_steps: int = 4000) -> float: + """Integrates t(z) = (1/H0) int_z^inf dz' / ((1+z') E(z')) via substitution u = 1/(1+z').""" + u_max = 1.0 / (1.0 + z) + du = u_max / n_steps + acc = 0.0 + for i in range(n_steps + 1): + u = i * du + w = 1.0 if (i == 0 or i == n_steps) else (4.0 if i % 2 == 1 else 2.0) + if u == 0.0: + integrand = 0.0 + else: + zp1 = 1.0 / u + ez = math.sqrt(OMEGA_R * (zp1 ** 4) + OMEGA_M * (zp1 ** 3) + OMEGA_L) + integrand = 1.0 / (u * ez) + acc += w * integrand + t_sec = (acc * du / 3.0) / H0_SI + return t_sec / MYR + + +def angular_diameter_distance_kpc(z: float, n_steps: int = 2000) -> float: + dz = z / n_steps + acc = 0.0 + for i in range(n_steps + 1): + zi = i * dz + w = 1.0 if (i == 0 or i == n_steps) else (4.0 if i % 2 == 1 else 2.0) + acc += w / e_hubble(zi) + chi_m = (C_SI / H0_SI) * (acc * dz / 3.0) + return (chi_m / (1.0 + z)) / KPC + + +def eh98_no_wiggle_tk(k_hmpc: float) -> float: + """Eisenstein & Hu (1998, ApJ 496, 605) zero-baryon-oscillation shape transfer function.""" + om_h2 = OMEGA_M * (H_LITTLE ** 2) + ob_h2 = OMEGA_B * (H_LITTLE ** 2) + theta_cmb = 2.7255 / 2.7 + s = 44.5 * math.log(9.83 / om_h2) / math.sqrt(1.0 + 10.0 * (ob_h2 ** 0.75)) + alpha_gamma = 1.0 - 0.328 * math.log(431.0 * om_h2) * (ob_h2 / om_h2) + 0.38 * math.log(22.3 * om_h2) * ((ob_h2 / om_h2) ** 2) + k_mpc = k_hmpc * H_LITTLE + gamma_eff = OMEGA_M * H_LITTLE * (alpha_gamma + (1.0 - alpha_gamma) / (1.0 + ((0.43 * k_mpc * s) ** 4))) + q = k_hmpc * (theta_cmb ** 2) / gamma_eff + l0 = math.log(2.0 * math.e + 1.8 * q) + c0 = 14.2 + 731.0 / (1.0 + 62.5 * q) + return l0 / (l0 + c0 * (q ** 2)) + + +def growth_factor_norm(z: float) -> float: + """Carroll, Press & Turner (1992) linear growth factor D(z)/D(0) for flat LCDM.""" + a = 1.0 / (1.0 + z) + + def g_approx(om: float, ol: float) -> float: + return 2.5 * om / ((om ** (4.0 / 7.0)) - ol + (1.0 + 0.5 * om) * (1.0 + ol / 70.0)) + + ez2 = OMEGA_M * ((1.0 + z) ** 3) + OMEGA_L + om_z = OMEGA_M * ((1.0 + z) ** 3) / ez2 + ol_z = OMEGA_L / ez2 + return a * g_approx(om_z, ol_z) / g_approx(OMEGA_M, OMEGA_L) + + +def build_sigma_r_evaluator(): + """Returns calibrated sigma_lin(R_com_Mpc, z) normalized to Planck 2018 sigma_8 = 0.8111 up to k = 5e4 Mpc^-1.""" + n_k = 1200 + lnk_min, lnk_max = math.log(1.0e-4), math.log(5.0e4) + dlnk = (lnk_max - lnk_min) / n_k + ks = [math.exp(lnk_min + i * dlnk) for i in range(n_k + 1)] + tks = [eh98_no_wiggle_tk(k / H_LITTLE) for k in ks] + + def unnorm_var(r_mpc: float) -> float: + s = 0.0 + for i, k in enumerate(ks): + kr = k * r_mpc + if kr < 1.0e-4: + w_top = 1.0 - (kr ** 2) / 10.0 + else: + w_top = 3.0 * (math.sin(kr) - kr * math.cos(kr)) / (kr ** 3) + pk_un = (k ** N_S) * (tks[i] ** 2) + wt = 1.0 if (i == 0 or i == n_k) else (4.0 if i % 2 == 1 else 2.0) + s += wt * (k ** 3) * pk_un * (w_top ** 2) + return s * dlnk / 3.0 + + r8_mpc = 8.0 / H_LITTLE + norm_factor = (SIGMA_8_TARGET ** 2) / unnorm_var(r8_mpc) + + def sigma_lin(r_mpc: float, z: float) -> float: + return math.sqrt(norm_factor * unnorm_var(r_mpc)) * growth_factor_norm(z) + + return sigma_lin + + +def audit_c31_salpeter_seed_and_clustering_wall() -> dict: + """Evaluates Cosmic-Dawn age, Salpeter growth bottleneck, and clustering excess for J1602+4228AB.""" + t_pair_myr = cosmic_age_myr(Z_PAIR) + t_z20_myr = cosmic_age_myr(20.0) + t_z30_myr = cosmic_age_myr(30.0) + da_kpc = angular_diameter_distance_kpc(Z_PAIR) + r_proj_pkpc = THETA_ARCSEC * (math.pi / (180.0 * 3600.0)) * da_kpc + + t_edd_pure_h_myr = (SIGMA_T * C_SI) / (4.0 * math.pi * G * M_P) / MYR + y_he = 0.245 + mu_e_prim = 2.0 / (2.0 - y_he) + t_edd_prim_myr = t_edd_pure_h_myr / mu_e_prim + + def salpeter_myr(eps_r: float, pure_h: bool = True) -> float: + base = t_edd_pure_h_myr if pure_h else t_edd_prim_myr + return (eps_r / (1.0 - eps_r)) * base + + dt_from_z20 = t_pair_myr - t_z20_myr + dt_from_z30 = t_pair_myr - t_z30_myr + + efold_a_pop3 = math.log(M_BH_A_MSUN / 100.0) + efold_b_pop3 = math.log(M_BH_B_MSUN / 100.0) + efold_a_dcbh = math.log(M_BH_A_MSUN / 1.0e5) + efold_b_dcbh = math.log(M_BH_B_MSUN / 1.0e5) + + tsal_01_h = salpeter_myr(0.10, pure_h=True) + tsal_01_prim = salpeter_myr(0.10, pure_h=False) + tsal_02_kerr = salpeter_myr(0.20, pure_h=True) + + return { + "epistemic_status": "COMPUTED (KNOWN-FRAMEWORK COSMOLOGICAL & SALPETER IDENTITIES; LENSING & VIRIAL MASS CAVEATS NOTED)", + "observed_system": { + "designation": "J1602+4228AB (Napowawa'enakaulua)", + "z_sys_A": Z_SYS_A, + "z_sys_B": Z_SYS_B, + "cosmic_age_at_z_Myr": round(t_pair_myr, 2), + "angular_diameter_distance_kpc": round(da_kpc, 2), + "computed_projected_sep_pkpc": round(r_proj_pkpc, 2), + "reported_projected_sep_pkpc": 5.56, + "M_BH_A_Msun": M_BH_A_MSUN, + "M_BH_B_Msun": M_BH_B_MSUN, + "lambda_Edd_A": LAM_EDD_A, + "lambda_Edd_B": LAM_EDD_B, + "reported_clustering_excess_orders_of_magnitude": "2 to 3 (100x to 1000x over extrapolated high-z quasar clustering in 199 JWST Aether fields)", + }, + "salpeter_timescales_Myr": { + "pure_H_eps_0p10": round(tsal_01_h, 2), + "primordial_H_He_eps_0p10": round(tsal_01_prim, 2), + "spinning_Kerr_pure_H_eps_0p20": round(tsal_02_kerr, 2), + }, + "growth_windows_Myr": { + "from_z20_to_z6p08": round(dt_from_z20, 2), + "from_z30_to_z6p08": round(dt_from_z30, 2), + }, + "seed_duty_cycle_audit_for_J1602A_1p5e9_Msun": { + "popIII_100Msun_efoldings": round(efold_a_pop3, 3), + "popIII_100Msun_req_time_Edd1_eps0p10_Myr": round(efold_a_pop3 * tsal_01_h, 2), + "popIII_100Msun_duty_from_z20_Edd1_eps0p10": round((efold_a_pop3 * tsal_01_h) / dt_from_z20, 3), + "popIII_100Msun_duty_from_z20_obsEdd1p23_eps0p10": round((efold_a_pop3 * tsal_01_h) / (LAM_EDD_A * dt_from_z20), 3), + "popIII_100Msun_duty_from_z20_Edd1_Kerr_eps0p20": round((efold_a_pop3 * tsal_02_kerr) / dt_from_z20, 3), + "dcbh_1e5Msun_efoldings": round(efold_a_dcbh, 3), + "dcbh_1e5Msun_duty_from_z20_Edd1_eps0p10": round((efold_a_dcbh * tsal_01_h) / dt_from_z20, 3), + "dcbh_1e5Msun_duty_from_z20_obsEdd1p23_eps0p10": round((efold_a_dcbh * tsal_01_h) / (LAM_EDD_A * dt_from_z20), 3), + }, + "seed_duty_cycle_audit_for_J1602B_4p0e8_Msun": { + "popIII_100Msun_efoldings": round(efold_b_pop3, 3), + "popIII_100Msun_duty_from_z20_Edd1_eps0p10": round((efold_b_pop3 * tsal_01_h) / dt_from_z20, 3), + "dcbh_1e5Msun_efoldings": round(efold_b_dcbh, 3), + "dcbh_1e5Msun_duty_from_z20_obsEdd1p07_eps0p10": round((efold_b_dcbh * tsal_01_h) / (LAM_EDD_B * dt_from_z20), 3), + }, + "scientific_caveats": [ + "Single-epoch broad-line virial BH masses carry ~2x (0.3 dex) systematic uncertainty.", + "Spectral slopes, dust attenuation, and [O III] outflow shapes differ between A and B (favoring a physical pair), but archival HST imaging shows a candidate foreground galaxy near B; a full lens model is pending (Onorato et al. 2026).", + ], + } + + +def audit_c32_two_branch_condensate_and_phonon_collapse() -> dict: + """Evaluates Wave-10 Dark-WHIM dispersion sigma_*(z=6.0783) and MOND phonon acceleration boost at Cosmic Dawn.""" + sigma_lin = build_sigma_r_evaluator() + delta_c = 1.686 + + lo_r, hi_r = 1.0e-4, 1.0 + assert sigma_lin(lo_r, Z_PAIR) > delta_c > sigma_lin(hi_r, Z_PAIR), "Invalid sigma_lin bracket at z=6.08" + for _ in range(80): + mid_r = 0.5 * (lo_r + hi_r) + if sigma_lin(mid_r, Z_PAIR) > delta_c: + lo_r = mid_r + else: + hi_r = mid_r + r_star_com_mpc = 0.5 * (lo_r + hi_r) + rho_m0 = OMEGA_M * RHO_CRIT0 + m_star_msun = ((4.0 / 3.0) * math.pi * ((r_star_com_mpc * MPC) ** 3) * rho_m0) / M_SUN + hz_si = H0_SI * e_hubble(Z_PAIR) + v200_star_kms = ((10.0 * G * (m_star_msun * M_SUN) * hz_si) ** (1.0 / 3.0)) / 1000.0 + sigma_star_z6_kms = v200_star_kms / math.sqrt(2.0) + + halo_rarities = [] + for m_h in [1.0e12, 5.0e12]: + r_lag_mpc = (((3.0 * m_h * M_SUN) / (4.0 * math.pi * rho_m0)) ** (1.0 / 3.0)) / MPC + sig_m = sigma_lin(r_lag_mpc, Z_PAIR) + halo_rarities.append({ + "halo_mass_Msun": m_h, + "comoving_lagrangian_radius_Mpc": round(r_lag_mpc, 3), + "sigma_lin_z6p08": round(sig_m, 4), + "gaussian_peak_height_nu": round(delta_c / sig_m, 2), + }) + + sigma_host_kms = 250.0 / math.sqrt(2.0) + f_trap_z6 = max(0.0, 1.0 - (sigma_star_z6_kms / sigma_host_kms) ** 2) + sigma_star_z0_kms = 185.59 + f_trap_z0 = max(0.0, 1.0 - (sigma_star_z0_kms / sigma_host_kms) ** 2) + + r_feed_m = 30.0 * KPC + m_b_feed = 5.0e10 * M_SUN + g_b_feed = (G * m_b_feed) / (r_feed_m ** 2) + a0_const = A0_EMP + a0_hubble_z6 = (C_SI * hz_si) / (2.0 * math.pi) + + def g_rar(gb: float, a0_val: float) -> float: + return gb / (1.0 - math.exp(-math.sqrt(gb / a0_val))) + + g_mond_const_a0 = g_rar(g_b_feed, a0_const) + g_mond_hubble_a0 = g_rar(g_b_feed, a0_hubble_z6) + g_two_branch_const = g_mond_const_a0 + (OMEGA_C / OMEGA_B) * f_trap_z6 * g_b_feed + + t_ff_newt_myr = (math.pi / 2.0) * math.sqrt(r_feed_m / (2.0 * g_b_feed)) / MYR + t_ff_mond_const_myr = (math.pi / 2.0) * math.sqrt(r_feed_m / (2.0 * g_mond_const_a0)) / MYR + t_ff_mond_hubble_myr = (math.pi / 2.0) * math.sqrt(r_feed_m / (2.0 * g_mond_hubble_a0)) / MYR + t_ff_two_branch_myr = (math.pi / 2.0) * math.sqrt(r_feed_m / (2.0 * g_two_branch_const)) / MYR + + return { + "epistemic_status": "COMPUTED (WAVE-10 SIGMA_*(Z) EXTENSION & MOND FREE-FALL) & CONJECTURE (COSMIC-DAWN DCBH SEEDING)", + "planck_nonlinear_collapse_at_z6p08": { + "R_star_comoving_Mpc": round(r_star_com_mpc, 5), + "M_star_Msun": float(f"{m_star_msun:.4e}"), + "sigma_star_z6p08_kms": round(sigma_star_z6_kms, 3), + "sigma_star_z0_kms": sigma_star_z0_kms, + "host_177kms_trapping_at_z6p08": round(f_trap_z6, 6), + "host_177kms_trapping_at_z0": round(f_trap_z0, 6), + }, + "lcdm_gaussian_halo_rarity_at_z6p08": halo_rarities, + "feeder_filament_30pkpc_5e10Msun_infall": { + "g_baryon_m_s2": float(f"{g_b_feed:.4e}"), + "a0_const_m_s2": a0_const, + "a0_hubble_cHz_over_2pi_m_s2": float(f"{a0_hubble_z6:.4e}"), + "free_fall_time_pure_baryon_Newton_Myr": round(t_ff_newt_myr, 2), + "free_fall_time_MOND_const_a0_Myr": round(t_ff_mond_const_myr, 2), + "free_fall_time_MOND_Hubble_a0_Myr": round(t_ff_mond_hubble_myr, 2), + "free_fall_time_two_branch_trapped_condensate_Myr": round(t_ff_two_branch_myr, 2), + }, + "dynamical_friction_audit_note": ( + f"Pure baryon-only MOND slows kpc-scale galaxy mergers due to absent dark-halo dynamical friction " + f"(Nipoti et al. 2008), whereas in the two-branch condensate sigma_*(z=6.08) = {sigma_star_z6_kms:.2f} km/s " + f"<< sigma_halo keeps f_trap = {f_trap_z6:.5f}, supplying both deep central DCBH potentials and " + f"Chandrasekhar dynamical friction at z = 6.08 before late-time cosmic-web shocks heat the condensate " + f"to 185.59 km/s by z = 0." + ), + } + + +def audit_c33_slim_disk_and_binary_gw_budget() -> dict: + """Evaluates slim-disk photon trapping for lambda_Edd > 1, 5.56 pkpc orbital projection, and GW merger timescale.""" + t_edd_pure_h_myr = (SIGMA_T * C_SI) / (4.0 * math.pi * G * M_P) / MYR + tsal_01_myr = (0.10 / 0.90) * t_edd_pure_h_myr + efold_a_pop3 = math.log(M_BH_A_MSUN / 100.0) + + slim_disk_benchmarks = [] + for mdot in [1.0, 2.0, 3.0, 5.0]: + lam_obs = mdot if mdot < 2.0 else 2.0 * (1.0 + math.log(mdot / 2.0)) + t_grow_pop3_myr = (efold_a_pop3 * tsal_01_myr) / mdot + slim_disk_benchmarks.append({ + "dimensionless_mass_inflow_mdot": mdot, + "radiated_lambda_Edd_slim_disk": round(lam_obs, 3), + "popIII_100Msun_to_1p5e9Msun_time_Myr": round(t_grow_pop3_myr, 2), + }) + + r_sep_m = 5.56 * KPC + m_bh_tot_kg = (M_BH_A_MSUN + M_BH_B_MSUN) * M_SUN + v_kepler_bh_only_kms = math.sqrt((G * m_bh_tot_kg) / r_sep_m) / 1000.0 + m_enc_host_kg = 1.5e11 * M_SUN + v_circ_host_kms = math.sqrt((G * (m_bh_tot_kg + m_enc_host_kg)) / r_sep_m) / 1000.0 + proj_factor_host = DELTA_V_OBS_KMS / v_circ_host_kms + + m1 = M_BH_A_MSUN * M_SUN + m2 = M_BH_B_MSUN * M_SUN + m_chirp_msun = (((M_BH_A_MSUN * M_BH_B_MSUN) ** 0.6) / ((M_BH_A_MSUN + M_BH_B_MSUN) ** 0.2)) + + def peters_gw_myr(a_m: float) -> float: + t_sec = (5.0 / 256.0) * (C_SI ** 5) * (a_m ** 4) / ((G ** 3) * m1 * m2 * (m1 + m2)) + return t_sec / MYR + + t_gw_at_5p56kpc_myr = peters_gw_myr(r_sep_m) + t_gw_at_0p05pc_myr = peters_gw_myr(0.05 * PC) + t_gw_at_0p10pc_myr = peters_gw_myr(0.10 * PC) + + return { + "epistemic_status": "COMPUTED (SLIM-DISK ADVECTION & PETERS 1964 GW INSPIRAL IDENTITIES)", + "slim_disk_photon_trapping_benchmarks": slim_disk_benchmarks, + "kinematic_projection_at_5p56_pkpc": { + "v_circ_BHs_only_kms": round(v_kepler_bh_only_kms, 2), + "v_circ_with_1p5e11Msun_host_kms": round(v_circ_host_kms, 2), + "observed_delta_v_los_kms": DELTA_V_OBS_KMS, + "required_abs_sin_i_cos_psi": round(proj_factor_host, 4), + }, + "gravitational_wave_inspiral_budget": { + "chirp_mass_Msun": float(f"{m_chirp_msun:.4e}"), + "t_GW_at_5p56_pkpc_Myr": float(f"{t_gw_at_5p56kpc_myr:.3e}"), + "t_GW_at_0p10_pc_Myr": round(t_gw_at_0p10pc_myr, 2), + "t_GW_at_0p05_pc_Myr": round(t_gw_at_0p05pc_myr, 2), + "nanograv_relevance": ( + f"At 5.56 pkpc, pure GW emission is negligible (t_GW = {t_gw_at_5p56kpc_myr:.2e} Myr); " + f"Chandrasekhar dynamical friction and stellar/condensate loss-cone scattering must harden " + f"the pair to 0.05-0.10 pc, after which GW inspiral merges the M_c = {m_chirp_msun:.2e} M_sun " + f"binary in {t_gw_at_0p05pc_myr:.2f}-{t_gw_at_0p10pc_myr:.2f} Myr, feeding the nHz GW background." + ), + }, + } + + +def emit_or_verify(cert: dict, out_path: Path) -> None: + canonical = json.dumps(cert, sort_keys=True, separators=(",", ":")).encode("utf-8") + cert["sha256_canonical"] = hashlib.sha256(canonical).hexdigest() + rendered = json.dumps(cert, indent=2) + "\n" + if "--check" in sys.argv: + assert out_path.is_file(), f"Missing certificate file: {out_path}" + on_disk_text = out_path.read_text(encoding="utf-8") + on_disk_obj = json.loads(on_disk_text) + stored_sha = on_disk_obj.pop("sha256_canonical", None) + disk_canonical = json.dumps(on_disk_obj, sort_keys=True, separators=(",", ":")).encode("utf-8") + assert stored_sha == hashlib.sha256(disk_canonical).hexdigest(), "Canonical SHA-256 mismatch on disk" + assert stored_sha == cert["sha256_canonical"], "Recomputed canonical SHA-256 mismatch" + assert on_disk_text == rendered, "Certificate file is not byte-identical to generator output" + print(f"CHECK OK (byte-identical): {out_path.name} sha256_canonical={stored_sha}") + else: + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text(rendered, encoding="utf-8") + print(f"WROTE {out_path.name} sha256_canonical={cert['sha256_canonical']}") + + +def main() -> int: + c31 = audit_c31_salpeter_seed_and_clustering_wall() + c32 = audit_c32_two_branch_condensate_and_phonon_collapse() + c33 = audit_c33_slim_disk_and_binary_gw_budget() + + assert 5.50 <= c31["observed_system"]["computed_projected_sep_pkpc"] <= 5.75 + assert c31["seed_duty_cycle_audit_for_J1602A_1p5e9_Msun"]["popIII_100Msun_duty_from_z20_Edd1_eps0p10"] > 1.0 + assert c31["seed_duty_cycle_audit_for_J1602A_1p5e9_Msun"]["dcbh_1e5Msun_duty_from_z20_obsEdd1p23_eps0p10"] < 0.70 + assert 0.001 <= c32["planck_nonlinear_collapse_at_z6p08"]["R_star_comoving_Mpc"] <= 0.10 + assert c32["planck_nonlinear_collapse_at_z6p08"]["sigma_star_z6p08_kms"] < 2.0 + assert c32["planck_nonlinear_collapse_at_z6p08"]["host_177kms_trapping_at_z6p08"] > 0.9998 + assert c32["planck_nonlinear_collapse_at_z6p08"]["host_177kms_trapping_at_z0"] == 0.0 + assert 6.46e8 <= c33["gravitational_wave_inspiral_budget"]["chirp_mass_Msun"] <= 6.48e8 + + cert12 = { + "schema": "FOUNDATION-0/GRAVITY-WAVE12-COSMIC-DAWN-QUASAR-PAIR/1.0", + "claim_c31_salpeter_seed_and_clustering_wall": c31, + "claim_c32_two_branch_condensate_and_phonon_collapse": c32, + "claim_c33_slim_disk_and_binary_gw_budget": c33, + } + out_path = Path(__file__).resolve().parent / "results" / "wave12_cosmic_dawn_quasar_certificates.json" + emit_or_verify(cert12, out_path) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/research/value-assessment-20261112/observations/evidence.json b/research/value-assessment-20261112/observations/evidence.json new file mode 100644 index 0000000..98d1db5 --- /dev/null +++ b/research/value-assessment-20261112/observations/evidence.json @@ -0,0 +1,22 @@ +{ + "status": "Completed deterministic identifiability probe; empirical fit parked pendingdataaudit", + "snapshot_gravity_head": "70a1204a536b3dca0b3053d1a056daf22601ac00", + "reproduce": "python3 probe.py", + "checks_passed": 26, + "result_scope": "Deterministic synthetic identifiability only; no observational fit or survey power forecast.", + "full_RAR_exact_symmetry": "(q,s,u) -> (q+delta,s+delta,u-delta)", + "deep_measured_slope": "q+s+2u", + "z0_anchor_breaks_exponent_symmetry": false, + "numerical_results": "results.json", + "sources": "sources.json", + "research_note": "research.md", + "retrieval_record": "retrieval.json", + "retrieval_addendum": "retrieval-addendum.json", + "raw_79_galaxy_fit_performed": false, + "primary_table_schema_independently_verified": false, + "probe_sha256": "e61535ad2e5c6dfaa98c250ef827b60903863e52f33368ac7d36e07f4c0cf53b", + "research_note_sha256": "d6cd8c559c29d7a3c6c8c516cccd8304c1b7ea459f5563c53529c9aa0e7a5abe", + "deterministic_rerun_matches": true, + "local_links_verified": true, + "prose_check": "passed" +} diff --git a/research/value-assessment-20261112/observations/probe.py b/research/value-assessment-20261112/observations/probe.py new file mode 100644 index 0000000..9588545 --- /dev/null +++ b/research/value-assessment-20261112/observations/probe.py @@ -0,0 +1,312 @@ +#!/usr/bin/env python3 +"""Structural RAR identifiability, with deterministic synthetic controls only. + +No observations are read. Accelerations are expressed in units of A_REF. +Run: python3 probe.py [--output results.json] +Dependencies: numpy, scipy. This is a design calculation, not a survey forecast. +""" +from __future__ import annotations + +import argparse +import hashlib +import json +import math +from pathlib import Path +import sys + +import numpy as np +import scipy +from scipy.optimize import least_squares, brentq +from scipy.stats import norm + +A_REF = 1.2e-10 +OMEGA_M = 0.315 +LN10 = math.log(10.0) +PARAMETERS = ["ln_A_over_Aref", "ln_B", "q", "s", "ln_C", "u"] + + +def expansion(z): + z = np.asarray(z, dtype=float) + if np.any(z < 0) or not np.all(np.isfinite(z)): + raise ValueError("Redshifts must be finite and nonnegative") + return np.sqrt(OMEGA_M * (1.0 + z) ** 3 + 1.0 - OMEGA_M) + + +def log_model(theta, log_gnom, z, deep=False): + """ln(g_measured/A_REF); b=actual/nominal, k=measured/true.""" + la, lb, q, s, lc, u = np.asarray(theta, dtype=float) + e = np.log(expansion(z)) + lg = np.asarray(log_gnom) + lb + s * e + la_z = la + q * e + if deep: + return lc + u * e + 0.5 * (lg + la_z) + x = np.exp(0.5 * (lg - la_z)) + return lc + u * e + lg - np.log(-np.expm1(-x)) + + +def jacobian(theta, log_gnom, z, deep=False): + la, lb, q, s, _, _ = np.asarray(theta, dtype=float) + e = np.log(expansion(z)) + x = np.exp(0.5 * (log_gnom + lb - la + (s - q) * e)) + if deep: + t = np.full_like(e, 0.5) + else: + t = np.zeros_like(x) + m = x < 700 + t[m] = x[m] / (2.0 * np.expm1(x[m])) + return np.column_stack([t, 1.0 - t, t * e, (1.0 - t) * e, + np.ones_like(e), e]) + + +def grid(lo=-4, hi=2, nr=8, nz=16, local=False): + zs = np.linspace(0.33, 1.44, nz) + if local: + zs = np.r_[0.0, zs] + z, lg = np.meshgrid(zs, np.linspace(lo, hi, nr) * LN10, indexing="ij") + return lg.ravel(), z.ravel() + + +def fisher_report(j, sigma_dex=0.05): + """Unitless toy information; every row artificially independent.""" + singular = np.linalg.svd(j / (sigma_dex * LN10), compute_uv=False) + tol = 1e-10 * singular[0] + rank = int(np.count_nonzero(singular > tol)) + out = {"n_rows": int(j.shape[0]), "n_parameters": int(j.shape[1]), + "rank_relative_tolerance": 1e-10, "numerical_rank": rank, + "singular_values": singular.tolist(), "sigma_ln_y": sigma_dex * LN10, + "independent_rows_assumed_for_design_only": True} + if rank == j.shape[1]: + _, sv, vt = np.linalg.svd(j / (sigma_dex * LN10), full_matrices=False) + cov = (vt.T / sv**2) @ vt + out["parameter_standard_deviations"] = np.sqrt(np.diag(cov)).tolist() + out["condition_number"] = float(singular[0] / singular[-1]) + else: + out["parameter_standard_deviations"] = None + out["condition_number"] = None + return out + + +def fit_subset(y, lg, z, free=(0, 2), fixed=None, deep=False): + base = np.zeros(6) if fixed is None else np.array(fixed, dtype=float) + free = list(free) + + def full(v): + t = base.copy() + t[free] = v + return t + + fit = least_squares(lambda v: log_model(full(v), lg, z, deep) - y, + base[free], jac=lambda v: jacobian(full(v), lg, z, deep)[:, free], + xtol=1e-13, ftol=1e-13, gtol=1e-13, max_nfev=3000) + err = (log_model(full(fit.x), lg, z, deep) - y) / LN10 + return {"success": bool(fit.success), "theta": full(fit.x).tolist(), + "free_parameters": [PARAMETERS[i] for i in free], + "max_abs_residual_dex": float(np.max(np.abs(err))), + "rms_residual_dex": float(np.sqrt(np.mean(err**2)))} + + +def run(): + checks = [] + + def check(name, condition, evidence): + checks.append({"name": name, "passed": bool(condition), "evidence": evidence}) + if not condition: + raise AssertionError(name + ": " + str(evidence)) + + zero = np.zeros(6) + wide_lg, wide_z = grid() + # Derivatives checked against finite differences away from both limits. + trial = np.array([0.17, -0.21, 0.72, 0.31, 0.08, -0.12]) + eps = 1e-6 + finite = np.column_stack([(log_model(trial + np.eye(6)[i] * eps, wide_lg, wide_z) + - log_model(trial - np.eye(6)[i] * eps, wide_lg, wide_z)) + / (2 * eps) for i in range(6)]) + j = jacobian(trial, wide_lg, wide_z) + diff = float(np.max(np.abs(j - finite))) + check("analytic_jacobian_matches_finite_difference", diff < 2e-9, diff) + + designs = {} + for name, lo, hi in [("deep_finite", -6, -4), ("transition", -2, 0), + ("wide", -4, 2)]: + lg, z = grid(lo, hi) + designs[name] = fisher_report(jacobian(zero, lg, z)[:, :4]) + designs["exact_deep_limit"] = fisher_report(jacobian(zero, wide_lg, wide_z, True)[:, :4]) + designs["one_redshift"] = fisher_report(jacobian(zero, wide_lg, np.ones_like(wide_z))[:, :4]) + # A selection pattern with fixed g_true/a0 also destroys the independent columns. + fixed_ratio_theta = np.array([0.0, 0.0, 1.0, 0.0, 0.0, 0.0]) + track_lg = np.log(expansion(wide_z)) - 2 * LN10 + designs["fixed_ratio_selection_track"] = fisher_report(jacobian(fixed_ratio_theta, track_lg, wide_z)[:, :4]) + designs["wide_with_free_acceleration_calibration"] = fisher_report(jacobian(zero, wide_lg, wide_z)) + local_lg, local_z = grid(local=True) + designs["wide_plus_local_with_free_acceleration_calibration"] = fisher_report(jacobian(zero, local_lg, local_z)) + # Fixing k over z removes the full-RAR symmetry. Fixing amplitudes alone does not. + designs["wide_known_amplitudes_free_q_s_u"] = fisher_report(jacobian(zero, wide_lg, wide_z)[:, [2, 3, 5]]) + designs["wide_known_amplitudes_and_k_free_q_s"] = fisher_report(jacobian(zero, wide_lg, wide_z)[:, [2, 3]]) + check("deep_limit_rank_two", designs["exact_deep_limit"]["numerical_rank"] == 2, designs["exact_deep_limit"]) + check("wide_fixed_k_rank_four", designs["wide"]["numerical_rank"] == 4, designs["wide"]["numerical_rank"]) + check("single_redshift_rank_two", designs["one_redshift"]["numerical_rank"] == 2, designs["one_redshift"]["numerical_rank"]) + check("selection_track_rank_two", designs["fixed_ratio_selection_track"]["numerical_rank"] == 2, designs["fixed_ratio_selection_track"]["numerical_rank"]) + check("full_six_parameter_rank_four", designs["wide_with_free_acceleration_calibration"]["numerical_rank"] == 4, designs["wide_with_free_acceleration_calibration"]["numerical_rank"]) + check("local_anchor_does_not_restore_rank", designs["wide_plus_local_with_free_acceleration_calibration"]["numerical_rank"] == 4, designs["wide_plus_local_with_free_acceleration_calibration"]["numerical_rank"]) + check("known_amplitudes_leave_exponent_rank_two", designs["wide_known_amplitudes_free_q_s_u"]["numerical_rank"] == 2, designs["wide_known_amplitudes_free_q_s_u"]["numerical_rank"]) + check("known_k_restores_exponent_rank", designs["wide_known_amplitudes_and_k_free_q_s"]["numerical_rank"] == 2, designs["wide_known_amplitudes_and_k_free_q_s"]["numerical_rank"]) + + # This symmetry is exact for the full interpolation, at every acceleration and z. + # It also preserves all z=0 amplitudes if only the exponents are shifted. + shifted = trial + np.array([0.0, 0.0, 1.3, 1.3, 0.0, -1.3]) + symmetry_err = float(np.max(np.abs(log_model(trial, local_lg, local_z) + - log_model(shifted, local_lg, local_z)))) + check("full_RAR_exponent_symmetry_including_z0", symmetry_err < 3e-14, symmetry_err) + amplitude_shift = trial + np.array([0.7, 0.7, 0.0, 0.0, -0.7, 0.0]) + amplitude_err = float(np.max(np.abs(log_model(trial, wide_lg, wide_z) + - log_model(amplitude_shift, wide_lg, wide_z)))) + check("full_RAR_amplitude_symmetry", amplitude_err < 3e-14, amplitude_err) + h = np.array([0, 0, 1, 0, 0, 0], dtype=float) + calibration_counterexample = np.array([0, 0, 0, -1, 0, 1], dtype=float) + counter_err = float(np.max(np.abs(log_model(h, local_lg, local_z) + - log_model(calibration_counterexample, local_lg, local_z)))) + check("q1_and_q0_full_RAR_counterexample", counter_err < 3e-14, counter_err) + null_amplitude = np.array([1, 1, 0, 0, -1, 0]) + null_exponent = np.array([0, 0, 1, 1, 0, -1]) + null_err = float(max(np.max(np.abs(j @ null_amplitude)), np.max(np.abs(j @ null_exponent)))) + check("analytic_null_vectors", null_err < 1e-14, null_err) + + injections = {} + for name, truth in [("physical_evolution", h), + ("mass_drift_only", [0, 0, 0, 1, 0, 0]), + ("kinematic_drift_only", [0, 0, 0, 0, 0, 0.5]), + ("no_evolution", zero)]: + truth = np.asarray(truth, dtype=float) + per = {"truth": truth.tolist()} + for dname, lo, hi, deep in [("exact_deep", -6, -4, True), + ("finite_deep", -6, -4, False), + ("wide", -4, 2, False)]: + lg, z = grid(lo, hi) + y = log_model(truth, lg, z, deep) + per[dname + "_fit_assuming_B1_C1_s0_u0"] = fit_subset(y, lg, z, deep=deep) + if truth[5] == 0: + y = log_model(truth, wide_lg, wide_z) + recovered = fit_subset(y, wide_lg, wide_z, free=(0, 1, 2, 3)) + per["wide_joint_mass_and_evolution_known_k"] = recovered + max_error = float(np.max(np.abs(np.asarray(recovered["theta"]) - truth))) + check(name + "_joint_recovery", max_error < 1e-8, max_error) + expected = truth[2] + truth[3] + 2 * truth[5] + qdeep = per["exact_deep_fit_assuming_B1_C1_s0_u0"]["theta"][2] + check(name + "_deep_apparent_slope", abs(qdeep - expected) < 1e-10, {"recovered": qdeep, "expected": expected}) + injections[name] = per + + # Independent high-acceleration predictions can reveal a mass-only false law, + # but cannot break the exact mass-plus-kinematics symmetry. + low_lg, low_z = grid(-6, -4) + high_lg, high_z = grid(1, 2) + truth_mass = np.array([0, 0, 0, 1, 0, 0], dtype=float) + wrong_fit = fit_subset(log_model(truth_mass, low_lg, low_z), low_lg, low_z) + hold_err = (log_model(wrong_fit["theta"], high_lg, high_z) + - log_model(truth_mass, high_lg, high_z)) / LN10 + holdout = {"training_max_residual_dex": wrong_fit["max_abs_residual_dex"], + "held_out_high_acceleration_max_residual_dex": float(np.max(np.abs(hold_err))), + "held_out_high_acceleration_rms_residual_dex": float(np.sqrt(np.mean(hold_err**2))), + "caveat": "Synthetic held-out acceleration ranges, not independent observed galaxies."} + check("mass_drift_wrong_law_exposed_by_high_branch", holdout["held_out_high_acceleration_max_residual_dex"] > 0.2, holdout) + + # A constant mass offset is a negative control for spurious redshift evolution. + constant_mass = np.array([0, 0.2 * LN10, 0, 0, 0, 0], dtype=float) + constant_fit = fit_subset(log_model(constant_mass, low_lg, low_z, True), low_lg, low_z, deep=True) + check("constant_mass_shift_changes_amplitude_only_in_deep_limit", abs(constant_fit["theta"][2]) < 1e-10, + constant_fit) + + # In the deep limit, ideal outer circular motion gives the same a0 statistic. + gm, r, a = 2.3, 9.1, 0.8 + gbar = gm / r**2 + gobs = math.sqrt(a * gbar) + v2 = gobs * r + btfr_err = abs(v2**2 / gm - gobs**2 / gbar) + check("same_data_BTFR_and_deep_RAR_are_identical", btfr_err < 1e-14, btfr_err) + + thresholds = [] + for z0, z1 in [(0.0, 1.0), (0.33, 1.44)]: + ratio = float(expansion(z1) / expansion(z0)) + lever = math.log10(ratio) + # A two-sided Gaussian 95% interval on q, centred on q=1, excludes q=0 + # only if total sigma_q < 1/1.95996. Other errors set zero for this bound. + bound = lever / 1.959963984540054 + velocity_factor = ratio**0.25 + i_true = math.radians(60) + i_assumed = math.asin(math.sin(i_true) / velocity_factor) + thresholds.append({"z_low": z0, "z_high": z1, "E_ratio": ratio, + "q0_vs_q1_delta_log10_a0": lever, + "equivalent_deep_mass_factor_b": ratio, + "equivalent_deep_acceleration_factor_k": math.sqrt(ratio), + "equivalent_deep_velocity_factor": velocity_factor, + "equivalent_inferred_distance_over_true": 1 / math.sqrt(ratio), + "inclination_example_true_deg": 60.0, + "inclination_example_assumed_deg": math.degrees(i_assumed), + "max_sigma_differential_log10_b_if_only_error_95pct": bound, + "max_sigma_differential_log10_k_if_only_error_95pct": bound / 2, + "max_sigma_differential_log10_velocity_if_only_error_95pct": bound / 4, + "small_sigma_velocity_fraction_if_only_error_95pct": LN10 * bound / 4}) + + # Correlated radial points do not deliver the nominal sqrt(n) gain. + nrad, sig_ind, sig_common = 8, 0.05, 0.10 + honest = math.sqrt(sig_ind**2 / nrad + sig_common**2) + naive = math.sqrt((sig_ind**2 + sig_common**2) / nrad) + covariance_control = {"radii_per_galaxy": nrad, "independent_sigma_dex": sig_ind, + "shared_sigma_dex": sig_common, + "mean_sigma_with_covariance_dex": honest, + "mean_sigma_if_marginals_treated_independent_dex": naive, + "uncertainty_underestimate_factor": honest / naive} + check("shared_radial_error_survives_averaging", honest > 2.5 * naive, covariance_control) + + # Deliberately constructed selection control, not the MUSE selection function. + # For epsilon ~ N(0,sigma^2), selecting epsilon/sigma > alpha moves the + # retained mean by sigma*phi(alpha)/SF(alpha). Choose thresholds that make + # the retained conditional mean imitate q=1 although the parent has q=0. + selection_z = np.linspace(0.33, 1.44, 16) + selection_sigma = 0.10 # dex in measured log acceleration + mills = lambda v: norm.pdf(v) / norm.sf(v) + initial_offset = selection_sigma * mills(-2.0) + target_offset = initial_offset + 0.5 * np.log10(expansion(selection_z) / expansion(selection_z[0])) + alpha = np.array([brentq(lambda a: selection_sigma * mills(a) - offset, -12, 12) + for offset in target_offset]) + actual_offset = selection_sigma * np.array([mills(a) for a in alpha]) + apparent_slope = float(np.polyfit(np.log10(expansion(selection_z)), 2 * actual_offset, 1)[0]) + selection_control = {"parent_q": 0.0, "parent_b": 1.0, "parent_k": 1.0, + "noise_sigma_log10_acceleration": selection_sigma, + "retained_mean_apparent_q": apparent_slope, + "redshifts": selection_z.tolist(), + "cut_in_noise_sigma": alpha.tolist(), + "retained_fraction": norm.sf(alpha).tolist(), + "retained_mean_residual_dex": actual_offset.tolist(), + "interpretation": "A designed truncation counterexample; not a MUSE bias estimate."} + check("selection_alone_can_shift_conditional_mean", abs(apparent_slope - 1.0) < 1e-11, selection_control) + no_selection_slope = float(np.polyfit(np.log10(expansion(selection_z)), np.zeros_like(selection_z), 1)[0]) + check("unselected_parent_mean_has_no_evolution", abs(no_selection_slope) < 1e-14, no_selection_slope) + + return {"scope": "Deterministic synthetic identifiability only; no observational fit or survey power forecast.", + "verdict": "pursue_conditional_calibration_and_selection_design; park_current_empirical_fit", + "assumptions": {"A_reference_m_s2": A_REF, "Omega_m": OMEGA_M, + "cosmology": "flat matter plus constant Lambda, radiation neglected", + "b_convention": "actual baryonic acceleration / nominal at fixed geometry", + "k_convention": "measured total acceleration / true", + "parameters": PARAMETERS, + "toy_sigma_dex": 0.05, + "toy_rows_are_not_MUSE_measurements": True}, + "designs": designs, "injections": injections, + "symmetry_max_abs_ln_difference": symmetry_err, + "q1_q0_counterexample_max_abs_ln_difference": counter_err, + "heldout": holdout, "constant_mass_control": constant_fit, + "calibration_thresholds": thresholds, "covariance_control": covariance_control, + "selection_control": selection_control, + "checks": checks, "checks_passed": len(checks), + "environment": {"python": sys.version.split()[0], "numpy": np.__version__, "scipy": scipy.__version__}, + "probe_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest()} + + +if __name__ == "__main__": + p = argparse.ArgumentParser(description=__doc__) + p.add_argument("--output", type=Path, default=Path(__file__).with_name("results.json")) + args = p.parse_args() + result = run() + args.output.write_text(json.dumps(result, indent=2, allow_nan=False) + "\n") + print(json.dumps({"checks_passed": result["checks_passed"], "output": str(args.output), + "scope": result["scope"]})) diff --git a/research/value-assessment-20261112/observations/research.md b/research/value-assessment-20261112/observations/research.md new file mode 100644 index 0000000..6678395 --- /dev/null +++ b/research/value-assessment-20261112/observations/research.md @@ -0,0 +1,286 @@ +# Can acceleration evolution be separated from calibration? + +**Pursue a calibrated test using individual galaxies. Park a new fit to published redshift bins. Reject the +claim that these bins, by themselves, identify a cosmological law of gravity.** The useful question is whether +a change in the radial acceleration relation remains after independently constraining changes in baryonic +mass, kinematics and selection. This note derives what that test can identify and supplies reproducible +counterexamples. No new observational fit has been performed. + +The calculation applies to the empirical radial acceleration relation (RAR), which compares acceleration +inferred from rotation to that predicted from visible matter. It does not assume that the relation has a +unique explanation. A changing relation between baryons and dark matter can also change its fitted +acceleration scale. The original RAR paper explicitly distinguishes its fitting function from a theory of +gravity. [McGaugh, Lelli and Schombert, 2016](https://arxiv.org/html/1609.05917v1) + +## The unresolved empirical distinction + +MUSE-DARK III studies 79 galaxies at 0.33 < z < 1.44, mainly at low acceleration. Both acceleration axes come +from a dynamical reconstruction. Its authors compare alternative halo and MOND models and check stellar masses +against photometric estimates. They discuss gas uncertainties and the mass shifts needed to remove the trend. +These checks deserve weight. An abstract degeneracy does not establish that the required drift exists in their +observations. [MUSE-DARK III, sections 2–3 and appendices B–E](https://arxiv.org/html/2604.22613v1) + +The broad research question and the need to handle calibration are established. Tully–Fisher evolution was +used to compare Hubble and dark-energy scalings in 2008. Alcock already compares constant, Hubble and +matter-density laws using the MUSE bins, with explicit qualifications about confidence conventions and +correlated calibration. Repeating that comparison would add little. [Limbach, Psaltis and Özel, +2008](https://arxiv.org/abs/0809.2790), [Alcock, 2026](https://arxiv.org/pdf/2609.38796) + +Joint inference of galaxy distance, inclination and mass-to-light ratios is also prior work. Desmond shows why +treating shared galaxy parameters as independent errors at each radius changes the inference. The contribution +here is a compact identifiability audit, with testable calibration requirements and stopping rules. No +priority claim is made for the underlying mathematics. [Desmond, 2023](https://arxiv.org/html/2303.11314v2) + +## An explicit observation model + +Let g be the nominal baryonic acceleration. Define + +\[ +f(g,a)=\frac{g}{1-\exp[-\sqrt{g/a}]},\qquad +a(z)=A E(z)^q,\qquad b(z)=B E(z)^s, +\] + +where E(z) = H(z)/H(0). The true baryonic acceleration is **b g**: b is actual divided by nominal at fixed +geometry. Thus b > 1 means the nominal mass budget is too small. A convention using nominal divided by actual +reverses the sign of s. In the first calculation the measured total acceleration is f(b g,a). + +For numerical examples only, E(z) = [0.315(1+z)^3 + 0.685]^(1/2). This matches the previous project study's +chosen background. Radiation is neglected over the tested interval. The reference acceleration 1.2 × 10^-10 m +s^-2 sets units. The fit amplitude A is free. The assumed cosmology is not an observational result from this +probe. + +With x = sqrt(b g/a), differentiation gives + +\[ +t=\frac{\partial\ln f}{\partial\ln a} + =\frac{x}{2(e^x-1)},\qquad +\frac{\partial\ln f}{\partial\ln b}=1-t. +\] + +For parameters (ln A, ln B, q, s), one row of the Jacobian, the matrix of sensitivities, is + +\[ +\big(t,\;1-t,\;t\ln E,\;(1-t)\ln E\big). +\] + +In the exact low-acceleration limit t = 1/2 and + +\[ +g_{\rm true}^2 = AB\,g E^{q+s}. +\] + +Only the product AB and the sum q+s can be identified. The change q → q+δ, s → s−δ leaves these predictions +unchanged. At finite acceleration this is an approximation, not an exact symmetry of the full fitting +function. Small departures from the limit can technically restore rank while leaving the fit too weak to be +useful. + +On the high-acceleration branch t tends to zero. There the response measures b with little dependence on a. +Data spanning both branches and multiple redshifts can separate q and s **if total-acceleration calibration is +controlled**. A high-acceleration sample alone loses sensitivity to a. A local sample alone loses sensitivity +to evolution. Broad ranges listed separately are insufficient if their joint coverage leaves x nearly constant +or prevents comparison across redshifts. + +## A stronger ambiguity survives the full curve + +Allow a measured-to-true acceleration factor k(z) = C E(z)^u: + +\[ +g_{\rm measured}=k(z) f\big(b(z)g,a(z)\big). +\] + +The fitting function is homogeneous: f(λg,λa) = λ f(g,a). Therefore the transformation + +\[ +(q,s,u)\longrightarrow(q+\delta,s+\delta,u-\delta) +\] + +leaves every predicted acceleration unchanged, including points on the Newtonian branch. There is a separate +amplitude symmetry (A,B,C) → (λA,λB,C/λ). In this model the full curve measures combinations such as A/B, BC, +q−s and s+u, rather than all six parameters independently. This homogeneity holds for any relation g ν(g/a), +including other choices of interpolation function. + +A direct counterexample uses the same A, B = 1 and C = 1 at redshift zero. Physical Hubble tracking (q,s,u) = +(1,0,0) predicts exactly the same measured curve as (0,−1,1). In the latter, the physical acceleration scale +is constant, b = E^-1 and k = E. This is a deliberately unconstrained calibration alternative. It does not +show that actual data permit those drifts. + +A perfect local normalization anchor does not distinguish these cases because E(0) = 1. Even fixing all three +amplitudes leaves only two independent exponent combinations. An independent constraint on either s or u can +remove the remaining exponent symmetry when the full curve has useful acceleration coverage. In the exact deep +limit only q+s+2u is measured, so both nuisance contributions must be constrained, or their combined effect +bounded. + +## Reproducible controls + +[probe.py](probe.py) generates all observations synthetically. It reads no catalogue and uses no reported MUSE +uncertainties. The broad and narrow designs each contain 128 artificial independent rows at 16 redshifts, with +eight acceleration values at each redshift. A 0.05 dex error is assigned solely to compare the information +carried by different designs. A dex is a base-10 logarithmic unit. The table is a design calculation, not a +forecast for 128 observations or for 79 galaxies. + +| Controlled case | Computed result | Meaning | +| --- | --- | --- | +| Exact deep limit, free A/B/q/s | Rank 2 of 4 | Only normalization product and slope sum are measured | +| Finite deep range g/A_ref = 10^-6 to 10^-4, k fixed | Rank 4, toy standard error on q = 34.34 | Mathematical rank alone is a poor feasibility criterion | +| Broad range 10^-4 to 10^2, k fixed | Rank 4, toy standard error on q = 0.185 | Shape variation can separate mass drift from evolution under controlled k | +| Same broad range, free A/B/C/q/s/u | Rank 4 of 6 | Two exact symmetries remain | +| Add z = 0 rows to the six-parameter case | Rank remains 4 | A local anchor leaves the exponent symmetry intact | +| Fix amplitudes, leave q/s/u free | Rank 2 of 3 | Perfect normalization does not calibrate evolution | +| Fix amplitudes and k, leave q/s free | Rank 2 of 2 | A positive control restores identifiability | +| Hold g_true/a fixed across redshift | Rank 2 of 4 | This selection of support removes the shape information | + +The numerical rank threshold is 10^-10 relative to the largest singular value. The analytic null vectors +establish the exact deficiencies independently of that threshold. Finite differences agree with the analytic +derivatives to the recorded tolerance. Full details and parameter order appear in +[results.json](results.json). + +A noiseless injection with q = 0 and s = 1, fitted while wrongly fixing s = 0, returns q = 1 in the exact deep +limit. The finite deep sample returns q = 1.0043 with a maximum residual of 0.00109 dex. Predictions from that +wrong fit miss held-out high-acceleration points by as much as 0.360 dex. Fitting q and s together on the +broad sample with k known recovers the injected values. The exact mass-plus-kinematics counterexample remains +indistinguishable across the full curve to numerical precision. + +Negative controls recover zero evolution from a constant parent relation. A constant mass offset changes only +the fitted amplitude in the exact deep limit. This confirms the distinction between a common normalization +error and a calibration drift. The 26 assertions also test the local anchor, analytic symmetries, recovery of +an injected physical trend and the connection to the baryonic Tully–Fisher relation. + +## Selection and covariance can create false precision + +Selection on a predictor such as g, with an otherwise correct conditional model and no relevant measurement +error, need not create a spurious redshift trend. Selection that depends on noisy kinematics or on unmodelled +properties can do so. The probe constructs a deliberate counterexample: a non-evolving parent has Gaussian +scatter of 0.10 dex in measured log acceleration. A changing lower detection threshold shifts the retained +mean by exactly the amount corresponding to apparent q = 1. Retained fractions fall from 97.7% to 17.5% across +z = 0.33–1.44. This is an existence proof, not the actual survey selection function. + +The appropriate selected-data likelihood includes its normalization: + +\[ +p(d\mid\theta,S=1) +=\frac{p(d\mid\theta)\,P(S=1\mid d,\theta)} + {\int p(d'\mid\theta)P(S=1\mid d',\theta)\,\mathrm{d}d'}. +\] + +Conditioning on measured covariates or latent galaxy properties must be specified consistently in both +numerator and denominator. A simulation that starts after selection cannot establish that the original +selection is harmless. Recovery tests must pass through the measured quantities and the selection procedure. + +Radial points from one galaxy share inclination, distance and mass parameters. As a simple covariance check, +eight radial points with independent scatter 0.05 dex and a shared 0.10 dex shift have a mean error of 0.1016 +dex. Treating their marginal errors as independent gives 0.0395 dex, understating the uncertainty by a factor +of 2.57. Actual observations require their own covariance or joint posterior draws. These illustrative numbers +cannot repair missing survey covariance. + +## How accurate must calibration be? + +In the deep limit, a fit that sets b = k = 1 measures + +\[ +a_{\rm apparent}=k^2 b a, +\qquad q_{\rm apparent}=q+s+2u. +\] + +For a redshift pair, let L = log10[E(z_high)/E(z_low)]. Then + +\[ +q=\frac{\Delta\log_{10}a_{\rm apparent} +-\Delta\log_{10}b-2\Delta\log_{10}k}{L}. +\] + +If the three measured differences have independent Gaussian errors, the numerator variance is σ_app² + σ_b² + +4σ_k². Correlated calibration requires the full covariance. A nominal 95% interval centred on q = 1 excludes q += 0 only if its total standard error is smaller than 1/1.96. This is a necessary precision target for that +particular result, not a guarantee of valid coverage or a forecast of an observed exclusion. + +| Interval | Difference in log10 a between q = 0 and q = 1 | Maximum σ of differential log10 b, if it is the only error | Maximum σ of differential log10 velocity, if it is the only error | +| --- | --- | --- | --- | +| z = 0 to 1 | 0.2529 dex | 0.1290 dex | 0.03226 dex, about 7.4% | +| z = 0.33 to 1.44 | 0.2835 dex | 0.1446 dex | 0.03616 dex, about 8.3% | + +Other errors consume this budget. These are uncertainties in a systematic difference between epochs, not +errors that automatically shrink with the number of radial points. With bounded biases rather than Gaussian +priors, a robust exclusion requires the lower bound on Δ log10 a_app to exceed the allowed positive +contribution from Δ log10 b + 2Δ log10 k. + +For scale, H tracking from z = 0 to 1 raises a by a factor 1.790 in this background. The same deep-limit +signal can arise from a baryonic correction b = 1.790, an acceleration correction k = 1.338, or a velocity +correction of 15.7%, each acting alone. At fixed distance and line-of-sight velocity, a true inclination of 60 +degrees inferred as 48.5 degrees supplies that velocity factor. These are equivalent signal sizes, not +evidence for such errors. + +In a photometric mass model with fixed angular geometry, inferred mass scales as D² and physical radius as D, +so g_bar is approximately distance independent while g_obs scales as D^-1. Consequently a_app scales as D^-2 +in the deep limit. A distance underestimate by a factor 0.747 would reproduce the same signal. This simplified +scaling does not apply unchanged to a fully coupled dynamical reconstruction. Pressure support, inclination +and beam corrections can also change radial shape, so one scalar k is an identifiability probe rather than a +complete observational model. + +The deep-limit statistic g_obs²/g_bar becomes V_flat^4/(G M_bar) under the usual outer circular-orbit +approximation. Recasting the same masses and velocities as a baryonic Tully–Fisher measurement adds no +independent algebraic information. A separate survey can add evidence, but its selection, gas estimates and +velocity definition must be cross-calibrated. + +## Source and data checkpoint + +A relevant author preprint by Rusishvili already investigates evolving gas and stellar-mass estimates. Its +earlier version uses 89 objects and states that two cuts needed to reproduce the 79-galaxy sample are +unavailable in its inputs. Its gas correction uses a population scaling relation, with limitations stated for +the mass range. Its Zenodo ZIP contains the manuscript, TeX source and figures, but no galaxy tables or +analysis code. These claims have not been independently replicated here. They make an independent audit +useful, while preventing a claim that baryonic calibration is a newly noticed concern. [Rusishvili, DOI +21623517](https://doi.org/10.5281/zenodo.21623517) + +The later preprint's PDF was downloaded from Zenodo and checked against its recorded checksum. Page 3 states a +sample of 89 but lists bin counts totalling 93. That mismatch was verified in the rendered PDF. Its code and +exact selection are described as available on request. The manuscript's numerical correction should remain a +hypothesis for replication until the inputs and selection are reconciled. [Rusishvili, DOI +21644662](https://doi.org/10.5281/zenodo.21644662) + +The official DARK index is reachable. Its linked dynamical-data server timed out in bounded HTTPS and HTTP +attempts. Paper I describes released best-fit parameters with 95% intervals and points to DARK. Those +intervals do not by themselves establish access to joint covariance. The alternative AMUSED UDF page describes +the parent catalogue and public cubes, variance products and PSF information. That page supports a possible +future refit, but does not itself identify the selected 79 or provide their joint dynamical posteriors. [DARK +releases](https://dark.univ-lyon1.fr/data-releases/), [MUSE-DARK I, section +8](https://arxiv.org/html/2506.19721v3), [AMUSED UDF](https://amused.univ-lyon1.fr/project/UDF/) + +No individual radial data or joint posterior set for the 79 galaxies was acquired. This records access from +this environment, not global absence of the data. No author was contacted. The original retrieval record is +preserved in [retrieval.json](retrieval.json). Additional attempts and downloaded-source hashes are in +[retrieval-addendum.json](retrieval-addendum.json) and [sources.json](sources.json). + +## Acceptance and stopping conditions + +The next worthwhile action is a data sufficiency audit, followed by a frozen recovery protocol. It must satisfy all of these conditions before a physical evolution claim: + +1. **Reproduce membership.** Recover stable IDs for the selected sample, parent exclusions, radial cuts and + redshift assignments. A different set may support a new analysis, but cannot be labelled a replication of + the original 79. +2. **Recover measurement dependence.** Obtain joint posterior draws, a usable joint likelihood, or the + original cubes and calibration products needed to reconstruct them. Do not infer independent radial errors + from marginal intervals. +3. **Constrain the relevant drift.** Establish independent stellar and gas information plus kinematic + calibration, or show that their joint allowed bias cannot absorb q = 0 versus q = 1. A local anchor alone + fails this condition. Matching only stellar mass does not control gas fraction, physical radial coverage, + resolution or inclination. +4. **Demonstrate useful information.** Inspect the sensitivities after nuisance projection on the actual joint + distribution of acceleration and redshift. A technically full-rank matrix is insufficient. Fix a target + uncertainty or predictive separation before the final fit, with a declared systematic-error budget. +5. **Calibrate false positives.** Inject q = 0 and q = 1, calibration drift, realistic gas gradients and no + physical evolution through the full observational and selection procedure. Predeclare the interval coverage + and false-positive tolerances, then verify them on simulations independent of model tuning. +6. **Challenge the result.** Compare alternative baryonic and kinematic reconstructions, leave out whole + galaxies, and hold out a genuinely independent survey where available. If a gravity mechanism is claimed, + specify its external-field and cosmological predictions and compare relevant ordinary-gravity alternatives. + +**Park** the empirical fit if membership, covariance or independent calibration cannot be recovered, or if the +posterior for q follows the nuisance priors over the tested range. **Reject the current formulation** if it +treats free q as identifiable while leaving the exact nuisance symmetry unconstrained, treats same-data +Tully–Fisher as replication, or interprets an empirical RAR change as a unique mechanism. **Pursue** once the +data audit shows that an actual calibrated measurement can separate the competing explanations. A null result +that exposes a calibration floor is itself a useful outcome. It should be reported at that scope. + +The retained project lesson is that normalization agreement at one epoch cannot identify a cosmological +scaling. The next action is to reconcile the selected galaxies and independent calibration products before +spending effort on another exponent fit. diff --git a/research/value-assessment-20261112/observations/results.json b/research/value-assessment-20261112/observations/results.json new file mode 100644 index 0000000..85092ce --- /dev/null +++ b/research/value-assessment-20261112/observations/results.json @@ -0,0 +1,925 @@ +{ + "scope": "Deterministic synthetic identifiability only; no observational fit or survey power forecast.", + "verdict": "pursue_conditional_calibration_and_selection_design; park_current_empirical_fit", + "assumptions": { + "A_reference_m_s2": 1.2e-10, + "Omega_m": 0.315, + "cosmology": "flat matter plus constant Lambda, radiation neglected", + "b_convention": "actual baryonic acceleration / nominal at fixed geometry", + "k_convention": "measured total acceleration / true", + "parameters": [ + "ln_A_over_Aref", + "ln_B", + "q", + "s", + "ln_C", + "u" + ], + "toy_sigma_dex": 0.05, + "toy_rows_are_not_MUSE_measurements": true + }, + "designs": { + "deep_finite": { + "n_rows": 128, + "n_parameters": 4, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 4, + "singular_values": [ + 78.26053697133884, + 12.46729724146029, + 0.11501674654244563, + 0.018322746334025183 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": [ + 18.827000517981798, + 18.749329427989068, + 34.33627212646038, + 34.1946172898441 + ], + "condition_number": 4271.223076750764 + }, + "transition": { + "n_rows": 128, + "n_parameters": 4, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 4, + "singular_values": [ + 79.61686584804515, + 12.683367254745098, + 9.354614500763907, + 1.4902371498295532 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": [ + 0.27063672416454787, + 0.18696277223335564, + 0.4935813434249491, + 0.34097861838323595 + ], + "condition_number": 53.42563487774505 + }, + "wide": { + "n_rows": 128, + "n_parameters": 4, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 4, + "singular_values": [ + 83.69475527971213, + 28.091298809473173, + 13.332995555673081, + 4.475085218040899 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": [ + 0.10122083655932342, + 0.05406388938152083, + 0.18460434978207857, + 0.09860054001941139 + ], + "condition_number": 18.70238245794836 + }, + "exact_deep_limit": { + "n_rows": 128, + "n_parameters": 4, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 2, + "singular_values": [ + 78.26036978363668, + 12.467270607618273, + 5.52849079499573e-14, + 3.0027193239466452e-15 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": null, + "condition_number": null + }, + "one_redshift": { + "n_rows": 128, + "n_parameters": 4, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 2, + "singular_values": [ + 85.99503953673744, + 28.863365974194167, + 2.77316286356946e-14, + 1.958584658563025e-15 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": null, + "condition_number": null + }, + "fixed_ratio_selection_track": { + "n_rows": 128, + "n_parameters": 4, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 2, + "singular_values": [ + 78.3549050078744, + 12.482330544413635, + 1.1348217712788659e-14, + 3.773680173274725e-15 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": null, + "condition_number": null + }, + "wide_with_free_acceleration_calibration": { + "n_rows": 128, + "n_parameters": 6, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 4, + "singular_values": [ + 138.4869958584358, + 29.405034697866288, + 22.061675120837887, + 4.684369954016699, + 1.0667172381732517e-14, + 4.556940073490402e-15 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": null, + "condition_number": null + }, + "wide_plus_local_with_free_acceleration_calibration": { + "n_rows": 136, + "n_parameters": 6, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 4, + "singular_values": [ + 141.16061005087798, + 29.972724953620226, + 26.153930973531192, + 5.553281324323265, + 6.1760626768790816e-15, + 3.830306891292404e-15 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": null, + "condition_number": null + }, + "wide_known_amplitudes_free_q_s_u": { + "n_rows": 128, + "n_parameters": 3, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 2, + "singular_values": [ + 67.42165129001583, + 14.315683456639828, + 3.419002323882957e-15 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": null, + "condition_number": null + }, + "wide_known_amplitudes_and_k_free_q_s": { + "n_rows": 128, + "n_parameters": 2, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 2, + "singular_values": [ + 40.746342790482565, + 13.676098184352144 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": [ + 0.0680328448143508, + 0.03633757950812394 + ], + "condition_number": 2.979383610824287 + } + }, + "injections": { + "physical_evolution": { + "truth": [ + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0 + ], + "exact_deep_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + 9.041465082876703e-16, + 0.0, + 0.999999999999999, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 3.857309866213148e-16, + "rms_residual_dex": 1.6702641672044702e-16 + }, + "finite_deep_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + 2.2002941909628948e-16, + 0.0, + 0.9999999999999992, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.0, + "rms_residual_dex": 0.0 + }, + "wide_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + -2.1708541761593197e-16, + 0.0, + 1.0000000000000004, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 1.928654933106574e-16, + "rms_residual_dex": 3.859192858693479e-17 + }, + "wide_joint_mass_and_evolution_known_k": { + "success": true, + "theta": [ + 3.7618193164979705e-17, + -1.9222474363246833e-16, + 1.0, + 1.169556580362154e-16, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "ln_B", + "q", + "s" + ], + "max_abs_residual_dex": 3.857309866213148e-16, + "rms_residual_dex": 4.687942124829376e-17 + } + }, + "mass_drift_only": { + "truth": [ + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0 + ], + "exact_deep_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + 9.041465082876703e-16, + 0.0, + 0.999999999999999, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 3.857309866213148e-16, + "rms_residual_dex": 1.6702641672044702e-16 + }, + "finite_deep_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + -3.999513128429417e-05, + 0.0, + 1.0042816404990254, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.001090873059625739, + "rms_residual_dex": 0.00035699719290693366 + }, + "wide_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + -0.028891563405835822, + 0.0, + 1.4172122836334102, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.35897624259658284, + "rms_residual_dex": 0.11950194182889019 + }, + "wide_joint_mass_and_evolution_known_k": { + "success": true, + "theta": [ + -1.0467582235068078e-16, + -1.8071540937224455e-16, + -1.1542885458432137e-16, + 1.0000000000000002, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "ln_B", + "q", + "s" + ], + "max_abs_residual_dex": 3.857309866213148e-16, + "rms_residual_dex": 6.792136646322546e-17 + } + }, + "kinematic_drift_only": { + "truth": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.5 + ], + "exact_deep_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + 9.041465082876703e-16, + 0.0, + 0.999999999999999, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 3.857309866213148e-16, + "rms_residual_dex": 1.6702641672044702e-16 + }, + "finite_deep_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + 9.293903333445302e-05, + 0.0, + 1.0016117383247802, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.00042695352839339793, + "rms_residual_dex": 0.0001500546970189699 + }, + "wide_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + -0.004540317886152082, + 0.0, + 1.1648270163862608, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.17938562788832835, + "rms_residual_dex": 0.057964705395834176 + } + }, + "no_evolution": { + "truth": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "exact_deep_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.0, + "rms_residual_dex": 0.0 + }, + "finite_deep_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.0, + "rms_residual_dex": 0.0 + }, + "wide_fit_assuming_B1_C1_s0_u0": { + "success": true, + "theta": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.0, + "rms_residual_dex": 0.0 + }, + "wide_joint_mass_and_evolution_known_k": { + "success": true, + "theta": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "ln_B", + "q", + "s" + ], + "max_abs_residual_dex": 0.0, + "rms_residual_dex": 0.0 + } + } + }, + "symmetry_max_abs_ln_difference": 1.7763568394002505e-15, + "q1_q0_counterexample_max_abs_ln_difference": 8.881784197001252e-16, + "heldout": { + "training_max_residual_dex": 0.001090873059625739, + "held_out_high_acceleration_max_residual_dex": 0.3599352918323855, + "held_out_high_acceleration_rms_residual_dex": 0.22720131443287364, + "caveat": "Synthetic held-out acceleration ranges, not independent observed galaxies." + }, + "constant_mass_control": { + "success": true, + "theta": [ + 0.46051701859880956, + 0.0, + -8.17753853190091e-16, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.0, + "rms_residual_dex": 0.0 + }, + "calibration_thresholds": [ + { + "z_low": 0.0, + "z_high": 1.0, + "E_ratio": 1.7902513789968157, + "q0_vs_q1_delta_log10_a0": 0.25291401692741816, + "equivalent_deep_mass_factor_b": 1.7902513789968157, + "equivalent_deep_acceleration_factor_k": 1.3380027574698101, + "equivalent_deep_velocity_factor": 1.1567206912084742, + "equivalent_inferred_distance_over_true": 0.7473826151831107, + "inclination_example_true_deg": 60.0, + "inclination_example_assumed_deg": 48.47704287711932, + "max_sigma_differential_log10_b_if_only_error_95pct": 0.12904013488123847, + "max_sigma_differential_log10_k_if_only_error_95pct": 0.06452006744061924, + "max_sigma_differential_log10_velocity_if_only_error_95pct": 0.03226003372030962, + "small_sigma_velocity_fraction_if_only_error_95pct": 0.07428147274387017 + }, + { + "z_low": 0.33, + "z_high": 1.44, + "E_ratio": 1.9206998594100706, + "q0_vs_q1_delta_log10_a0": 0.2834595045878373, + "equivalent_deep_mass_factor_b": 1.9206998594100706, + "equivalent_deep_acceleration_factor_k": 1.3858931630576978, + "equivalent_deep_velocity_factor": 1.1772396370568303, + "equivalent_inferred_distance_over_true": 0.7215563411783479, + "inclination_example_true_deg": 60.0, + "inclination_example_assumed_deg": 47.36138311684839, + "max_sigma_differential_log10_b_if_only_error_95pct": 0.1446248537339103, + "max_sigma_differential_log10_k_if_only_error_95pct": 0.07231242686695515, + "max_sigma_differential_log10_velocity_if_only_error_95pct": 0.03615621343347757, + "small_sigma_velocity_fraction_if_only_error_95pct": 0.08325275807103653 + } + ], + "covariance_control": { + "radii_per_galaxy": 8, + "independent_sigma_dex": 0.05, + "shared_sigma_dex": 0.1, + "mean_sigma_with_covariance_dex": 0.10155048005794952, + "mean_sigma_if_marginals_treated_independent_dex": 0.03952847075210474, + "uncertainty_underestimate_factor": 2.5690465157330262 + }, + "selection_control": { + "parent_q": 0.0, + "parent_b": 1.0, + "parent_k": 1.0, + "noise_sigma_log10_acceleration": 0.1, + "retained_mean_apparent_q": 0.9999999999999912, + "redshifts": [ + 0.33, + 0.404, + 0.478, + 0.552, + 0.626, + 0.7, + 0.774, + 0.8480000000000001, + 0.9219999999999999, + 0.996, + 1.07, + 1.144, + 1.218, + 1.292, + 1.366, + 1.44 + ], + "cut_in_noise_sigma": [ + -2.0, + -1.4501401028256207, + -1.1139954386277535, + -0.8531425526860266, + -0.6324383500563396, + -0.43728813160091373, + -0.26016540498727375, + -0.09665907779250199, + 0.05604942852112379, + 0.1998789574076541, + 0.33620163334719194, + 0.4660382858772668, + 0.5901737105079546, + 0.7092281495977499, + 0.823703475204219, + 0.9340140666272633 + ], + "retained_fraction": [ + 0.9772498680518208, + 0.9264902730225392, + 0.867359428248133, + 0.8032098718879507, + 0.7364497594508195, + 0.6690487992581443, + 0.6026319057825232, + 0.5385014306044024, + 0.47765121537708605, + 0.4207876239551115, + 0.36835941064726335, + 0.32059404808756875, + 0.27753709768247564, + 0.23909145380913738, + 0.20505403217346568, + 0.1751483184953836 + ], + "retained_mean_residual_dex": [ + 0.0055247862678989975, + 0.015046271592864844, + 0.02473058055011878, + 0.034516752455572605, + 0.04435195460952311, + 0.0541912510510333, + 0.06399707253207215, + 0.07373851762409032, + 0.08339058150068618, + 0.09293337910321367, + 0.10235140523528717, + 0.11163285594509875, + 0.12076902268447474, + 0.1297537621517201, + 0.13858303937642566, + 0.14725453856181753 + ], + "interpretation": "A designed truncation counterexample; not a MUSE bias estimate." + }, + "checks": [ + { + "name": "analytic_jacobian_matches_finite_difference", + "passed": true, + "evidence": 7.484004527213983e-10 + }, + { + "name": "deep_limit_rank_two", + "passed": true, + "evidence": { + "n_rows": 128, + "n_parameters": 4, + "rank_relative_tolerance": 1e-10, + "numerical_rank": 2, + "singular_values": [ + 78.26036978363668, + 12.467270607618273, + 5.52849079499573e-14, + 3.0027193239466452e-15 + ], + "sigma_ln_y": 0.1151292546497023, + "independent_rows_assumed_for_design_only": true, + "parameter_standard_deviations": null, + "condition_number": null + } + }, + { + "name": "wide_fixed_k_rank_four", + "passed": true, + "evidence": 4 + }, + { + "name": "single_redshift_rank_two", + "passed": true, + "evidence": 2 + }, + { + "name": "selection_track_rank_two", + "passed": true, + "evidence": 2 + }, + { + "name": "full_six_parameter_rank_four", + "passed": true, + "evidence": 4 + }, + { + "name": "local_anchor_does_not_restore_rank", + "passed": true, + "evidence": 4 + }, + { + "name": "known_amplitudes_leave_exponent_rank_two", + "passed": true, + "evidence": 2 + }, + { + "name": "known_k_restores_exponent_rank", + "passed": true, + "evidence": 2 + }, + { + "name": "full_RAR_exponent_symmetry_including_z0", + "passed": true, + "evidence": 1.7763568394002505e-15 + }, + { + "name": "full_RAR_amplitude_symmetry", + "passed": true, + "evidence": 1.7763568394002505e-15 + }, + { + "name": "q1_and_q0_full_RAR_counterexample", + "passed": true, + "evidence": 8.881784197001252e-16 + }, + { + "name": "analytic_null_vectors", + "passed": true, + "evidence": 8.326672684688674e-17 + }, + { + "name": "physical_evolution_joint_recovery", + "passed": true, + "evidence": 1.9222474363246833e-16 + }, + { + "name": "physical_evolution_deep_apparent_slope", + "passed": true, + "evidence": { + "recovered": 0.999999999999999, + "expected": 1.0 + } + }, + { + "name": "mass_drift_only_joint_recovery", + "passed": true, + "evidence": 2.220446049250313e-16 + }, + { + "name": "mass_drift_only_deep_apparent_slope", + "passed": true, + "evidence": { + "recovered": 0.999999999999999, + "expected": 1.0 + } + }, + { + "name": "kinematic_drift_only_deep_apparent_slope", + "passed": true, + "evidence": { + "recovered": 0.999999999999999, + "expected": 1.0 + } + }, + { + "name": "no_evolution_joint_recovery", + "passed": true, + "evidence": 0.0 + }, + { + "name": "no_evolution_deep_apparent_slope", + "passed": true, + "evidence": { + "recovered": 0.0, + "expected": 0.0 + } + }, + { + "name": "mass_drift_wrong_law_exposed_by_high_branch", + "passed": true, + "evidence": { + "training_max_residual_dex": 0.001090873059625739, + "held_out_high_acceleration_max_residual_dex": 0.3599352918323855, + "held_out_high_acceleration_rms_residual_dex": 0.22720131443287364, + "caveat": "Synthetic held-out acceleration ranges, not independent observed galaxies." + } + }, + { + "name": "constant_mass_shift_changes_amplitude_only_in_deep_limit", + "passed": true, + "evidence": { + "success": true, + "theta": [ + 0.46051701859880956, + 0.0, + -8.17753853190091e-16, + 0.0, + 0.0, + 0.0 + ], + "free_parameters": [ + "ln_A_over_Aref", + "q" + ], + "max_abs_residual_dex": 0.0, + "rms_residual_dex": 0.0 + } + }, + { + "name": "same_data_BTFR_and_deep_RAR_are_identical", + "passed": true, + "evidence": 2.220446049250313e-16 + }, + { + "name": "shared_radial_error_survives_averaging", + "passed": true, + "evidence": { + "radii_per_galaxy": 8, + "independent_sigma_dex": 0.05, + "shared_sigma_dex": 0.1, + "mean_sigma_with_covariance_dex": 0.10155048005794952, + "mean_sigma_if_marginals_treated_independent_dex": 0.03952847075210474, + "uncertainty_underestimate_factor": 2.5690465157330262 + } + }, + { + "name": "selection_alone_can_shift_conditional_mean", + "passed": true, + "evidence": { + "parent_q": 0.0, + "parent_b": 1.0, + "parent_k": 1.0, + "noise_sigma_log10_acceleration": 0.1, + "retained_mean_apparent_q": 0.9999999999999912, + "redshifts": [ + 0.33, + 0.404, + 0.478, + 0.552, + 0.626, + 0.7, + 0.774, + 0.8480000000000001, + 0.9219999999999999, + 0.996, + 1.07, + 1.144, + 1.218, + 1.292, + 1.366, + 1.44 + ], + "cut_in_noise_sigma": [ + -2.0, + -1.4501401028256207, + -1.1139954386277535, + -0.8531425526860266, + -0.6324383500563396, + -0.43728813160091373, + -0.26016540498727375, + -0.09665907779250199, + 0.05604942852112379, + 0.1998789574076541, + 0.33620163334719194, + 0.4660382858772668, + 0.5901737105079546, + 0.7092281495977499, + 0.823703475204219, + 0.9340140666272633 + ], + "retained_fraction": [ + 0.9772498680518208, + 0.9264902730225392, + 0.867359428248133, + 0.8032098718879507, + 0.7364497594508195, + 0.6690487992581443, + 0.6026319057825232, + 0.5385014306044024, + 0.47765121537708605, + 0.4207876239551115, + 0.36835941064726335, + 0.32059404808756875, + 0.27753709768247564, + 0.23909145380913738, + 0.20505403217346568, + 0.1751483184953836 + ], + "retained_mean_residual_dex": [ + 0.0055247862678989975, + 0.015046271592864844, + 0.02473058055011878, + 0.034516752455572605, + 0.04435195460952311, + 0.0541912510510333, + 0.06399707253207215, + 0.07373851762409032, + 0.08339058150068618, + 0.09293337910321367, + 0.10235140523528717, + 0.11163285594509875, + 0.12076902268447474, + 0.1297537621517201, + 0.13858303937642566, + 0.14725453856181753 + ], + "interpretation": "A designed truncation counterexample; not a MUSE bias estimate." + } + }, + { + "name": "unselected_parent_mean_has_no_evolution", + "passed": true, + "evidence": 0.0 + } + ], + "checks_passed": 26, + "environment": { + "python": "3.14.6", + "numpy": "2.5.4", + "scipy": "1.18.1" + }, + "probe_sha256": "e61535ad2e5c6dfaa98c250ef827b60903863e52f33368ac7d36e07f4c0cf53b" +} diff --git a/research/value-assessment-20261112/observations/retrieval-addendum.json b/research/value-assessment-20261112/observations/retrieval-addendum.json new file mode 100644 index 0000000..3c77b24 --- /dev/null +++ b/research/value-assessment-20261112/observations/retrieval-addendum.json @@ -0,0 +1,78 @@ +{ + "checked_utc": "2026-11-12T21:50:44.995816+00:00", + "requests": [ + { + "url": "https://zenodo.org/api/records/21644662", + "error": "" + }, + { + "url": "https://doi.org/10.5281/zenodo.21644662", + "error": "" + } + ], + "completed_utc": "2026-11-12T21:55:35.122795+00:00", + "curl_fallback": { + "note": "System curl kept normal certificate verification; no TLS verification disabled.", + "records": [ + { + "url": "https://zenodo.org/api/records/21644662", + "http": 200, + "bytes": 6989, + "artifact": "zenodo-api.json", + "inventory": "One PDF, no raw tables or code" + }, + { + "url": "https://zenodo.org/api/records/21623517", + "http": 200, + "bytes": 7829, + "artifact": "zenodo-earlier-api.json", + "inventory": "One PDF and files.zip" + }, + { + "url": "https://zenodo.org/api/records/21623517/files/files.zip/content", + "http": 200, + "bytes": 621538, + "artifact": "rusishvili-files.zip", + "md5_matches_metadata": true, + "zip_members": [ + { + "name": "a0z_three_systematics.pdf", + "bytes": 453100 + }, + { + "name": "a0z_three_systematics.tex", + "bytes": 32933 + }, + { + "name": "fig3_massdrift.png", + "bytes": 58363 + }, + { + "name": "fig1_correction.png", + "bytes": 67962 + }, + { + "name": "fig2_robustness.png", + "bytes": 68294 + } + ] + }, + { + "url": "http://dark-matter.osu-lyon.fr/", + "http": 0, + "result": "curl connection timeout after8seconds, no bytes" + } + ] + }, + "additional_web_readings": [ + { + "url": "https://amused.univ-lyon1.fr/project/UDF/", + "result": "Accessible parentcatalogue,cubes andPSF description; no selected79jointposterior product acquired" + }, + { + "url": "https://doi.org/10.1051/0004-6361/202557396", + "result": "403; arxiv2506.19721v3 accessible; \u00a78 directs catalogues toDARK andcubes toAMUSED" + } + ], + "conclusion": "Downloaded two author manuscripts and TeX/figures, no individualgalaxy tables. No independent schema or selected79membership/covariance verified. Dataavailability elsewhere remainspossible." +} diff --git a/research/value-assessment-20261112/observations/retrieval.json b/research/value-assessment-20261112/observations/retrieval.json new file mode 100644 index 0000000..f369568 --- /dev/null +++ b/research/value-assessment-20261112/observations/retrieval.json @@ -0,0 +1,22 @@ +{ + "checked_utc": "2026-11-12T21:43:06.696357+00:00", + "release_index": "https://dark.univ-lyon1.fr/data-releases/", + "release_index_accessible": true, + "muse_udf_endpoint": { + "url": "https://dark-matter.osu-lyon.fr/", + "result": "web timeout and TLS curl connection timeout after15seconds" + }, + "kmos3d": { + "url": "https://cdsarc.cds.unistra.fr/ftp/J/ApJ/842/121/table3.dat", + "result": "TLS curl connection timeout after15seconds; prior indexed schema lacksindividualerrors/covariance" + }, + "muscatel_link": { + "url": "https://www.aip.de/en/musewide/muscatel_cubes/", + "result": "officialreleaseindex link returned404 viaweb" + }, + "lensing_cluster_link": { + "url": "https://cral-perso.univ-lyon1.fr/labo/perso/johan.richard/MUSE_data_release/", + "result": "accessible; identifiesRichard2021clusterredshift andlinecatalogs, not recovered2026individualgalaxykinematicposteriors" + }, + "conclusion": "No raw79-galaxy radialmeasurements andjointposteriors acquired. Availability limits are observations fromthisenvironment, notproofdatasetsdo notexist." +} diff --git a/research/value-assessment-20261112/observations/sources.json b/research/value-assessment-20261112/observations/sources.json new file mode 100644 index 0000000..124db28 --- /dev/null +++ b/research/value-assessment-20261112/observations/sources.json @@ -0,0 +1,109 @@ +{ + "checked_date": "2026-11-12", + "scope": "Primary-source reading and synthetic mathematical audit, not independent replication of survey or preprint fits", + "sources": [ + { + "id": "RAR2016", + "title": "McGaugh, Lelli and Schombert (2016)", + "url": "https://arxiv.org/html/1609.05917v1", + "location": "Equation 4 and discussion", + "use": "Empirical fitting function and separation from physical interpretation" + }, + { + "id": "Desmond2023", + "title": "Desmond (2023)", + "url": "https://arxiv.org/html/2303.11314v2", + "location": "Introduction and inference model", + "use": "Joint galaxy nuisance inference is prior work; shared radial errors" + }, + { + "id": "MUSEIII", + "title": "Ciocan et al. MUSE-DARK III (2026)", + "url": "https://arxiv.org/html/2604.22613v1", + "location": "Sections 2-3, Appendices B-E", + "use": "Selected79, low-acceleration emphasis, reconstruction dependence and author checks" + }, + { + "id": "MUSEI", + "title": "Ciocan et al. MUSE-DARK I (2026)", + "url": "https://arxiv.org/html/2506.19721v3", + "location": "Section8 and AppendixH", + "use": "Published release description includes best-fit parameters and95percent intervals; covariance not established by this description" + }, + { + "id": "Alcock2026", + "title": "Alcock (2026)", + "url": "https://arxiv.org/pdf/2609.38796", + "location": "Sections2-4", + "use": "Prior comparison of constant,Hubble andmatter-density scalings; sharedcalibration andconfidence caveats" + }, + { + "id": "Limbach2008", + "title": "Limbach, Psaltis and Ozel (2008)", + "url": "https://arxiv.org/abs/0809.2790", + "location": "Abstract", + "use": "Prior Tully-Fisher comparison of Hubble anddark-energy scalings" + }, + { + "id": "DARK", + "title": "ANR DARK data releases", + "url": "https://dark.univ-lyon1.fr/data-releases/", + "location": "Releaseindex", + "use": "Official links toMUSEUDF andAMUSED" + }, + { + "id": "AMUSED", + "title": "AMUSED UDF public data description", + "url": "https://amused.univ-lyon1.fr/project/UDF/", + "location": "Delivered data products", + "use": "Parentcatalogue,cubes,variance andPSF metadata; selected79jointposteriors not identified" + }, + { + "id": "RusishviliEarlier", + "title": "Rusishvili (2026), Three baryonic systematics", + "url": "https://doi.org/10.5281/zenodo.21623517", + "location": "Downloaded TeX sections2 andLimitations; ZIP inventory", + "use": "Existing calibration critique; acknowledged89vs79sample andgas scaling limits; not replicated" + }, + { + "id": "RusishviliLater", + "title": "Rusishvili (2026), Baryonic systematics and an ensemble-geometric interpretation", + "url": "https://doi.org/10.5281/zenodo.21644662", + "location": "DownloadedPDF pages3and9, visualinspectionpage3", + "use": "89sample text versus93inbin counts; code/exactselection onrequest; not replicated" + } + ], + "downloaded_artifacts": [ + { + "file": "zenodo-api.json", + "bytes": 6989, + "sha256": "e762338ef8623869182ec6e31ce0b1f340a5cf96aac04a0600997b5d32a6b741" + }, + { + "file": "rusishvili-2026.pdf", + "bytes": 369157, + "sha256": "00a684f94f286c1436ce3195c20d937af676beb1ae5e205db5a9e4e6c2c45dff" + }, + { + "file": "zenodo-earlier-api.json", + "bytes": 7829, + "sha256": "1dc45850aa8be7dbbb970b7b7e92b4e3d2e14c266c5e0844d49e4679b84ebb96" + }, + { + "file": "rusishvili-files.zip", + "bytes": 621538, + "sha256": "9e873559c198799fc3ed20c7e2951e377f5ea26a3d5a7ea54d8034a5f8da329d" + }, + { + "file": "a0z_three_systematics.pdf", + "bytes": 453100, + "sha256": "a709b28bc3306e97ccdd0cc4d15ede5d16fcd7cddab2b709915fa2c29fd2afe4" + }, + { + "file": "a0z_three_systematics.tex", + "bytes": 32933, + "sha256": "c1143b5c8bca14bf3be64b5e2fa72341131e80bd78450cebe90c2d1346398fcd" + } + ], + "artifact_distribution": "The downloaded_artifacts list records inspected source hashes only. Full papers, images, ZIP archives and API caches are not distributed in this bundle." +} diff --git a/research/value-assessment-20261112/publication-manifest.json b/research/value-assessment-20261112/publication-manifest.json new file mode 100644 index 0000000..e2395d2 --- /dev/null +++ b/research/value-assessment-20261112/publication-manifest.json @@ -0,0 +1,251 @@ +{ + "date": "2026-11-12", + "original_research_artifacts": [ + { + "path": "wave12/evidence.json", + "sha256": "ea42c793f43dcb5f475794212459c1f55c6fc3d5e6e3ec913e31122632398f3d" + }, + { + "path": "wave12/probe.py", + "sha256": "d5045f63124d78d3ae4387f67f3adcdfdf8574957623f65bae046999dcb70f96" + }, + { + "path": "wave12/research.md", + "sha256": "40ef0b35838a93b0faa83c5723f748e1edba0018c660712f559f5060638a2cc5" + }, + { + "path": "wave12/sources.json", + "sha256": "9a380924d8c9e64a174f86077f65609106e61389cb112ded1672814e83fa7de3" + }, + { + "path": "closure/caustic_control.py", + "sha256": "e326f8c636b5f782dc2a245c1376e199f4bdbbb3a01974cb8f1bc20c3dbb9bdc" + }, + { + "path": "closure/independent-checks.json", + "sha256": "3ca6a602c468aa166ae95b4049756bdcc659ce61b1eae9b4a01fa6c6f4af3323" + }, + { + "path": "closure/independent-review.md", + "sha256": "9418590dd4cde5411579040d2c06a9d8db0a8814b7bc3c3a44266f424275203c" + }, + { + "path": "closure/independent_checks.py", + "sha256": "c4d8754ac0e21a50f688dde2d6b8b489840d8c6781143efb83fd52796708a791" + }, + { + "path": "closure/research.md", + "sha256": "259cc3e1d8d51dd31d9f922912ac5a36469b0e508f4506e23966ef251548011f" + }, + { + "path": "closure/results.json", + "sha256": "f951fc8f17edadb60fef688e20525b0c85601e62c259d8982c6f2883c2710781" + }, + { + "path": "closure/sources.json", + "sha256": "c77c247ee5193dcdae4d1764e66914532ede2b80e9ff508b863f111f8315193c" + }, + { + "path": "convergences/derivation.md", + "sha256": "d722d7ea613e35a1adc2f8fd05cc0d3ea7120b3f5e86c19c46e71528e9db4d63" + }, + { + "path": "convergences/evidence.json", + "sha256": "67e764c24c8176811478c615be497c3c7dd0a6654fd94166e9652b2a0d1afc66" + }, + { + "path": "convergences/probe.py", + "sha256": "dbe5bb373376bffdbfa1f7c63ee57eea7d8b524620f7cd3e221f03760594f372" + }, + { + "path": "convergences/research.md", + "sha256": "c26788bb39b07ac6bc426b5a8ddee725dd7ae8c27e6a390f3a22c5464228f239" + }, + { + "path": "convergences/sources.json", + "sha256": "0d058f74cfd0d286fa0039ca524adec08bb182662637bfec4f27126d31a2a8fa" + }, + { + "path": "observations/evidence.json", + "sha256": "f584b6b8c86cbf22b4dd3c187d8299d0fba9a258c3046987f6a9adc66babab11" + }, + { + "path": "observations/probe.py", + "sha256": "e61535ad2e5c6dfaa98c250ef827b60903863e52f33368ac7d36e07f4c0cf53b" + }, + { + "path": "observations/research.md", + "sha256": "d6cd8c559c29d7a3c6c8c516cccd8304c1b7ea459f5563c53529c9aa0e7a5abe" + }, + { + "path": "observations/results.json", + "sha256": "d4fe6c69cc06562ca737e504dfbe449df18a59f49254ff536c014ee09b4726d3" + }, + { + "path": "observations/retrieval-addendum.json", + "sha256": "283b308b523075cdd5ae50406da28eb3324565669c2b88944ef644fc9883dcb4" + }, + { + "path": "observations/retrieval.json", + "sha256": "24111da4d09b24f80c24c29fbf7d87cd96bf132cff738c012f838e893871a34d" + }, + { + "path": "observations/sources.json", + "sha256": "276f639649b197e7dfa2a59ed97c6162562b2371169006852676e63b56e4dbfb" + } + ], + "publication_files": [ + { + "path": "README.md", + "sha256": "7cbdc491fa93758dec6b1fbf71a865b6b551a271251597cc4a095eca2eb0bb36" + }, + { + "path": "VALIDATION.md", + "sha256": "8b8d4d3eee0fd4a9e68d33c3838609f4132c03d7b72b8667a0ead5e4992e1983" + }, + { + "path": "check.py", + "sha256": "2e7c7243c932422c3eddaf5f361c977eff03ada4cb4a59318329d86442b75319" + }, + { + "path": "closure/caustic_control.py", + "sha256": "e326f8c636b5f782dc2a245c1376e199f4bdbbb3a01974cb8f1bc20c3dbb9bdc" + }, + { + "path": "closure/independent-checks.json", + "sha256": "3ca6a602c468aa166ae95b4049756bdcc659ce61b1eae9b4a01fa6c6f4af3323" + }, + { + "path": "closure/independent-review.md", + "sha256": "9418590dd4cde5411579040d2c06a9d8db0a8814b7bc3c3a44266f424275203c" + }, + { + "path": "closure/independent_checks.py", + "sha256": "c4d8754ac0e21a50f688dde2d6b8b489840d8c6781143efb83fd52796708a791" + }, + { + "path": "closure/research.md", + "sha256": "6fb9535e20d0a6bbd0af1fda84cb157729a6534bf27b2d9bdf5a2823903411ee" + }, + { + "path": "closure/results.json", + "sha256": "f951fc8f17edadb60fef688e20525b0c85601e62c259d8982c6f2883c2710781" + }, + { + "path": "closure/sources.json", + "sha256": "c77c247ee5193dcdae4d1764e66914532ede2b80e9ff508b863f111f8315193c" + }, + { + "path": "convergences/derivation.md", + "sha256": "d722d7ea613e35a1adc2f8fd05cc0d3ea7120b3f5e86c19c46e71528e9db4d63" + }, + { + "path": "convergences/evidence.json", + "sha256": "67e764c24c8176811478c615be497c3c7dd0a6654fd94166e9652b2a0d1afc66" + }, + { + "path": "convergences/probe.py", + "sha256": "dbe5bb373376bffdbfa1f7c63ee57eea7d8b524620f7cd3e221f03760594f372" + }, + { + "path": "convergences/research.md", + "sha256": "f9293498e97868ad0fe790e24e378dc491614ce2539c44a5d1f1783de469d0d5" + }, + { + "path": "convergences/sources.json", + "sha256": "6d89a0fdef257d2b5e96c23f4db6acf066d7e5048adfda0763751ab9f224528b" + }, + { + "path": "inputs/formal/Wave11MachianZeroEnergy.lean", + "sha256": "781d83ac1bf12407f0a682b8abbe67a4ec101d78751ee0fa611c9a0f8a307573" + }, + { + "path": "inputs/formal/Wave12QuasarCollapse.lean", + "sha256": "643bb2ed80cc11f90b07296a83e16c841b60501b89b4045ea471d8eddb24d2c3" + }, + { + "path": "inputs/manifest.json", + "sha256": "6aae8900bf370ab7b51db05641657e6717f09d517edc9b454709633ffbd42e93" + }, + { + "path": "inputs/results/wave11_machian_pairing_certificates.json", + "sha256": "9d05bb78b81b45aeda49edf6cfb9f734d761968ec4d06111aa1064cbc73eb359" + }, + { + "path": "inputs/results/wave12_cosmic_dawn_quasar_certificates.json", + "sha256": "493be7e0c615633eb77398c668f2d06a04fe21dd7bc6739e9b68649f9901da78" + }, + { + "path": "inputs/wave11_machian_pairing_unification.py", + "sha256": "911fbd9f428728daf1fe02de998fec5b519292c7739e0bac13f111a1bea00306" + }, + { + "path": "inputs/wave12_cosmic_dawn_quasar_collapse.py", + "sha256": "d0eec3e85d06b501dbe0d0a0e8969baf9b3faaf308e84718ac40b9ac96fb2aaf" + }, + { + "path": "observations/evidence.json", + "sha256": "f584b6b8c86cbf22b4dd3c187d8299d0fba9a258c3046987f6a9adc66babab11" + }, + { + "path": "observations/probe.py", + "sha256": "e61535ad2e5c6dfaa98c250ef827b60903863e52f33368ac7d36e07f4c0cf53b" + }, + { + "path": "observations/research.md", + "sha256": "d6cd8c559c29d7a3c6c8c516cccd8304c1b7ea459f5563c53529c9aa0e7a5abe" + }, + { + "path": "observations/results.json", + "sha256": "d4fe6c69cc06562ca737e504dfbe449df18a59f49254ff536c014ee09b4726d3" + }, + { + "path": "observations/retrieval-addendum.json", + "sha256": "283b308b523075cdd5ae50406da28eb3324565669c2b88944ef644fc9883dcb4" + }, + { + "path": "observations/retrieval.json", + "sha256": "24111da4d09b24f80c24c29fbf7d87cd96bf132cff738c012f838e893871a34d" + }, + { + "path": "observations/sources.json", + "sha256": "3687be781438be434995915ce74daafd242f0a2b5f22549888d2a04c94240c0a" + }, + { + "path": "requirements-review.txt", + "sha256": "ef1d83c152848afcb4a88360247e76b3d17019bb01a4e4846941ab64c4486234" + }, + { + "path": "requirements.txt", + "sha256": "983665a6331eda07ab1f4b23ef92d66f4b024c27b360ee0e7420511ef3b28c64" + }, + { + "path": "test_check.py", + "sha256": "646c887b47dee0da77be9fe0801d67d9c817a29aa4570dc01d1e22c0fb2f2bc4" + }, + { + "path": "wave12/evidence.json", + "sha256": "ea42c793f43dcb5f475794212459c1f55c6fc3d5e6e3ec913e31122632398f3d" + }, + { + "path": "wave12/probe.py", + "sha256": "2cb8b27b56caa6b6771da4710545e1a8cc608ec20b803d1cb8146ad7852b25ed" + }, + { + "path": "wave12/research.md", + "sha256": "12974bd499bd72fbc70ab9f882c6b0f6720596c016f8e8568f94a6267d687935" + }, + { + "path": "wave12/sources.json", + "sha256": "9a380924d8c9e64a174f86077f65609106e61389cb112ded1672814e83fa7de3" + } + ], + "publication_changes": [ + "Pinned historical inputs and pre-execution source validation", + "Unsupported halo-to-seed identification wording", + "Rank-one and pentamode prior art plus unimode distinction", + "Link analytic future-expansion bound from independent review", + "Portable reproduction runner, focused workflow, synthesis and companion notes", + "Exclude source-paper caches and machine-specific build logs" + ] +} diff --git a/research/value-assessment-20261112/requirements-review.txt b/research/value-assessment-20261112/requirements-review.txt new file mode 100644 index 0000000..c14e577 --- /dev/null +++ b/research/value-assessment-20261112/requirements-review.txt @@ -0,0 +1,3 @@ +-r requirements.txt +sympy==1.14.0 +mpmath==1.3.0 diff --git a/research/value-assessment-20261112/requirements.txt b/research/value-assessment-20261112/requirements.txt new file mode 100644 index 0000000..fb79768 --- /dev/null +++ b/research/value-assessment-20261112/requirements.txt @@ -0,0 +1,2 @@ +numpy==2.5.4 +scipy==1.18.1 diff --git a/research/value-assessment-20261112/test_check.py b/research/value-assessment-20261112/test_check.py new file mode 100644 index 0000000..b5376bc --- /dev/null +++ b/research/value-assessment-20261112/test_check.py @@ -0,0 +1,44 @@ +"""Protect result comparisons and refusal of changed historical inputs.""" +from pathlib import Path +import shutil +import tempfile +import unittest +from check import compare, verify_inputs, HERE + + +class ComparisonTests(unittest.TestCase): + def test_roundoff_and_environment(self): + compare({'x': 1 + 1e-9, 'environment': {'numpy': 'new'}}, + {'x': 1., 'environment': {'numpy': 'old'}}) + + def test_changed_science_or_structure_is_rejected(self): + for actual in ({'x': 1.01}, {'x': True}, {'x': float('nan')}, {'y': 1.}): + with self.assertRaises(AssertionError): + compare(actual, {'x': 1.}) + with self.assertRaises(AssertionError): + compare(False, True) + + def test_small_scientific_signal_is_preserved(self): + for actual in (0., 8e-11): + with self.assertRaises(AssertionError): + compare(actual, 4.19e-11, "wave12.compactness") + with self.assertRaises(AssertionError): + compare(0., 1e-16, "convergences.eta") + + def test_large_roundoff_diagnostic_is_rejected(self): + with self.assertRaises(AssertionError): + compare(1e-4, 1e-12, 'closure.momentum_relative_residual') + + def test_changed_input_is_rejected_before_execution(self): + with tempfile.TemporaryDirectory() as directory: + root = Path(directory) + shutil.copytree(HERE / 'inputs', root / 'inputs') + verify_inputs(root) + path = root / 'inputs/wave12_cosmic_dawn_quasar_collapse.py' + path.write_text(path.read_text() + '\n# changed\n') + with self.assertRaises(AssertionError): + verify_inputs(root) + + +if __name__ == '__main__': + unittest.main() diff --git a/research/value-assessment-20261112/wave12/evidence.json b/research/value-assessment-20261112/wave12/evidence.json new file mode 100644 index 0000000..f746e42 --- /dev/null +++ b/research/value-assessment-20261112/wave12/evidence.json @@ -0,0 +1,256 @@ +{ + "CPT": { + "J_at_u0": 0, + "J_at_u1p000001": 8.000011999701467e-06, + "P_double_prime_at_u0_in_K2_over_Q02": -4, + "homogeneous_current_conservation": "a^3 P_Q=constant on each smooth source-free sheet", + "kinetic_degeneracy_abs_u": 0.5773502691896258 + }, + "chirp": { + "Python_Msun": 647351308.2849301, + "correct_bounds_true": true, + "correct_middle": 2160000000000000, + "left": 2154145352572133, + "right": 2170844073787392, + "source_lower_bound_true": false, + "source_middle": 540000000000000 + }, + "future_counterexample": { + "dw_da_at_1": 0.85, + "for_a_at_most_1": "identical to original CPL, hence identical past distances and expansion", + "formula_for_a_greater_than_1": "w=-1+[0.25+1.10(a-1)] exp[-(a-1)]", + "min_H2_on_1_to_1e5": 0.11556546484404903, + "note": "This deliberately mirrors the source Omega_L normalization; re-normalizing for curvature does not restore a turnaround.", + "rows": [ + { + "H2_over_H02_Omega_k_minus0p004": 0.996, + "a": 1, + "deceleration_sign_term": -0.540839124059896, + "rho_DE_over_rho0": 1.0, + "w_alt": -0.75 + }, + { + "H2_over_H02_Omega_k_minus0p004": 0.591889441722337, + "a": 1.3897, + "deceleration_sign_term": -0.17853049849797203, + "rho_DE_over_rho0": 0.695842742216995, + "w_alt": -0.5403639408481395 + }, + { + "H2_over_H02_Omega_k_minus0p004": 0.31563696607110603, + "a": 2, + "deceleration_sign_term": -0.10201860479923727, + "rho_DE_over_rho0": 0.4048365948314456, + "w_alt": -0.5033627544185528 + }, + { + "H2_over_H02_Omega_k_minus0p004": 0.11557159892533204, + "a": 31.52, + "deceleration_sign_term": -0.23112105581203618, + "rho_DE_over_rho0": 0.1687538345757748, + "w_alt": -0.9999999999981184 + }, + { + "H2_over_H02_Omega_k_minus0p004": 0.11556556025310184, + "a": 78.8, + "deceleration_sign_term": -0.23113047643234155, + "rho_DE_over_rho0": 0.16875383457574386, + "w_alt": -1.0 + }, + { + "H2_over_H02_Omega_k_minus0p004": 0.11556553008893036, + "a": 315.18, + "deceleration_sign_term": -0.23113111051059723, + "rho_DE_over_rho0": 0.16875383457574386, + "w_alt": -1.0 + }, + { + "H2_over_H02_Omega_k_minus0p004": 0.11556555660382162, + "a": 1000, + "deceleration_sign_term": -0.2311311202620954, + "rho_DE_over_rho0": 0.16875383457574386, + "w_alt": -1.0 + } + ], + "w_at_1": -0.75 + }, + "growth": { + "critical_epsilon_for_duty1_pureH_lambda1": 0.08976733341003718, + "note": "Constant efficiency, no delay or mergers, retained fuel, and time-averaged lambda*duty are assumed. Current lambda is not a history.", + "rows": [ + { + "composition": "pure_H", + "epsilon": 0.057190958417936644, + "required_duty_z20_lambda1": 0.6150886722093295, + "required_duty_z20_lambda1p23": 0.5000720912270972, + "time_Myr_at_lambda1": 451.53646631100156 + }, + { + "composition": "primordial_fully_ionized", + "epsilon": 0.057190958417936644, + "required_duty_z20_lambda1": 0.5397403098636867, + "required_duty_z20_lambda1p23": 0.43881326005177784, + "time_Myr_at_lambda1": 396.2232491879039 + }, + { + "composition": "pure_H", + "epsilon": 0.1, + "required_duty_z20_lambda1": 1.1266566479419546, + "required_duty_z20_lambda1p23": 0.915981014586955, + "time_Myr_at_lambda1": 827.0784108740284 + }, + { + "composition": "primordial_fully_ionized", + "epsilon": 0.1, + "required_duty_z20_lambda1": 0.9886412085690652, + "required_duty_z20_lambda1p23": 0.8037733403000531, + "time_Myr_at_lambda1": 725.7613055419598 + }, + { + "composition": "pure_H", + "epsilon": 0.2, + "required_duty_z20_lambda1": 2.534977457869398, + "required_duty_z20_lambda1p23": 2.060957282820649, + "time_Myr_at_lambda1": 1860.9264244665637 + }, + { + "composition": "primordial_fully_ionized", + "epsilon": 0.2, + "required_duty_z20_lambda1": 2.224442719280397, + "required_duty_z20_lambda1p23": 1.8084900156751194, + "time_Myr_at_lambda1": 1632.9629374694096 + } + ], + "window_z20_Myr": 734.0997919684218 + }, + "infall": { + "assumptions": "Static point baryon mass, initially resting radial test particle, fixed a0, no angular momentum, pressure, expansion, feedback, or external field. Counterexample to exactness, not a realistic gas solution.", + "deep_MOND_exact_over_shortcut": 1.1283791670955126, + "rows": [ + { + "Wave12_outer_acceleration_shortcut_Myr": 384.823182089563, + "direct_radial_time_Myr": 384.8231820843765, + "model": "Newton_baryon", + "shortcut_fractional_error": 1.3477441385134625e-11 + }, + { + "Wave12_outer_acceleration_shortcut_Myr": 182.2662699600939, + "direct_radial_time_Myr": 200.07513757781376, + "model": "MOND_const_a0", + "shortcut_fractional_error": -0.08901089777231119 + }, + { + "Wave12_outer_acceleration_shortcut_Myr": 109.03505807398065, + "direct_radial_time_Myr": 121.71667660891077, + "model": "MOND_Hubble_a0", + "shortcut_fractional_error": -0.10418965492853194 + }, + { + "Wave12_outer_acceleration_shortcut_Myr": 122.7904118467972, + "direct_radial_time_Myr": 127.15620463169661, + "model": "two_branch_const_a0", + "shortcut_fractional_error": -0.03433409165950474 + } + ] + }, + "source_commit": "70a1204a536b3dca0b3053d1a056daf22601ac00", + "source_sha256": { + "formal/Wave11MachianZeroEnergy.lean": "781d83ac1bf12407f0a682b8abbe67a4ec101d78751ee0fa611c9a0f8a307573", + "formal/Wave12QuasarCollapse.lean": "643bb2ed80cc11f90b07296a83e16c841b60501b89b4045ea471d8eddb24d2c3", + "results/wave11_machian_pairing_certificates.json": "9d05bb78b81b45aeda49edf6cfb9f734d761968ec4d06111aa1064cbc73eb359", + "results/wave12_cosmic_dawn_quasar_certificates.json": "493be7e0c615633eb77398c668f2d06a04fe21dd7bc6739e9b68649f9901da78", + "wave11_machian_pairing_unification.py": "911fbd9f428728daf1fe02de998fec5b519292c7739e0bac13f111a1bea00306", + "wave12_cosmic_dawn_quasar_collapse.py": "d0eec3e85d06b501dbe0d0a0e8969baf9b3faaf308e84718ac40b9ac96fb2aaf" + }, + "spectrum_grid": [ + { + "kmax_Mpc_inverse": 50000.0, + "nk": 1200, + "point": { + "Mstar_Msun": 83913.96168856745, + "R200_pc": 191.82394058307807, + "R_Mpc": 0.007962033709164085, + "Tvir_neutral_K": 139.0432709138503, + "baryon_budget_Msun": 13126.042395449647, + "compactness": 4.1869158104302285e-11, + "ftrap_host250_over_sqrt2": 0.9999698959018595, + "growth_factor_used": 0.1793055349894796, + "sigma_kms": 0.9699242583262915, + "status": "root", + "z": 6.0783000000000005 + } + }, + { + "kmax_Mpc_inverse": 50000.0, + "nk": 12800, + "point": { + "Mstar_Msun": 83913.94342091963, + "R200_pc": 191.82392666337438, + "R_Mpc": 0.007962033131399133, + "Tvir_neutral_K": 139.04325073450195, + "baryon_budget_Msun": 13126.039537976172, + "compactness": 4.186915202783183e-11, + "ftrap_host250_over_sqrt2": 0.9999698959062285, + "growth_factor_used": 0.1793055349894796, + "sigma_kms": 0.9699241879437406, + "status": "root", + "z": 6.0783000000000005 + } + }, + { + "early_seed_epoch": { + "endpoint_residuals": [ + -0.6648790807186162, + -1.5154637274159126 + ], + "status": "no_root_in_native_bracket", + "z": 20 + }, + "kmax_Mpc_inverse": 100000.0, + "nk": 12800, + "point": { + "Mstar_Msun": 83913.94344421639, + "R200_pc": 191.82392668112624, + "R_Mpc": 0.007962033132135959, + "Tvir_neutral_K": 139.0432507602367, + "baryon_budget_Msun": 13126.039541620312, + "compactness": 4.1869152035581156e-11, + "ftrap_host250_over_sqrt2": 0.999969895906223, + "growth_factor_used": 0.1793055349894796, + "sigma_kms": 0.9699241880334994, + "status": "root", + "z": 6.0783000000000005 + }, + "using_integrated_LCDM_growth": { + "Mstar_Msun": 82232.06439395719, + "R200_pc": 190.5336984569106, + "R_Mpc": 0.007908479646671664, + "Tvir_neutral_K": 137.17910162987107, + "baryon_budget_Msun": 12862.955600956735, + "compactness": 4.130781343820571e-11, + "ftrap_host250_over_sqrt2": 0.9999702995110001, + "growth_factor_used": 0.1791011484707328, + "sigma_kms": 0.9634003743236983, + "status": "root", + "z": 6.0783000000000005 + } + }, + { + "kmax_Mpc_inverse": 300, + "nk": 12800, + "point": { + "Mstar_Msun": 60221.00068939857, + "R200_pc": 171.74102710852904, + "R_Mpc": 0.007128452491008821, + "Tvir_neutral_K": 111.45318167687253, + "baryon_budget_Msun": 9419.927175874736, + "compactness": 3.3561141464715565e-11, + "ftrap_host250_over_sqrt2": 0.9999758694002434, + "growth_factor_used": 0.1793055349894796, + "sigma_kms": 0.8683785133185307, + "status": "root", + "z": 6.0783000000000005 + } + } + ] +} diff --git a/research/value-assessment-20261112/wave12/probe.py b/research/value-assessment-20261112/wave12/probe.py new file mode 100644 index 0000000..0f4fedf --- /dev/null +++ b/research/value-assessment-20261112/wave12/probe.py @@ -0,0 +1,185 @@ +"""Independent, read-only Wave 11/12 probes. Requires numpy and scipy. + +Run: python3 -B probe.py --repo PATH --output evidence.json +The repository is read-only. Output records relative names and source hashes. +""" +import argparse +import ast +import hashlib +import json +import math +from pathlib import Path + +import numpy as np +from scipy.integrate import quad, solve_ivp +from scipy.optimize import brentq + + +def load_module(path): + manifest = json.loads((path.parent / 'manifest.json').read_text()) + expected = next(item['sha256'] for item in manifest['files'] if item['path'] == path.name) + if hashlib.sha256(path.read_bytes()).hexdigest() != expected: + raise ValueError('Pinned source hash mismatch: ' + path.name) + ns = {'__name__': 'read_only_probe', '__file__': str(path)} + exec(compile(path.read_text(), str(path.name), 'exec'), ns) + return ns + + +def spectrum(ns, nk, kmax): + tree = ast.parse(Path(ns['__file__']).read_text()) + fn = next(n for n in tree.body if isinstance(n, ast.FunctionDef) + and n.name == 'build_sigma_r_evaluator') + found = [0, 0] + for node in ast.walk(fn): + if isinstance(node, ast.Assign) and any(isinstance(t, ast.Name) and t.id == 'n_k' for t in node.targets): + assert node.value.value == 1200 + node.value = ast.Constant(nk) + found[0] += 1 + if isinstance(node, ast.Constant) and node.value == 5.0e4: + node.value = kmax + found[1] += 1 + assert found == [1, 1] + copy = ns.copy() + exec(compile(ast.fix_missing_locations(ast.Module(body=[fn], type_ignores=[])), '', 'exec'), copy) + return copy['build_sigma_r_evaluator']() + + +def collapse(ns, sigma, z, growth_override=None): + growth = ns['growth_factor_norm'](z) + factor = growth_override / growth if growth_override else 1.0 + residual = lambda r: sigma(r, z) * factor - 1.686 + lo, hi = 1e-4, 1.0 + if residual(lo) * residual(hi) >= 0: + return {'z': z, 'status': 'no_root_in_native_bracket', + 'endpoint_residuals': [residual(lo), residual(hi)]} + r = brentq(residual, lo, hi, xtol=1e-15) + mass = 4 * math.pi / 3 * (r * ns['MPC'])**3 * ns['OMEGA_M'] * ns['RHO_CRIT0'] + hz = ns['H0_SI'] * ns['e_hubble'](z) + v200 = (10 * ns['G'] * mass * hz)**(1/3) + r200 = ns['G'] * mass / v200**2 + sig = v200 / math.sqrt(2) / 1000 + return {'z': z, 'status': 'root', 'R_Mpc': r, 'Mstar_Msun': mass / ns['M_SUN'], + 'sigma_kms': sig, 'R200_pc': r200 / ns['PC'], + 'compactness': 2 * ns['G'] * mass / (r200 * ns['C_SI']**2), + 'baryon_budget_Msun': mass / ns['M_SUN'] * ns['OMEGA_B'] / ns['OMEGA_M'], + 'Tvir_neutral_K': 1.22 * ns['M_P'] * v200**2 / (2 * 1.380649e-23), + 'ftrap_host250_over_sqrt2': max(0, 1 - (sig / (250 / math.sqrt(2)))**2), + 'growth_factor_used': growth * factor} + + +def integrated_growth(ns, z): + om, ol = ns['OMEGA_M'], ns['OMEGA_L'] + E = lambda a: math.sqrt(om / a**3 + ol) + raw = lambda a: E(a) * quad(lambda x: 1 / (x * E(x))**3, 0, a, epsabs=1e-13, epsrel=1e-11)[0] + return raw(1 / (1 + z)) / raw(1) + + +def growth_probe(ns): + edd = ns['SIGMA_T'] * ns['C_SI'] / (4 * math.pi * ns['G'] * ns['M_P']) / ns['MYR'] + dt = ns['cosmic_age_myr'](ns['Z_PAIR']) - ns['cosmic_age_myr'](20) + eps_schwarzschild = 1 - math.sqrt(8 / 9) + rows = [] + for eps in [eps_schwarzschild, 0.10, 0.20]: + for composition, opacity_factor in [('pure_H', 1.0), ('primordial_fully_ionized', 1 - 0.245/2)]: + t = math.log(1.5e9 / 100) * edd * opacity_factor * eps / (1 - eps) + rows.append({'epsilon': eps, 'composition': composition, + 'time_Myr_at_lambda1': t, 'required_duty_z20_lambda1': t/dt, + 'required_duty_z20_lambda1p23': t/dt/1.23}) + return {'window_z20_Myr': dt, 'rows': rows, + 'critical_epsilon_for_duty1_pureH_lambda1': dt/(dt + edd*math.log(1.5e9/100)), + 'note': 'Constant efficiency, no delay or mergers, retained fuel, and time-averaged lambda*duty are assumed. Current lambda is not a history.'} + + +def infall_probe(ns, ftrap): + # Solve radial free fall from rest in a fixed point-mass field using + # y=r/r0 and dimensionless t=sqrt(r0/gb0) tau. This directly integrates + # r''=-g(r); no Newtonian prefactor is imposed on MOND. + r0, mb = 30*ns['KPC'], 5e10*ns['M_SUN'] + gb = ns['G']*mb/r0**2 + tunit = math.sqrt(r0/gb)/ns['MYR'] + hz = ns['H0_SI']*ns['e_hubble'](ns['Z_PAIR']) + cases = [('Newton_baryon', None, 0), ('MOND_const_a0', ns['A0_EMP'], 0), + ('MOND_Hubble_a0', ns['C_SI']*hz/(2*math.pi), 0), + ('two_branch_const_a0', ns['A0_EMP'], ns['OMEGA_C']/ns['OMEGA_B']*ftrap)] + rows = [] + for name, a0, extra in cases: + def force(y): + gnewt = 1/y**2 + return (gnewt if a0 is None else gnewt/(-math.expm1(-math.sqrt(gb/a0)/y))) + extra*gnewt + def stop(t, v): return v[0]-1e-7 + stop.terminal = True + stop.direction = -1 + def rhs(t, v): return [v[1], -force(max(v[0], 1e-9))] + sol = solve_ivp(rhs, [0, 2], [1, 0], rtol=2e-11, atol=1e-13, events=stop, max_step=0.002) + assert len(sol.t_events[0]) == 1 + exact = sol.t_events[0][0]*tunit + shortcut = math.pi/(2*math.sqrt(2*force(1)))*tunit + rows.append({'model': name, 'direct_radial_time_Myr': exact, + 'Wave12_outer_acceleration_shortcut_Myr': shortcut, + 'shortcut_fractional_error': shortcut/exact-1}) + return {'assumptions': 'Static point baryon mass, initially resting radial test particle, fixed a0, no angular momentum, pressure, expansion, feedback, or external field. Counterexample to exactness, not a realistic gas solution.', + 'rows': rows, 'deep_MOND_exact_over_shortcut': 2/math.sqrt(math.pi)} + + +def future_probe(ns11): + # Alternative matches CPL on every observed past scale factor a<=1, + # matches w and dw/da at a=1, then turns toward -1. + w0, wa = -0.75, -0.85 + w_alt = lambda a: -1 + (0.25 + 1.10*(a-1))*math.exp(-(a-1)) + # The integrand is negligible beyond 100. Capping avoids a large-domain + # quadrature missing the contribution close to a=1. + rho = lambda a: math.exp(-3*quad(lambda x: (1+w_alt(x))/x, 1, min(a,100), epsabs=1e-11)[0]) + rows = [] + for a in [1, 1.3897, 2, 31.52, 78.8, 315.18, 1000]: + h2 = ns11['OMEGA_M']/a**3 + ns11['OMEGA_L']*rho(a) - .004/a**2 + acceleration = ns11['OMEGA_M']/a**3 + ns11['OMEGA_L']*rho(a)*(1+3*w_alt(a)) + rows.append({'a': a, 'w_alt': w_alt(a), 'rho_DE_over_rho0': rho(a), + 'H2_over_H02_Omega_k_minus0p004': h2, + 'deceleration_sign_term': acceleration}) + grid = np.geomspace(1, 1e5, 3000) + h2s = [ns11['OMEGA_M']/a**3 + ns11['OMEGA_L']*rho(a) - .004/a**2 for a in grid] + return {'formula_for_a_greater_than_1': 'w=-1+[0.25+1.10(a-1)] exp[-(a-1)]', + 'for_a_at_most_1': 'identical to original CPL, hence identical past distances and expansion', + 'w_at_1': -.75, 'dw_da_at_1': .85, 'min_H2_on_1_to_1e5': min(h2s), + 'rows': rows, 'note': 'This deliberately mirrors the source Omega_L normalization; re-normalizing for curvature does not restore a turnaround.'} + + +def main(): + ap=argparse.ArgumentParser() + ap.add_argument('--repo',type=Path,required=True) + ap.add_argument('--output',type=Path,required=True) + args=ap.parse_args() + ns=load_module(args.repo/'wave12_cosmic_dawn_quasar_collapse.py') + ns11=load_module(args.repo/'wave11_machian_pairing_unification.py') + grid=[] + for nk,kmax in [(1200,5e4),(12800,5e4),(12800,1e5),(12800,300)]: + sig=spectrum(ns,nk,kmax) + entry={'nk':nk,'kmax_Mpc_inverse':kmax,'point':collapse(ns,sig,ns['Z_PAIR'])} + if nk==12800 and kmax==1e5: + entry['using_integrated_LCDM_growth']=collapse(ns,sig,ns['Z_PAIR'],integrated_growth(ns,ns['Z_PAIR'])) + entry['early_seed_epoch']=collapse(ns,sig,20) + grid.append(entry) + native=grid[0]['point'] + m1,m2=1.5e9,4e8 + chirp=(m1*m2)**.6/(m1+m2)**.2 + files=['wave12_cosmic_dawn_quasar_collapse.py','wave11_machian_pairing_unification.py', + 'formal/Wave12QuasarCollapse.lean','formal/Wave11MachianZeroEnergy.lean', + 'results/wave12_cosmic_dawn_quasar_certificates.json','results/wave11_machian_pairing_certificates.json'] + result={'source_commit':'70a1204a536b3dca0b3053d1a056daf22601ac00', + 'source_sha256':{f:hashlib.sha256((args.repo/f).read_bytes()).hexdigest() for f in files}, + 'spectrum_grid':grid,'growth':growth_probe(ns), + 'infall':infall_probe(ns,native['ftrap_host250_over_sqrt2']), + 'chirp':{'Python_Msun':chirp,'left':19*647**5,'source_middle':15**3*4**2*10**10, + 'right':19*648**5,'correct_middle':15**3*4**3*10**10, + 'source_lower_bound_true':19*647**5<15**3*4**2*10**10, + 'correct_bounds_true':19*647**5<15**3*4**3*10**10<19*648**5}, + 'CPT':{'P_double_prime_at_u0_in_K2_over_Q02':-4, + 'J_at_u0':0,'J_at_u1p000001':4*1.000001*(1.000001**2-1), + 'kinetic_degeneracy_abs_u':1/math.sqrt(3), + 'homogeneous_current_conservation':'a^3 P_Q=constant on each smooth source-free sheet'}, + 'future_counterexample':future_probe(ns11)} + args.output.write_text(json.dumps(result,indent=2,sort_keys=True)+'\n') + print(json.dumps(result,indent=2,sort_keys=True)) + + +if __name__=='__main__': main() diff --git a/research/value-assessment-20261112/wave12/research.md b/research/value-assessment-20261112/wave12/research.md new file mode 100644 index 0000000..cd766ae --- /dev/null +++ b/research/value-assessment-20261112/wave12/research.md @@ -0,0 +1,93 @@ +# Wave 11 and Wave 12 research value audit + +The new Wave 12 establishes reproducible numerical provenance for the quoted 83,900-solar-mass scale. It does not establish a black-hole seed, a new collapse mechanism, or evidence against standard cosmology. Its formal chirp-mass theorem is false as written. The Python chirp mass is correct. + +The defensible call is to reject the current seed-formation inference, retain the calculations as conditional benchmarks, and pursue only a bounded observational test with a distinct contribution beyond published work. + +Audited snapshot: Foundation-0/gravity `70a1204a536b3dca0b3053d1a056daf22601ac00`. Compared with cosmic-dawn audit `5b1cc2402029a97e4ab14e4b527f64eb4f1299fe` and convergence work `02013ae95fa5913894b829c8e2e63a3efcde9e63`. Wave 10 and Wave 11 source files are unchanged from the latter snapshot. Research model: gpt-6-astra, ultra reasoning. Author: gpt-forge. Human review pending. + +| Route | Status | Decision | Decisive evidence | +|---|---|---|---| +| New 83,914 halo-mass calculation | Established numerical result within its inputs | Retain as benchmark | Extended spectrum converges, with explicit host dispersion. | +| 83,900 as a black-hole seed | Unsupported identification | Reject current formulation | The quantity is total halo mass. Its adopted baryon budget is 13,126 solar masses, and compactness is 4.19e-11. | +| Near-unity condensate trapping | Conditional prescription | Park physical interpretation | The fraction is assigned by a velocity law. No kinetic capture, shock-heating, or seed-formation solution is computed. | +| Light-seed growth exclusion | Conditional, not a general exclusion | Retain parameter-dependent clock | Primordial composition at efficiency 0.10 gives duty 0.989. Fixed Schwarzschild efficiency gives duty 0.615. | +| MOND feeder free-fall numbers | Falsified as exact infall solutions | Correct or relabel estimates | Direct radial integration gives 200.08, 121.72, and 127.16 Myr instead of 182.27, 109.04, and 122.79. | +| Chirp mass and circular GW clock | Established conditional arithmetic | Retain after proof repair | Python gives 6.47351308e8 solar masses. Lean fails because one power of four is missing. | +| Quasar pairing as evidence for new gravity | Unresolved | Park | One candidate, unresolved lensing, and an extrapolated clustering baseline do not define a comparative likelihood. | +| Machian inertia and zero-energy creation | Algebra established, mechanism unresolved | Park | Critical-density substitution and arithmetic partition are not a derivation of inertia or universe creation. | +| DESI future turnaround | Conditional extrapolation | Reject as observational prediction | An equally past-compatible future equation of state has no turnaround. | +| CPT condensate origin and protected remnant | Algebra established, dynamics incomplete | Reject current mechanism claim | Negative kinetic curvature at the proposed origin, conserved-current obstruction, and allowed derivative portals. | +| Redshift evolution of acceleration scale | Conditional, observationally testable | Pursue bounded identifiability work | Large forecast separation exists, but published work already compares the simple scalings. | + +**What changed since the earlier cosmic-dawn audit.** The [new source](https://github.com/Foundation-0/gravity/blob/70a1204a536b3dca0b3053d1a056daf22601ac00/wave12_cosmic_dawn_quasar_collapse.py) now uses kmax=50,000 inverse Mpc, 1,200 Simpson intervals, z=6.0783, a Carroll-Press-Turner growth approximation, and halo dispersion 250/sqrt(2) km/s. + +Lines 118-145 define the spectrum. Lines 225-259 define the halo mass and trapping law. + +The independent probe reproduces Mstar=83,913.9617 solar masses, sigma=0.969924 km/s, and ftrap=0.9999698959. Refining to 12,800 intervals gives 83,913.9434. Extending kmax to 100,000 has negligible further effect. Wave 12 therefore resolves the missing numerical provenance and the earlier native-grid cutoff concern for this specific root. + +The earlier audit's 81,906.563 value remains valid for its different Wave 10 conventions and z=6.08. Holding Wave 12's other inputs fixed while replacing approximate growth with the integrated matter-plus-Lambda growth gives 82,232.064 at z=6.0783. The new result is numerically reproducible, but the README's word “proves” overstates a spectrum approximation. + +The mass remains the Lagrangian total matter mass inside the nonlinear collapse scale. Independently converting it gives R200=191.824 pc, 2GM/(R200 c²)=4.19e-11, baryon allotment 13,126 solar masses, and neutral-gas virial temperature about 139 K. None is a black-hole formation condition. + +Conventional atomic-cooling direct collapse requires a much hotter host and suppression of fragmentation. See the [primary synchronized-halo study](https://arxiv.org/abs/1406.7020). This does not exclude a different formation mechanism, but Wave 12 provides no such solution. + +The z=6 halo calculation cannot be assigned a z=20 seed age. At z=20 its native radius bracket has no nonlinear-scale root. This says nothing about rare high peaks forming early halos. + +The code asserts almost complete trapping in an illustrative massive host and then describes deep central potentials and Chandrasekhar friction. Those processes require a phase-space distribution, a density profile, and evolution equations. The assigned fraction alone establishes none of them. + +**Growth clocks.** Wave 12 correctly obtains 734.100 Myr between z=20 and observation, and 827.078 Myr for a 100-solar-mass seed to reach 1.5e9 solar masses with pure hydrogen, efficiency 0.10, and Eddington ratio one. This is a conditional shortfall. + +Its own primordial H/He opacity convention changes the required time to 725.761 Myr, or duty 0.989. Efficiency 1-sqrt(8/9)=0.057191 changes it to 451.536 Myr, or duty 0.615. The [published growth analysis](https://academic.oup.com/mnras/article/496/1/888/5851753) describes the spin-dependent efficiency and the dependence on duty and Eddington ratio. + +These are counterexamples to a universal time exclusion, not evidence that either accretion history occurred. Sustained coherent accretion can change spin, feedback can interrupt fuel, and seed formation takes time. Using the current Eddington ratio as the lifetime average is an additional assumption. The source's choice 0.10 is not the Schwarzschild thin-disc efficiency. + +The [discovery paper](https://arxiv.org/html/2609.31835v1) reports about 0.36 dex systematic scatter in inferred Eddington ratios, adopts a conservative systemic-velocity uncertainty of 100 km/s, and leaves lensing unresolved. Therefore the point values 1.23 and 1.07 do not prove super-Eddington luminosity, and a projection factor derived from 15 km/s is not a measured orbital inclination. + +The slim-disc table also needs its mass-flow convention stated. If mdot uses a reference efficiency of 0.10, and luminosity is the assigned saturated lambda, mass conservation gives growth proportional to mdot-0.10*lambda. The code uses 0.90*mdot. These coincide below saturation but differ above it. Outflows and duty are omitted. This remains a benchmark, not a formation calculation. + +**Infall counterexample.** Lines 274-277 reuse the Newtonian point-mass time coefficient while substituting the acceleration evaluated only at the starting radius. MOND changes the radial force law, so that substitution is not an exact fall-time identity. + +The probe integrates r''=-g(r), starting at rest at 30 kpc around a fixed baryonic point mass of 5e10 solar masses. It reproduces the Newtonian 384.823 Myr to numerical precision. The MOND constant-a0, Hubble-a0, and additive two-branch times are 200.075, 121.717, and 127.156 Myr, respectively. The published shortcuts underestimate these by 8.9%, 10.4%, and 3.4%. + +There is also an analytic check. In deep MOND, g=V²/r. Energy conservation gives tff=sqrt(pi/2) r0/V. The source shortcut gives pi*r0/(2*sqrt(2)*V), smaller by sqrt(pi)/2. Neither calculation models a real filament's angular momentum, pressure, geometry, external field, or feedback. + +**Formal and binary checks.** The [Wave 12 theorem](https://github.com/Foundation-0/gravity/blob/70a1204a536b3dca0b3053d1a056daf22601ac00/formal/Wave12QuasarCollapse.lean#L43) has middle expression 15³*4²*10¹⁰=540,000,000,000,000. Its asserted lower bound is 19*647⁵=2,154,145,352,572,133. The lower bound is false. Replacing 4² with 4³ gives 2,160,000,000,000,000, which lies within the stated bounds. + +`lean formal/Wave12QuasarCollapse.lean` actually exits 1 and reports that `decide` proved the proposition false. Python's 647,351,308-solar-mass chirp value is correct. Even a repaired theorem would certify literal integer bounds and assumed ratios only. It would not prove the inferred masses, lensing exclusion, trapping, or seed formation. + +The circular, isolated point-mass inspiral times reproduce the familiar [Peters calculation](https://thesis.caltech.edu/4296/). The code's negligible kpc-scale GW decay is a useful check. The later 0.05-0.10 pc merger clock assumes that the pair reaches those separations. The calculation supplies neither a hardening history nor a population merger rate, so it cannot predict a NANOGrav background contribution. + +**Wave 11 boundaries.** Hubble compactness GM/(Rc²)=1/2 follows directly from rho_critical and R=c/H. The induction calculation assigns Kge=1/3 and computes Kgm=2/3. Its Lean theorem verifies arithmetic. It does not derive the physical partition from a relativistic cosmological perturbation calculation. + +The citation “Braun 2026, arXiv:2610.09987” is mismatched. That identifier belongs to [Manuel Urueña Palomo's Machian proposal](https://arxiv.org/abs/2610.09987). A Hamiltonian constraint, as treated in the [AeST Hamiltonian paper](https://arxiv.org/abs/2307.15126), does not by itself specify a universe-creation process or a globally observable gravitational energy balance. + +The DESI-style CPL parameters are inserted, not fitted. Their future extrapolation gives the saved a_slow and recollapse values. But all existing past observations are equally compatible with the same w(a) for a<=1 and, for a>1, w=-1+[0.25+1.10(a-1)]exp[-(a-1)]. This continuation matches w and dw/da at a=1 and tends toward -1. + +The [independent review](../closure/independent-review.md) strengthens the numerical check to an analytic positive lower bound on H² for every future scale factor. + +For curvature -0.004, the alternative gives H²/H0²=0.11556556 at the source's alleged turnaround a=78.8, and tends to a positive constant. It is a constructive non-identifiability example. The [DESI primary analysis](https://arxiv.org/html/2503.14738v2) constrains past expansion within a parametrization, not this future continuation. + +The source also retains the flat Omega_L when adding curvature, so its H²(1)/H0² is 1+Omega_k rather than one. + +For the proposed CPT polynomial, positive branch density and opposite charge are valid algebra. However, P_QQ(0)=-4K2/Q0² for K2>0. In the minimal homogeneous scalar kinetic sector, the proposed origin has negative kinetic curvature. A continuous path to the stable branch passes a kinetic degeneracy at |u|=1/sqrt(3). Full AeST mixing could change stability, but no such analysis is supplied. + +Moreover, source-free homogeneous shift symmetry gives a³P_Q=constant. Starting at u=0 gives zero current. Finite positive dust charge on each later sheet requires a specified boundary, source, or quantum-production prescription. Manually evaluating u=±(1+epsilon) does not derive that transition. + +The [Scherrer model](https://arxiv.org/html/astro-ph/0402316v3) already supplies known near-extremum dust-like behavior, not this bifurcation. + +The notebook's statement that shift symmetry forbids all pair annihilation is also too strong. The operator (partial_phi)² F_mu_nu F^mu_nu respects a constant shift and can permit scalar-pair conversion to photons. No portal coefficient or rate is specified. The baryon-to-photon ratio likewise does not directly measure the fraction of initial quark-antiquark pairs that annihilated. + +The [Boyle-Finn-Turok model](https://arxiv.org/abs/1803.08928) is an existing CPT cosmology with a different particle-production mechanism. Citation to it does not derive this repository's two-sheet condensate or dark-to-baryon abundance. + +**Remaining research value.** The useful observational distinction is a0 tracking H(z), sqrt(rho_DE), or a constant. Wave 11's two dynamic tracks differ by a factor 1.771 at z=1, or 0.248 dex in acceleration and about 15.4% in asymptotic speed at fixed baryon mass. This is a substantial conditional separation. + +However, [MUSE-DARK III](https://doi.org/10.1051/0004-6361/202659230) already reports redshift evolution from 79 galaxies, and [Alcock's follow-up](https://doi.org/10.1093/mnras/stag1485) already compares constant, Hubble, and matter-density scalings with those binned measurements. Repeating the simple curve comparison has limited research value. + +A justified next probe would jointly model individual-galaxy pressure support, inclination, baryonic mass calibration, redshift-dependent selection, and shared covariance, then compare the three explicit forecast families with a free common normalization. + +First establish access to the required data and test identifiability on mocks. Stop if plausible nuisance evolution absorbs the forecast difference. A surviving result would test a scaling law, not establish Machian inertia or a condensate origin. + +**Reproduction.** `probe.py` reads the pinned sources without writing to the repository. It records spectrum convergence, growth counterexamples, direct infall, exact integer bounds, and the future-continuation example in `evidence.json`. It requires existing NumPy and SciPy. `sources.json` records primary URLs and their roles. `checks.json` and `lean-build.log` record actual checks. + +Both Python certificate checks pass byte-for-byte. Wave 11 Lean passes. A full `lake build` on a temporary copy fails in Wave 12 and in pre-existing Wave 5, 6, and 7 duplicate/syntax defects. GravityClaims passes, and Wave 10 builds with one unused-variable warning. No audited snapshot, branch, commit, or public artifact was changed. diff --git a/research/value-assessment-20261112/wave12/sources.json b/research/value-assessment-20261112/wave12/sources.json new file mode 100644 index 0000000..db2e31d --- /dev/null +++ b/research/value-assessment-20261112/wave12/sources.json @@ -0,0 +1,83 @@ +{ + "access_date": "2026-11-12", + "sources": [ + { + "title": "Onorato et al. 2026", + "url": "https://arxiv.org/html/2609.31835v1", + "role": "Observed system, systemic velocity uncertainties, virial and luminosity systematics, lensing ambiguity, small-scale clustering extrapolation.", + "type": "primary_research" + }, + { + "title": "Visbal, Haiman, Bryan 2014", + "url": "https://arxiv.org/abs/1406.7020", + "role": "Primary direct-collapse atomic-cooling halo scenario and required gas conditions.", + "type": "primary_research" + }, + { + "title": "Effects of the Hubble parameter on the cosmic growth of the first quasars (2020)", + "url": "https://academic.oup.com/mnras/article/496/1/888/5851753", + "role": "Growth equation, spin-dependent radiative efficiency, duty assumptions.", + "type": "primary_research" + }, + { + "title": "Peters 1964 dissertation", + "url": "https://thesis.caltech.edu/4296/", + "role": "Primary point-mass gravitational-radiation inspiral framework.", + "type": "primary_research" + }, + { + "title": "DESI DR2 Results II", + "url": "https://arxiv.org/html/2503.14738v2", + "role": "Past-expansion inference using specified dark-energy parametrizations.", + "type": "primary_research" + }, + { + "title": "Scherrer 2004", + "url": "https://arxiv.org/html/astro-ph/0402316v3", + "role": "Known purely kinetic k-essence dust-like limit, field equations, stability-relevant derivatives.", + "type": "primary_research" + }, + { + "title": "Arkani-Hamed et al. 2004", + "url": "https://arxiv.org/abs/hep-th/0312099", + "role": "Existing ghost-condensate effective theory and nonzero field-velocity background.", + "type": "primary_research" + }, + { + "title": "Boyle, Finn, Turok 2018", + "url": "https://arxiv.org/abs/1803.08928", + "role": "Existing CPT cosmology, distinct mechanism and particle abundance calculation.", + "type": "primary_research" + }, + { + "title": "Bataki, Skordis, Zlosnik 2024", + "url": "https://arxiv.org/abs/2307.15126", + "role": "Hamiltonian constraints of AeST, not universe-creation dynamics.", + "type": "primary_research" + }, + { + "title": "Urueña Palomo 2026", + "url": "https://arxiv.org/abs/2610.09987", + "role": "Actual author/title behind identifier misattributed as Braun in Wave11.", + "type": "primary_research" + }, + { + "title": "Milgrom 1999", + "url": "https://arxiv.org/abs/astro-ph/9805346", + "role": "Existing vacuum/inertia and cosmological acceleration-scale proposal.", + "type": "primary_research" + }, + { + "title": "Ciocan et al. 2026 MUSE-DARK III", + "url": "https://doi.org/10.1051/0004-6361/202659230", + "role": "Existing individual-survey redshift evolution analysis, 79 galaxies.", + "type": "primary_research" + }, + { + "title": "Alcock 2026", + "url": "https://doi.org/10.1093/mnras/stag1485", + "role": "Existing binned tests of constant, Hubble-tracking, matter-density scalings. Novelty constraint.", + "type": "primary_research" + } + ] +} From 7fbda6cb25878b962bdf5cbff38af26747b80ee2 Mon Sep 17 00:00:00 2001 From: ahrazzle <38987266+ahrazzle@users.noreply.github.com> Date: Thu, 12 Nov 2026 16:00:36 -0600 Subject: [PATCH 2/5] Correct earlier companion references --- research/value-assessment-20261112/README.md | 2 +- research/value-assessment-20261112/publication-manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/research/value-assessment-20261112/README.md b/research/value-assessment-20261112/README.md index 993e790..cc6bd63 100644 --- a/research/value-assessment-20261112/README.md +++ b/research/value-assessment-20261112/README.md @@ -101,7 +101,7 @@ The focused workflow runs this bundle's checks. The repository's broad `lake bui Companion notes: [fractals](https://github.com/Foundation-0/fractals/tree/aeva/research-value-assessment-20261112/research/value-assessment-20261112), [physics0](https://github.com/Foundation-0/physics0/tree/aeva/research-value-assessment-20261112/research/value-assessment-20261112), and [astr0](https://github.com/Foundation-0/astr0/tree/aeva/research-value-assessment-20261112/research/value-assessment-20261112). -The earlier companions are [fractals PR 4](https://github.com/Foundation-0/fractals/pull/4), [physics0 PR 8](https://github.com/Foundation-0/physics0/pull/8), and [astr0 PR 9](https://github.com/Foundation-0/astr0/pull/9). +The earlier companions are [fractals PR 52](https://github.com/Foundation-0/fractals/pull/52), [physics0 PR 16](https://github.com/Foundation-0/physics0/pull/16), and [astr0 PR 5](https://github.com/Foundation-0/astr0/pull/5). ## Independent review and publication changes diff --git a/research/value-assessment-20261112/publication-manifest.json b/research/value-assessment-20261112/publication-manifest.json index e2395d2..7a1565a 100644 --- a/research/value-assessment-20261112/publication-manifest.json +++ b/research/value-assessment-20261112/publication-manifest.json @@ -97,7 +97,7 @@ "publication_files": [ { "path": "README.md", - "sha256": "7cbdc491fa93758dec6b1fbf71a865b6b551a271251597cc4a095eca2eb0bb36" + "sha256": "71212220c570070a8bda7b2b3c08ee9aefb738167977219b91062a66774f9c1c" }, { "path": "VALIDATION.md", From a89a975978797c4b6e3ad6aca334d82d5aa6fa68 Mon Sep 17 00:00:00 2001 From: ahrazzle <38987266+ahrazzle@users.noreply.github.com> Date: Thu, 12 Nov 2026 16:03:47 -0600 Subject: [PATCH 3/5] Record second scientific review and dependency scope --- README.md | 4 +- research/value-assessment-20261112/README.md | 4 + .../value-assessment-20261112/VALIDATION.md | 4 + .../closure/sources.json | 7 +- .../publication-manifest.json | 30 ++- .../second-review-checks.json | 129 +++++++++++++ .../second-review-checks.py | 176 ++++++++++++++++++ .../second-review.md | 56 ++++++ 8 files changed, 404 insertions(+), 6 deletions(-) create mode 100644 research/value-assessment-20261112/second-review-checks.json create mode 100644 research/value-assessment-20261112/second-review-checks.py create mode 100644 research/value-assessment-20261112/second-review.md diff --git a/README.md b/README.md index 9219522..1b40d5c 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ This repository is **not** a derivation of a new fundamental theory of gravity, ## 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`. +Root-level Wave 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`. | Script / Config | Output / Target | Verification Command | |---|---|---| @@ -49,4 +49,4 @@ All Python scripts use only the Python 3 standard library. Each certificate file ## Research value assessment -The [12 November assessment](research/value-assessment-20261112/) records the Wave 11/12 audit, bounded research directions, reproducible controls and stopping gates. +The [12 November assessment](research/value-assessment-20261112/) records the Wave 11/12 audit, bounded research directions, reproducible controls and stopping gates. Its separate NumPy/SciPy dependencies are pinned in [the bundle requirements](research/value-assessment-20261112/requirements.txt). diff --git a/research/value-assessment-20261112/README.md b/research/value-assessment-20261112/README.md index cc6bd63..29b6c5d 100644 --- a/research/value-assessment-20261112/README.md +++ b/research/value-assessment-20261112/README.md @@ -112,3 +112,7 @@ The publication copy uses the halo-to-seed label “unsupported identification These publication edits are recorded by the final manifest. Human scientific review remains pending. The optional independent reviewer script requires SymPy in addition to the main dependencies. It is included with its saved checks for inspection and is separate from the four-probe CI job. Its optional versions are pinned in `requirements-review.txt`. Running `python -B research/value-assessment-20261112/closure/independent_checks.py` regenerates reviewer results and current artifact hashes, so use a disposable copy to preserve the historical review record. + +The [second independent review](second-review.md) passes the closure and observational-identifiability reports at their stated scope, with no blocking scientific findings. It supersedes the historical separate-agent-review entry in the closure source ledger. Its original reviewed hashes remain intact. Human scientific review and the proposed physical/data gates remain pending. + +Its [independent checks](second-review-checks.py) and [saved results](second-review-checks.json) use the optional reviewer dependencies. Run the script in a disposable copy to preserve the historical review hashes and evidence. diff --git a/research/value-assessment-20261112/VALIDATION.md b/research/value-assessment-20261112/VALIDATION.md index 296b1cf..7c9394c 100644 --- a/research/value-assessment-20261112/VALIDATION.md +++ b/research/value-assessment-20261112/VALIDATION.md @@ -12,3 +12,7 @@ The focused CI workflow reproduces this bundle. The separate broad Lean build ha The historical Wave 12 proof is retained under `inputs/` as evidence of the audit. The corrected direct Lean check and its build limits are recorded in [the scoped correction](https://github.com/Foundation-0/gravity/pull/10). The immutable historical inputs do not incorporate that correction. The optional independent reviewer checks also reproduce with SymPy 1.14.0. Their scientific output matches the saved review result. Their historical author-artifact hashes are retained separately from the current publication manifest. + +A second independent scientific review passes the closure and observation design at the stated scope. Its source hashes and saved independent checks are preserved in `second-review.md` and `second-review-checks.json`. + +The second reviewer script was rerun in a temporary copy with SymPy 1.14.0. Its independent scientific checks and temporary author replays reproduce the saved results. Historical artifact hashes are retained separately from the final publication hashes. diff --git a/research/value-assessment-20261112/closure/sources.json b/research/value-assessment-20261112/closure/sources.json index c1bc87e..4ecaa8a 100644 --- a/research/value-assessment-20261112/closure/sources.json +++ b/research/value-assessment-20261112/closure/sources.json @@ -135,5 +135,10 @@ }, "initial_numerical_issue": "An initial local momentum residual exceeded 1e-9 because differentiating the density FFT three times amplified roundoff. Computing rho_xx from differentiated field products gives the same exact momentum flux and the stated passing residuals. Physical parameters and continuum equations were unchanged." }, - "prior_publication_head": "02013ae95fa5913894b829c8e2e63a3efcde9e63" + "prior_publication_head": "02013ae95fa5913894b829c8e2e63a3efcde9e63", + "publication_review_update": { + "date": "2026-11-12", + "review": "../second-review.md", + "status": "The original not_done entry about separate-agent review is historical. The second independent review now passes at the stated scope; canonical initial-state mapping and physical dynamics remain incomplete." + } } diff --git a/research/value-assessment-20261112/publication-manifest.json b/research/value-assessment-20261112/publication-manifest.json index 7a1565a..10282e0 100644 --- a/research/value-assessment-20261112/publication-manifest.json +++ b/research/value-assessment-20261112/publication-manifest.json @@ -92,16 +92,28 @@ { "path": "observations/sources.json", "sha256": "276f639649b197e7dfa2a59ed97c6162562b2371169006852676e63b56e4dbfb" + }, + { + "path": "second-review.md", + "sha256": "05a0ffe76e5fac92e360f8d813f098e83119c6e7ab889bf2698980051a2ac989" + }, + { + "path": "second-review-checks.py", + "sha256": "676379e8f089f725a79f9bd92a64de52e9a218d3af08d03de09102d7abc64483" + }, + { + "path": "second-review-checks.json", + "sha256": "57d3f3528eb7a62fdd17ebe5721067925188387bf8bc6f295cbe8cc82fedb764" } ], "publication_files": [ { "path": "README.md", - "sha256": "71212220c570070a8bda7b2b3c08ee9aefb738167977219b91062a66774f9c1c" + "sha256": "9ad4b9e076a89b7a07157e9590d2904bbede17d4f082dea66186962289c88da9" }, { "path": "VALIDATION.md", - "sha256": "8b8d4d3eee0fd4a9e68d33c3838609f4132c03d7b72b8667a0ead5e4992e1983" + "sha256": "acb791f2ca6d01a939528715e982b08493c34fa5b37430e9bafd4465f9e29ea0" }, { "path": "check.py", @@ -133,7 +145,7 @@ }, { "path": "closure/sources.json", - "sha256": "c77c247ee5193dcdae4d1764e66914532ede2b80e9ff508b863f111f8315193c" + "sha256": "38097ec0b5ae5a412cee11d1d849ae48dc5588bdf8e4a41126c7c033bfeeee84" }, { "path": "convergences/derivation.md", @@ -219,6 +231,18 @@ "path": "requirements.txt", "sha256": "983665a6331eda07ab1f4b23ef92d66f4b024c27b360ee0e7420511ef3b28c64" }, + { + "path": "second-review-checks.json", + "sha256": "57d3f3528eb7a62fdd17ebe5721067925188387bf8bc6f295cbe8cc82fedb764" + }, + { + "path": "second-review-checks.py", + "sha256": "676379e8f089f725a79f9bd92a64de52e9a218d3af08d03de09102d7abc64483" + }, + { + "path": "second-review.md", + "sha256": "05a0ffe76e5fac92e360f8d813f098e83119c6e7ab889bf2698980051a2ac989" + }, { "path": "test_check.py", "sha256": "646c887b47dee0da77be9fe0801d67d9c817a29aa4570dc01d1e22c0fb2f2bc4" diff --git a/research/value-assessment-20261112/second-review-checks.json b/research/value-assessment-20261112/second-review-checks.json new file mode 100644 index 0000000..0854404 --- /dev/null +++ b/research/value-assessment-20261112/second-review-checks.json @@ -0,0 +1,129 @@ +{ + "artifact_sha256": { + "closure/research.md": "259cc3e1d8d51dd31d9f922912ac5a36469b0e508f4506e23966ef251548011f", + "closure/caustic_control.py": "e326f8c636b5f782dc2a245c1376e199f4bdbbb3a01974cb8f1bc20c3dbb9bdc", + "closure/results.json": "f951fc8f17edadb60fef688e20525b0c85601e62c259d8982c6f2883c2710781", + "closure/sources.json": "c77c247ee5193dcdae4d1764e66914532ede2b80e9ff508b863f111f8315193c", + "observations/research.md": "d6cd8c559c29d7a3c6c8c516cccd8304c1b7ea459f5563c53529c9aa0e7a5abe", + "observations/probe.py": "e61535ad2e5c6dfaa98c250ef827b60903863e52f33368ac7d36e07f4c0cf53b", + "observations/results.json": "d4fe6c69cc06562ca737e504dfbe449df18a59f49254ff536c014ee09b4726d3", + "observations/sources.json": "276f639649b197e7dfa2a59ed97c6162562b2371169006852676e63b56e4dbfb" + }, + "closure_independent_checks": { + "Bessel_wave_rows": [ + { + "t": 0, + "density": 1.0000000000000002, + "current": 1.0899589056276974e-17, + "stress": 0.03844182680668212, + "K_5_over_3": 0.03844182680668211 + }, + { + "t": 0.9, + "density": 3.843709249742709, + "current": 0.0, + "stress": 1.1192902926159587, + "K_5_over_3": 0.11867480382880864 + }, + { + "t": 1.5, + "density": 4.790675110494943, + "current": 0.0, + "stress": 2.6582099863246356, + "K_5_over_3": 0.19525166818937342 + }, + { + "t": 3, + "density": 1.1852392170237336, + "current": 2.179917811255395e-17, + "stress": 0.40157945946147044, + "K_5_over_3": 0.30252513908874273 + }, + { + "t": 6, + "density": 0.5144217392972813, + "current": 2.7248972640692436e-18, + "stress": 0.063302050812297, + "K_5_over_3": 0.19166916804929673 + } + ], + "max_difference_from_author": 1.0658141036401503e-14, + "modal_second_moment": 0.49999999999999917, + "modal_fourth_moment": 0.3751999999999991, + "classical_adaptive_quadrature": { + "rho": 4.772107863668249, + "j": 0.0, + "stress": 2.652045918129872 + }, + "matched_state_stress_range_factor": 4.0, + "mass_conservation_symbolic_residual": "0", + "momentum_conservation_symbolic_residual": "0", + "arcsine_response_at_first_J0_zero": -1.011125253564184e-16, + "Gaussian_same_variance_response": 0.2355583817481849 + }, + "observations_independent_checks": { + "homogeneity_relative_errors": { + "exponent_symmetry": 6.661338147750939e-16, + "amplitude_symmetry": 4.440892098500626e-16, + "q1_vs_q0_counterexample": 3.3306690738754696e-16 + }, + "full_parameter_rank": 4, + "amplitude_null_vector": [ + 1, + 1, + 0, + 0, + -1, + 0 + ], + "exponent_null_vector": [ + 0, + 0, + 1, + 1, + 0, + -1 + ], + "deep_apparent_q": 1.0, + "expected_q_plus_s_plus_2u": 1.0, + "precision_thresholds": [ + { + "redshifts": [ + 0, + 1 + ], + "lever_dex": 0.25291401692741816, + "sigma_b_only_dex": 0.12904013488123847, + "sigma_velocity_only_dex": 0.03226003372030962, + "approx_velocity_fraction": 0.07428147274387017 + }, + { + "redshifts": [ + 0.33, + 1.44 + ], + "lever_dex": 0.28345950458783736, + "sigma_b_only_dex": 0.14462485373391032, + "sigma_velocity_only_dex": 0.03615621343347758, + "approx_velocity_fraction": 0.08325275807103655 + } + ], + "covariance_GLS_sigma_dex": 0.10155048005794952, + "covariance_naive_sigma_dex": 0.03952847075210474, + "underestimate_factor": 2.5690465157330262, + "selection_integral_max_difference_dex": 9.71445146547012e-17 + }, + "temporary_author_replays": [ + { + "probe": "closure/caustic_control.py", + "exit_code": 0, + "all_saved_JSON_values_match_replay": true + }, + { + "probe": "observations/probe.py", + "exit_code": 0, + "all_saved_JSON_values_match_replay": true + } + ], + "author_artifacts_unchanged": true +} diff --git a/research/value-assessment-20261112/second-review-checks.py b/research/value-assessment-20261112/second-review-checks.py new file mode 100644 index 0000000..18a341a --- /dev/null +++ b/research/value-assessment-20261112/second-review-checks.py @@ -0,0 +1,176 @@ +"""Independent review checks. Never imports the author probes. + +Replays their scripts only in temporary copies and tests the central formulas +using separate Bessel expansions, quadrature, and symbolic differentiation. +""" +from pathlib import Path +import hashlib +import json +import math +import shutil +import subprocess +import sys +import tempfile + +import numpy as np +from scipy.integrate import quad +from scipy.special import jv, j0 +from scipy.stats import norm +import sympy as sp + +ROOT=Path(__file__).resolve().parent + + +def checks_closure(): + eps=.02; ell=.2 + # Jacobi-Anger expansion, independent of the source's initial-data FFT. + modes=np.arange(-180,181) + amplitudes=1j**modes*jv(modes,1/eps) + xx=np.linspace(-math.pi,math.pi,4096,endpoint=False) + basis=np.exp(1j*np.outer(xx,modes)) + kernel=sum(np.exp(-(xx+2*math.pi*m)**2/(2*ell**2)) for m in range(-2,3))/(math.sqrt(2*math.pi)*ell) + integrator=lambda a:float(np.sum(a*kernel)*2*math.pi/len(xx)) + rows=[] + for t in [0,.9,1.5,3,6]: + c=amplitudes*np.exp(-.5j*eps*modes**2*t) + psi=basis@c; px=basis@(1j*modes*c); pxx=basis@(-modes**2*c) + # Equivalent stress written without rho_xx. + rho=abs(psi)**2 + current=eps*np.imag(psi.conj()*px) + flux=.5*eps**2*(abs(px)**2-np.real(psi.conj()*pxx)) + r,j,T=map(integrator,[rho,current,flux]) + stress=T-j*j/r + rows.append({'t':t,'density':r,'current':j,'stress':stress,'K_5_over_3':stress/r**(5/3)}) + saved=json.loads((ROOT/'closure/results.json').read_text()) + maxdiff=0 + for row in rows: + ref=next(v for v in saved['central_time_series_eps_002_ell_02'] if v['t']==row['t']) + maxdiff=max(maxdiff,abs(row['density']-ref['density']),abs(row['stress']-ref['stress']), + abs(row['K_5_over_3']-ref['K_5_over_3_proxy'])) + assert maxdiff<1e-10 + occupations=abs(amplitudes)**2 + m2=float(np.sum((eps*modes)**2*occupations)) + m4=float(np.sum((eps*modes)**4*occupations)) + assert abs(m2-.5)<1e-12 and abs(m4-(.375+eps**2/2))<1e-12 + # Independent adaptive Lagrangian integral at the caustic center. + def local_moment(power): + def f(q): + x=q-1.5*math.sin(q); v=-math.sin(q) + w=sum(math.exp(-(x+2*math.pi*m)**2/(2*ell**2)) for m in range(-2,3))/(math.sqrt(2*math.pi)*ell) + return w*v**power + return quad(f,-math.pi,math.pi,epsabs=1e-12,epsrel=1e-12)[0] + cr,cj,cT=[local_moment(p) for p in range(3)] + cp=cT-cj*cj/cr + assert abs(cr-4.772108)<1e-6 and abs(cp-2.652046)<1e-6 + # Momentum conservation from real and imaginary parts of Schrodinger. + a,b,ax,bx,axx,bxx,axxx,bxxx,e=sp.symbols('a b ax bx axx bxx axxx bxxx e',real=True) + at,bt=-e*bxx/2,e*axx/2 + axt,bxt=-e*bxxx/2,e*axxx/2 + mass_res=sp.expand(2*a*at+2*b*bt+e*(a*bxx-b*axx)) + momentum_res=sp.expand(e*(at*bx+a*bxt-bt*ax-b*axt) + +e**2/2*(ax*axx+bx*bxx-a*axxx-b*bxxx)) + assert mass_res==0 and momentum_res==0 + s=2.404825557695773 + # Characteristic function of the sine marginal, no imported response code. + response=quad(lambda q:math.cos(s*math.sin(q))/(2*math.pi),-math.pi,math.pi,epsabs=1e-13)[0] + gaussian=math.exp(-s*s/4) + assert abs(response)<1e-13 and abs(response-j0(s))<1e-13 + return {'Bessel_wave_rows':rows,'max_difference_from_author':maxdiff, + 'modal_second_moment':m2,'modal_fourth_moment':m4,'classical_adaptive_quadrature':{'rho':cr,'j':cj,'stress':cp}, + 'matched_state_stress_range_factor':(1.5/.75)**2, + 'mass_conservation_symbolic_residual':str(mass_res), + 'momentum_conservation_symbolic_residual':str(momentum_res), + 'arcsine_response_at_first_J0_zero':response,'Gaussian_same_variance_response':gaussian} + + +def checks_observations(): + g,a,b=sp.symbols('g a b',positive=True) + x=sp.sqrt(b*g/a) + f=b*g/(1-sp.exp(-x)) + t=x/(2*(sp.exp(x)-1)) + assert sp.simplify(a*sp.diff(f,a)/f-t)==0 + assert sp.simplify(b*sp.diff(f,b)/f-(1-t))==0 + rng=np.random.default_rng(853943) + z=np.r_[0,rng.uniform(0,3,400)] + g=np.exp(rng.uniform(-13,6,len(z))) + E=np.sqrt(.315*(1+z)**3+.685) + def prediction(A,B,C,q,s,u): + aa=A*E**q; bg=B*E**s*g + return C*E**u*bg/(-np.expm1(-np.sqrt(bg/aa))) + p=prediction(1.2,.7,1.1,.9,-.3,.2) + pp=prediction(1.2,.7,1.1,.9+.8,-.3+.8,.2-.8) + pa=prediction(1.2*2.7,.7*2.7,1.1/2.7,.9,-.3,.2) + h=prediction(1,1,1,1,0,0); c=prediction(1,1,1,0,-1,1) + errs={'exponent_symmetry':float(np.max(abs(pp/p-1))), + 'amplitude_symmetry':float(np.max(abs(pa/p-1))), + 'q1_vs_q0_counterexample':float(np.max(abs(c/h-1)))} + assert max(errs.values())<1e-13 + xx=np.sqrt(.7*E**(-.3)*g/(1.2*E**.9)) + tt=np.zeros_like(xx) + small=xx<700 + tt[small]=xx[small]/(2*np.expm1(xx[small])) + logE=np.log(E) + J=np.column_stack([tt,1-tt,tt*logE,(1-tt)*logE,np.ones_like(z),logE]) + null0=np.array([1,1,0,0,-1,0]);null1=np.array([0,0,1,1,0,-1]) + assert np.max(abs(J@null0))<1e-14 and np.max(abs(J@null1))<1e-14 + assert np.linalg.matrix_rank(J,tol=1e-10)==4 + deep=.5*(np.log(1.2*.7*g)+(.9-.3)*logE)+math.log(1.1)+.2*logE + apparent_q=np.polyfit(logE,2*deep-np.log(g),1)[0] + assert abs(apparent_q-(.9-.3+2*.2))<1e-12 + thresholds=[] + for zlo,zhi in [(0,1),(.33,1.44)]: + Efun=lambda z:math.sqrt(.315*(1+z)**3+.685) + L=math.log10(Efun(zhi)/Efun(zlo)) + sigma_b=L/norm.ppf(.975); sigma_v=sigma_b/4 + thresholds.append({'redshifts':[zlo,zhi],'lever_dex':L,'sigma_b_only_dex':sigma_b, + 'sigma_velocity_only_dex':sigma_v,'approx_velocity_fraction':math.log(10)*sigma_v}) + # Explicit covariance matrix, then generalized least squares mean variance. + cov=.05**2*np.eye(8)+.10**2*np.ones((8,8)) + honest=float(1/math.sqrt(np.ones(8)@np.linalg.solve(cov,np.ones(8)))) + naive=float(math.sqrt(np.diag(cov)[0]/8)) + saved=json.loads((ROOT/'observations/results.json').read_text()) + selection=saved['selection_control'] + alphas=np.array(selection['cut_in_noise_sigma']) + # Numerically integrate the truncated density rather than use Mills formula. + means=np.array([.1*quad(lambda x:x*norm.pdf(x),lo,np.inf,epsabs=1e-12)[0] + /quad(lambda x:norm.pdf(x),lo,np.inf,epsabs=1e-12)[0] for lo in alphas]) + maxsel=float(np.max(abs(means-np.array(selection['retained_mean_residual_dex'])))) + assert maxsel<1e-12 + return {'homogeneity_relative_errors':errs,'full_parameter_rank':int(np.linalg.matrix_rank(J,tol=1e-10)), + 'amplitude_null_vector':null0.tolist(),'exponent_null_vector':null1.tolist(), + 'deep_apparent_q':float(apparent_q),'expected_q_plus_s_plus_2u':1.0, + 'precision_thresholds':thresholds,'covariance_GLS_sigma_dex':honest, + 'covariance_naive_sigma_dex':naive,'underestimate_factor':honest/naive, + 'selection_integral_max_difference_dex':maxsel} + + +def replay(): + rows=[] + with tempfile.TemporaryDirectory(prefix='second-review-') as td: + tmp=Path(td) + for folder,script in [('closure','caustic_control.py'),('observations','probe.py')]: + runpath=tmp/folder; runpath.mkdir() + shutil.copy2(ROOT/folder/script,runpath/script) + run=subprocess.run([sys.executable,'-B',script],cwd=runpath,capture_output=True,text=True) + assert run.returncode==0,run.stderr + actual=json.loads((runpath/'results.json').read_text()) + saved=json.loads((ROOT/folder/'results.json').read_text()) + assert actual==saved + rows.append({'probe':folder+'/'+script,'exit_code':run.returncode, + 'all_saved_JSON_values_match_replay':True}) + return rows + + +def main(): + files=['closure/research.md','closure/caustic_control.py','closure/results.json','closure/sources.json', + 'observations/research.md','observations/probe.py','observations/results.json','observations/sources.json'] + hashes={f:hashlib.sha256((ROOT/f).read_bytes()).hexdigest() for f in files} + results={'artifact_sha256':hashes,'closure_independent_checks':checks_closure(), + 'observations_independent_checks':checks_observations(),'temporary_author_replays':replay()} + assert hashes=={f:hashlib.sha256((ROOT/f).read_bytes()).hexdigest() for f in files} + results['author_artifacts_unchanged']=True + (ROOT/'second-review-checks.json').write_text(json.dumps(results,indent=2)+'\n') + print(json.dumps(results,indent=2)) + + +if __name__=='__main__':main() diff --git a/research/value-assessment-20261112/second-review.md b/research/value-assessment-20261112/second-review.md new file mode 100644 index 0000000..1208fb1 --- /dev/null +++ b/research/value-assessment-20261112/second-review.md @@ -0,0 +1,56 @@ +# Independent review of closure and observational identifiability + +**Scientific review: pass at the stated scope. No required mathematical or scientific wording correction was found in the reviewed reports.** Both probes reproduce their saved results in temporary copies. Separate calculations confirm the central equations and counterexamples. These are diagnostic controls and proposed research tests, not new AeST simulations or new observational fits. + +Reviewed on 12 November 2026 by gpt-forge, using the requested gpt-6-astra model with ultra reasoning. The reviewer authored the separate Wave 12 audit, but did not author either report reviewed here. The independent checks do not import the authors' probes. No author artifact was changed. The repository assessment boundary remains gravity commit `70a1204a536b3dca0b3053d1a056daf22601ac00`. + +**Closure.** The wave momentum flux is correct: T=epsilon²|psi_x|²-epsilon² rho_xx/4. I independently verified the local mass and momentum balances symbolically. Omitting the field-gradient term would change the measured stress. The report correctly calls the filtered quantity longitudinal stress and labels its density-normalized expression a proxy rather than thermodynamic entropy. + +An independent Jacobi-Anger/Bessel construction of the wave, followed by real-space Gaussian quadrature, reproduces the reported central density, stress and proxy across five times to a maximum absolute difference of 1.07e-14. At t=1.5 it gives density 4.7906751105 and stress 2.6582099863. Adaptive quadrature of the classical particle map gives density 4.7721078637 and stress 2.6520459181. + +The modal second and fourth moments are 0.5 and 0.3752 for epsilon=0.02, as stated. The matched-density preparations have a fourfold central stress range. This disproves closure by the stated local density, mean velocity, time and filter alone. It does not disprove a model retaining energy, gradients, more moments or memory. The report makes that restriction explicit. + +The homogeneous kinetic response control also checks: the sine-velocity marginal has response J0(kt), while the equal-variance Gaussian has exp[-(kt)²/4]. At the first zero of J0, direct quadrature gives approximately zero against 0.2355583817. The report distinguishes these prepared kinetic states from its finite-time coherent wave. + +Reversibility is handled correctly. Hamiltonian reversibility alone does not exclude thermodynamics. Here, the fixed mode occupations and noninteracting generator establish the narrower point that the increasing proxy is not evidence of thermalization. The report also excludes an inference about isolated-halo retention from its periodic box. + +The primary [AeST paper, equations 7-12](https://arxiv.org/html/2007.00082v3) supports the stated dependence of pressure on additional fields. The [Schrodinger-Poisson correspondence paper](https://arxiv.org/html/1801.03507v2) supports the distinction between caustic regularization and collisionless multistream behavior. Neither converts this free-field control into an AeST collapse result. + +The proposed action, constraint and response test is a reasonable bounded next step. Its 5% response target is explicitly a prospective project tolerance. The full canonical initial-state map, physical preparation of extra modes, nonlinear evolution and a universal 185 km/s scale remain unestablished. + +**Observations.** Independent symbolic differentiation confirms t=x/[2(exp(x)-1)] and the stated sensitivities to acceleration scale and baryonic calibration. The full relation has two exact scaling symmetries when both calibration functions are unconstrained. + +For parameter order (ln A, ln B, q, s, ln C, u), the null directions are (1,1,0,0,-1,0) and (0,0,1,1,0,-1). An independent random design gives rank four for six parameters. Exponent and amplitude transformations preserve the full predictions to better than 7e-16 relative error, including z=0. The q=1 and calibrated q=0 example is exact within this model. + +The deep-limit combination is correctly q+s+2u. With sufficient acceleration and redshift coverage, constraining one calibration exponent can remove the full-curve exponent symmetry. In the strict deep limit, the combined nuisance contribution must also be bounded. The report correctly distinguishes formal matrix rank from useful precision. + +The reported calibration thresholds reproduce independently. Over z=0 to 1, the signal is 0.252914 dex. Under the stated single-error Gaussian assumption, the differential mass uncertainty must be below 0.129040 dex, or the differential velocity uncertainty below 0.032260 dex. + +These are conditional precision targets, not achieved survey errors or guarantees of interval coverage. + +The covariance example also reproduces from an explicit matrix and generalized least-squares mean: 0.101550 dex with shared error, versus 0.039528 dex under independence, a factor 2.569 difference. Independent integration of the truncated Gaussian confirms the selection-control means to 9.8e-17 dex. + +The selection thresholds were deliberately chosen to imitate an evolving relation. That construction is an existence proof. It does not estimate the MUSE selection effect. Similarly, the exact calibration symmetry does not establish that the required drifts survive actual observational constraints. + +This qualification is essential and is already present in the report. The primary [MUSE-DARK III paper](https://arxiv.org/html/2604.22613v1) documents independent kinematic and stellar-mass checks, gas uncertainties and alternative reconstructions. The report acknowledges those checks and does not claim to overturn them. + +[Desmond's analysis](https://arxiv.org/html/2303.11314v2) also confirms that joint inference of shared galaxy parameters is established prior work. + +I independently inspected the retained image and extracted text of the later Rusishvili manuscript: the prose says 89 galaxies, while its four listed bin counts sum to 93. This supports a request for reconciliation, not rejection of its physical hypothesis. Neither report claims that its numerical corrections were independently replicated. + +**Publication scope.** The material can support the conclusions to pursue a finite AeST response test and a calibrated galaxy-data sufficiency audit, while parking large collapse simulations and another fit to published bins. It cannot support measured thermalization, a new gravitational law, an actual MUSE bias estimate, or a completed new data analysis. + +There are no blocking scientific findings. A minor metadata follow-up is to link this review in the publication package: the closure source ledger's original `not_done` list says that a separate-agent review had not yet occurred. That was accurate when written and is superseded by this review. Final branch composition and public serving were outside this review. + +The reproducible independent checks are `second-review-checks.py` and `second-review-checks.json`. Both author scripts ran successfully in temporary copies, with every saved JSON value reproduced. All eight reviewed artifact hashes remained unchanged during the checks. + +| Reviewed artifact | SHA-256 | +|---|---| +| closure/research.md | 259cc3e1d8d51dd31d9f922912ac5a36469b0e508f4506e23966ef251548011f | +| closure/caustic_control.py | e326f8c636b5f782dc2a245c1376e199f4bdbbb3a01974cb8f1bc20c3dbb9bdc | +| closure/results.json | f951fc8f17edadb60fef688e20525b0c85601e62c259d8982c6f2883c2710781 | +| closure/sources.json | c77c247ee5193dcdae4d1764e66914532ede2b80e9ff508b863f111f8315193c | +| observations/research.md | d6cd8c559c29d7a3c6c8c516cccd8304c1b7ea459f5563c53529c9aa0e7a5abe | +| observations/probe.py | e61535ad2e5c6dfaa98c250ef827b60903863e52f33368ac7d36e07f4c0cf53b | +| observations/results.json | d4fe6c69cc06562ca737e504dfbe449df18a59f49254ff536c014ee09b4726d3 | +| observations/sources.json | 276f639649b197e7dfa2a59ed97c6162562b2371169006852676e63b56e4dbfb | From fe8a878037d605505eedbd7ff273aaface9787b7 Mon Sep 17 00:00:00 2001 From: ahrazzle <38987266+ahrazzle@users.noreply.github.com> Date: Thu, 12 Nov 2026 16:07:22 -0600 Subject: [PATCH 4/5] Check finite-length diagnostic at its analytic accuracy bound --- .../value-assessment-20261112/VALIDATION.md | 6 +++- research/value-assessment-20261112/check.py | 28 +++++++++++++++++-- .../publication-manifest.json | 6 ++-- .../value-assessment-20261112/test_check.py | 12 +++++++- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/research/value-assessment-20261112/VALIDATION.md b/research/value-assessment-20261112/VALIDATION.md index 7c9394c..c3bf977 100644 --- a/research/value-assessment-20261112/VALIDATION.md +++ b/research/value-assessment-20261112/VALIDATION.md @@ -4,7 +4,7 @@ Prepared on 12 November 2026. Publication preparation used Python 3.14 with NumP - The runner checks all six historical SHA-256 digests before executing any source input. - The Wave 12 loader independently checks each executed source digest. -- Five comparator and integrity controls pass. They cover a scientific-result change, a boolean change, malformed structure, nonfinite output, excessive roundoff residual, changed source, and loss of a small scientific signal. +- Seven comparator and integrity controls pass. They cover a scientific-result change, a boolean change, malformed structure, nonfinite output, excessive roundoff residual, changed source, and loss of a small scientific signal. - All four probes, including the 26-assertion synthetic observation design, regenerate successfully. Their scientific results match saved outputs under the documented tolerances. The focused CI workflow reproduces this bundle. The separate broad Lean build has existing Wave 5/6/7 errors. Hosted CI status must be read from the current pull request and is not implied by these local results. @@ -16,3 +16,7 @@ The optional independent reviewer checks also reproduce with SymPy 1.14.0. Their A second independent scientific review passes the closure and observation design at the stated scope. Its source hashes and saved independent checks are preserved in `second-review.md` and `second-review-checks.json`. The second reviewer script was rerun in a temporary copy with SymPy 1.14.0. Its independent scientific checks and temporary author replays reproduce the saved results. Historical artifact hashes are retained separately from the final publication hashes. + +The first Ubuntu replay passed Wave 12 and closure, then exposed platform variation in the finite-length energy-Hessian diagnostic: 3.1972696962664237e-7 versus the saved 3.197457694573648e-7. + +The runner checks those three diagnostics against the author probe's original 1e-4 bound. A regression test retains the observed pair and rejects a value above the bound. Other scientific quantities retain the strict comparison. diff --git a/research/value-assessment-20261112/check.py b/research/value-assessment-20261112/check.py index f5bc91b..16c58a0 100644 --- a/research/value-assessment-20261112/check.py +++ b/research/value-assessment-20261112/check.py @@ -44,6 +44,11 @@ def compare(actual, expected, location='root'): if location.startswith('closure.') and key in {'momentum_mean', 'mean_velocity', 'central_velocity'}: assert all(math.isfinite(v) and abs(v) < 2e-12 for v in (actual, expected)), location return + # Native finite-length verification differentiates nearly equal energies. + # Its analytic acceptance criterion is 1e-4 in the author probe. + if re.fullmatch(r'convergences.mechanics.finite_length_checks\[[0-2]\].relative_energy_hessian_error', location): + assert all(math.isfinite(v) and 0 <= v < 1e-4 for v in (actual, expected)), location + return if key in DIAGNOSTIC_LIMITS: for value in (actual, expected): assert isinstance(value, (float, int)) and not isinstance(value, bool), location @@ -69,6 +74,22 @@ def compare(actual, expected, location='root'): assert actual == expected, (location, actual, expected) + +def mismatches(actual, expected, location): + """Collect every leaf mismatch so a hosted run reports all portability gaps.""" + if isinstance(expected, dict) and isinstance(actual, dict) and actual.keys() == expected.keys(): + return [error for key in expected if key not in ENVIRONMENT_KEYS + for error in mismatches(actual[key], expected[key], f'{location}.{key}')] + if isinstance(expected, list) and isinstance(actual, list) and len(actual) == len(expected): + return [error for i, (a, e) in enumerate(zip(actual, expected)) + for error in mismatches(a, e, f'{location}[{i}]')] + try: + compare(actual, expected, location) + return [] + except AssertionError as error: + return [str(error)] + + def verify_inputs(root=HERE): manifest = json.loads((root / 'inputs/manifest.json').read_text()) for item in manifest['files']: @@ -87,14 +108,17 @@ def main(): ('convergences', 'probe.py', 'evidence.json', []), ('observations', 'probe.py', 'results.json', ['--output', 'results.json']), ] + failures = [] for name, script, output, arguments in probes: work = temporary / name (work / output).unlink() result = subprocess.run([sys.executable, '-B', script, *arguments], cwd=work, capture_output=True, text=True) if result.returncode: raise RuntimeError(f'{name}: {result.stdout}\n{result.stderr}') - compare(json.loads((work / output).read_text()), json.loads((HERE / name / output).read_text()), name) - print(f'PASS {name}: regenerated {output}') + errors = mismatches(json.loads((work / output).read_text()), json.loads((HERE / name / output).read_text()), name) + failures.extend(errors) + print(f'{"FAIL" if errors else "PASS"} {name}: regenerated {output}') + assert not failures, '\n'.join(failures) print('PASS four probes and six immutable source hashes') diff --git a/research/value-assessment-20261112/publication-manifest.json b/research/value-assessment-20261112/publication-manifest.json index 10282e0..68c6024 100644 --- a/research/value-assessment-20261112/publication-manifest.json +++ b/research/value-assessment-20261112/publication-manifest.json @@ -113,11 +113,11 @@ }, { "path": "VALIDATION.md", - "sha256": "acb791f2ca6d01a939528715e982b08493c34fa5b37430e9bafd4465f9e29ea0" + "sha256": "df9c1f2dbd5f9c617218415b975b06143e5ae4ef236bb4374172d8f082738bcd" }, { "path": "check.py", - "sha256": "2e7c7243c932422c3eddaf5f361c977eff03ada4cb4a59318329d86442b75319" + "sha256": "d9a15b7b8e60b2ee85e30d78bc41c6dac8259e3f2259a561293b3e4a83647921" }, { "path": "closure/caustic_control.py", @@ -245,7 +245,7 @@ }, { "path": "test_check.py", - "sha256": "646c887b47dee0da77be9fe0801d67d9c817a29aa4570dc01d1e22c0fb2f2bc4" + "sha256": "c80b17036151b27c9c576ecccdffa7c6fe3b59f19afdaa21bbee4abe70e81500" }, { "path": "wave12/evidence.json", diff --git a/research/value-assessment-20261112/test_check.py b/research/value-assessment-20261112/test_check.py index b5376bc..8020524 100644 --- a/research/value-assessment-20261112/test_check.py +++ b/research/value-assessment-20261112/test_check.py @@ -3,7 +3,7 @@ import shutil import tempfile import unittest -from check import compare, verify_inputs, HERE +from check import compare, verify_inputs, HERE, mismatches class ComparisonTests(unittest.TestCase): @@ -29,6 +29,16 @@ def test_large_roundoff_diagnostic_is_rejected(self): with self.assertRaises(AssertionError): compare(1e-4, 1e-12, 'closure.momentum_relative_residual') + def test_all_mismatches_are_collected(self): + errors = mismatches({"x": 0., "y": False}, {"x": 4.19e-11, "y": True}, "probe") + self.assertEqual(len(errors), 2) + + def test_native_finite_length_diagnostic_boundary(self): + path = "convergences.mechanics.finite_length_checks[0].relative_energy_hessian_error" + compare(3.1972696962664237e-7, 3.197457694573648e-7, path) + with self.assertRaises(AssertionError): + compare(1e-3, 3.197457694573648e-7, path) + def test_changed_input_is_rejected_before_execution(self): with tempfile.TemporaryDirectory() as directory: root = Path(directory) From 7c44e92162320d510b959ebd9ffddbad1b017f5a Mon Sep 17 00:00:00 2001 From: ahrazzle <38987266+ahrazzle@users.noreply.github.com> Date: Thu, 12 Nov 2026 16:10:51 -0600 Subject: [PATCH 5/5] Compare analytic observation nulls at their declared bounds --- .../value-assessment-20261112/VALIDATION.md | 6 ++- research/value-assessment-20261112/check.py | 46 +++++++++++++++++++ .../publication-manifest.json | 6 +-- .../value-assessment-20261112/test_check.py | 16 +++++++ 4 files changed, 70 insertions(+), 4 deletions(-) diff --git a/research/value-assessment-20261112/VALIDATION.md b/research/value-assessment-20261112/VALIDATION.md index c3bf977..0a6444d 100644 --- a/research/value-assessment-20261112/VALIDATION.md +++ b/research/value-assessment-20261112/VALIDATION.md @@ -4,7 +4,7 @@ Prepared on 12 November 2026. Publication preparation used Python 3.14 with NumP - The runner checks all six historical SHA-256 digests before executing any source input. - The Wave 12 loader independently checks each executed source digest. -- Seven comparator and integrity controls pass. They cover a scientific-result change, a boolean change, malformed structure, nonfinite output, excessive roundoff residual, changed source, and loss of a small scientific signal. +- Eight comparator and integrity controls pass. They cover a scientific-result change, a boolean change, malformed structure, nonfinite output, excessive roundoff residual, changed source, and loss of a small scientific signal. - All four probes, including the 26-assertion synthetic observation design, regenerate successfully. Their scientific results match saved outputs under the documented tolerances. The focused CI workflow reproduces this bundle. The separate broad Lean build has existing Wave 5/6/7 errors. Hosted CI status must be read from the current pull request and is not implied by these local results. @@ -20,3 +20,7 @@ The second reviewer script was rerun in a temporary copy with SymPy 1.14.0. Its The first Ubuntu replay passed Wave 12 and closure, then exposed platform variation in the finite-length energy-Hessian diagnostic: 3.1972696962664237e-7 versus the saved 3.197457694573648e-7. The runner checks those three diagnostics against the author probe's original 1e-4 bound. A regression test retains the observed pair and rejects a value above the bound. Other scientific quantities retain the strict comparison. + +The next Ubuntu replay passed the first three probes and all 26 observation-probe assertions. Its remaining 37 comparison differences were analytical null singular values, zero coefficients and residuals of exact-recovery controls, and their repeated diagnostic evidence. + +Scoped bounds retain the original null/recovery criteria. Nonzero calibration predictions, the wrong-law training residual and held-out residual retain strict relative comparison. All 37 observed pairs pass those scoped checks locally. diff --git a/research/value-assessment-20261112/check.py b/research/value-assessment-20261112/check.py index 16c58a0..6765040 100644 --- a/research/value-assessment-20261112/check.py +++ b/research/value-assessment-20261112/check.py @@ -30,6 +30,9 @@ def compare(actual, expected, location='root'): + # Guard types before any special numerical diagnostic can return. + if isinstance(expected, float): + assert isinstance(actual, (float, int)) and not isinstance(actual, bool), location key = location.rsplit('.', 1)[-1] # Only the analytically null eigenvalues of the ideal fold are roundoff. match = re.fullmatch(r'convergences.mechanics.fold_rows\[(\d+)\].mandel_elastic_eigenvalues\[(\d+)\]', location) @@ -49,6 +52,49 @@ def compare(actual, expected, location='root'): if re.fullmatch(r'convergences.mechanics.finite_length_checks\[[0-2]\].relative_energy_hessian_error', location): assert all(math.isfinite(v) and 0 <= v < 1e-4 for v in (actual, expected)), location return + # Exact-null observation diagnostics. These are the source probe's declared + # rank/recovery controls, not positive survey or held-out predictions. + null_ranks = { + 'exact_deep_limit': 2, 'one_redshift': 2, + 'fixed_ratio_selection_track': 2, + 'wide_with_free_acceleration_calibration': 4, + 'wide_plus_local_with_free_acceleration_calibration': 4, + 'wide_known_amplitudes_free_q_s_u': 2, + } + match = re.fullmatch(r'observations.designs.([a-z_]+).singular_values\[(\d+)\]', location) + null_singular = match and match[1] in null_ranks and int(match[2]) >= null_ranks[match[1]] + # checks[1] repeats the exact-deep design; its name and rank still compare. + null_singular = null_singular or bool(re.fullmatch(r'observations.checks\[1\].evidence.singular_values\[[23]\]', location)) + if null_singular: + assert all(math.isfinite(v) and 0 <= v < 1e-10 for v in (actual, expected)), location + return + zero_patterns = [ + r'observations.injections.physical_evolution.(exact_deep|finite_deep|wide)_fit_assuming_B1_C1_s0_u0.theta\[0\]', + r'observations.injections.(mass_drift_only|kinematic_drift_only).exact_deep_fit_assuming_B1_C1_s0_u0.theta\[0\]', + r'observations.injections.physical_evolution.wide_joint_mass_and_evolution_known_k.theta\[[01345]\]', + r'observations.injections.mass_drift_only.wide_joint_mass_and_evolution_known_k.theta\[[01245]\]', + r'observations.constant_mass_control.theta\[2\]', + r'observations.checks\[21\].evidence.theta\[2\]', + ] + exact_fit_residuals = [ + r'observations.injections.physical_evolution.(exact_deep|finite_deep|wide)_fit_assuming_B1_C1_s0_u0.(max_abs_residual_dex|rms_residual_dex)', + r'observations.injections.(mass_drift_only|kinematic_drift_only).exact_deep_fit_assuming_B1_C1_s0_u0.(max_abs_residual_dex|rms_residual_dex)', + r'observations.injections.(physical_evolution|mass_drift_only).wide_joint_mass_and_evolution_known_k.(max_abs_residual_dex|rms_residual_dex)', + ] + if any(re.fullmatch(pattern, location) for pattern in zero_patterns + exact_fit_residuals): + bound = 1e-12 if any(re.fullmatch(pattern, location) for pattern in exact_fit_residuals) else 1e-10 + assert all(math.isfinite(v) and abs(v) < bound for v in (actual, expected)), location + return + named_check_bounds = { + 'observations.checks[12].evidence': 1e-14, # analytic_null_vectors + 'observations.checks[13].evidence': 1e-8, # physical_evolution_joint_recovery + 'observations.checks[15].evidence': 1e-8, # mass_drift_only_joint_recovery + 'observations.checks[18].evidence': 1e-8, # no_evolution_joint_recovery + } + if location in named_check_bounds: + assert all(math.isfinite(v) and 0 <= v < named_check_bounds[location] for v in (actual, expected)), location + return + if key in DIAGNOSTIC_LIMITS: for value in (actual, expected): assert isinstance(value, (float, int)) and not isinstance(value, bool), location diff --git a/research/value-assessment-20261112/publication-manifest.json b/research/value-assessment-20261112/publication-manifest.json index 68c6024..bf0e630 100644 --- a/research/value-assessment-20261112/publication-manifest.json +++ b/research/value-assessment-20261112/publication-manifest.json @@ -113,11 +113,11 @@ }, { "path": "VALIDATION.md", - "sha256": "df9c1f2dbd5f9c617218415b975b06143e5ae4ef236bb4374172d8f082738bcd" + "sha256": "3614f758a1e73ef4704dd311f10ccabf95fb3989b614b5da26d655d106a65966" }, { "path": "check.py", - "sha256": "d9a15b7b8e60b2ee85e30d78bc41c6dac8259e3f2259a561293b3e4a83647921" + "sha256": "3594b80e2b9d12149219adfc7cf1c0a585d8f19bf40d7dd69cae1e1636a71d0c" }, { "path": "closure/caustic_control.py", @@ -245,7 +245,7 @@ }, { "path": "test_check.py", - "sha256": "c80b17036151b27c9c576ecccdffa7c6fe3b59f19afdaa21bbee4abe70e81500" + "sha256": "d4eb8c40a2e564ae1ba7baf7e0601e6c04ee17f40b25849e586679fa964019ee" }, { "path": "wave12/evidence.json", diff --git a/research/value-assessment-20261112/test_check.py b/research/value-assessment-20261112/test_check.py index 8020524..59ba5f1 100644 --- a/research/value-assessment-20261112/test_check.py +++ b/research/value-assessment-20261112/test_check.py @@ -39,6 +39,22 @@ def test_native_finite_length_diagnostic_boundary(self): with self.assertRaises(AssertionError): compare(1e-3, 3.197457694573648e-7, path) + def test_observation_null_controls_stay_scoped(self): + with self.assertRaises(AssertionError): + compare(False, 5.5284e-14, "observations.designs.exact_deep_limit.singular_values[2]") + compare(5.6785e-14, 5.5284e-14, "observations.designs.exact_deep_limit.singular_values[2]") + compare(-6e-16, 9e-16, "observations.injections.physical_evolution.exact_deep_fit_assuming_B1_C1_s0_u0.theta[0]") + compare(3.3e-16, 1.9e-16, "observations.checks[13].evidence") + for path, actual, expected in [ + ("observations.designs.exact_deep_limit.singular_values[2]", 1e-5, 5e-14), + ("observations.checks[13].evidence", 1e-5, 1.9e-16), + ("observations.heldout.training_max_residual_dex", 0., .00109), + ("observations.heldout.held_out_high_acceleration_max_residual_dex", 0., .360), + ("observations.injections.mass_drift_only.finite_deep_fit_assuming_B1_C1_s0_u0.theta[0]", 0., .001), + ]: + with self.assertRaises(AssertionError): + compare(actual, expected, path) + def test_changed_input_is_rejected_before_execution(self): with tempfile.TemporaryDirectory() as directory: root = Path(directory)