Anthropocene Stage 8b enrichment plan

Documentation index · Implemented Stage 8 notes · Generation guide · Snapshot assets

Status and recommendation

Stage 8b is now an incremental implementation with two accepted standard families: complete-2025/partial-2026 particulate observation atlases and complete-2025/partial-2026 NOAA CPC temperature fields. All four pass IDs are year-bearing and default-generated. The implementation also provides explicit global H3 coverage/missing semantics and a hard global-FIRMS refresh gate. CAMS and ocean products remain planned. PurpleAir now has a credential-free, synthetic interface experiment; a real community-sensor adapter remains planned and separately permission-gated.

The completed and planned sequence is:

  1. Implemented: require global NASA FIRMS fire input instead of silently publishing a regional-only refresh; source-date and world-region audits prevent promotion without actual global rows. A checked global fire snapshot still requires a maintainer-provided free map key.
  2. Implemented: add NOAA CPC gridded daily maximum and minimum temperature as the primary non-sparse temperature field while retaining the year-qualified particulate observation atlas as a separate product.
  3. Planned: add globally complete CAMS analysis fields for modeled PM2.5 and smoke context without relabeling either one as a ground observation;
  4. Planned: add NOAA OISST marine-heatwave and Coral Reef Watch reef-heat-stress products as a separate ocean theme; and
  5. Interface implemented; observed data planned: keep PurpleAir in a separately generated, permission-gated community-sensor product. The current synthetic overlay tests style and lifecycle only.

The pass should not solve sparse observations by treating missing cells as zero or by blending station, model, satellite, and community-sensor values into one score. It should show a globally complete field tier underneath source-separated observations.

Why the current map is North-America-heavy

The checked anthropocene-particulate-2026.geojson and the rendered anthropocene-particulate-2026 plate are behaving consistently with their inputs. The imbalance is an acquisition and evidence-class problem, not a projection or marker-layout bug.

Layer Checked input Checked audit Coverage consequence
Observed smoke NOAA HMS analyst polygons 1,088,261 cell-days in 43,690 cells A broad North American layer visually dominates the atlas
Active fire CWFIS plus optional FIRMS 755,252 CWFIS rows and zero FIRMS rows Fire is regional even though the metric profile calls FIRMS global
PM2.5 EPA AirData 129 cell-days in 67 cells Regulatory exposure is United-States-only
Temperature GHCN’s GSN reference subset 768 eligible temperature stations A deliberately sparse reference network leaves large regional gaps
Flood and severe weather NOAA Storm Events 8,944 located events These report layers are United-States-focused

There is also a time-boundary issue. The image is titled 2026 partial year. Fires that occurred in Siberia, Australia, or elsewhere during 2025 cannot appear in a calendar-2026 product even after geographic coverage is repaired. The 2025 and 2026 products must therefore be generated separately; prior-year events must not be inserted into the 2026 snapshot.

Evidence tiers and products

Stage 8b should make the evidence class visible in the schema, layer IDs, legend, and filenames:

Tier Meaning Examples Default treatment
Observations Regulatory monitors, weather stations, analyst polygons, or satellite detections GHCNd, FIRMS, HMS, EEA monitors Glyphs or event cells above fields
Analysis fields Observation-constrained interpolation, reanalysis, or chemical-transport analysis CPC gridded temperature, CAMS PM2.5, OISST Filled cells with explicit valid-day coverage
Community sensors Owner-operated low-cost instruments with non-regulatory QA PurpleAir Separate opt-in artifact, never merged into regulatory totals

A single overloaded PNG cannot legibly encode several full global fields. Treat one year’s Anthropocene pass as a bundle of source-separated themes:

The SVG can retain independently toggleable semantic groups. Each default PNG should show only the theme named in its filename. This preserves the current no-composite-score boundary.

Global core

