# Hourly ozone, all monitors of the 2020-2025 ozone Design Value Reports
1. Files: `hourly_o3_<year>_all-monitors.csv.gz`, 2020 to 2026 (2026 holds 1 January only, which the eight-hour periods of 31 December 2025 reach), plus the companion `daily_o3_all-monitors.json.gz`; SHA-256 of each in `MANIFEST-hourly.sha256`.
2. Content: every AirData hourly ozone (parameter 44201) row of every AQS site listed in Table 5 of EPA's four ozone Design Value Reports, 2020-2022 to 2023-2025 (4,929 site-periods), and of their combination sites; this is the filter, nothing else was dropped except rows with an empty measurement.
3. Source: cut from `hourly_44201_<year>.zip` as retrieved from https://aqs.epa.gov/aqsweb/airdata/ in July 2026; the parent-file SHA-256 values are in the package's `inputs/MANIFEST-inputs.sha256`. EPA regenerates those files, so a later download may differ.
4. Format: gzipped CSV, no header, six columns: site id (state+county+site, 9 digits), POC, date (local standard time, YYYY-MM-DD), hour (00-23, local standard time), sample measurement exactly as filed (decimal string), qualifier field as filed.
5. Units: parts per million (the only `Units of Measure` value present in the parent files for these rows).
6. Rows per year, from the extraction receipt (`results/gptref_item1.json`, `extraction_report`): 2020: 8,994,779 rows; 2021: 8,952,319 rows; 2022: 8,798,721 rows; 2023: 8,805,661 rows; 2024: 8,794,116 rows; 2025: 8,695,493 rows; 2026: 14,224 rows.
7. Companion daily file: the archived `Ozone 8-hour 2015` rows of `daily_44201_2020..2025.zip` for the same sites (2,278,336 rows: site, POC, date, event type, observation count, daily maximum), in the per-year layout the sweep script reads as `daily_o3_allsites.json`.
8. Use: to rerun the all-site sweep, copy these into the package's `work/sweep_scratch/` as `hourly_44201_<year>_filtered.csv.gz` and `daily_o3_allsites.json` (see the package README, "Full sweep"); the per-site extracts inside the package were cut from these files.
9. Generated 2026-09-27T15:41:36Z by the package builder; byte-identical copies of the extracts the sweep consumed.
