Anthropocene generation implementation notes

Documentation index · Generation guide · Generate-pass decisions · Stage 12 implementation · Stage 8b enrichment plan · Stage 13 source expansion review · Snapshot assets

Current pass status

The four standard Anthropocene pass IDs are current accepted experimental products. Maturity and lifecycle are separate: each remains a standard, default-generated, release-eligible pass across all six projections.

Pass ID Current role Lifecycle Maturity
anthropocene-particulate-2025 Complete-year source-separated observation atlas Standard; default-generated Accepted experimental
anthropocene-particulate-2026 Explicitly partial-year source-separated observation atlas Standard; default-generated Accepted experimental
anthropocene-temperature-2025 Complete-year CPC temperature field Standard; default-generated Accepted experimental
anthropocene-temperature-2026 Explicitly partial-year CPC temperature field Standard; default-generated Accepted experimental

The former unqualified anthropocene pass was removed. Compatibility Make aliases build the year-bearing particulate pair; they do not recreate an ambiguous unqualified artifact.

Two additional families are implemented as exploration only and remain outside default generation and release: the synthetic, default-visible PurpleAir interface review and the bounded water-debris depth-station experiment. They are available through their explicit targets and make all-experiments.

The pass-status manifest records this classification and its claim boundaries. Acceptance applies to the current visual/research implementation, source metadata, title hierarchy, and field treatment. It does not turn observations into causal attribution, remove either 2026 partial-year qualifier, authorize unreviewed source refreshes, or promote Stage 15 atoll, PurpleAir, or water-debris research products.

Outcome and claim boundary

Stage 8 is feasible as a source-separated observation atlas. It is not feasible as a defensible map that attributes each individual fire, flood, record, smoke plume, or air-quality episode to anthropogenic climate change. Event attribution needs event-specific counterfactual analysis; the IPCC assesses changes in the frequency and intensity of classes of extremes rather than assigning a universal causal fraction to every mapped observation. See IPCC AR6 WGI Chapter 11.

The implemented pass therefore maps human-relevant climate and weather indicators under the requested Anthropocene title while retaining their distinct observational meanings. It computes no composite severity or attribution score. The SVG footer and embedded metadata state that boundary.

The implementation consists of:

Duration and snapshot authority

The two profiles contain literal years and snapshot boundaries. Neither generator nor preparer reads the host clock:

{
  "2025": { "data_through": "2025-12-31", "partial_year": false },
  "2026": { "as_of_utc": "2026-08-05T00:00:00Z", "partial_year": true }
}

Changing duration.year is an intentional profile edit, not an automatic New Year rollover. The normalized GeoJSON must have the same year, snapshot time, partial-year flag, and H3 resolution or loading fails. Each source also has an available_through value because publication latency differs substantially in the partial edition: EPA AirData in this capture ends May 31, Storm Events ends April 30, HMS ends August 3, and the captured GSN and CWFIS inputs extend through August 4.

Counts use the source’s reporting day. EPA uses Date Local; HMS uses its UTC ordinal date; station records use the station daily record; Storm Events uses reported begin/end calendar dates; and fire feeds use their acquisition or report date. Every parser excludes a reporting date on or after the profile’s UTC snapshot boundary, including when a refreshed annual archive contains newer rows. The atlas does not imply that unlike source days are synchronized to the same instant.

Classification and implemented layers

The normalizer aggregates positive observations into resolution-4 H3 cells. Each property is a count of unique source-reporting days in that cell. Multiple monitors, detections, polygons, or reports on the same day do not inflate the cell-day count.

Classification Metric ID Definition Default source
Climate records climate-records:temperature-record-high-days GSN station day whose TMAX strictly exceeds every prior valid value for that calendar day NOAA GHCN/GSN
Climate records climate-records:temperature-record-low-days GSN station day whose TMIN strictly falls below every prior valid value for that calendar day NOAA GHCN/GSN
Hydrology hydrology:precipitation-record-days GSN station day whose precipitation strictly exceeds every prior valid value for that calendar day NOAA GHCN/GSN
Hydrology hydrology:heavy-precipitation-days At least 10 mm and above that station/month’s 1991–2020 wet-day 95th percentile NOAA GHCN/GSN
Fire fire:active-fire-days Day with one or more satellite hotspot detections in the cell Checked v1: CWFIS; new global refresh: NASA FIRMS required, CWFIS regional QA
Atmosphere atmosphere:observed-smoke-days Day an HMS analyst polygon covers the cell center, with a centroid fallback for sub-cell polygons NOAA HMS
Hydrology hydrology:flood-event-days Located Storm Events day classified as flood, heavy rain, or excessive rainfall NOAA Storm Events
Severe weather severe-weather:extreme-event-days Located day represented in the NOAA Storm Events database NOAA Storm Events
Air-quality exposure air-quality-exposure:pm25-exceedance-days Unique regulatory monitor day with PM2.5 AQI strictly greater than 100 EPA AirData

