USR-2026-0041 · Discreteness

Assuming the 31 GeV photon of GRB 090510 (z = 0.903) was emitted within Δt ≤ 1 s of the low-energy photons, linear-in-energy vacuum dispersion requires E_QG > 1.4×10¹⁹ GeV — of order the Planck energy. The limit scales exactly as 1/Δt and carries no quoted uncertainty on that association window.

PROVISIONAL E_QG > 1.4e19 GeV, of order Planck — scales as 1/Δt on an unquantified 1 s window re-run & confirmed 2026-07-09 (R0 — founder CI; independence pending)

CORRECTED 2026-07-26: the registered '1.16× Planck' framing is an artifact of the assumed 1 s window and sits within the unquantified uncertainty of its own input. This is an order-of-Planck-scale statement from a single photon in a single burst, not a demonstration that spacetime granularity is finer than the Planck length.

Falsify-box — how to kill this claim

UNTESTED The bound is E_QG > (E_hi/dt)*(1/H0)*K(z), so it scales exactly as 1/dt. DEAD if the 31 GeV photon of GRB 090510 cannot be associated with the low-energy emission to better than dt = 1.16 s: at dt >= 1.16 s the bound falls to <= 1.22e19 GeV, i.e. below the Planck energy, and the claim's headline ('E_QG > 1.42e19 GeV, 1.16x Planck', therefore 'any spacetime pixel is smaller than the Planck length') is void. Independently DEAD on a >= 5 sigma detection of a linear-in-E arrival delay at any finite E_QG in a multi-burst GRB/blazar analysis.

Verification record — every quoted number, re-run 2026-07-09

quantitymeasuredverdict
linear-order bound E_QG > 1.4×10¹⁹ GeV, of order the Planck energy MATCH
load-bearing assumption the 31 GeV photon emitted within Δt ≤ 1 s — no uncertainty quoted MATCH
scaling the bound goes as 1/Δt; at Δt ≥ 1.16 s it falls below the Planck energy MATCH
registered framing, superseded '1.16× Planck' — inside the uncertainty of its own input MATCH

Provenance

script: proof_seam/run_grb_dispersion.py
script status: PRESENT
datasets: Fermi GRB · claim-scripts (downloadable from /data — run it yourself)
re-run: 2026-07-09

Status, honestly

CORRECTED 2026-07-26 by the kill-test sweep; the audit flag it carried is resolved. Status here is computed from evidence — the author cannot set it, and neither can we. Independent reproduction would move it; nothing else will.

§ Figures 1 from proof_seam/run_grb_dispersion.py

What this claim's own script draws. These are the founder's committed outputs — the same plots the script regenerates on any machine that runs it.

grb_dispersion.png 138.1 KB download
§ Reproduction run_grb_dispersion.py

The founder's own run of this script, captured verbatim. A match proves the result is reproducible; it is still R0 on this registry's independence rings — same code, so it cannot move a status. Only an outside run does that.

sha256 c3c6dbbb318486870e6a0645… size 8688 B exit 1 runtime 0.4s env python 3.12.2 · numpy 1.26.4
Not captured on this environment. Recorded rather than omitted — a script that will not run as-shipped is exactly what an outside reproducer needs to know.
Traceback (most recent call last):
  File "/private/tmp/claim_scripts_pack/run_grb_dispersion.py", line 167, in <module>
    main()
  File "/private/tmp/claim_scripts_pack/run_grb_dispersion.py", line 69, in main
    K = K_of_z(Z_GRB)
        ^^^^^^^^^^^^^
  File "/private/tmp/claim_scripts_pack/run_grb_dispersion.py", line 59, in K_of_z
    return np.trapezoid((1 + zz) / Ez, zz)
           ^^^^^^^^^^^^
  File "/Users/davidthompson/miniconda3/lib/python3.12/site-packages/numpy/__init__.py", line 333, in __getattr__
    raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'trapezoid'
Share this claim X Bluesky LinkedIn Reddit HN Email