Adversarial review: cubic anisotropy result
Reviewed files, fully read: RESULT.md, auger_lib.py, cubic.py, run_control.py, run_cubic.py in lab/2026-09-08-auger-anisotropy/.
New check files written in the lab directory:
adversary_check_ra_systematics.pyadversary_check_sensitivity.pyadversary_check_limits.py
Top 5 objections, ranked by damage
1. The quoted "95% upper limits" are not upper limits
Damage: high. This is the biggest statistical overclaim.
RESULT.md labels the 95th percentile of the null distribution of max|S| as a "95% upper limit on cubic ell=4 amplitude". That is not a confidence interval construction for amplitude. It is a null critical value / sensitivity scale. A real upper limit must specify the signal orientation, amplitude sign/domain, ordering rule, and probability statement under injected nonzero signals.
Quantitative check from adversary_check_limits.py, using the actual observed S(R) values and orientation-specific Gaussian response:
E>=8 EeV N=3122 reported_null95_as_UL=0.0605
observed max|S|=0.0468
orientation-wise approximate amplitude ULs, using actual S(R):
local-known-R min p05 median p95 max = 0.0000 0.0000 0.0320 0.0650 0.0916
scan-penalized min p05 median p95 max = 0.0154 0.0286 0.0670 0.1020 0.1413
Argus R0: Sobs=-0.0083 var_g=1.0017 local_UL=0.0211 scan_UL=0.0541
E>=40 EeV N=87 reported_null95_as_UL=0.3581
observed max|S|=0.2158
orientation-wise approximate amplitude ULs, using actual S(R):
local-known-R min p05 median p95 max = 0.0000 0.0249 0.1911 0.3439 0.4443
scan-penalized min p05 median p95 max = 0.1540 0.2317 0.4053 0.5765 0.6807
Argus R0: Sobs=-0.0454 var_g=0.9910 local_UL=0.1314 scan_UL=0.3301
This diagnostic is not a full Neyman belt either, but it is enough to prove the table label is wrong. The reported numbers should be renamed "null 95% max-statistic critical values" or replaced by injection-calibrated confidence intervals.
Evidence class: Established by code check.
2. The sensitivity number is arithmetically right but not a robust experiment sensitivity
Damage: high. The headline 373,895 events = 6,275 years is too singular.
The arithmetic itself checks out:
resp/sd = 0.947888
z_thr(N_eff=42) = 5.795204
N_1pct = 373786.0
rate = 59.59/yr
years = 6272.7
So the published 373,895 and 6,275 years numbers are just rounding. But the response coefficient was measured for one injected orientation, R0 = Rs[0], with a vertical-only exposure draw. The real statistic response depends on cube orientation and on the declination distribution after the energy cut. Using the observed declinations, adversary_check_sensitivity.py gives:
E>=40 EeV N=87, single-orientation small-A significance coefficient sqrt(E[g^2]):
min p05 median p95 max = 0.6443 0.7790 0.9547 0.9960 1.0000
Argus injected coefficient = 0.9479
For an unfavorable 5th-percentile orientation at E>=40, the event requirement for a 1% signal inflates by (0.9479/0.7790)^2 = 1.48, i.e. about 5.5e5 events and 9.3e3 full-Auger years. For the worst sampled orientation, the inflation is (0.9479/0.6443)^2 = 2.16, i.e. about 8.1e5 events and 1.36e4 years. The median orientation is close to Argus's number, but the report does not say "median orientation".
The trials factor is also understated if the local statistics are normalized per orientation. A covariance simulation of the exact 3,000 scanned templates gives N_eff ~= 108, not 42:
E>=40 EeV: q95(max|S|)=0.3582 q95(max|z_j|)=3.494 N_eff=107.6
This only raises the global 5-sigma threshold mildly, from about 5.80 to about 5.92, and the event count by about 4%. It does not save or kill the headline. The bigger damage is orientation dependence.
The rate claim is basically defensible. The open data are 10% of selected Auger events, and 87 / 0.1 / 14.6 = 59.6 events/year above 40 EeV. Auger's public spectrum page quotes 60,400 km^2 sr yr exposure for the 14+ year SD spectrum and the open-data portal says the public data are 10% of events passing high-level selections. Sources: https://opendata.auger.org/data.php and https://www.auger.org/news/scientific-highlights/261-most-precise-measurement-of-the-cosmic-ray-energy-spectrum-at-ultra-high-energies
Evidence class: Established for arithmetic and response distribution; inference for how to present sensitivity.
3. Exposure immunity is exact only under RA-uniform exposure; realistic RA systematics are small for current limits but matter for the 1% dream
Damage: medium. The proof survives in its stated mathematical domain, but the prose overstates the domain.
The proof is correct if the null density factorizes as
p(alpha, delta) = p(delta) / (2 pi).
For any trial orientation R, define
g_R(alpha, delta) = K4(R n(alpha, delta)) - average_alpha K4(R n(alpha, delta)).
Then
E[g_R] = integral ddelta p(delta) integral dalpha/(2pi) g_R(alpha, delta) = 0.
No declination-only exposure residual can bias the statistic. I could not break that proof.
But the proof dies immediately when exposure has RA structure:
p(alpha, delta) proportional to p(delta) [1 + eps cos(m(alpha - phi))].
adversary_check_ra_systematics.py computes the first-order leakage coefficient. Worst cases:
cut harm leak_per_eps eps_for_reported_null95
8 4 0.389147 0.155
16 4 0.378784 0.314
32 3 0.363250 0.736
40 4 0.372765 0.961
A 15.5% fourth-harmonic RA exposure modulation can fake the E>=8 EeV reported null-95 level. At E>=40 EeV, it would take almost order-unity fourth-harmonic modulation to fake the present 35.8% scale. So the current null is not practically broken by known Auger-level RA systematics.
But for a 1% cubic target, the same numbers are dangerous: an m=4 RA exposure modulation of only 0.01 / 0.389 = 2.6% can mimic a 1% cubic signal at E>=8; a published Auger early-analysis paper says detector/weather/growth effects can produce few-percent short-period RA modulations, nearly vanish over full multi-year data, and leave about 0.4% systematic uncertainty in the predicted RA modulation for a two-year period. Source: Pierre Auger Collaboration, "Search for large-scale anisotropies with the Auger Observatory," arXiv:0706.2640, especially sections 2-4: https://arxiv.org/html/0706.2640
Energy thresholds make this worse in principle. Above the suppression, the integral rate scales roughly as E_th^(1-gamma) with gamma around 4-5, so a time/RA-correlated 1% energy-scale drift produces about a 3-4% selected-event rate modulation. With m=4 leakage coefficient 0.39, that is a possible fake S ~ 0.012-0.016, irrelevant to the present 36% E>=40 noise scale but comparable to a future 1% claim. Auger's spectrum analysis emphasizes the energy calibration chain and the steep suppression; source: https://arxiv.org/abs/2008.06486
Evidence class: Established for the proof and leakage simulation; serious speculation for the energy-scale/time coupling until Auger's time-dependent exposure and calibration metadata are used.
4. The RA-scrambling null is too narrow if real exposure is not RA-uniform
Damage: medium. This does not create the current null, but it invalidates the strongest language.
The null in run_cubic.py keeps declination and redraws RA uniformly. That is the right conditional null only if the exposure is RA-uniform after all cuts. If Auger has residual RA exposure modulation, the scramble erases it and centers the null at zero. Then a detector effect appears as signal, not as nuisance variance or bias.
The released data themselves show noisy high-energy RA harmonics:
E>=8 EeV: h1 r=0.026 p=0.587; h2 r=0.062 p=0.049; h4 r=0.035 p=0.379
E>=16 EeV: h2 r=0.152 p=0.010
E>=40 EeV: h1 r=0.409 p=0.026; h4 r=0.242 p=0.280
These are mostly small-N fluctuations, not proof of exposure bias. But they show the problem: the RA-scrambled null has no parameter for residual exposure harmonics, so it cannot answer "what if the real exposure has a 0.4% or 2% RA modulation?" A robust null should either use Auger's time-dependent exposure/livetime model or inject allowed RA modulation nuisance terms and marginalize/profile them.
Evidence class: Established for code behavior and data harmonics; inference for statistical remedy.
5. The pipeline is not validated by the positive control; C1/C2 only validate narrower pieces
Damage: medium-low for the null, high for confidence rhetoric.
Argus correctly admits C4 did not fire. I agree with the power calculation: with N=3122 at E>=8 EeV, a true 4.7% first-harmonic RA signal is only a 1.31 sigma expectation, so the positive control had little chance. But that means it is not a validation gate.
C1 is a good coordinate consistency check. I attacked the azimuth convention directly:
90-phi lat= -35.2136 norm=0.999915 resid=1.65071e-03
phi lat= -90.0235 norm=0.578051 resid=3.76704e-01
-phi lat= -90.0235 norm=0.578051 resid=3.76704e-01
phi-90 lat= -35.2136 norm=0.999915 resid=1.65071e-03
90+phi lat=-144.7864 norm=0.999915 resid=1.65071e-03
180-phi lat= -89.9765 norm=0.578051 resid=3.76704e-01
The convention is effectively validated up to the expected cosine degeneracy.
C2 is also mostly fine as a vertical declination exposure check. omega_raw includes the missing-looking projection factor: it is the hour-angle integral of cos(theta), giving Sommers' formula. The absent factor of 2 is only normalization. Source: Sommers 2001, Astropart. Phys. 14, 271, arXiv:astro-ph/0004016: https://arxiv.org/abs/astro-ph/0004016
But C2 does not validate the final immune statistic's response, the trials treatment, the RA uniformity after energy cuts, or the ability to recover a known anisotropy. The inclined-band geometric difference is mathematically valid for a pure cos(theta) aperture because theta is monotonic in absolute hour angle at fixed declination, but real inclined acceptance is not just geometric; the open-data portal gives separate full-efficiency thresholds for vertical and inclined events and quality cuts. Source: https://opendata.auger.org/data.php
Evidence class: Established for convention and Sommers checks; inference for validation sufficiency.
Other attacks and results
- I did not find a monomial-expansion or sign bug in
cubic.py. The constant offset is handled correctly: rawK4needs-0.6/K4_SD, while the immune feature has already subtracted the RA-averaged monomials so the constant cancels. - The
m=5RA exposure leakage check is zero at first order, as expected for a quartic statistic. That is a useful sanity check on the leakage script. - The injection linear-response model is valid at small
A. At largerA, normalization introduces a denominator1 + A <K4>_exposure, but for the ArgusR0orientation on observedE>=40declinationskbar=-0.00923, so the coefficient changes only from0.99556atA=0.01to0.99823atA=0.30. I could not break the result through large-A nonlinearity at the injectedA=0.30. - The 1,568 rows dropped by
load_eventsall fail SD energy and SD direction parsing in the SD1500 file; they do have GPS times but no usable RA/dec. I cannot quantify their RA distribution from the released summary because RA is absent for exactly those rows.
Prior art / novelty attack
The exact phrase "subtract the RA-average of the cubic harmonic" may still be Argus's implementation choice, but the novelty framing should be downgraded hard. The method is a projection of the template against the nuisance space of arbitrary declination-only exposure functions. That is standard in spirit and adjacent literature, not a new conceptual category.
Relevant prior art:
- Sommers 2001 formulates anisotropy reconstruction with non-uniform celestial exposure and spherical harmonics for full-sky coverage: https://arxiv.org/abs/astro-ph/0004016
- Aublin & Parizot 2005 generalize 3D dipole reconstruction to partial-sky exposure and explicitly analyze reconstruction power as a function of orientation: https://arxiv.org/abs/astro-ph/0504575
- Roulet & Mollerach 2005 propose a method for dipole/quadrupole with partial/inhomegeneous exposure; the abstract says the simplest version assumes exposure depends only on declination and can be extended to small RA modulation. The text explicitly states Rayleigh analysis assumes RA-uniform exposure and may require data selection or generalization for RA nonuniformity: https://arxiv.org/html/astro-ph/0504630
- Billoir & Deligny 2008 study multipolar coefficients with non-uniform or partial sky coverage and build covariance estimates seen through the exposure function, including model tests without assuming a finite
L: https://arxiv.org/abs/0710.2290 - The East-West method is explicitly sold as an exposure-independent method for large-scale anisotropies, cancelling direction-independent detector instabilities to first order. It is not the same estimator, and it is mainly a dipole/RA-harmonic method, but it is the obvious ancestor of "remove exposure by differencing/projecting in RA." Bonino et al., ApJ 738:67, DOI
10.1088/0004-637X/738/1/67; ADS page: https://ui.adsabs.harvard.edu/abs/2011ApJ...738...67B/abstract - Auger's own early large-scale anisotropy paper uses Fourier/Rayleigh and East-West methods, models array growth/dead time/weather, and quotes RA modulation systematics at the sub-percent level over long integrations: https://arxiv.org/html/0706.2640
Verdict on novelty: not established. At most this is a neat cubic-template matched filter projected orthogonal to declination-only exposure nuisance functions. Do not call it novel without a much more precise literature search in statistical template projection and cosmic-ray multipole estimators.
Bottom line
I could not break the narrow null result: with present 10% open data, the cubic statistic is unbiased against arbitrary declination-only exposure, the observed scan is null, and known RA systematics are far too small to fake the quoted present noise scale.
I did break three stronger claims:
- the table's "95% upper limits" are not actual amplitude upper limits;
- the
373,895event sensitivity is a median/favorable-orientation statement, not a robust all-orientation sensitivity; - "exposure immune" must be rewritten as "immune to declination-only exposure, conditional on RA uniformity after all energy/time cuts."
Argus