Where is everybody? · Working papers

Partial Dyson spheres among stars within 100 parsecs

Revised after a second, separate analysis run for this project tried to break it. Neither analysis is an outside expert.

A completeness-corrected infrared-excess census of main-sequence stars within 100 pc: limits on partial Dyson swarms

Revised after refereeing. Every number is regenerated by code/run_all.py.

1. Question and answer

What fraction of nearby stars can host a partial Dyson swarm, meaning a structure that intercepts a fraction f of the stellar luminosity and re-radiates it as a blackbody at 100-600 K? The answer is wanted per (f, T) and per spectral class, with the search completeness measured by injection-recovery.

Answer. Of 273,856 main-sequence stars within 100 pc, 149,005 (54%) have AllWISE photometry clean enough to search, and 307 of those show a ≥ 5σ excess at 12 or 22 µm. Counting every one of the 307 as a possible swarm, whatever it has been identified as, the 95% upper limit on the fraction of stars hosting a 300 K swarm is 7.0e-4 at f = 1% (3.9e-4 to 1.0e-3 across 100-600 K and a model tolerance of 20-50%) and 8.2e-5 at f = 10% (8.2e-5 to 4.8e-4). This limit uses no identifications and is the headline. If the identifications are accepted, 37 stars remain unexplained and the limits tighten to 1.4e-4 (0.7e-4 to 2.0e-4) at 1% and 2.2e-5 (2.2e-5 to 1.5e-4) at 10%. The main caveats:

2. Data

Source Use Rows
Gaia Catalogue of Nearby Stars (VizieR J/A+A/649/A6 table1c; includes 2MASS) parent sample 331,312
AllWISE Source Catalog (IRSA TAP), 12 arcsec cones at the Gaia position moved to epoch 2010.5 W1-W4 fluxes, flags, neighbours 260,663 stars matched within 3 arcsec
AllWISE, 6 arcsec cones 90 arcsec north of every star chance-alignment rate 331,312 positions
SIMBAD and CDS XMatch: 12 positional catalogues, 7 excess and young-star catalogues, SIMBAD's object list for Sgro & Song 2021 vetting 307 excess and 3,070 comparison stars
CDS hips2fits cutouts (AllWISE; PS1, Legacy DR10 or DSS2) image check about 3,600

Also used: the SFD dust map, the Mamajek dwarf table and the WISE response curves.

Parent sample. Median distance ≤ 100 pc (300,567); G and RP present (294,748); main sequence (273,856) after removing 16,638 white dwarfs and subluminous objects, 3,214 evolved stars and 1,040 objects fainter than M_G = 16.6. Classes are defined by absolute G magnitude alone, not spectroscopy. "A" (M_G < 2.51; 1,678 stars) contains B9.5-F0 stars and at least one giant. "FGK" (60,518) contains over-luminous pre-main-sequence K and M stars such as TW Hya and AU Mic. "M" has 211,660.

Searchability cuts were chosen from contamination arguments and from the negative tail of the significance distribution only:

Cut Stars remaining
AllWISE match within 3 arcsec 260,663
2MASS Ks with an uncertainty and positive W1 flux 257,163
WISE source not shared with a brighter GCNS star 253,442
Separation ≤ 0.4 arcsec + 0.35 × proper motion 244,297
SFD E(B-V) < 0.15 171,606
Not blended (nb = 1, na = 0), ext_flg ≤ 1 164,353
W1 contamination flag clear 150,029
Per band: flag clear, rchi2 < 3 + (0.04 S/N)², no AllWISE neighbour within 12 arcsec above 3σ W3 145,963; W4 148,736; either 149,005

3. Method

Photosphere and significance. W3 and W4 photospheric fluxes are predicted from two anchors (Ks; saturation-corrected W1) with empirical colour loci in M_G and G-RP and fitted error floors. Profile-fit fluxes are used as forced photometry, negatives included. The significance is χ = min(χ_Ks, χ_W1); its mirror measures the noise tail.

Swarm model. F_ν = f F_bol πB_ν(T)/(σT⁴) through the WISE response curves, with the host dimmed by (1 - f). F_bol comes from Ks and a Mamajek bolometric correction.

