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 window
Within 24 hours of discovering that public data was wrong.
What we retract
Any quantitative claim made via /api/*, /wins.html, /accuracy.html, RSS / iCal subscriptions, public-attributable email, or other PHOENIX-named channel.
Data preservation
Original 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 guidance
If you cited a PHOENIX number that now appears here as retracted, please refer your readers to the corresponding entry below.
Disclosure format
Each 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.