PHOENIX retraction policy
When PHOENIX discovers that public data we shipped was
incorrect, we publish a retraction within 24 hours. The corrupted data is
preserved (with a quarantine flag) so anyone who cited it can verify what
changed. This page is the public-facing retraction register. The canonical
machine-readable retraction log is maintained in the project repository.
Policy
Disclosure windowWithin 24 hours of discovering that public data was wrong.
What we retractAny quantitative claim made via /api/*, /wins.html, /accuracy.html, RSS / iCal subscriptions, public-attributable email, or other PHOENIX-named channel.
Data preservationOriginal corrupted values preserved in a quarantine table (eg frp_quarantine). Any consumer can query to see what was published, when, and what value replaced it.
Citation guidanceIf you cited a PHOENIX number that now appears here as retracted, please refer your readers to the corresponding entry below.
Disclosure formatEach retraction names: what was wrong, why it matters, root cause, fix, and post-deploy validation.
Active retractions
First disclosed 2026-05-25 · Fixed and quarantined 2026-05-26
Retracted
FRP outliers in /api/detections (subpixel_v1_alpha)
What was wrong: A unit / coefficient bug in subpixel_v1_alpha's
Wooster-2005 FRP retrieval produced FRP values up to 3.9 trillion MW in about 0.1% of
detections over the audit window. Median FRP for the source is around 3 MW; the bad
rows were ten-plus orders of magnitude too high and were served via the public API.
Root cause: SIGMA_MIR_WOOSTER constant in
src/detectors/subpixel_v1.py set to 1.89e-7 instead of the
Wooster-2005 published value 1.89e-19.
Fix: Constant corrected; service restarted; 2 catastrophic historical
rows nulled. Correction 2026-06-05: a follow-up internal audit found
the 2026-05-25 patch addressed only the constant magnitude; the function
itself implemented a non-canonical FRP = σ · A_pix · (T8_fire −
T8_bg) form that does not appear in any published Wooster paper.
The function has been replaced with the canonical Wooster pixel-integrated
Stefan-Boltzmann form FRP = A_pix · σ_SB · (T4_fire − T4_bg)
with σ_SB = 5.6704 × 10-8 W·m-2·K-4
(Wooster 2003 eq. 4 / 2005 eq. 15). For sub-pixel area-and-temperature
inversion we will need a bi-spectral Dozier-Wooster solver (planned).
Historical subpixel_v1_alpha FRP values written between
2026-05-25 and 2026-06-05 are flagged low-confidence and should not be cited
as Wooster-compliant. Live /api/detections rows are unaffected
(the path produced zero rows in the live API at the time of audit).
See /change-log for the audit trail.
First disclosed 2026-05-25 · Partial fix shipped 2026-05-26
Retracted
Sentinel-2 burn verifier under-producing verified outcomes
What was wrong: The /api/burn_verification endpoint returned
null for the great majority of attempts. Burn verification is the only
independent ground-truth pathway PHOENIX has; without it, no detection earns the
T3 grading tier, and every other precision claim rests on weaker corroboration.
Root cause: Mediterranean cloud cover blocks ~half of post-fire S-2 scenes
in winter; the 60% cloud threshold rejected almost every match. Plus, the verifier
had no all-weather fallback when S-2 was unavailable.
Fix: Cloud threshold raised to 80% (windowed dNBR survives partial cloud).
Sentinel-1 SAR-change fallback added when S-2 is unavailable or too cloudy. Result
observable on /api/feed_accuracy as burn_verified_tp count
ticking up over the coming verifier cycles.
Open · identified 2026-05-26
Open
Event-clustering too tight — confirmed-fire missed at (37.5623, 13.4403) on 2026-05-24
What was wrong: A ground-confirmed wildfire at 37.562278°N, 13.440250°E on
2026-05-24 was not surfaced by PHOENIX even though FCI, Sentinel-1 SAR, VIIRS-SNPP,
VIIRS-NOAA20, and the PHOENIX wind_diff detector all produced signals
within 5–15 km on the same day. Each detection sat alone at the lowest verification
tier because event-clustering radius (5 km) and time window (30 min) were too tight
to merge spatially scattered sub-pixel agricultural-burn signals into one event.
Status: Root cause documented. Fix is queued (adaptive cluster radius
per sensor + biome; two-stage clustering with looser second pass at 10–15 km / 4 h
requiring ≥2 detector families). No live deploy yet.
Open · identified 2026-05-25
Open
"100% precision" headline on uncorroborated internal sources
What was wrong: The precision_pct field returned by
/api/feed_accuracy previously excluded unconfirmed detections from
the denominator. For internal sources where 88–99% of detections are unconfirmed,
the field read "100%" — a reader reasonably interprets this as "99% of our calls
are right," which is not what the metric measures.
Status: confirmed_precision_pct and unknown_rate_pct
fields exist in the API alongside legacy precision_pct. The
/accuracy.html dashboard surfaces the honest metric. Headline labelling
audit and the explicit "we previously displayed X" note are queued.
Open · identified 2026-05-25
Open
wind_diff pixel-fragmentation inflating win counts
What was wrong: The wind_diff daemon emits sibling rows at
adjacent pixels with identical FRP and confidence pegged at 0.9, producing 2–5 rows
per physical fire. Per-row statistics over-counted wind_diff contributions by an
estimated 3–5×.
Status: Event-level dedupe in event_grades mitigates this in
aggregated metrics; per-row API still preserves the legacy rows. A dedupe daemon
for internal_fires is queued.
Closed retractions
None yet — items above will move here once their fix is shipped and
the post-deploy validation has been observed over a complete reconciliation cycle.