Injection-recovery. For 57 values of f from 1e-5 to 0.9 and six temperatures, the swarm is added to each star's actual measurements and the pipeline is rerun. A star is recovered if the dimmed host would still be in the sample and passes the 5σ threshold in a searchable band. C(f, T) is the recovered fraction of all parent stars.

Chance alignments. Each AllWISE source at a control position is superposed on the star that owns that position. Two estimators are used: an analytic Gaussian-beam trigger area capped at the blending radius (6 arcsec in W3, 8 arcsec in W4), and a direct count of control sources at their actual offsets for caps of 3, 4 and 6 arcsec.

Vetting, in priority order:

  1. Independent youth evidence: SIMBAD young-star type or young-association membership.
  2. Published infrared-excess catalogue only. This is an identification, not an explanation, because a swarm host would earn the same entry.
  3. Other known type (CVs).
  4. Catalogued background galaxy, AGN, radio source or extended optical source in the beam.
  5. Image offset: the W3 or W4 centroid is displaced from the star by more than the 99th percentile of non-excess stars of equal S/N.
  6. Manual inspection of cutouts (six stars, data/visual_vetting.csv).
  7. Co-moving Gaia companion in the beam.

W1-W2, J-Ks, GCNS probability, Gaia blending flags and Gaia neighbours are recorded for every unexplained star but are not used to classify, so the unexplained count is conservative.

Limits. N_rec is the number of stars in which the injected swarm is recovered. k counts excess stars in which that swarm would be detectable and whose observed excess is at least (1 - tol) × model - 2σ in every searchable band (tol = 0.2). The test is one-sided, so a star with more excess than the model is counted. The limit is the one-sided 95% Clopper-Pearson bound on k/N_rec, in three versions:

The last two are divided by 0.94 ± 0.02, the probability that an on-star source survives the background vetting. Quoted ranges span the six temperatures and tol = 0.2 and 0.5.

4. Results

Noise. At ≥ 5σ there are 177 W3 and 179 W4 excesses (307 stars) against 1 + 1 on the mirror side (Fig. 1).

Accounting (Fig. 4, Fig. 5):

A FGK M all
searchable stars 889 33,035 115,081 149,005
excess stars 61 67 179 307
independent youth evidence 18 30 17 65
published excess catalogue only 36 23 3 62
CV 0 0 2 2
background, catalogued 0 0 34 34
background, image offset 1 9 89 99
background, manual inspection 0 0 6 6
co-moving companion in beam 0 2 0 2
unexplained 6 3 28 37
excess stars without youth or catalogue identification 7 14 157 178
chance alignments expected, analytic (caps 6 / 8 arcsec) 0 22 119 140
chance alignments expected, direct count ≤ 6 arcsec 0 17 105 122
chance alignments expected, direct count ≤ 4 arcsec 0 7 71 78

About 120-140 chance alignments are expected (statistical ± 9 to 11) for a blending radius of 6-8 arcsec, and 78 if only sources within 4 arcsec merge. A neighbour census supports the larger radius. W3-detected, galaxy-coloured sources are catalogued separately next to M-dwarf targets at 0% (0-2 arcsec), 0.4% (2-4 arcsec) and 7.6% (4-6 arcsec) of their density at control positions, so inside 6 arcsec they are almost always merged into the star. For FGK stars 17-22 are expected; 14 non-young excesses plus 5 offset-flagged young or catalogued stars are seen.

Two further lines of evidence, not independent of each other, say most M-dwarf excesses are background sources:

The unexplained stars (data/unexplained.csv).

Completeness (Fig. 2). The median minimum detectable f at 300 K among searchable stars is 4e-5 (A), 6e-4 (FGK) and 8e-3 (M). M dwarfs by sub-range (Mamajek M_G boundaries) at 300 K, with k in brackets:

Sub-range Stars C (f = 0.01) every excess, f = 0.01 accepted, f = 0.01 C (f = 0.1) every excess, f = 0.1
M0-M1.5 26,496 0.53 4.5e-4 [2] 2.3e-4 [0] 0.53 2.1e-4
M2-M3.5 83,246 0.50 1.0e-3 [32] 2.4e-4 [4] 0.54 6.7e-5
M4-M4.5 49,983 0.24 2.5e-3 [20] 7.0e-4 [3] 0.55 1.1e-4
M5-M6 38,538 0.062 2.6e-3 [2] 1.3e-3 [0] 0.53 3.1e-4
M6.5-M9 13,397 0.011 1.9e-2 [0] 2.0e-2 [0] 0.30 2.3e-3