The profile controls enablement, scales, colors, and shapes. PM2.5 exposure is enabled by default but remains visually and semantically distinct from smoke: it is a cross-square in the air-quality-exposure group, while HMS smoke is a ring in atmosphere. An elevated PM2.5 measurement does not by itself identify smoke, and an overhead smoke polygon does not assert ground-level PM2.5 exposure.

PurpleAir is consequently not the default PM2.5 source. Its low-cost sensor network can be useful for exploratory local analysis, but PM readings are not smoke attribution, API/licensing terms require separate review, and the user confirmed EPA AirData for the regulatory exposure layer. The Stage 15 PurpleAir interface experiment is exploration-only and uses 12 synthetic rendering anchors, no sensor IDs or measurements. Its layer is visible by default at 60% opacity so the proposed style can be reviewed. A future observed-data adapter needs a read key from PurpleAir Develop, a reviewed source-use receipt, and explicit correction/sensor metadata. The key belongs only in the acquisition environment. PurpleAir remains excluded from the standard particulate data and is never relabeled as observed smoke.

Record and precipitation eligibility

The source normalizer reads the fixed-width GHCN-Daily GSN archive. It rejects -9999 and any value with a nonblank GHCN quality flag. A station element qualifies only when at least 30 prior years contain at least 183 valid days. This follows the completeness intent of NCEI’s Daily Weather Records while keeping the calculation reproducible from the bounded GSN files.

For each qualifying station and month/day, current values are compared with all prior valid station history. Comparisons are strict, so ties are not new records. TMAX defines the high layer and TMIN defines the low layer. The pass does not merge warm-night records into highs or cold-day records into lows.

Heavy precipitation uses positive 1991–2020 PRCP values as the station/month wet-day sample, the nearest-rank 95th percentile, and a separate 10 mm minimum. That metric and a new all-history daily precipitation record may overlap; they remain independently toggleable rather than being deduplicated into a score.

Fire-source evaluation: Canada and northern Russia

CAL FIRE is useful for named California incidents but is geographically too narrow for the global pass. It remains supplemental-not-default.

The selected fire-source roles are:

Source Role Evaluation
Canadian Wildland Fire Information System daily hotspots Included default Public daily CSVs, no credential, useful Canada and North America coverage; the checked snapshot includes 167 available reporting files through August 4
NASA FIRMS area API Required for a new global refresh Global VIIRS point detections cover every world region; requires a free FIRMS_MAP_KEY; the fetcher joins advertised standard-processing availability to the NRT tail
Copernicus Sentinel-3 FRP Validation-only / future alternative Global fire-radiative-power points and grids add valuable high-latitude cross-checking, but CDS acquisition and a second sensor/product harmonization contract are outside the bounded default
Rosleskhoz operational reports Administrative validation Confirms regions, counts, and affected area in Russia; no stable documented point-vector API was found, so prose reports are not scraped into H3 cells
GWIS Map-level QA Useful global visual comparison, but its active-fire layer substantially derives from FIRMS and is not treated as an independent default observation feed

The checked snapshot has zero FIRMS input rows, which means unknown global FIRMS coverage, not zero Russian fires. This is explicit in GeoJSON source statistics and profile source status. A new global refresh now fails without FIRMS_MAP_KEY, without at least 95% of expected FIRMS reporting dates, or without rows in each audited world region. The explicit ANTHROPOCENE_REGIONAL_DEVELOPMENT_ONLY=1 override is for local pipeline debugging, not promotion. Active-fire detections are thermal anomalies, not automatically wildfire incidents, burned area, cause, or impact.

Smoke, flood, severe weather, and EPA methods

The NOAA Hazard Mapping System annual shapefile supplies analyst-drawn smoke polygons. H3 center containment is used for ordinary polygons. Polygons smaller than a resolution-4 cell can produce an empty fill; those are assigned to their centroid cell so a valid small plume is not erased. Density labels remain source metadata but are not converted into ground exposure.

The NOAA Storm Events Database details and locations files are joined by event ID. Location-table points and valid begin/end coordinates are both accepted; set semantics remove duplicates. Every calendar day from begin through end is counted. Events without usable coordinates are excluded, so the layer maps located reports rather than the database’s full administrative total.