Indicator Recommended source and role Coverage and cadence Important boundary
Active fire NASA FIRMS area API VIIRS detections; promote from optional to required Global, 375 m detections, near-real-time and standard-processing products Thermal anomalies are not necessarily wildfires, burned area, or cause
Fire emissions CAMS GFAS as an optional intensity/emissions layer Global daily 0.1 degree FRP-derived fields The ADS v1.2 catalogue stops on 3 December 2025; current operational data require the ECMWF Data Portal, so this is not the primary 2026 fire feed
Temperature observations Full GHCN-Daily, not only GSN More than 100,000 stations in 180 countries and territories; daily Coverage and period of record still vary; apply the existing quality and history gates
Non-sparse temperature NOAA CPC Global Unified Temperature Global daily 0.5 degree TMAX/TMIN, 1979-present, updated daily, no usage restriction Observation-interpolated GTS field on a 06Z-to-06Z day; values inside the most recent seven days can change
Temperature sensitivity check ERA5-Land daily statistics Global 0.1 degree, 1950-present, daily min/max available Reanalysis, not a station observation; use for sensitivity testing rather than silently filling CPC
Non-sparse PM2.5 CAMS global atmospheric-composition analysis surface PM2.5 Global 0.4 degree, 2015-present; hourly single-level fields Observation-constrained model analysis, not a regulatory measurement and not smoke attribution
Global smoke context CAMS organic-matter aerosol optical depth and fire-emission inputs Global analysis/forecast fields with transported plumes Label as modeled organic-aerosol/smoke context; organic aerosol and CO are indicators, not proof that every affected cell contains wildfire smoke at the surface
Satellite aerosol QA Sentinel-5P/TROPOMI absorbing-aerosol index Near-global daily plume observations since 2018 Detects absorbing aerosols including smoke, dust, and volcanic ash; keep as QA or an explicitly named aerosol layer, never observed-smoke-days
Regulatory and reference PM2.5 OpenAQ API v3 as a discovery/harmonization path, with direct national feeds where practical Near-real-time and historical global point data Not complete; filter to approved providers/instruments and honor each source license rather than assigning one blanket OpenAQ license
Marine heat NOAA daily OISST v2.1 Spatially complete global ocean grid, 0.25 degree, September 1981-present, updated daily Blended/interpolated climate data record; retain its error and ice fields
Coral heat stress NOAA Coral Reef Watch v3.1 Daily global 5 km, 1985-present, covering about 95% of global reefs Maps bleaching heat stress/risk, not field-observed bleaching or coral mortality

NASA FIRMS is the direct fix for missing Russian, Australian, African, Asian, and South American fire detections. Use one canonical FIRMS VIIRS union for the metric and demote CWFIS to Canadian QA/fallback so the same satellite fire is not presented as two independent observations. Acquire standard-processed records when available and near-real-time records only for the unresolved tail; record sensor, processing class, collection version, acquisition time, and raw hash. NASA Earth-science data are generally open, with dataset citation strongly encouraged; see NASA’s data-use and citation guidance.

No equivalently mature, downloadable global analyst-smoke-polygon feed was identified. The honest replacement for blank global smoke coverage is a separate CAMS modeled plume field, with HMS retained as North American analyst observations. Surface PM2.5, vertically integrated smoke burden, and fire-source emissions remain three different metrics.

Regional observation enrichment

The global core prevents blank regions. Regional feeds can then improve the observation tier without becoming hard dependencies for worldwide coverage.

Region Temperature PM2.5 Stage 8b role
Europe E-OBS daily 0.1 degree TX/TN and ECA&D station data EEA AQ e-Reporting current and verified station downloads E-OBS v33 is complete through 31 December 2025; replaceable provisional monthly 2026 files exist, but its non-commercial research/education terms and mutable running-year products require a separate rights and snapshot gate
China CMA daily surface climate V3.0 Direct CNEMC data where a documented bulk/reuse agreement is obtained; TAP 1 km PM2.5 as a modeled regional validation field Registration, automation, update latency, and redistribution must be verified before promotion; CPC and CAMS provide the no-gap defaults
Japan JMA AMeDAS, with about 840 temperature stations and a manual historical CSV service Ministry of Environment/NIES air-monitoring portal and download archive High-value station enrichment; require a stable bulk method and confirmed reuse terms before automated inclusion
Australia GHCNd plus CPC global field Government monitor providers discovered through OpenAQ, with direct state feeds preferred FIRMS and CAMS immediately repair fire and PM2.5 context; provider-specific point licenses still need audit
Russia/Siberia GHCNd plus CPC global field CAMS analysis; licensed national points if later available FIRMS supplies active fire and CAMS supplies transported-smoke/PM context without depending on a Russian point API