Limits at 300 K (Fig. 3). Each cell gives every excess / strict / identifications accepted, with k in brackets. With k = 0 the label-dependent limits sit 6% above the every-excess limit because of the vetting correction.

f C (FGK) FGK C (M) M all classes pooled
1e-3 0.44 5.9e-4 / 3.7e-4 / 1.9e-4 [9/4/1] 0.006 no sensitivity 5.9e-4 / 3.4e-4 / 1.8e-4 [10/4/1]
0.01 0.54 1.9e-4 / 9.6e-5 / 9.6e-5 [2/0/0] 0.33 1.0e-3 / 2.2e-4 / 2.0e-4 [56/8/7] 7.0e-4 / 1.5e-4 / 1.4e-4 [58/8/7]
0.02 0.54 1.4e-4 / 9.6e-5 / 9.6e-5 [1/0/0] 0.42 8.4e-4 / 2.2e-4 / 1.9e-4 [60/11/9] 6.2e-4 / 1.6e-4 / 1.4e-4 [61/11/9]
0.05 0.54 9.1e-5 / 9.6e-5 / 9.6e-5 [0/0/0] 0.50 4.6e-4 / 1.6e-4 / 1.6e-4 [37/9/9] 3.5e-4 / 1.2e-4 / 1.2e-4 [37/9/9]
0.1 0.54 9.1e-5 / 9.6e-5 / 9.6e-5 [0/0/0] 0.52 1.1e-4 / 4.5e-5 / 2.9e-5 [6/1/0] 8.2e-5 / 3.5e-5 / 2.2e-5 [6/1/0]
0.5 0.54 9.1e-5 / 9.6e-5 / 9.6e-5 [0/0/0] 0.52 5.7e-5 / 2.9e-5 / 2.9e-5 [2/0/0] 4.4e-5 / 2.2e-5 / 2.2e-5 [2/0/0]
0.9 0.54 9.1e-5 / 9.6e-5 / 9.6e-5 [0/0/0] 0.45 3.1e-5 / 3.3e-5 / 3.3e-5 [0/0/0] 2.3e-5 / 2.5e-5 / 2.5e-5 [0/0/0]

Ranges over 100-600 K and tolerance 0.2-0.5 (data/limit_ranges.csv; per-temperature values are in data/limits.csv):

f FGK, every excess M, every excess M, accepted pooled, every excess pooled, strict pooled, accepted
0.01 1.4e-4 to 4.4e-4 6.8e-4 to 1.5e-3 1.2e-4 to 3.6e-4 3.9e-4 to 1.0e-3 6.7e-5 to 2.2e-4 6.7e-5 to 2.0e-4
0.05 9.1e-5 to 1.4e-4 3.6e-4 to 9.7e-4 9.8e-5 to 2.2e-4 2.7e-4 to 7.2e-4 8.1e-5 to 1.8e-4 6.6e-5 to 1.6e-4
0.1 9.1e-5 to 1.4e-4 1.1e-4 to 6.3e-4 2.9e-5 to 2.0e-4 8.2e-5 to 4.8e-4 3.5e-5 to 1.7e-4 2.2e-5 to 1.5e-4

At f = 0.1 the 300 K, tol = 0.2 value is the bottom of the range, because the brightest unexplained M dwarfs are equivalent to f = 0.03-0.08, just below the tolerance. With tol = 0.5 the 300 K pooled limits are 2.3e-4 (every excess, k = 24) and 6.7e-5 (accepted, k = 4). The limits are weakest at 100 K and 600 K.

What sets the limit.

Comparison with earlier work.

5. Robustness checks

Pooled limits at 300 K (data/robustness.csv). The label-dependent columns include the vetting correction.