The EPA normalizer reads parameter 88101 daily data, keeps rows with numeric AQI greater than the profile’s exclusive threshold of 100, deduplicates state/county/site/date, then deduplicates again as H3 cell-days.

Snapshot audit

The complete-2025 and partial-2026 normalized files have SHA-256 values ecd4b11bab4faa9895522dbfe75436ef66820f53620bf0c5f6fc7404e9f5426b and a3b2fcb3a809710d278ce88aef52ea938fa67e8b900313cf2e5c2ed9c6ddde42. Their embedded H3 cell-day totals are:

Metric 2025 complete 2026 partial
Temperature record highs 4,129 1,567
Temperature record lows 714 434
Precipitation records 1,757 424
Heavy precipitation 1,491 426
Active fire 127,392 35,940
Observed smoke 1,794,158 1,088,261
Flood/heavy-rain events 7,135 1,000
Severe-weather events 21,694 4,195
EPA PM2.5 exceedance 1,240 129

Both source audits record zero FIRMS rows. These totals validate the bounded pipeline; they are not normalized by population, station density, satellite opportunity, reporting practice, area, or unequal time coverage. Raw complete and partial counts are not a direct year-to-year rate comparison.

Additional resource types evaluated

The original list is useful but not exhaustive. The following classifications preserve scientifically meaningful additions without silently expanding this phase:

Candidate Suggested classification Stage 8 decision
EPA PM2.5 exceedance days air-quality-exposure Implemented and enabled by default, distinct from smoke
Weekly drought severity/exposure hydrology:drought-exposure-weeks Valuable future layer using the U.S. Drought Monitor or a global drought product; weekly polygon/raster semantics do not match a daily point count without another contract
Tropical-cyclone exposure days severe-weather:tropical-cyclone-exposure-days Valuable future subtype using IBTrACS; requires track buffering, wind-radius choices, and duplicate handling with Storm Events
Warm-night and cold-day records climate-records subtypes Straightforward future profile metrics, deliberately not merged into the requested high/low meanings
Heatwave/cold-spell duration climate-extremes Better derived from a gridded baseline with consecutive-day logic; separate raster phase
Tide-gauge or sea-level anomalies ocean-heat-and-level Scientifically useful measurement series but not an extreme-event day layer
Coral bleaching stress days ocean-heat:coral-bleaching-stress-days Confirmed separate phase; see below

Coral bleaching is a separate phase

NOAA Coral Reef Watch’s gridded products are scientifically appropriate for bleaching heat stress, but a sound implementation needs reef masks, marine raster sampling, time-series accumulation, product/version selection, coverage-quality flags, and a visual grammar that does not imply conditions in open-ocean cells. The profile records the requested metric as separate-phase. It is absent from normalized features and SVG metric groups, and verification fails if a Stage 8 coral layer appears. A future phase should begin with NOAA Coral Reef Watch and a reef-only validation fixture.

Rendering and SVG contract

The generator projects H3 centers with the same six production projection implementations and places colored, shape-distinct glyphs in physical page space. Broad smoke rings render first; fire, hydrology, severe weather, air-quality exposure, and climate records render above them. Counts affect opacity logarithmically up to each profile scale_days value. This is a visibility scale, not a scientific transformation.

Stage 13 doubles the observation-atlas plate heading from 0.21 to 0.42 page units. Its existing per-count marker opacity remains source-specific; this compatibility atlas is not silently restyled as the non-sparse field.

The layer hierarchy is:

anthropocene-particulate-background
terrestrial-land
atmosphere / observed-smoke-days
fire / active-fire-days
hydrology / precipitation-record-days, heavy-precipitation-days,
            flood-event-days
severe-weather / extreme-weather-event-days
air-quality-exposure / pm25-exceedance-days
climate-records / temperature-record-high-days,
                  temperature-record-low-days
legend-and-provenance
coverage-note

Every marker carries its H3 index, metric ID, family, shape, and raw day count. Root metadata records the profile, year, snapshot, H3 resolution, normalized SHA-256, layer totals, explicit PM2.5/smoke separation, and deferred coral phase. SVG generation reopens the output and verifies its view box, complete layers, marker count, provenance, finite numbers, label font, PM2.5/smoke shape distinction, and absence of a coral group.

Acquisition and refresh

The particulate observation family is offline and explicit:

make generate-anthropocene-particulate
make generate-anthropocene-particulate-artifacts

The unqualified generate-anthropocene and generate-anthropocene-artifacts targets build both year-bearing particulate and CPC temperature families. The former *-atlas names are compatibility aliases for the particulate pair.