E-OBS, CMA, and AMeDAS are valuable, but stitching national station networks together is not the non-sparse solution. Station identifiers, duplicates, local-day definitions, quality flags, and reuse terms differ. CPC supplies one globally consistent field while those sources validate or enrich individual regions.

Non-sparse global-field option

Use a second normalized dataset rather than injecting modeled values into the existing positive-observation GeoJSON:

anthropocene-observations-2025.geojson
anthropocene-fields-2025.geojson
anthropocene-observations-2026.geojson
anthropocene-fields-2026.geojson

The field dataset should use H3 resolution 3 by default. Its cell scale is a reasonable match for CPC’s 0.5 degree, CAMS’s 0.4 degree, and OISST’s 0.25 degree grids, gives a nearly uniform-area display, and avoids producing hundreds of thousands of tiny SVG elements. Resolution remains profile-configurable.

For every metric/cell, store both the value and its denominator or coverage:

{
  "cpc_temperature_record_high_days": 4,
  "cpc_temperature_valid_days": 365,
  "cams_pm25_high_days": 12,
  "cams_pm25_valid_days": 365
}

A zero with positive valid_days is an observed/analyzed zero; absence or zero valid days is unknown. Render covered zero cells in a quiet neutral tone and missing cells as gaps or a missing-data hatch. This makes coverage genuinely non-sparse without drawing false events.

Recommended field contracts are:

The normalized schema consequently needs typed measures (day-count, mean, maximum, cumulative, or category), floating-point values, valid_days, source/evidence class, grid version, temporal convention, and quality flags. The existing observation schema can remain v1 while the new field file starts at v2.

PurpleAir experiment and optional observed-data pass

Stage 15 implements a 12-plate, default-visible PurpleAir interface experiment for two years and six projections. Its 12 geographic anchors are synthetic rendering fixtures, not sensors; it contains no PM values, measurements, or observation claim. The purpleair-experiment layer is capped at 60% opacity, remains exploration-only, and is built only by its explicit target or make all-experiments.

Assuming redistribution and display permission are resolved, a separate observed-data pass remains worth implementing as an opt-in community-sensor artifact. It adds useful local density in places with participating owners, but it is not globally uniform and will not by itself repair Siberian, Chinese, African, or oceanic coverage. Obtain a read key at PurpleAir Develop and keep it only in the acquisition environment; the current synthetic experiment neither needs nor accepts a key.

Acquisition should use a written bulk-data arrangement or a supplied annual snapshot. PurpleAir’s own API guidance asks clients not to collect several thousand sensors through the per-sensor historical endpoint. Pin the public outdoor-sensor inventory and historical measurements separately for 2025 and 2026, including sensor index, coordinates, location type, channel A/B cf_1, humidity, sampling interval, and timestamps.

A defensible first QA contract is:

  1. include only public outdoor sensors and preserve relocation/archival boundaries as new sensor epochs;
  2. reject non-finite/negative readings, relative humidity above 95%, missing humidity, either channel above 3,000 micrograms per cubic metre, and samples where the A/B absolute difference exceeds 5 micrograms per cubic metre and relative difference exceeds 70%;
  3. require at least 27 of 30 expected two-minute samples for an hourly mean and at least 18 valid hours for a local-day mean;
  4. apply the U.S. EPA correction to the mean of A and B cf_1 values, 0.524 * PM - 0.0862 * RH + 5.75, clipping negative corrected values to zero; and
  5. aggregate valid sensor-day means to the H3 cell median before thresholding, so dense neighborhoods do not receive more day-count opportunities merely because they contain more sensors.

The EPA correction and cleaning study is documented by Barkjohn, Gantt, and Clements and the operational equation appears in the EPA PM2.5 sensor QAPP. It was developed from U.S. collocations. Outside its validation domain, either require a named regional collocation correction (strict mode) or mark the EPA correction explicitly as an extrapolation (exploratory mode). Never merge PurpleAir counts into EPA, EEA, or other regulatory totals, and never infer smoke from a PM2.5 exceedance alone.

Ocean-distress implementation

Coral heat stress is now practical enough to promote from an indefinite future phase, provided the reef-mask rights are resolved. CRW v3.1 supplies daily 5 km SST, HotSpot, Degree Heating Week, and Bleaching Alert Area files from 1985 to the present. Implement ocean-heat:coral-bleaching-heat-stress-days only in reef-containing cells and describe it as satellite-derived heat stress associated with bleaching risk. It is not an observation that coral actually bleached.