Variant Excess / mirror negatives Every excess, f = 0.01 Accepted, f = 0.01 Every excess, f = 0.1 Accepted, f = 0.1
baseline 307 / 2 7.0e-4 1.4e-4 8.2e-5 2.2e-5
threshold 4σ 471 / 7 1.1e-3 not vetted 9.0e-5 not vetted
threshold 6σ 210 / 0 4.6e-4 not vetted 6.4e-5 not vetted
E(B-V) < 0.10 256 / 1 7.0e-4 not vetted 8.3e-5 not vetted
E(B-V) < 0.30 372 / 4 7.2e-4 not vetted 8.7e-5 not vetted
tolerance 0 307 / 2 5.7e-4 1.2e-4 5.4e-5 2.2e-5
tolerance 0.5 307 / 2 9.2e-4 1.5e-4 2.3e-4 6.7e-5
catalogue-only identifications counted as unexplained 307 / 2 7.0e-4 1.5e-4 8.2e-5 3.5e-5
no manual inspection (43 unexplained) 307 / 2 7.0e-4 1.6e-4 8.2e-5 2.2e-5
catalogues only, no image information 307 / 2 7.0e-4 5.4e-4 8.2e-5 3.5e-5
parent sample with GCNS probability > 0.5 305 / 2 7.0e-4 1.4e-4 8.2e-5 2.2e-5

6. Limitations

7. Closest prior work and what is new

The closest work is Suazo et al. (2022). New here:

  1. A per-star injection-recovery completeness function C(f, T) for partial swarms in the volume-limited 100 pc main-sequence sample, by class and M sub-range. I found no earlier stellar search that publishes one. Curtis et al. (2026) use injection-recovery for galaxy-scale waste heat.
  2. Counted-star 95% limits, including the first non-trivial 100 pc limits at f = 1e-3 to 1e-2.
  3. A full accounting of every excess, with a measured chance-alignment rate (two estimators and a neighbour census) and a centroid test calibrated on a null sample.
  4. An explicit boundary, per class, between sensitivity-limited and confusion-limited regimes.

Not new: the f ≥ 0.5 limits (they reproduce Suazo et al. 2022); the centroid comparison as a method (Suazo et al. 2024; Ren et al. 2026); the conclusion that such M-dwarf excesses are mostly background galaxies (Ren et al., Blain, JWST); the FGK excess incidence (Kennedy & Wyatt 2013); and much of the M-dwarf candidate list (Sgro & Song 2021).

Confidence that items 1, 2 and 4 are new: medium.

8. Implications for the Fermi Paradox

If every settled system built a 300 K swarm, the 95% upper limit on the number of settled systems within 100 pc is as follows. Each value is the limit × the number of stars in the class, which extrapolates to the unsearchable stars. Brackets give the range over 100-600 K and tolerance.

stars 1% swarm, every excess 1% swarm, accepted 10% swarm, every excess 10% swarm, accepted
A 1,678 5.8 6.2 5.8 6.2
FGK 60,518 11.6 (8.5-27) 5.8 (5.8-12) 5.5 (5.5-8.5) 5.8
M 211,660 213 (143-321) 43 (26-76) 23 (23-133) 6.1 (6.1-41)
sum of classes 273,856 230 55 34 18
pooled, if the rate is the same in every class 273,856 191 37 22 6.0

A class with zero candidates and about 50% completeness cannot give fewer than about 6. The M row at 1% is in practice an M0-M4.5 limit. Summing the M sub-ranges separately gives 222 for M0-M4.5 and 360 for the 51,935 later M dwarfs, which is no real constraint on the latter.

This is a null result with a clear boundary. Large warm absorbers are rare or absent among solar-neighbourhood stars. Explanations of the Fermi paradox in which settlement is common and each settled system turns even 1% of its starlight into warm waste heat are limited to fewer than about one star in a thousand locally. The data say little about swarms below f ≈ 1e-3 around M dwarfs, about late-M hosts, about structures colder than 100 K, or about civilisations that build no star-scale absorbers. Deeper limits from WISE-class data are blocked by confusion with natural discs and background galaxies, not by sample size. Sub-arcsecond mid-infrared imaging of the 37 unexplained stars would remove most of the remaining ambiguity.

9. Response to referee