A deliberate refresh is two-stage:

make fetch-anthropocene-particulate-data
make prepare-anthropocene-particulate-data
# equivalent authorized wrapper for the complete two-step refresh
read -rsp 'NASA FIRMS MAP_KEY: ' FIRMS_MAP_KEY; printf '\n'
export FIRMS_MAP_KEY
make generate-authorized-external EXTERNAL_PASSES=nasa-firms
unset FIRMS_MAP_KEY

The fetch target validates TAR/ZIP/GZIP containers, discovers the latest year-specific Storm Events files, records all raw SHA-256 values, tolerates documented missing CWFIS days, and requires NASA FIRMS for a global refresh. It reads the FIRMS availability endpoint before requesting five-day chunks and does not print the map key. The prepare target verifies that raw manifest, extracts into a temporary directory, audits FIRMS dates and regions, and writes only an ignored candidate. It never overwrites checked data. After review, update the checked GeoJSON, its SHA256SUMS, profile checksum and coverage dates, test fixtures, and this audit together.

The wrapper intentionally does not invoke an Anthropocene artifact target. Rendering a prepared candidate before profile/hash/source review would bypass its promotion gate. Request the free key from the official NASA FIRMS MAP_KEY page; the complete handling procedure is in the Stage 15 plan.

Supply another already-normalized, matching dataset with Make variables:

make ANTHROPOCENE_PARTICULATE_PROFILE_2026=/absolute/path/profile.json \
     ANTHROPOCENE_PARTICULATE_GEOJSON_2026=/absolute/path/observations.geojson \
     generate-anthropocene-particulate-2026

The generation rule verifies that the selected profile names the selected GeoJSON and that its declared SHA-256 matches before invoking the generator.

Tests and limitations

tests/test-anthropocene-particulate-generation.cc validates profile classifications, EPA/smoke separation, fire-source roles, coral deferral, exact snapshot audit values, H3 centers and resolution, metric sums, and sample projection bounds on all six projections. make check also verifies the normalized SHA-256.

Important remaining limitations are:

Stage 8b coverage work

The current snapshot audit explains the North American visual bias: FIRMS contributed zero rows, CWFIS and HMS are regional, EPA AirData is United-States-only, and the temperature layer uses the intentionally sparse GSN subset. This is a source-coverage limitation rather than a projection failure.

The first Stage 8b enrichment increment is implemented alongside, rather than blended into, the year-qualified particulate atlas. NOAA CPC daily TMAX/TMIN fields are normalized onto every resolution-3 global H3 cell with valid-day denominators and distinct covered-zero/missing semantics. The complete-2025 field compares strict daily records with 1979–2024; the partial-2026 field runs through August 4 and compares with 1979–2025. Both serialize 41,162 global cells and cover the same 11,945-cell land-analysis domain. The checked totals are 178,896 high and 59,806 low record cell-days in 2025, and 105,041 high and 40,943 low record cell-days in

  1. Region gates confirm coverage in Europe, Siberia, China/Japan, Australia/Oceania, Africa, and South America as well as North America. H3 rings are split explicitly at the antimeridian before projection. In the Cahill-Keyes render, 21 of 11,945 covered cells would otherwise close across an outer topology cut; those cells use a small centered hexagon and the SVG records the fallback count on each affected path. The other five projections need no fallback cells.

All data-bearing high and low field paths are multiplied by the profile’s display.data_graphic_opacity = 0.60; covered-zero context and legend swatches retain their own opaque reference styling. The plate heading is twice its prior size (0.34 rather than 0.17 page units). Root metadata records data-graphic-opacity="0.6" and data-title-scale="2", and the generator self-check requires both.

Generate both years by default, or either explicit year, across all six projections with:

make generate-anthropocene
make generate-anthropocene-2025
make generate-anthropocene-2026
make generate-anthropocene-years

The global FIRMS gate is also implemented, but neither checked particulate snapshot is retroactively relabelled: both have zero FIRMS rows. A new global fire snapshot cannot be promoted until credentialed raw acquisition passes its audits. The Stage 13 source review prioritizes full GHCN-Daily and OpenAQ, keeps CAMS/MAIAC in separately labeled modeled or satellite-aerosol products. Stage 15 now supplies a synthetic, default-visible PurpleAir interface experiment without claiming sensor data; a real supplemental snapshot still requires a bounded scope or provider-arranged bulk extract. Its bounded water-debris experiment likewise renders only five reviewed 2018 depth stations and remains exploration-only. OISST/Coral Reef Watch ocean themes remain planned.