The production mask should be CRW’s reef-containing-pixel mask or another explicitly licensed global reef extent. The checked Natural Earth reef vectors are suitable for a small test fixture, not proof of complete global reef coverage. UNEP-WCMC and Allen Coral Atlas candidates require a separate redistribution/derived-work review before their mask is checked into this repository.

Add ocean-heat:marine-heatwave-days from OISST in the same phase. Marine heatwaves provide globally complete ocean context outside coral latitudes and avoid making reef locations stand in for all ocean distress. Use a fixed climatology and a published consecutive-day definition, record the OISST error and ice masks, and keep marine-heatwave and coral-stress layers independently toggleable because one is global ocean temperature stress and the other is a reef-specific ecological risk indicator.

A later cryosphere theme can use the NOAA/NSIDC Sea Ice Index v4 for Arctic and Antarctic extent/concentration anomalies. Monthly products are more appropriate for trend context than turning every short-term daily variation into a local distress event. Ocean acidification, deoxygenation, harmful algal blooms, and field-observed bleaching remain deferred: their current global datasets are sparse, lagged, survey-dependent, or do not share a defensible annual cell-day contract.

Two-year artifact contract

Each year is an independent reproducibility unit:

Duration Required status Snapshot rule Comparison warning
2025 partial_year: false Include only source-reporting dates from 1 January through 31 December 2025; pin later retrieval/correction time separately Complete-year counts are not directly comparable with raw 2026 year-to-date counts
2026 partial_year: true End each source before its explicit available_through date and the profile snapshot boundary Title every artifact 2026 PARTIAL YEAR and expose valid-day denominators

Use year-bearing profiles and filenames; do not let two runs overwrite the same unqualified path:

assets.static/anthropocene/anthropocene-particulate-2025-profile.json
assets.static/anthropocene/anthropocene-particulate-2025.geojson
assets.static/anthropocene/anthropocene-particulate-2026-profile.json
assets.static/anthropocene/anthropocene-particulate-2026.geojson
assets.static/anthropocene/anthropocene-temperature-2025-profile.json
assets.static/anthropocene/anthropocene-temperature-2025.geojson
assets.static/anthropocene/anthropocene-temperature-2026-profile.json
assets.static/anthropocene/anthropocene-temperature-2026.geojson
assets.generated/cahill-keyes/png/anthropocene-temperature-2025-ck-44-22.png
assets.generated/cahill-keyes/png/anthropocene-temperature-2026-ck-44-22.png

Implemented temperature-field targets are:

make generate-anthropocene-2025
make generate-anthropocene-2026
make generate-anthropocene-years
make generate-anthropocene-year-artifacts

The aliases generate both implemented standard themes across all six projections. The synthetic PurpleAir and bounded water-debris experiments stay outside these aliases. Future fire/air and ocean themes can join only after an explicit lifecycle decision. For visual year-to-year comparisons, a later product should also support a 2025 window truncated to the same month/day as the 2026 snapshot or render rates per 100 valid days. The canonical 2025 artifact remains complete and the comparison window must be labelled separately.

Implementation sequence

1. Dual-year and schema plumbing — implemented for particulate and CPC

2. Highest-value geographic repairs — CPC implemented; FIRMS gated

3. Global atmosphere

4. Optional community sensors

5. Ocean fields

6. Coverage and release QA

Every candidate should emit a machine-readable matrix for North America, South America, Europe, Africa, northern Asia, East Asia, and Oceania with source rows, valid days, input records, positive cells, and missing cells. Release checks should require:

Deferred or rejected shortcuts

The first confirmation point is complete: two year-bearing, source-pinned particulate products and two year-bearing CPC temperature products are standard, while a global observation refresh cannot silently omit FIRMS. Promotion of a new global fire snapshot is intentionally still blocked until a maintainer supplies FIRMS_MAP_KEY and the staged rows pass date and region audits. The synthetic PurpleAir interface is implemented without pretending that community-sensor observations were acquired. This increment repairs the year and temperature ambiguity and establishes the field contract needed by CAMS, a future observed PurpleAir adapter, and ocean products without prematurely committing to their calibration choices.