Referee point Action
The 10% headline sits on a cliff Accepted. f = 0.03 and 0.07 were added to the grid. Every limit is computed for tolerance 0.2 and 0.5 and given with its range over temperature and tolerance, and the first paragraph states the f = 0.05 values. My ranges are wider than the referee's suggested ones because temperature and tolerance are varied jointly.
Pooled limits and system counts assume a class-independent rate Accepted. Section 8 gives counts per class and their sum, and the pooled figure is labelled. The M sub-range table was added and the 1% M limit is stated to apply to M0-M4.5.
Literature out of date Accepted. Verified through the arXiv API and Crossref and now cited: Zackrisson et al. 2026 (arXiv:2607.09460), Korn et al. 2026 (2607.25701), Ren, Garrett & Zackrisson 2026 (2607.03619), Ren et al. 2025 (2501.05152), Sgro & Song 2021 (MNRAS 508, 3084), Curtis et al. 2026 (2608.12458), Garrett 2026 (2608.31153). The centroid test is no longer claimed as a new method. A quantitative comparison with Sgro & Song was added.
Youth argument partly wrong Accepted. The indicator now requires clean Gaia photometry, which gives 4 of 24 instead of 7 of 29.
Unexplained list holds identifiable objects Accepted. unexplained.csv now carries W1-W2, J-Ks, GCNS probability, blending flags, Gaia neighbours and a Sgro & Song flag. SCR J0615-7615 was inspected and reclassified as background (the sixth manual classification). The other flagged stars stay counted as unexplained.
Chance-alignment precision overstated Accepted. A direct-count estimator (122 within 6 arcsec, against the referee's 124) and the neighbour census were added. The text quotes about 120-140 and gives the 4 arcsec value.
Suazo et al. 2022 comparison not like for like Accepted. The difference in definition is stated and "300 times" is removed.
Vetting-pass correction optimistic Accepted. It is now 0.94 ± 0.02 (a flag in either band rejects; the 6/127 rate on young or catalogued stars is used), applied in limits.csv and robustness.csv.
"Independent" lines of evidence; catalogue-only label circular Accepted. Reworded. "Young or known disc" is split into 65 with independent youth evidence and 62 catalogue-only, and a strict limit that counts the latter as unexplained is given throughout.
Classes defined by M_G; lead with the every-excess limits Accepted. Stated in Section 2; Sections 1 and 8 lead with the every-excess limits.
Optional: require GCNS probability > 0.5 Not adopted as the baseline, because it would change a sample cut after looking at the positive tail. It is given as a robustness variant and changes no limit.
"A measurement of excess incidence with a Dyson label" Partly rejected. For FGK stars the every-excess limit is indeed the known excess incidence re-expressed in f, and the report now says so. The completeness function in (f, T), the M-dwarf limits and the confusion boundary are not available from disc surveys.

Figures and files

Figures in figures/: fig1_significance.png (excess and mirror significance), fig2_completeness.png (C(f, T) by class and M sub-range), fig3_limits.png (limits in three versions with ranges), fig4_accounting.png (identifications and centroid offsets), fig5_cutouts.png (example cutouts). Tables are in data/; the entry point is code/run_all.py.

Key numbers

Quantity Value Uncertainty Note
Parent sample: main-sequence stars within 100 pc (GCNS) 273,856 (A 1,678; FGK 60,518; M 211,660) exact count Classes defined by absolute G magnitude only, not spectroscopy
Searchable stars (clean AllWISE W3 or W4 photometry) 149,005 (54.4%) exact count W3 145,963; W4 148,736; 46% of stars are not searchable
Stars with >= 5 sigma W3 or W4 excess 307 (A 61, FGK 67, M 179) 2 mirror-side negatives (1 W3 + 1 W4) 177 W3 and 179 W4 excesses
Unexplained excess stars after vetting 37 (A 6, FGK 3, M 28) 43 without the six manual classifications; about 10-17 of the 28 M dwarfs expected to be unrecognised background sources Was 38 in the first pass; SCR J0615-7615 reclassified as background
Excess stars with independent youth evidence / published excess catalogue entry only 65 / 62 exact counts Catalogue-only entries are identifications, not explanations; a strict limit counts them as unexplained
Excess stars classed as background (catalogued 34, image offset 99, manual 6) 139 centroid test efficiency 79 +/- 7% on catalogued background, false-flag rate 4.7% (6/127) Mostly M dwarfs (129)
Chance alignments expected among searchable stars about 120-140 (analytic 140; direct count 122 within 6 arcsec) statistical +/- 9 to 11; 78 if only sources within 4 arcsec merge, 43 within 3 arcsec Neighbour census supports a blending radius of at least 6 arcsec
95% upper limit, pooled, 300 K, f = 0.01, every excess counted 7.0e-4 3.9e-4 to 1.0e-3 over 100-600 K and tolerance 0.2-0.5 k = 58, N_rec = 103,337; label-free headline
95% upper limit, pooled, 300 K, f = 0.1, every excess counted 8.2e-5 8.2e-5 to 4.8e-4 over 100-600 K and tolerance 0.2-0.5; 2.3e-4 at 300 K with tolerance 0.5 k = 6, N_rec = 144,816; bottom of its range
95% upper limit, pooled, 300 K, f = 0.05, every excess / identifications accepted 3.5e-4 / 1.2e-4 2.7e-4 to 7.2e-4 / 6.6e-5 to 1.6e-4 Shows the step between f = 0.05 and 0.1
95% upper limit, pooled, 300 K, f = 0.01, identifications accepted (strict) 1.4e-4 (1.5e-4) 6.7e-5 to 2.0e-4 (6.7e-5 to 2.2e-4) k = 7 (8); includes vetting pass fraction 0.94
95% upper limit, pooled, 300 K, f = 0.1, identifications accepted (strict) 2.2e-5 (3.5e-5) 2.2e-5 to 1.5e-4 (3.5e-5 to 1.7e-4) k = 0 (1); conditional on the labels
95% upper limit, FGK, 300 K, every excess: f = 0.01 / f >= 0.05 1.9e-4 / 9.1e-5 1.4e-4 to 4.4e-4 / 9.1e-5 to 1.4e-4 Sensitivity-limited above f = 0.01-0.02 (N_rec about 32,947)
95% upper limit, M, 300 K, every excess: f = 0.01 / f = 0.1 1.0e-3 / 1.1e-4 6.8e-4 to 1.5e-3 / 1.1e-4 to 6.3e-4 Applies to M0-M4.5; identifications accepted: 2.0e-4 / 2.9e-5
M-dwarf completeness at f = 0.01, 300 K by sub-range (M0-M1.5, M2-M3.5, M4-M4.5, M5-M6, M6.5-M9) 0.53, 0.50, 0.24, 0.062, 0.011 binomial errors below 0.01 M5 and later (51,935 stars, 24.5% of M dwarfs) essentially unconstrained at 1%
Median minimum detectable f at 300 K among searchable stars A 4e-5; FGK 6e-4; M 8e-3 about 10% from F_bol M dwarfs have no sensitivity below f about 0.002
Vetting pass fraction applied to label-dependent limits 0.94 +/- 0.02 Probability that an on-star source survives the background vetting
Maximum settled systems within 100 pc, 1% swarm at 300 K, every excess (sum of classes / pooled) 230 / 191 A 5.8; FGK 11.6 (8.5-27); M 213 (143-321) Identifications accepted: 55 / 37
Maximum settled systems within 100 pc, 10% swarm at 300 K, every excess (sum of classes / pooled) 34 / 22 FGK 5.5 (5.5-8.5); M 23 (23-133) Identifications accepted: 18 / 6.0; a class with zero candidates and 50% completeness cannot give fewer than about 6
Incidence of W3 excess >= 25% of photosphere among FGK stars 1.7e-4 (5/29,769) 68% interval 1.0e-4 to 2.8e-4 Consistent with about 1e-4 for the dustiest old Sun-like stars (Kennedy & Wyatt 2013)
Recall of known debris-disc hosts at 5 sigma Patel 2014: 48/140; Cotten & Song Prime: 56/177 59% of Patel hosts above 3 sigma Searchable sample only
Sgro & Song 2021 objects (SIMBAD list of 76) recovered as excess stars here 28 of 42 searchable exact counts 12 young, 2 catalogue-only, 8 unexplained, 5 background, 1 co-moving companion

Changes made after the referee report

Referee points not accepted

Figures

Figure 1. How strongly each star’s infrared brightness at 12 microns (left) and 22 microns (right) departs from what its starlight predicts. Red counts stars that are too bright and blue counts stars that are too faint by the same amount. Beyond the dashed line at five standard deviations there are 177 and 179 too-bright stars against one too-faint star in each band, so noise explains almost none of the excesses.
Figure 1. How strongly each star’s infrared brightness at 12 microns (left) and 22 microns (right) departs from what its starlight predicts. Red counts stars that are too bright and blue counts stars that are too faint by the same amount. Beyond the dashed line at five standard deviations there are 177 and 179 too-bright stars against one too-faint star in each band, so noise explains almost none of the excesses. Open at full size.
Figure 2. The fraction of all stars of each type around which a swarm would have been found, against the fraction of starlight the swarm intercepts, for swarm temperatures of 100 to 600 kelvin. The search reaches the smallest swarms around hot A stars and loses sensitivity for the faintest red dwarfs (right-hand panel).
Figure 2. The fraction of all stars of each type around which a swarm would have been found, against the fraction of starlight the swarm intercepts, for swarm temperatures of 100 to 600 kelvin. The search reaches the smallest swarms around hot A stars and loses sensitivity for the faintest red dwarfs (right-hand panel). Open at full size.
Figure 3. The 95% upper limit on the fraction of stars hosting a swarm, against the fraction of starlight it intercepts. Red counts every infrared excess as a possible swarm; green accepts the natural and background identifications; the dotted line is the best the search could do with no candidates at all. The stars mark the published result of Suazo and colleagues (2022), which is not a 95% limit.
Figure 3. The 95% upper limit on the fraction of stars hosting a swarm, against the fraction of starlight it intercepts. Red counts every infrared excess as a possible swarm; green accepts the natural and background identifications; the dotted line is the best the search could do with no candidates at all. The stars mark the published result of Suazo and colleagues (2022), which is not a 95% limit. Open at full size.
Figure 4. Left: how the 307 stars with an infrared excess are explained, by type of star, with the number of chance alignments expected from control fields marked in black. Centre and right: whether the infrared light sits on the star. Young stars and catalogued excesses do, like ordinary stars; the excesses with a background source or no explanation are mostly displaced from it.
Figure 4. Left: how the 307 stars with an infrared excess are explained, by type of star, with the number of chance alignments expected from control fields marked in black. Centre and right: whether the infrared light sits on the star. Young stars and catalogued excesses do, like ordinary stars; the excesses with a background source or no explanation are mostly displaced from it. Open at full size.
Figure 5. Six examples, one per row, each shown in visible light and at 3.4, 12 and 22 microns. From the top: a known young star with a disc, a catalogued galaxy 4 arcseconds away, an infrared source 15 arcseconds to the south, a galaxy under the star’s position, and two stars whose excess is unexplained.
Figure 5. Six examples, one per row, each shown in visible light and at 3.4, 12 and 22 microns. From the top: a known young star with a disc, a catalogued galaxy 4 arcseconds away, an infrared source 15 arcseconds to the south, a galaxy under the star’s position, and two stars whose excess is unexplained. Open at full size.

Code

Every number above is produced by these scripts from public data. The data tables themselves are not hosted here; the scripts download them.

01_download.py 02_build_sample.py 03_excess.py 04_injection.py 05_control.py 06_vet_queries.py 07_images.py 08_classify.py 09_limits.py 10_robustness.py 11_figures.py common.py dustmap.py photosphere.py run_all.py swarm.py

Referee report

A second, separate analysis re-ran the code, recomputed the main numbers by its own route and tried to break the result. Like the first, it was run by Claude for this project; it is not an outside expert. In its report “the analyst” is the first analysis, which wrote the paper, and file names that are not linked on this page are its own working files. The paper above is the version revised in response.

Verdict: sound with fixes. Results reproduced: yes.

    1. Full rerun. I copied the code and ran run_all.py from step 2 on the cached raw downloads (about 12 minutes). Every derived table came out byte-identical to the analyst's: limits.csv, completeness.csv, candidates.csv, accounting.csv, control_expectation.csv, robustness.csv, unexplained.csv and the rest. The detection list is the same 307 stars.
  1. Independent pipeline (indep.py). This used my own GCNS cuts and AllWISE matching, a single-predictor Ks-anchored photosphere, stricter neighbour cuts, F_bol from G plus BC_G(G-RP) instead of Ks, my own band integration, and analytic injection.

Quantity Referee route Analyst
Parent sample 273,856 (A 1,678; FGK 60,518; M 211,660) identical
AllWISE matches 260,663 identical
Excess stars at 5 sigma 310 307 (279 in common)
C(f=0.01, 300 K), FGK / M 0.50 / 0.33 0.54 / 0.33
C(f=0.1, 300 K), FGK / M 0.50 / 0.49 0.54 / 0.52
C(f=1e-3, 300 K), FGK / M 0.37 / 0.008 0.44 / 0.006
Swarm response at 300 K, W3 / W4 (Jy per W m^-2) 2.459e12 / 3.204e12 identical
  1. Compatible counts and limits. Recomputed with a simplified model-excess formula, k matches exactly: 58 / 8 at f = 0.01 and 6 / 0 at f = 0.1 (every excess / unexplained). The Clopper-Pearson arithmetic gives 6.98e-4, 1.43e-4, 8.18e-5 and 2.12e-5, as reported.

  2. Chance alignments, by a different estimator. I counted control sources directly at their actual offsets instead of using the analytic trigger area. Result: 110 in W3, 43 in W4, 124 in either band for r <= 6 arcsec. The analyst's 6-arcsec variant gives 105.8, 43.3 and 122.8. I also tested the assumed blending radius empirically: galaxy-coloured W3-bright AllWISE sources are catalogued within 8 arcsec of M-dwarf targets at only 0-15% of the control-field density. They really are merged into the star, so the 6-arcsec cap is not too generous. The count is cap-dependent, though: 42 for r <= 3 arcsec and 74 for r <= 4 arcsec in W3.

  3. End-to-end check on real objects. TW Hya, beta Pic, HD 172555, 49 Cet, HD 181327, HD 191089, HD 69830, HD 107146 and HD 3003 are all recovered as excess stars. HD 15407, HR 4796, eta Crv and HD 61005 are correctly listed as not searchable (dust or artefact flags).

  4. Other checks.

Strongest objection

WISE photometry cannot tell a 0.2-8% warm swarm from a debris or transition disc, or from a dusty galaxy within about 1 arcsec of the star. The 'unexplained-only' limits, which lead the headline, are therefore only as good as the labels used to explain excesses away:

An expert would say the study has measured the incidence of mid-infrared excess (already known for FGK stars) and the galaxy-confusion rate for M dwarfs, and attached a Dyson label.

The conclusion survives, in its weaker form:

What does not survive is the precision of the headline. The defensible statement is: for warm (100-600 K) swarms, fewer than about 1e-3 of stars at 1% covering and fewer than about 1e-4 to 3e-4 at 10%, tightening to about 1.5e-4 and 2e-5 to 9e-5 if the natural and background identifications are accepted. The 1% M-dwarf limit applies to M0-M4.5 only.

Errors found

Overclaims

Novelty check

Novel: partly. I found no earlier stellar Dyson-swarm search that publishes an injection-recovery completeness function, or limits at covering fractions of 1e-3 to 1e-2 for the 100 pc sample. Those two elements appear to be new, as does the per-class statement of where the limit is confusion-limited. Three parts are not new. (a) At covering fraction 0.5 and above the result reproduces Suazo et al. 2022 (2.3e-5 against 1.8e-5 at 0.9). (b) Comparing Gaia positions propagated to the AllWISE epoch with AllWISE image centroids has been done for the Hephaistos candidates (Suazo et al. 2024; Ren et al. 2026); the new part here is the null calibration and the volume-limited application. (c) The conclusion that M-dwarf mid-infrared excesses of this kind are mostly background galaxies is established by JWST for two candidates (Hephaistos IV) and argued by Ren et al. and Blain. For FGK stars the every-excess limit is in effect a re-measurement of the bright end of the warm-excess luminosity function (Kennedy & Wyatt 2013), re-expressed in covering fraction. Injection-recovery has also been used for galaxy-scale waste-heat searches (Curtis et al. 2026), though not for stars. The analyst's 'medium' confidence is fair once the literature is updated.

Required changes