{"generated":"2026-11-02T03:29:48Z","count":37,"by_state":{"site":23,"data":14},"complete":false,"not_catalogued":{"payloads":[],"registered_ids":[],"data_dirs":["water_causes"]},"not_instruments":{"catalogue.json":"this catalogue","board-data.json":"the board, compiled from the instruments listed here","csv-index.json":"the index of CSV downloads of the instruments listed here","facility-index.json":"the slug index for /facility pages, built from the facility register","dossier-index.json":"per-facility dossiers compiled from the instruments listed here","operator-index.json":"the facility register grouped by operator","water-quality-map.json":"the Explorer's thinner copy of water-quality.json (same stations)","places.json":"a gazetteer for the Explorer's search box, not a reading about any facility","lst-lut.json":"the colour lookup for the land-temperature textures","run.json":"the build stamp: board-data.json's own generated and build, copied by the last build step (build/run_json.py), plus what run.sh's deploy record says about the runs before this build","unmeasurable.json":"the Register of the Unmeasurable: what no instrument here can read, with any partial reading taken from the payloads listed here"},"not_instrument_dirs":{"places":"the gazetteer's archive (places.json)","wci":"the condition index's hand registers, read by build/board_data.py; the index is computed over the board's panels","unmeasurable":"the Register of the Unmeasurable's hand-kept rows (register.json), built into unmeasurable.json","sitemap":"build/lastmod.py's per-page content hashes and days (lastmod.json), which set sitemap.xml's <lastmod>","deploy":"run.sh's append-only record of what it decided about each run's deploy (manifest.jsonl, build/deploy_manifest.py), published on run.json \u2014 an account of this pipeline, not a reading about any facility"},"provenance_missing":["water_quality"],"plain":"Every instrument catalogued so far (37), whether or not a page shows it yet. 1 data folder(s) have no entry here yet; catalogue.json names them. Counts are measured from the files themselves each time this page is built.","note":"An instrument listed as collected-not-yet-displayed has no served payload yet; what it holds on disk is still measured and shown. We list it rather than wait, because what an instrument holds and what a page happens to render are different facts and conflating them is how registries start overstating themselves.","instruments":[{"id":"facilities_osm","title":"Mapped facilities","plain":"Every building volunteer mapmakers have tagged as a data centre, in the parts of the world we have extracted so far.","count":5041,"count_note":"facilities","counted_from_generated":"2026-11-01","holdings_on_disk":true,"payload":"map-payload.json","surfaced":"site","last_run":"2026-11-01T09:17:05Z","last_state":"ok","age_h":18.2,"manifest":"data/facilities/manifest.jsonl","manifest_filtered":true,"grain":"weekly (tools/refresh_weekly.sh applies Geofabrik diffs and re-filters every Sunday; refused when the extracts are unchanged, put back when its joins cannot follow)","yaml_ids":["facilities_osm"],"data_dirs":["facilities","osm-extracts","osm-derived","boundaries"],"last_success":"2026-11-01T09:17:05Z","last_success_basis":"the latest of its own manifest rows with state 'ok' (an extract that published the register); last_run and last_state are its latest attempt, whatever its state. Rows before 2026-09-17 recorded no extract_sha256, and a rerun over the same extract files also wrote 'ok', so the latest such row dates the last run that published the register, not provably the last read of changed extracts; since then 'ok' needs changed digests of the derived files; a new osmium pass over an unchanged extract gives the same bytes (28 Oct 2026: a re-run over the same extracts was refused as byte-identical), so a quiet week is refused and does not reset it","age_h_basis":"hours from last_success to generated","vintage_at":"2026-10-31T21:23:06Z","vintage_undated":[],"age_floor_at":"2026-10-31T21:23:06Z","age_floor_basis":"the oldest dated OpenStreetMap extract the last completed derivation read (vintage_at): the register is aged from it where it is older than last_success, as the board ages it","vintage_basis":"extracts_as_of recorded by the collector: when Geofabrik cut the OpenStreetMap snapshot the register was derived from, the oldest dated extract","script":"collectors/facilities_osm.py","scheduled":false,"cadence_h":168,"cadence_basis":"not scheduled: collectors/facilities_osm.py is not in run.sh, so it runs weekly from tools/refresh_weekly.sh (com.wapr.weekly-refresh.plist, Sundays 01:30 local), outside the scheduled run. collectors/facilities_osm.py CADENCE_DAYS = 7: rebuilt weekly by tools/refresh_weekly.sh, which applies Geofabrik's diffs to the continent extracts, re-filters them, runs collectors/facilities_osm.py and re-runs the joins tools/refusal_tests.py requires to follow the register (water stress, the id frame, ICIS-Air, NEI, DMR, water quality; collectors/grid_iron.py is hand-run and may describe an earlier register); run.sh does not call it, so this interval is how old a published register may be before the instrument reads degraded and then blind. A rebuild over unchanged extracts is refused, and a rebuild its joins cannot follow is put back; neither resets it. What the register describes is still the OpenStreetMap snapshot on this row as vintage_at","cadence_kind":"hand_run_declared","last_offline_rederivation":"2026-10-28T07:05:12Z","run_rows_skipped":{"another_instrument":1,"offline_rederivation":2},"source":"OpenStreetMap via Geofabrik extracts -> osmium tags-filter; 9 extract(s): us, canada, mexico, europe, asia, africa, south-america, australia-oceania, central-america","source_basis":"payload","license":"ODbL \u2014 attribution + share-alike; keep OSM geometry separate from proprietary estimates","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for facilities_osm yet; Geofabrik's <region>-updates/state.txt for each extract, against extracts_as_of (OpenStreetMap is edited continuously, so an extract is behind it by nature)","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for facilities_osm yet; Geofabrik's <region>-updates/state.txt for each extract, against extracts_as_of (OpenStreetMap is edited continuously, so an extract is behind it by nature)","cadence_expectation":null,"check_source":null}},{"id":"peeringdb_fac","title":"Interconnection facilities","plain":"Colocation and interconnection sites that network operators register publicly. Enrichment only \u2014 it over-represents colo and under-represents hyperscale.","count":4524,"count_note":"PeeringDB pagination stopped early (status=429 after 5000 rows); 4,524 geolocated rows kept","counted_from_generated":"2026-09-14","holdings_on_disk":true,"payload":"pdb-sites.json","surfaced":"site","last_run":"2026-09-14T05:15:23Z","last_state":"partial","age_h":1174.2,"manifest":"data/facilities/manifest.jsonl","manifest_filtered":true,"grain":"event","yaml_ids":["peeringdb_fac"],"data_dirs":["facilities"],"last_state_detail":"truncated","last_success":null,"last_success_basis":"the latest facilities.py row whose PeeringDB state is 'ok' (a complete pagination); a row cut short by the API (status 429) is partial and does not count","age_h_basis":"hours from last_run to generated (no completed collection identified)","script":"collectors/facilities.py","scheduled":false,"cadence_h":null,"cadence_basis":"not scheduled: collectors/facilities.py is not in run.sh, so it runs only when started by hand. no interval: the legacy PeeringDB path, kept as enrichment only since facilities_osm became the register's source, and its last collection was cut short by PeeringDB's own 429. Nothing in the collector or the registry records how often it should be re-read, so none is declared and it keeps the daily lamp rule","cadence_kind":"hand_run_undeclarable","run_rows_skipped":{"another_instrument":20},"source":"PeeringDB /api/fac \u2014 research use under AUP; not redistributed in bulk","source_basis":"payload","license":"PeeringDB AUP \u2014 research only, permission email pending; no bulk redistribution","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","first_collection_declared":"2026-09-13","meta_missing":false,"release":{"model":"live_query","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a live store with no releases: its currency is the age of the fetch (last_success), not a release","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a live store with no releases: its currency is the age of the fetch (last_success), not a release","cadence_expectation":null,"check_source":null}},{"id":"va_deq_sites","title":"Virginia regulated sites","plain":"Sites the Virginia environmental regulator has flagged as data centres, with what their backup generators actually emitted.","count":199,"count_note":"sites","counted_from_generated":"2026-11-01","holdings_on_disk":true,"payload":"va-sites.json","surfaced":"site","last_run":"2026-11-02T03:15:13Z","last_state":"fetch_failed","age_h":25.2,"manifest":"data/va_deq/manifest.jsonl","manifest_filtered":false,"grain":"day (sites) / year (292 \u2014 upstream overwrites itself; WAPR snapshot is the only history)","yaml_ids":["va_deq_sites"],"data_dirs":["va_deq"],"last_success":"2026-11-01T02:15:10Z","last_success_basis":"the latest row with state 'ok' (a DEQ layer read in full)","age_h_basis":"hours from last_success to generated","script":"collectors/va_deq.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"VA DEQ ArcGIS EDMA layers 294 + 292","source_basis":"payload","license":"public agency data","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"live_query","vintage_field":"va_deq manifest layer-292 row nox_year (the board's panels.va.nox_year)","vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":"2026-11-02T03:15:13Z","latest_published_null_reason":"table 292 was not read this run (the fetch failed)","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"DEQ publishes no release calendar for table 292; the table overwrites itself in place","cadence_expectation":null,"check_source":{"manifest":"data/va_deq/manifest.jsonl","ts":"2026-11-02T03:15:13Z","state":"fetch_failed","layer":292},"latest_published_last_proven":{"value":true,"checked":"2026-11-01T02:15:10Z","vintage_key":"2024","publisher_latest":"2024"}}},{"id":"gppd_plants","title":"Power plants \u2265250 MW","plain":"Large power stations, so a neighbouring plant is never mistaken for the data centre next to it.","count":4784,"count_note":"plants","counted_from_generated":"2026-09-23","holdings_on_disk":true,"payload":"plants.json","surfaced":"site","last_run":"2026-09-23T07:58:52Z","last_state":"cached","age_h":1168.5,"manifest":"data/plants/manifest.jsonl","manifest_filtered":false,"grain":"event (static WRI v1.3 release, one-time ingest; its recency is measured from the file, see plants.json vintage)","yaml_ids":["gppd_plants"],"data_dirs":["plants"],"last_success":"2026-09-14T10:58:42Z","last_success_basis":"the latest row with state 'fetched' (the database downloaded); 'cached' re-reads a file already held","age_h_basis":"hours from last_success to generated","script":"collectors/gppd_plants.py","scheduled":false,"cadence_h":null,"cadence_basis":"a one-time snapshot, not a feed (static: true)","cadence_kind":"static_snapshot","static":true,"static_vintage":"v1.3; capacity figures to 2019","static_vintage_basis":"plants.json vintage.release and vintage.max_year_of_capacity_data","source":"WRI Global Power Plant Database v1.3 (CC BY 4.0), a static release. Its capacity figures run to 2019 and the latest commissioning year it records is 2020; of the 4,784 plants of at least 250 MW kept here, 22 record commissioning in 2019, 1 in 2020 and 1,456 record no year, so a plant absent here may simply be newer than the database. One value is corrected by WAPR: ESCOMBRERAS GRUPO 1 (WRI1006467) is filed by WRI at latitude 7.5732 and served here as 37.5732. WRI's own value is kept on each corrected row (la_as_filed_by_wri / lo_as_filed_by_wri, with corrected_by_wapr naming the field), and the evidence for each \u2014 inside WRI's own file \u2014 is in this payload's `corrections` block.","source_basis":"payload","license":"CC BY 4.0 \u2014 attribute WRI","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"static","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a one-time snapshot of WRI's Global Power Plant Database: a lookup of the repository's history would show only that the file is unchanged since WAPR fetched it, never that it is WRI's latest release","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a one-time snapshot of WRI's Global Power Plant Database: a lookup of the repository's history would show only that the file is unchanged since WAPR fetched it, never that it is WRI's latest release","cadence_expectation":null,"check_source":null,"source_unchanged_since_fetch":null,"source_unchanged_since_fetch_null_reason":"no lookup implemented yet; a GitHub commits lookup for output_database/global_power_plant_database.csv, against a sha256 of the file WAPR read (the plants manifest records none yet)"}},{"id":"aqueduct_water_stress","title":"Basin water stress","plain":"How scarce fresh water already is in the basin under each mapped facility. Exposure, not usage.","count":5041,"count_note":"facilities","counted_from_generated":"2026-11-01","holdings_on_disk":true,"payload":"water-stress.json","surfaced":"site","last_run":"2026-11-01T09:17:33Z","last_state":"ok","age_h":18.2,"manifest":"data/aqueduct/manifest.jsonl","manifest_filtered":false,"grain":"event (static 1979-2019 baseline; re-run per facility-frame vintage)","yaml_ids":["aqueduct_water_stress"],"data_dirs":["aqueduct"],"last_success":"2026-11-01T09:17:33Z","last_success_basis":"the latest row with state 'ok' (the basin join completed)","age_h_basis":"hours from last_success to generated","script":"collectors/aqueduct.py","scheduled":false,"cadence_h":null,"cadence_basis":"a one-time snapshot, not a feed (static: true)","cadence_kind":"static_snapshot","static":true,"static_vintage":"1979\u20132019 baseline","static_vintage_basis":"water-stress.json source: the period the basin figures describe; the layer's release date is not stated in the payload","last_offline_rederivation":"2026-09-23T04:55:53Z","run_rows_skipped":{"offline_rederivation":5},"source":"WRI Aqueduct 4.0 baseline water stress (bws), HydroBASINS L6, 1979-2019 baseline \u2014 CC BY 4.0, \u00a9 World Resources Institute. Exposure context, never impact.","source_basis":"payload","license":"CC BY 4.0 \u2014 cite WRI Aqueduct 4.0","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"static","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a one-time read of a fixed CARTO table: no list of Aqueduct releases is read, so which release is newest is not observed","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a one-time read of a fixed CARTO table: no list of Aqueduct releases is read, so which release is newest is not observed","cadence_expectation":null,"check_source":null}},{"id":"lst_gibs_textures","title":"Land surface temperature","plain":"Satellite land-temperature maps, every 8 days this year and every August back to 2000.","count":128,"count_note":"texture images","counted_from_generated":null,"holdings_on_disk":true,"payload":"lst.json","surfaced":"site","last_run":"2026-11-02T03:21:48Z","last_state":"ok","age_h":0.1,"manifest":"data/lst/manifest.jsonl","manifest_filtered":false,"grain":"8-day and month","yaml_ids":["lst_gibs_textures"],"data_dirs":["lst"],"last_success":"2026-11-02T03:21:48Z","last_success_basis":"the latest closing row with state 'ok'","age_h_basis":"hours from last_success to generated","script":"build/lst_textures.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","last_offline_rederivation":"2026-09-21T19:29:27Z","run_rows_skipped":{"offline_rederivation":1},"source":"NASA GIBS \u00b7 MODIS Terra L3 Land Surface Temperature (MOD11), 1 km \u2014 8-day and monthly composites. Regional context only; 1 km cannot resolve a campus. No-retrieval (cloud, water, polar night) renders as grey earth.","source_basis":"payload","license":"NASA GIBS open","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"periodic","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for lst_gibs_textures yet; a manifest row recording each GIBS WMS GetCapabilities fetch (ts, sha256), so each series' last date is compared with the dates a dated fetch listed, never with a cache file's mtime","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for lst_gibs_textures yet; a manifest row recording each GIBS WMS GetCapabilities fetch (ts, sha256), so each series' last date is compared with the dates a dated fetch listed, never with a cache file's mtime","cadence_expectation":null,"check_source":null}},{"id":"eia930_overnight","title":"Overnight grid demand","plain":"Hour-by-hour electricity demand for the PJM grid and 20 of its sub-regions (Dominion's zone among them), reduced to the dead-of-night window where a data centre's load shows up clearest.","count":14033,"count_note":"distinct respondent-days (14,033 rows in 1 file(s))","counted_from_generated":null,"holdings_on_disk":true,"payload":null,"surfaced":"site","last_run":"2026-11-02T03:15:53Z","last_state":"ok","age_h":0.2,"manifest":"data/eia930/manifest.jsonl","manifest_filtered":false,"grain":"hour -> daily overnight window (fixed 01:00-05:00 LOCAL Eastern, DST-verified)","yaml_ids":["eia930_overnight"],"data_dirs":["eia930"],"last_success":"2026-11-02T03:15:53Z","last_success_basis":"the latest closing 'derive' row with state 'ok' (a run that fetched and reduced every window)","age_h_basis":"hours from last_success to generated","script":"collectors/eia930.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"EIA API v2 rto/region-data (PJM parent total, type D) + region-sub-ba-data (the sub-regions reporting under parent PJM, DOM among them), hourly demand","source_basis":"instruments.yaml","license":"EIA open (key in .env)","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","cadence_expectation":null,"check_source":null}},{"id":"degree_days","title":"Weather control","plain":"How hot or cold each month actually was, so nobody can mistake a warm summer for a new data centre.","count":14284,"count_note":"distinct station-days (14,594 rows in 1 file(s))","counted_from_generated":null,"holdings_on_disk":true,"payload":null,"surfaced":"data","last_run":"2026-11-02T03:15:42Z","last_state":"derived","age_h":0.2,"manifest":"data/degreedays/manifest.jsonl","manifest_filtered":false,"grain":"day (2019 backfill; ~3-day lag; revisions APPEND, last row per (station,date) wins)","yaml_ids":["degree_days"],"data_dirs":["degreedays"],"last_success":"2026-11-02T03:15:42Z","last_success_basis":"the latest closing row with state 'derived'","age_h_basis":"hours from last_success to generated","script":"collectors/degree_days.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"NOAA NCEI Access Data Service (keyless primary; CDO token fallback) \u2014 GHCND daily TMAX/TMIN, 5 airport stations (Dulles, Richmond, DFW, Abilene, Honolulu)","source_basis":"instruments.yaml","license":"NOAA open","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","cadence_expectation":null,"check_source":null}},{"id":"ercot_gis_queue","title":"Texas interconnection queue","plain":"How much generating capacity is queued to connect in Texas against how much has signed a binding agreement.","count":2,"count_note":"queue vintages","counted_from_generated":null,"holdings_on_disk":true,"payload":null,"surfaced":"site","last_run":"2026-11-02T03:18:57Z","last_state":"no_new_report","age_h":0.2,"manifest":"data/ercot/manifest.jsonl","manifest_filtered":false,"grain":"month (new vintage only on new DocID)","yaml_ids":["ercot_gis_queue"],"data_dirs":["ercot"],"last_success":"2026-11-02T03:18:57Z","last_success_basis":"the latest row that settled the run's vintage: step 'vintage' with 'no_new_report' (the newest report is already held) or step 'derive' with 'ok' (a new vintage downloaded and derived); the 'doclist' request alone does not count","age_h_basis":"hours from last_success to generated","script":"collectors/ercot_ll.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"ERCOT MIS reportTypeId 15933 = GIS Report (GENERATOR interconnection queue \u2014 NOT large-load; research misattributed it, see TRACKER 2026-09-14)","source_basis":"instruments.yaml","license":"ERCOT public MIS","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"periodic","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for ercot_gis_queue yet; the ERCOT MIS document list every run already reads (IceDocListJsonWS): the vintage's source doc_id against the newest GIS report on that list","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for ercot_gis_queue yet; the ERCOT MIS document list every run already reads (IceDocListJsonWS): the vintage's source doc_id against the newest GIS report on that list","cadence_expectation":null,"check_source":null}},{"id":"campd_plants","title":"Plant emissions, daily","plain":"What neighbouring power plants actually emitted and generated, day by day, from the regulator's own monitors on the chimneys themselves \u2014 for the large plants near a mapped facility that WAPR matched to a monitoring record. The payload states the coverage it reached.","count":221610,"count_note":"rows in 223 file(s)","counted_from_generated":null,"holdings_on_disk":true,"payload":"plant-emissions.json","surfaced":"site","last_run":"2026-11-02T03:20:59Z","last_state":"run_summary","age_h":0.1,"manifest":"data/campd/manifest.jsonl","manifest_filtered":false,"grain":"day (published-quarter lag; endDate clamped to ceiling)","yaml_ids":["campd_plants"],"data_dirs":["campd"],"last_success":null,"last_success_basis":"not stated: no rule here says which of campd.py's manifest states is a completed collection (the manifest is a pre-registered holdout this catalogue does not read for content)","age_h_basis":"hours from last_run to generated (no completed collection identified)","script":"collectors/campd.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"EPA CAMPD apportioned daily emissions (x-api-key; concurrency 1)","source_basis":"instruments.yaml","license":"EPA open","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"periodic","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for campd_plants yet; the published-quarter ceiling CAMPD's API states on every run, against each plant's published_through (a pre-registered holdout: nothing here reads it)","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for campd_plants yet; the published-quarter ceiling CAMPD's API states on every run, against each plant's published_through (a pre-registered holdout: nothing here reads it)","cadence_expectation":null,"check_source":null}},{"id":"faa_part77","title":"Crane filings","plain":"Every tall-crane notice filed with the aviation authority near a mapped facility \u2014 construction shows up here months before a building does.","count":18379,"count_note":"distinct case filings (18,379 rows in 2 file(s))","counted_from_generated":null,"holdings_on_disk":true,"payload":"cranes.json","surfaced":"site","last_run":"2026-11-02T03:15:16Z","last_state":"gate_failed","age_h":0.2,"manifest":"data/faa/manifest.jsonl","manifest_filtered":false,"grain":"day (case events)","yaml_ids":["faa_part77","faa_crane_signal"],"data_dirs":["faa"],"last_success":"2026-11-02T03:15:16Z","last_success_basis":"the latest row with state 'derived' written by a run that fetched (offline re-derivations are excluded)","age_h_basis":"hours from last_success to generated","script":"collectors/faa_part77.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","last_offline_rederivation":"2026-09-21T19:28:29Z","run_rows_skipped":{"offline_rederivation":6},"source":"FAA Obstruction Evaluation / Airport Airspace Analysis \u2014 Part 77 case archives, all nine regions","source_basis":"payload","license":"public FAA data","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"periodic","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for faa_part77 yet; the per-region 'Data as of' trailer every run already records (source_as_of), with every region's latest fetch state ok","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for faa_part77 yet; the per-region 'Data as of' trailer every run already records (source_as_of), with every region's latest fetch state ok","cadence_expectation":null,"check_source":null}},{"id":"hf_creation_feed","title":"Model publication","plain":"Every AI model published to the main public library, including ones with their safety training stripped out.","count":216911,"count_note":"distinct model creation events (repo id + createdAt) (216,911 rows in 37 file(s)); 196,224 distinct repo ids \u2014 a repo deleted and re-created keeps its id and is a second event","distinct_repo_ids":196224,"counted_from_generated":null,"holdings_on_disk":true,"payload":null,"surfaced":"site","last_run":"2026-11-02T03:15:09Z","last_state":"ok","age_h":0.2,"manifest":"data/hf/manifest.jsonl","manifest_filtered":false,"grain":"day","yaml_ids":["hf_creation_feed"],"data_dirs":["hf"],"last_success":"2026-11-02T03:15:09Z","last_success_basis":"the latest closing row with state 'ok'","age_h_basis":"hours from last_success to generated","script":"collectors/hf_models.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"Hugging Face /api/models createdAt cursor","source_basis":"instruments.yaml","license":"HF API public","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","cadence_expectation":null,"check_source":null}},{"id":"identity_endpoints","title":"Crawler identity","plain":"The keys AI companies publish so a website can tell their crawlers from impostors, archived daily because nobody else keeps them.","count":10,"count_note":"endpoint documents","counted_from_generated":null,"holdings_on_disk":true,"payload":null,"surfaced":"site","last_run":"2026-11-02T03:15:05Z","last_state":"same","age_h":0.2,"manifest":"data/identity/manifest.jsonl","manifest_filtered":false,"grain":"event (12h probe cadence)","yaml_ids":["identity_endpoints"],"data_dirs":["identity"],"last_success":"2026-11-02T03:15:05Z","last_success_basis":"the latest row in which an endpoint document was fetched and compared ('same', 'new', 'changed' or 'baseline'); there is no closing row, so a run in which only some endpoints answered still counts","age_h_basis":"hours from last_success to generated","script":"collectors/identity.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"10 agent/crawler identity endpoints (OpenAI WBA JWKS, gptbot/searchbot/chatgpt-user, Anthropic, Google x3, Perplexity x2)","source_basis":"instruments.yaml","license":"public documents","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","first_collection_declared":"2026-09-13","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","cadence_expectation":null,"check_source":null}},{"id":"watchlist","title":"Model market changes","plain":"Models appearing, retiring, changing price or going down \u2014 changes only, never the firehose.","count":914,"count_note":"change events in 37 file(s)","counted_from_generated":null,"holdings_on_disk":true,"payload":null,"surfaced":"data","last_run":"2026-11-02T03:15:11Z","last_state":"same","age_h":0.2,"manifest":"data/watch/manifest.jsonl","manifest_filtered":false,"grain":"event (12h diff, deltas only)","yaml_ids":["watchlist"],"data_dirs":["watch"],"last_success":"2026-11-02T03:15:11Z","last_success_basis":"the latest row in which a watched page was fetched and compared; there is no closing row, so a run in which only some pages answered still counts","age_h_basis":"hours from last_success to generated","script":"collectors/watchlist.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"OpenRouter catalogue, HF trending, OpenAI/Anthropic/GCP status, Epoch notable models CSV, BenchLM RSS","source_basis":"instruments.yaml","license":"public APIs; Epoch CC-BY","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","cadence_expectation":null,"check_source":null}},{"id":"edgar_oem","title":"Generator maker filings","plain":"What the companies building power generators tell their investors, from binding filings rather than press releases.","count":6,"count_note":"distinct filings (196 rows in 37 file(s))","counted_from_generated":null,"holdings_on_disk":true,"payload":null,"surfaced":"data","last_run":"2026-11-02T03:15:10Z","last_state":"cached","age_h":0.2,"manifest":"data/edgar/manifest.jsonl","manifest_filtered":false,"grain":"quarter (event)","yaml_ids":["edgar_oem"],"data_dirs":["edgar"],"last_success":"2026-11-02T03:15:10Z","last_success_basis":"the latest row with state 'fetched' or 'cached': each is written after a live read of the company's EDGAR submissions index, 'cached' when its newest 10-Q/10-K was already held; index_failed, CIK_MISMATCH and doc_failed rows do not count","age_h_basis":"hours from last_success to generated","script":"collectors/edgar_oem.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"data.sec.gov latest 10-Q/10-K for CAT CMI GEV BE","source_basis":"instruments.yaml","license":"public filings","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","first_collection_declared":"2026-09-13","meta_missing":false,"release":{"model":"periodic","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for edgar_oem yet; the data.sec.gov submissions index every run already reads, per company: its newest 10-Q/10-K against the filing held","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for edgar_oem yet; the data.sec.gov submissions index every run already reads, per company: its newest 10-Q/10-K against the filing held","cadence_expectation":null,"check_source":null}},{"id":"cso_ireland","title":"Ireland's data-centre electricity","plain":"Ireland is the only country that officially counts data-centre electricity as its own category. Everywhere else the sector vanishes into general business use.","count":132,"count_note":"distinct observations (132 rows in 1 file(s))","counted_from_generated":null,"holdings_on_disk":true,"payload":"cso-ireland.json","surfaced":"site","last_run":"2026-11-02T03:21:31Z","last_state":"derived","age_h":0.1,"manifest":"data/cso_ie/manifest.jsonl","manifest_filtered":false,"grain":null,"yaml_ids":[],"data_dirs":["cso_ie"],"last_success":"2026-11-02T03:21:31Z","last_success_basis":"the latest closing row with state 'derived'","age_h_basis":"hours from last_success to generated","script":"collectors/cso_ireland.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"Central Statistics Office, Ireland \u2014 Data Centres Metered Electricity Consumption","source_basis":"payload","license":"no licence declared by the publisher's API; copyright holder Central Statistics Office, Ireland \u2014 unverified, see the payload's source.licence note","license_basis":"payload","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"periodic","vintage_field":"cso-ireland.json coverage.latest","vintage_key":"2025Q4","vintage_examined":"2025Q4","latest_published":true,"latest_published_basis":"ReadDataset/MEC02/JSON-stat/2.0 with no release code returns CSO's live dataset (PxStat API-Cube); its body (extension.archive and extension.reservation false) lists 44 quarters in increasing order ending 2025Q4, so 2025Q4 is the newest quarter CSO had published in MEC02 at the fetch","latest_published_checked":"2026-11-02T03:21:31Z","latest_published_null_reason":null,"publisher_latest":"2025Q4","publisher_latest_as_of":"2026-07-07T11:00:00.000Z","publisher_latest_as_of_meaning":"MEC02's own `updated` stamp: when CSO last touched the table (a revision or a new quarter), not the period it covers","next_release":null,"next_release_null_reason":"not listed in CSO's release calendar: no entry titled 'Metered Electricity Consumption' dated on or after 2026-11-02 among its 102 releases (2026-11-03..2028-01-04)","cadence_expectation":null,"check_source":{"manifest":"data/cso_ie/manifest.jsonl","ts":"2026-11-02T03:21:31Z","state":"derived"}}},{"id":"anomaly_feeds","title":"Live anomalies","plain":"Unusual conditions right now near the mapped sites \u2014 storms, drought, space weather. Things happening TO the sites, not caused by them.","count":18,"count_note":"anomalies at the last run","counted_from_generated":"2026-11-02T03:21:30Z","holdings_on_disk":true,"payload":"anomalies.json","surfaced":"site","last_run":"2026-11-02T03:21:30Z","last_state":"ok","age_h":0.1,"manifest":"data/anomalies/manifest.jsonl","manifest_filtered":false,"grain":"event (conditions active at each run)","yaml_ids":["anomaly_feeds"],"data_dirs":["anomalies"],"last_success":"2026-11-02T03:21:30Z","last_success_basis":"the latest closing row (it carries the anomaly count) with state 'ok'","age_h_basis":"hours from last_success to generated","script":"collectors/anomaly_feeds.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"NOAA/NWS active alerts (api.weather.gov); US Drought Monitor weekly GeoJSON (NDMC/UNL, USDA, NOAA); NOAA SWPC","source_basis":"payload","license":"NWS and SWPC \u2014 NOAA open; US Drought Monitor \u2014 terms not recorded by the collector","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"periodic","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for anomaly_feeds yet; a probe of every US Drought Monitor Tuesday from week_valid up to the run day, each newer week answering 404 (the drought map is the feed here with releases; the weather and space-weather feeds are continuous)","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for anomaly_feeds yet; a probe of every US Drought Monitor Tuesday from week_valid up to the run day, each newer week answering 404 (the drought map is the feed here with releases; the weather and space-weather feeds are continuous)","cadence_expectation":null,"check_source":null}},{"id":"discharge","title":"Permitted water discharge","plain":"Every Clean Water Act permit or stormwater coverage held by a US facility reporting the data-centre sector code \u2014 where, under what permit number, and at what flow where one is recorded.","count":45,"count_note":"permits","counted_from_generated":"2026-11-02T03:23:50Z","holdings_on_disk":true,"payload":"discharge.json","surfaced":"site","last_run":"2026-11-02T03:23:50Z","last_state":"derived","age_h":0.1,"manifest":"data/discharge/manifest.jsonl","manifest_filtered":false,"grain":"event (permit register; re-swept per run)","yaml_ids":["discharge_permits"],"data_dirs":["discharge"],"last_success":"2026-11-02T03:23:50Z","last_success_basis":"the latest closing row with state 'derived' written by a run that queried ECHO (discharge --from-raw rows are offline and excluded)","age_h_basis":"hours from last_success to generated","script":"collectors/discharge.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","last_offline_rederivation":"2026-09-21T20:44:59Z","run_rows_skipped":{"offline_rederivation":2},"source":"US EPA Enforcement and Compliance History Online \u2014 Clean Water Act permitted facilities reporting sector code 518210 (data processing and hosting)","source_basis":"payload","license":"EPA public domain","license_basis":"instruments.yaml","first_collection":"2026-09-15","first_collection_basis":"manifest","first_collection_declared":"2026-09-14","meta_missing":false,"release":{"model":"live_query","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for discharge yet; one GET of ECHO's About-the-Data page per collection (https://echo.epa.gov/resources/echo-data/about-the-data): its 'ICIS-NPDES' row's Date Data Extracted against the collection time, and its Expected Next Extract","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for discharge yet; one GET of ECHO's About-the-Data page per collection (https://echo.epa.gov/resources/echo-data/about-the-data): its 'ICIS-NPDES' row's Date Data Extracted against the collection time, and its Expected Next Extract","cadence_expectation":null,"check_source":null}},{"id":"rivers","title":"Rivers near facilities","plain":"Flow and water temperature at public stream gauges near mapped sites \u2014 exposure, never a claim that a site warms a river.","count":998,"count_note":"gauges","counted_from_generated":"2026-11-02T03:21:49Z","holdings_on_disk":true,"payload":"rivers.json","surfaced":"site","last_run":"2026-11-02T03:21:49Z","last_state":"derived","age_h":0.1,"manifest":"data/rivers/manifest.jsonl","manifest_filtered":false,"grain":"latest value each gauge has reported, re-read every run \u2014 77 of 998 dated gauges last reported more than a year before collection (oldest 1984-12-31)","yaml_ids":["rivers"],"data_dirs":["rivers"],"last_success":"2026-11-02T03:21:49Z","last_success_basis":"the latest closing row with state 'derived'","age_h_basis":"hours from last_success to generated","script":"collectors/rivers.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"US Geological Survey National Water Information System \u2014 instantaneous values from instrumented stream gauges","source_basis":"payload","license":"USGS public domain","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","cadence_expectation":null,"check_source":null}},{"id":"thermal_ceiling","title":"The heat effect, to scale","plain":"The most-requested claim about data centres, drawn at true size against the instruments that would have to detect it \u2014 a published negative result.","count":10,"count_note":"distance rings","counted_from_generated":"2026-11-02T03:25:03Z","holdings_on_disk":true,"payload":"thermal-ceiling.json","surfaced":"site","last_run":null,"last_state":null,"age_h":null,"manifest":null,"manifest_filtered":false,"grain":"static (a physical bound, not a measurement)","yaml_ids":["thermal_ceiling"],"data_dirs":[],"last_success":null,"last_success_basis":"not a collection: built from other instruments' payloads, with no run of its own","age_h_basis":"no run recorded","script":"build/thermal_ceiling.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"WAPR environmental research synthesis (datacenter-environmental-layer): ground-level release bound, 0.079 K at 4.5 km and 0.016 K at 10 km for a 130 MW campus; per-campus systematic offset that does not shrink with sample size. Water: WAPR water-districts research (the ICPRB 2025 study's rate for data centres in Loudoun Water's service area, per effective MW; literature WUE scenario). Computed here, not asserted.","source_basis":"payload","license":"WAPR derivation over public research","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"instruments.yaml","meta_missing":false,"release":{"model":"wapr_record","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"WAPR's own record, not a publisher's release","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"WAPR's own record, not a publisher's release","cadence_expectation":null,"check_source":null}},{"id":"gridmix","title":"Grid fuel mix by operator","plain":"What kinds of power station are physically running on the grid where each company's data centres sit \u2014 not what the company says it buys.","count":26,"count_note":"operators","counted_from_generated":"2026-11-02T03:20:59Z","holdings_on_disk":true,"payload":"grid-mix.json","surfaced":"site","last_run":"2026-11-02T03:20:59Z","last_state":"ok","age_h":0.1,"manifest":"data/gridmix/manifest.jsonl","manifest_filtered":false,"grain":"hour, aggregated over the most recent complete 12 calendar months; rebuilt per run","yaml_ids":["gridmix"],"data_dirs":["gridmix"],"last_success":"2026-11-02T03:20:59Z","last_success_basis":"the latest closing 'derive' row with state 'ok'","age_h_basis":"hours from last_success to generated","script":"collectors/gridmix.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"EIA-930 Hourly Electric Grid Monitor, hourly net generation by balancing authority and energy source","source_basis":"payload","license":"EIA data \u2014 US Government work, public domain; the balancing-authority polygons (Esri) are not republished, only the derived facility-to-code assignment","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous hourly feed: WAPR's window ends at the last complete month before EIA's endPeriod, a window WAPR chooses by its own rule, not a release","publisher_latest":"2026-11-01T06","publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous hourly feed: WAPR's window ends at the last complete month before EIA's endPeriod, a window WAPR chooses by its own rule, not a release","cadence_expectation":null,"check_source":null,"publisher_latest_source":{"manifest":"data/gridmix/manifest.jsonl","ts":"2026-11-02T03:20:59Z","field":"endPeriod","meaning":"EIA-930's endPeriod, verbatim: the newest hour (UTC, hour-ending, 'YYYY-MM-DDTHH') EIA's route metadata stated when gridmix.py fetched it. WAPR's window ends at the last complete month before it, by WAPR's own rule"}}},{"id":"echo_dmr","title":"Discharge monitoring reports","plain":"What data-centre permittees reported discharging, month by month: flow, temperature, the intake-to-discharge temperature difference, and every filed value that broke its permit limit \u2014 the permittee's own measurement, not a permission.","count":81,"count_note":"permits","counted_from_generated":"2026-11-01T09:21:15Z","holdings_on_disk":true,"payload":"dmr.json","surfaced":"data","last_run":"2026-11-01T09:21:15Z","last_state":"ok","age_h":18.1,"manifest":"data/dmr/manifest.jsonl","manifest_filtered":false,"grain":null,"yaml_ids":[],"data_dirs":["dmr"],"last_success":"2026-11-01T09:21:15Z","last_success_basis":"the latest closing row (it carries the run's counts) with state 'ok'","age_h_basis":"hours from last_success to generated","script":"collectors/echo_dmr.py","scheduled":true,"cadence_h":144,"cadence_basis":"collectors/echo_dmr.py MAX_AGE_DAYS = 6: after a good collection the next is due 6 days later (the first scheduled run that finds it that old collects)","cadence_kind":"collector_constant","source":"EPA ECHO \u2014 Discharge Monitoring Reports (ICIS-NPDES) via eff_rest_services.get_effluent_chart; census via dmr_rest_services.get_all_dmr_facilities","source_basis":"payload","license":"EPA Standard Open Data License \u2014 public domain, attribution requested","license_basis":"payload","first_collection":"2026-09-15","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"live_query","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for echo_dmr yet; one GET of ECHO's About-the-Data page per collection (https://echo.epa.gov/resources/echo-data/about-the-data): its 'ICIS-NPDES' and 'Water Pollutant Loading Tool' rows' Date Data Extracted against the collection time, and their Expected Next Extract","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for echo_dmr yet; one GET of ECHO's About-the-Data page per collection (https://echo.epa.gov/resources/echo-data/about-the-data): its 'ICIS-NPDES' and 'Water Pollutant Loading Tool' rows' Date Data Extracted against the collection time, and their Expected Next Extract","cadence_expectation":null,"check_source":null}},{"id":"siting","title":"Siting context (US)","plain":"For the 1,850 mapped US facilities: the utility territory each sits in, once polygons the layer types FEDERAL (power marketers and irrigation projects drawn over the utilities they supply) are set aside as overlays (1,027 with a single remaining territory, 810 where several remaining territories overlap and none is chosen, 13 with no territory but a federal one or none at all), the nearest transmission line of 230 kV or more (found for 1,850), the principal aquifer beneath it (1,372 have one mapped) and the nearest named stream (found for 1,850) \u2014 utility and aquifer by containment, line and stream by distance.","count":1850,"count_note":"US sites","counted_from_generated":"2026-11-02T03:29:47Z","holdings_on_disk":true,"payload":"siting.json","surfaced":"data","last_run":"2026-11-02T03:29:47Z","last_state":"ok","age_h":0.0,"manifest":"data/siting/manifest.jsonl","manifest_filtered":false,"grain":null,"yaml_ids":[],"data_dirs":["siting"],"last_success":"2026-11-02T03:29:47Z","last_success_basis":"the latest closing row (it carries the site count) with state 'ok'; a run that answered every site from its cache still counts, and the dossier's section_sources.siting.collected dates the answers themselves","age_h_basis":"hours from last_success to generated","script":"collectors/siting.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"aquifer: USGS Principal Aquifers of the United States (1:2,500,000); hv_line: HIFLD Electric Power Transmission Lines (ORNL / DOE-CESER); utility: HIFLD Electric Retail Service Territories, 2023-08 vintage (ORNL / DOE-CESER; per-polygon SOURCE = EIA-860/861 + the utility's filed map); waterway: USGS National Hydrography Dataset, Flowline \u2014 Small Scale (layer 4), named features only","source_basis":"payload","license":"aquifer: US Government work, public domain; hv_line: Public use (HIFLD Open); utility: None (Public Use) per the item's licenceInfo; waterway: US Government work, public domain","license_basis":"payload","first_collection":"2026-09-15","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"live_query","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"map layers each publisher serves live, read when a site is first seen: a layer's edit date would prove only that it is unchanged since WAPR fetched it, never that it is a release","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"map layers each publisher serves live, read when a site is first seen: a layer's edit date would prove only that it is unchanged since WAPR fetched it, never that it is a release","cadence_expectation":null,"check_source":null,"source_unchanged_since_fetch":null,"source_unchanged_since_fetch_null_reason":"no lookup implemented yet; each ArcGIS layer's `?f=json` editingInfo.lastEditDate, against the day WAPR cached the site's answer"}},{"id":"icis_air","title":"Air-permitted data centres, national","plain":"The air-permit sources the states report to the federal compliance system under the data-processing industry codes (NAICS 518210 or SIC 7374) \u2014 495 at the last collection \u2014 with each state's permit key, its major/minor class, inspections and violations; 3 of them carry a CAMD program id, the link to EPA's clean-air-markets data.","count":495,"count_note":"permit sources","counted_from_generated":"2026-11-01T09:18:51Z","holdings_on_disk":true,"payload":"icis-air.json","surfaced":"data","last_run":"2026-11-01T09:18:51Z","last_state":"ok","age_h":18.2,"manifest":"data/icis_air/manifest.jsonl","manifest_filtered":false,"grain":null,"yaml_ids":[],"data_dirs":["icis_air"],"last_success":"2026-11-01T09:18:51Z","last_success_basis":"the latest closing row (it carries the run's counts) with state 'ok'","age_h_basis":"hours from last_success to generated","script":"collectors/icis_air.py","scheduled":true,"cadence_h":144,"cadence_basis":"collectors/icis_air.py MAX_AGE_DAYS = 6: after a good collection the next is due 6 days later (the first scheduled run that finds it that old collects)","cadence_kind":"collector_constant","source":"EPA ECHO \u2014 ICIS-Air facility search (air_rest_services), NAICS 518210 \u222a SIC 7374","source_basis":"payload","license":"EPA disclaimer: freely distributed for non-commercial, scientific and educational use; federal facts","license_basis":"payload","first_collection":"2026-09-15","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"live_query","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for icis_air yet; one GET of ECHO's About-the-Data page per collection (https://echo.epa.gov/resources/echo-data/about-the-data): its 'ICIS-Air' row's Date Data Extracted against the collection time, and its Expected Next Extract","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for icis_air yet; one GET of ECHO's About-the-Data page per collection (https://echo.epa.gov/resources/echo-data/about-the-data): its 'ICIS-Air' row's Date Data Extracted against the collection time, and its Expected Next Extract","cadence_expectation":null,"check_source":null}},{"id":"nei_point","title":"Facility emissions, national (NEI 2023)","plain":"The tons of NOx, CO, particulates and VOCs each listed data-centre facility was recorded emitting in the 2023 National Emissions Inventory \u2014 the only national per-facility emissions number for the sector, and only as complete as what each state submitted and WAPR's data-centre filter, which nei.json counts state by state.","count":277,"count_note":"facilities","counted_from_generated":"2026-11-02T03:25:16Z","holdings_on_disk":true,"payload":"nei.json","surfaced":"data","last_run":"2026-11-02T03:25:16Z","last_state":"ok","age_h":0.1,"manifest":"data/nei/manifest.jsonl","manifest_filtered":false,"grain":null,"yaml_ids":[],"data_dirs":["nei"],"last_success":"2026-11-02T03:25:16Z","last_success_basis":"the latest closing row with state 'ok': each run checks EPA for a newer inventory, and 'fetched' on that row says whether the file was downloaded again","age_h_basis":"hours from last_success to generated","script":"collectors/nei_point.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"EPA National Emissions Inventory 2023 \u2014 point-source facility summary (EIS report 38234, 21 Jul 2026)","source_basis":"payload","license":"EPA disclaimer \u2014 freely distributed for non-commercial, scientific and educational use; federal facts","license_basis":"payload","first_collection":"2026-09-15","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"periodic","vintage_field":"nei.json inventory_year","vintage_key":"2023","vintage_examined":"inventory year 2023 (eis_report_38234_2023NEI_facility_summary_21jul2026.zip)","latest_published":true,"latest_published_basis":"EPA's NEI directory listing (https://gaftp.epa.gov/air/nei/) names year directories to 2026, and no year directory after 2023 lists a facility summary (2026/data_summaries/ answered 404); https://gaftp.epa.gov/air/nei/2023/data_summaries/ and its 1 subdirectory list eis_report_38234_2023NEI_facility_summary_21jul2026.zip, the file WAPR read, and no other facility summary; and HEAD on it returns the Last-Modified and Content-Length its download recorded (2026-09-15T12:23:51Z) \u2014 so EPA lists no newer or re-issued facility summary","latest_published_checked":"2026-11-02T03:25:16Z","latest_published_null_reason":null,"publisher_latest":"2023","publisher_latest_as_of":"Wed, 22 Jul 2026 12:38:28 GMT","publisher_latest_as_of_meaning":"the Last-Modified gaftp.epa.gov serves for eis_report_38234_2023NEI_facility_summary_21jul2026.zip","next_release":null,"next_release_null_reason":"EPA publishes no machine-readable NEI schedule","cadence_expectation":{"basis":"WAPR's reading of EPA's directory listing: its year directories (2008, 2011, 2014, 2017, 2020, 2023, 2026) are three years apart; EPA states no release schedule","kind":"cadence_expectation","text":"triennial inventory years"},"check_source":{"manifest":"data/nei/manifest.jsonl","ts":"2026-11-02T03:25:16Z","state":"ok"},"checks":{"head":{"content_length":"38731408","download_row":{"bytes":38731408,"last_modified":"Wed, 22 Jul 2026 12:38:28 GMT","ts":"2026-09-15T12:23:51Z"},"last_modified":"Wed, 22 Jul 2026 12:38:28 GMT"},"inventory_year_listing":{"facility_summaries":["eis_report_38234_2023NEI_facility_summary_21jul2026.zip"],"higher_report_number":[],"lower_report_number":[],"subdirectories":["EIS Reports Extra/"],"unranked":[],"url":"https://gaftp.epa.gov/air/nei/2023/data_summaries/"},"newer_years":{"newer_with_facility_summary":[],"newer_year_dir_without_facility_summary":[],"years_listed":["2008","2011","2014","2017","2020","2023","2026"]}}}},{"id":"eia_gen","title":"Generators at sites (EIA-860M/923)","plain":"Grid-connected generators of 1 MW or more on or beside a mapped data centre: the month each was switched on and its monthly output since \u2014 the meter for the campus plants that interconnect, and a named list of what EIA lists instead in the counties of the prime register's on-site power projects.","count":160,"count_note":"plants","counted_from_generated":"2026-11-02T03:29:41Z","holdings_on_disk":true,"payload":"eia-gen.json","surfaced":"data","last_run":"2026-11-02T03:29:45Z","last_state":"ok","age_h":0.0,"manifest":"data/eia_gen/manifest.jsonl","manifest_filtered":false,"grain":null,"yaml_ids":[],"data_dirs":["eia_gen"],"last_success":"2026-11-02T03:29:45Z","last_success_basis":"the latest closing row with state 'ok' written by a run that queried EIA (--from-archive rows are offline and excluded)","age_h_basis":"hours from last_success to generated","script":"collectors/eia_gen.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","last_offline_rederivation":"2026-09-21T20:45:13Z","run_rows_skipped":{"offline_rederivation":2},"source":"860m: https://api.eia.gov/v2/electricity/operating-generator-capacity (Form EIA-860M, monthly generator inventory); 923: https://api.eia.gov/v2/electricity/facility-fuel (Form EIA-923, monthly net generation and fuel)","source_basis":"payload","license":"US Government work \u2014 public domain","license_basis":"payload","first_collection":"2026-09-15","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"periodic","vintage_field":"eia-gen.json period_860m","vintage_key":"2026-08","vintage_examined":"EIA-860M period 2026-08","latest_published":false,"latest_published_basis":"EIA's EIA-860M page (https://www.eia.gov/electricity/data/eia860m/, comments stripped) lists 2026-09 (/electricity/data/eia860m/xls/september_generator2026.xlsx, Release Date: October 23, 2026); the API route WAPR reads served 2026-08 (probes, month status/rows: 2026-11 200/0, 2026-10 200/0, 2026-09 200/0, 2026-08 200/28408; route endPeriod 2026-08)","latest_published_checked":"2026-11-02T03:29:45Z","latest_published_null_reason":null,"publisher_latest":"2026-09","publisher_latest_as_of":"October 23, 2026","publisher_latest_as_of_meaning":"EIA's 'Release Date:' on its EIA-860M page: when EIA released the newest file the page lists","next_release":{"date":"2026-11-24","fetched":"2026-11-02T03:29:45Z","kind":"announced","passed_at_fetch":false,"source_url":"https://www.eia.gov/electricity/data/eia860m/","text":"Next Release Date: November 24, 2026"},"next_release_null_reason":null,"cadence_expectation":null,"check_source":{"manifest":"data/eia_gen/manifest.jsonl","ts":"2026-11-02T03:29:45Z","state":"ok"},"api_latest_period":"2026-08","checks":{"probes":[{"period":"2026-11","status":200,"total":0},{"period":"2026-10","status":200,"total":0},{"period":"2026-09","status":200,"total":0},{"period":"2026-08","status":200,"total":28408}]},"eia923":{"annual":{"final_year":"2025","released":"September 14, 2026","text":"September 14, 2026; Final release 2025 data"},"fetched":"2026-11-02T03:29:45Z","monthly":{"data_month":"2026-08","released":"October 23, 2026","text":"October 23, 2026 for August 2026 data"},"next_annual":{"date":null,"fetched":"2026-11-02T03:29:45Z","kind":"announced","passed_at_fetch":null,"source_url":"https://www.eia.gov/electricity/data/eia923/","text":"Next annual release: September 2027 for 2026 final data"},"next_monthly":{"date":null,"fetched":"2026-11-02T03:29:45Z","kind":"announced","passed_at_fetch":null,"source_url":"https://www.eia.gov/electricity/data/eia923/","text":"Next monthly release: End of November 2026 (September 2026 data)"},"null_reason":null,"source_url":"https://www.eia.gov/electricity/data/eia923/","status":200},"publisher_latest_file":"/electricity/data/eia860m/xls/september_generator2026.xlsx"}},{"id":"wapr_ids","title":"Stable identifiers","plain":"One WAPR id per mapped facility, minted once under a written rule and never changed when the map is edited; the crosswalk to the network registry, air permits, discharge permits, crane notices and on-site power, each attached by distance with the metres recorded.","count":5041,"count_note":"ids","counted_from_generated":"2026-11-02","holdings_on_disk":true,"payload":"ids.json","surfaced":"data","last_run":null,"last_state":null,"age_h":null,"manifest":null,"manifest_filtered":false,"grain":"event (minted once per facility; crosswalk rebuilt per run)","yaml_ids":["wapr_ids"],"data_dirs":["ids"],"last_success":null,"last_success_basis":"not a collection: built from other instruments' payloads, with no run of its own","age_h_basis":"no run recorded","script":"build/ids.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"WAPR identifiers minted over the OpenStreetMap facility register, crosswalked by distance to PeeringDB, VA DEQ, EPA discharge permits, FAA crane notices and the prime-power register","source_basis":"instruments.yaml","license":"ODbL 1.0 \u2014 derived from the OpenStreetMap register; each linked record keeps its own licence","license_basis":"instruments.yaml","first_collection":"2026-09-15","first_collection_basis":"instruments.yaml","meta_missing":false,"release":{"model":"derived","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"built from other instruments' payloads: each reading inherits the release status of the instrument it was read from (see that instrument's release)","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"built from other instruments' payloads: each reading inherits the release status of the instrument it was read from (see that instrument's release)","cadence_expectation":null,"check_source":null}},{"id":"series","title":"The tape \u2014 daily readings","plain":"16 readings as daily files: value, unit, count, denominator, vintage and lamp on every row, rebuilt from the archive and checked against it.","count":16,"count_note":"series","counted_from_generated":"2026-11-02T03:25:07Z","holdings_on_disk":true,"payload":"series/index.json","surfaced":"data","last_run":null,"last_state":null,"age_h":null,"manifest":null,"manifest_filtered":false,"grain":"day (the UTC day a board was built); each row's vintage says what period it describes","yaml_ids":["series"],"data_dirs":["series"],"last_success":null,"last_success_basis":"not a collection: built from other instruments' payloads, with no run of its own","age_h_basis":"no run recorded","script":"build/series.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","source":"WAPR's own tape of readings, one row per UTC day a board was built, rebuilt from the repository history by build/series.py --check","source_basis":"instruments.yaml","license":"WAPR compilation of public records; each row names the record it was read from","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"tape","first_collection_declared":"2026-09-15","meta_missing":false,"release":{"model":"derived","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"built from other instruments' payloads: each reading inherits the release status of the instrument it was read from (see that instrument's release)","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"built from other instruments' payloads: each reading inherits the release status of the instrument it was read from (see that instrument's release)","cadence_expectation":null,"check_source":null}},{"id":"transitions","title":"Dated transitions per site","plain":"For every mapped site, the dated public records that mark its life \u2014 mapped, listed on the network registry, cranes filed beside it, an air permit, a discharge permit, a year of recorded emissions, the first month a grid-connected generator of 1 MW or more near it produced power \u2014 each naming its document and whether the date is the document's own, a bound the document sets (on or before) or the day WAPR first saw it.","count":5081,"count_note":"ids","counted_from_generated":"2026-11-02","holdings_on_disk":true,"payload":"transitions.json","surfaced":"data","last_run":null,"last_state":null,"age_h":null,"manifest":null,"manifest_filtered":false,"grain":"event (each transition dated by its document or by first sight, and says which)","yaml_ids":["transitions"],"data_dirs":["transitions"],"last_success":null,"last_success_basis":"not a collection: built from other instruments' payloads, with no run of its own","age_h_basis":"no run recorded","script":"build/transitions.py","scheduled":true,"cadence_h":null,"cadence_basis":"run on every scheduled run.sh run: judged by the daily rule (lamp_rule.degraded_after_h / blind_after_h)","cadence_kind":"every_scheduled_run","derived":true,"inherits_from":["facilities_osm","peeringdb_fac","faa_part77","va_deq_sites","discharge","eia_gen"],"inherits_basis":"one instrument per rung that holds events, in rung order: the rung's documents are that instrument's records, so this ledger is as old as the oldest of them","built":"2026-11-02","source":"WAPR's dated state changes per WAPR id, read from ids.json and the network-registry, permit, crane, emissions and generator instruments","source_basis":"instruments.yaml","license":"ODbL 1.0 \u2014 keyed to the OpenStreetMap register; each event's document keeps its own licence","license_basis":"instruments.yaml","first_collection":"2026-09-15","first_collection_basis":"instruments.yaml","meta_missing":false,"release":{"model":"derived","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"built from other instruments' payloads: each reading inherits the release status of the instrument it was read from (see that instrument's release)","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"built from other instruments' payloads: each reading inherits the release status of the instrument it was read from (see that instrument's release)","cadence_expectation":null,"check_source":null}},{"id":"grid_iron","title":"Grid iron beside each site","plain":"For each of the 4,796 mapped facilities: how many substations and power plants OpenStreetMap maps within 5 km of it, how many of those substations carry a voltage tag, and the strongest and the nearest tagged substation. The 6,501 substations and plants tagged 100 kV or more are also listed one by one, each beside its nearest facility.","count":4796,"count_note":"facilities","counted_from_generated":"2026-09-15T06:22:23Z","holdings_on_disk":true,"payload":"grid-iron.json","surfaced":"data","last_run":"2026-09-15T06:22:27Z","last_state":"derived","age_h":1149.1,"manifest":"data/grid_iron/manifest.jsonl","manifest_filtered":false,"grain":"event (one sweep of the cells the register occupies)","yaml_ids":["grid_iron"],"data_dirs":["grid_iron"],"last_success":"2026-09-15T06:22:27Z","last_success_basis":"the latest closing row with state 'derived' written by a run that queried Overpass (--replay-day rows are offline and excluded)","age_h_basis":"hours from last_success to generated","script":"collectors/grid_iron.py","scheduled":false,"cadence_h":null,"cadence_basis":"not scheduled: collectors/grid_iron.py is not in run.sh, so it runs only when started by hand. no interval: instruments.yaml calls it 'one sweep' with grain 'event (one sweep of the cells the register occupies)', and what makes it due is the register gaining a cell no sweep has ever queried, not time passing. Neither the collector nor the registry states a re-sweep interval, so none is invented here and it keeps the daily lamp rule","cadence_kind":"hand_run_undeclarable","last_offline_rederivation":"2026-09-21T19:28:11Z","run_rows_skipped":{"disowned_by_correction":1,"correction_rows":1,"offline_rederivation":1},"source":"OpenStreetMap power infrastructure (power=substation, power=plant) via the Overpass API, licensed ODbL 1.0","source_basis":"payload","license":"ODbL 1.0 \u2014 \u00a9 OpenStreetMap contributors","license_basis":"instruments.yaml","first_collection":"2026-09-15","first_collection_basis":"manifest","meta_missing":false,"release":{"model":"live_query","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a live store with no releases: its currency is the age of the fetch (last_success), not a release","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a live store with no releases: its currency is the age of the fetch (last_success), not a release","cadence_expectation":null,"check_source":null}},{"id":"water_quality","title":"Water quality near facilities (US)","plain":"Samples that state agencies and the US Geological Survey filed from monitoring stations within 10 km of a mapped US facility, a reading marked unusual only against that station's own past in the same season \u2014 the condition of the water nearby, never a measure of what a building did.","count":9002,"count_note":"stations","counted_from_generated":"2026-11-01T09:21:17Z","holdings_on_disk":true,"payload":"water-quality.json","surfaced":"site","last_run":"2026-11-01T11:16:03Z","last_state":"derived","age_h":16.2,"manifest":"data/waterquality/manifest.jsonl","manifest_filtered":false,"grain":"sample (every sample since 2019 for a fixed characteristic set, per station)","yaml_ids":["water_quality"],"data_dirs":["waterquality"],"last_success":"2026-11-01T11:16:03Z","last_success_basis":"the latest closing row with state 'derived' written by a run that queried the Water Quality Portal (--cache-day rows are offline and excluded)","age_h_basis":"hours from last_success to generated","script":"collectors/waterquality.py","scheduled":false,"cadence_h":168,"cadence_basis":"not scheduled: collectors/waterquality.py is not in run.sh, so it runs weekly from tools/refresh_weekly.sh (com.wapr.weekly-refresh.plist, Sundays 01:30 local), outside the scheduled run. collectors/waterquality.py CADENCE_DAYS = 7: one collection queries every cell the register occupies against the Water Quality Portal with a courtesy pause on each and ran 02:22:43Z to 04:52:31Z on 2026-09-26 \u2014 two and a half hours a scheduled run would hold its deploy behind, so run.sh does not call it. Since 2026-10-28 it runs weekly from tools/refresh_weekly.sh, outside run.sh, and is aged against this declared interval: how old a collection may be before the instrument reads degraded and then blind, so a missed week is a reading rather than a silence","cadence_kind":"hand_run_declared","last_offline_rederivation":"2026-09-26T10:36:15Z","run_rows_skipped":{"disowned_by_correction":4,"correction_rows":1,"offline_rederivation":15},"source":"Water Quality Portal (waterqualitydata.us) \u2014 the joint EPA / USGS / NWQMC store of ambient water-quality samples filed by state agencies and USGS (surface-water samples, field measurements, and field replicates and duplicates of them; blanks, spikes and other quality-control checks, rejected results, other media and non-level statistics are excluded and counted)","source_basis":"payload","license":null,"license_basis":null,"first_collection":"2026-09-15","first_collection_basis":"manifest","meta_missing":true,"release":{"model":"live_query","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a live store with no releases: its currency is the age of the fetch (last_success), not a release","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a live store with no releases: its currency is the age of the fetch (last_success), not a release","cadence_expectation":null,"check_source":null}},{"id":"water_causes","title":"What else produces a water reading","plain":"For each characteristic measured in the water, the causes the US Geological Survey's own pages name for a reading like it \u2014 a term is kept only if the cited page contains it. WAPR does not decide which cause applies at any station.","count":7,"count_note":"characteristics","counted_from_generated":"2026-09-26T10:36:41Z","holdings_on_disk":true,"payload":"water-causes.json","surfaced":"data","last_run":null,"last_state":null,"age_h":null,"manifest":null,"manifest_filtered":false,"grain":"static reference (each term checked against the page it cites when built)","yaml_ids":["water_causes"],"data_dirs":[],"last_success":null,"last_success_basis":"not stated: build/water_causes.py writes no manifest, so nothing here records a completed run. It fetches the USGS page each cause term cites and keeps the term only where that page's article text contains it, and water-causes.json carries the verification itself: every kept term with the sentence it was found in, every term dropped, and the article's sha256","age_h_basis":"no run recorded","script":"build/water_causes.py","scheduled":false,"cadence_h":null,"cadence_basis":"not scheduled: build/water_causes.py is not in run.sh, so it runs only when started by hand. no interval: a static reference, not a feed \u2014 every cause term is verified against the USGS page it cites at build time, and the set changes when a characteristic is added or a cited page is re-verified, not on a clock. Nothing states how often those pages should be re-read","cadence_kind":"hand_run_undeclarable","source":"US Geological Survey Water Science School (public domain), one page per characteristic","source_basis":"payload","license":"USGS public domain","license_basis":"instruments.yaml","first_collection":"2026-09-15","first_collection_basis":"instruments.yaml","meta_missing":false,"release":{"model":"wapr_record","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"WAPR's own record, not a publisher's release","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"WAPR's own record, not a publisher's release","cadence_expectation":null,"check_source":null}},{"id":"lifecycle","title":"Proposed, under construction and gone","plain":"Data centres OpenStreetMap's mappers have tagged as proposed, under construction, disused or gone \u2014 kept apart from the register of existing buildings, so nothing here changes that count.","count":161,"count_note":"sites","counted_from_generated":"2026-11-01T11:16:10Z","holdings_on_disk":true,"payload":"lifecycle.json","surfaced":"data","last_run":"2026-11-01T11:16:10Z","last_state":"ok","age_h":16.2,"manifest":"data/lifecycle/manifest.jsonl","manifest_filtered":false,"grain":"weekly (rebuilt with the register by tools/refresh_weekly.sh)","yaml_ids":["lifecycle"],"data_dirs":["osm-derived","lifecycle"],"last_success":"2026-11-01T11:16:10Z","last_success_basis":"the latest row with state 'ok' (build/lifecycle.py rebuilt the layer from the re-cut extracts)","age_h_basis":"hours from last_success to generated","script":"build/lifecycle.py","scheduled":false,"cadence_h":168,"cadence_basis":"not scheduled: build/lifecycle.py is not in run.sh, so it runs weekly from tools/refresh_weekly.sh (com.wapr.weekly-refresh.plist, Sundays 01:30 local), outside the scheduled run. build/lifecycle.py CADENCE_DAYS = 7: rebuilt weekly from the re-cut Geofabrik extracts by tools/refresh_weekly.sh (in a week whose register rebuild was put back, from extracts newer than the register it flags rows against); run.sh does not call it, so this interval is how old the layer may be before it reads degraded and then blind","cadence_kind":"hand_run_declared","source":"OpenStreetMap via Geofabrik continent extracts, osmium tags-filter","source_basis":"payload","license":"ODbL 1.0 \u2014 \u00a9 OpenStreetMap contributors","license_basis":"payload","first_collection":"2026-10-28","first_collection_basis":"manifest","first_collection_declared":"2026-09-17","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"no release check implemented for lifecycle yet; Geofabrik's <region>-updates/state.txt for each extract it reads, against the extracts' own stamps (OpenStreetMap is edited continuously)","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"no release check implemented for lifecycle yet; Geofabrik's <region>-updates/state.txt for each extract it reads, against the extracts' own stamps (OpenStreetMap is edited continuously)","cadence_expectation":null,"check_source":null}},{"id":"prime_register","title":"Prime-power register","plain":"Power plants built for data-centre load, one row per project, each with its evidence and how it was verified. The board counts a project only where a permit, a regulator's docket, a securities filing or a regulated exchange release carries the figure.","count":18,"count_note":"projects","counted_from_generated":"2026-09-14","holdings_on_disk":true,"payload":null,"surfaced":"site","last_run":null,"last_state":null,"age_h":null,"manifest":null,"manifest_filtered":false,"grain":"event (hand-verified register edits)","yaml_ids":["prime_register"],"data_dirs":["prime"],"last_success":null,"last_success_basis":"not stated: no manifest records its runs (a hand-kept register, or read live and never archived)","age_h_basis":"no run recorded","script":null,"scheduled":false,"cadence_h":null,"cadence_basis":"not scheduled: no collector script, so no run.sh run can produce it. no interval: a hand-kept register (data/prime/register.json), not a collection. A row is added when a primary document is found and verified, so nothing here becomes due after a period; what a reader judges is each row's own evidence and verification level, which the register carries","cadence_kind":"hand_run_undeclarable","source":"hand-kept register of generation projects built for data-centre load, each row carrying its evidence and a verification level; documents archived under data/prime/primary","source_basis":"instruments.yaml","license":"facts from public documents; each row carries its evidence","license_basis":"instruments.yaml","first_collection":"2026-09-14","first_collection_basis":"instruments.yaml","meta_missing":false,"release":{"model":"wapr_record","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"WAPR's own record, not a publisher's release","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"WAPR's own record, not a publisher's release","cadence_expectation":null,"check_source":null}},{"id":"crw_reef_stations","title":"Coral reef heat stress","plain":"Ocean heat stress at monitored coral reefs, read from NOAA Coral Reef Watch through WAPR's proxy when the Explorer asks, cached for up to an hour at the edge and up to an hour in the browser \u2014 what the ocean is doing, never what a data centre did to it. The readings are not archived; the holdings are the station list.","count":20,"count_note":"reef stations, read live","counted_from_generated":null,"holdings_on_disk":true,"payload":"reefs.json","surfaced":"site","last_run":null,"last_state":null,"age_h":null,"manifest":null,"manifest_filtered":false,"grain":"day","yaml_ids":["crw_reef_stations"],"data_dirs":[],"last_success":null,"last_success_basis":"not stated: no manifest records its runs (a hand-kept register, or read live and never archived)","age_h_basis":"no run recorded","script":null,"scheduled":false,"cadence_h":null,"cadence_basis":"not scheduled: no collector script, so no run.sh run can produce it. no interval: read live through the worker proxy when a visitor asks for a station and never archived, so WAPR runs no collection that could be due. Its currency is the edge and browser cache the payload states, not a WAPR run","cadence_kind":"hand_run_undeclarable","source":"NOAA Coral Reef Watch, via /api/crw/<station>","source_basis":"payload","license":"NOAA open","license_basis":"instruments.yaml","archived":false,"first_collection":null,"first_collection_basis":null,"first_collection_declared":"2026-09-12","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","cadence_expectation":null,"check_source":null}},{"id":"news_aggregator","title":"News strip","plain":"Headlines from public feeds that match data-centre and power keywords, shown on the board with publisher, tier, date and link and never rewritten. Nothing is archived: each feed is cached at the edge for up to 30 minutes and the assembled strip for up to 15 minutes in the browser.","count":null,"count_note":null,"counted_from_generated":null,"holdings_on_disk":null,"payload":null,"surfaced":"site","last_run":null,"last_state":null,"age_h":null,"manifest":null,"manifest_filtered":false,"grain":"event (headlines as the feeds carry them; nothing archived)","yaml_ids":["news_aggregator"],"data_dirs":[],"last_success":null,"last_success_basis":"not stated: no manifest records its runs (a hand-kept register, or read live and never archived)","age_h_basis":"no run recorded","script":null,"scheduled":false,"cadence_h":null,"cadence_basis":"not scheduled: no collector script, so no run.sh run can produce it. no interval: nine feeds read at the edge when the board is served and never archived, so there is no WAPR collection to be due","cadence_kind":"hand_run_undeclarable","source":"9 feeds (SEC, EIA, Microsoft, Google Cloud, Meta, DCD, Utility Dive, Google News x2)","source_basis":"instruments.yaml","license":"RSS titles verbatim with publisher+tier+link","license_basis":"instruments.yaml","archived":false,"first_collection":null,"first_collection_basis":null,"first_collection_declared":"2026-09-14","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","cadence_expectation":null,"check_source":null}},{"id":"usgs_quakes","title":"Earthquakes","plain":"Earthquakes of magnitude 4.5 and above from the past seven days, fetched from the USGS feed by the Explorer in the visitor's browser \u2014 exposure context only. Nothing is archived.","count":null,"count_note":null,"counted_from_generated":null,"holdings_on_disk":null,"payload":null,"surfaced":"site","last_run":null,"last_state":null,"age_h":null,"manifest":null,"manifest_filtered":false,"grain":"event","yaml_ids":["usgs_quakes"],"data_dirs":[],"last_success":null,"last_success_basis":"not stated: no manifest records its runs (a hand-kept register, or read live and never archived)","age_h_basis":"no run recorded","script":null,"scheduled":false,"cadence_h":null,"cadence_basis":"not scheduled: no collector script, so no run.sh run can produce it. no interval: fetched by the Explorer in the visitor's browser and never archived, so there is no WAPR collection to be due","cadence_kind":"hand_run_undeclarable","source":"USGS M4.5+ 7-day GeoJSON (client-side, Explorer layer)","source_basis":"instruments.yaml","license":"USGS open","license_basis":"instruments.yaml","archived":false,"first_collection":null,"first_collection_basis":null,"first_collection_declared":"2026-09-13","meta_missing":false,"release":{"model":"continuous","vintage_field":null,"vintage_key":null,"vintage_examined":null,"latest_published":null,"latest_published_basis":null,"latest_published_checked":null,"latest_published_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","publisher_latest":null,"publisher_latest_as_of":null,"publisher_latest_as_of_meaning":null,"next_release":null,"next_release_null_reason":"a continuous feed: the vintage is the fetch window itself, so there is no release for it to be the latest of","cadence_expectation":null,"check_source":null}}]}