Data audit (P1)
| file | SHA-256 | data rows | cols | range | missing | duplicates |
|---|---|---|---|---|---|---|
| data/UNRATE.csv | 621ff6fadf50910cb7a21ee20ba610c247cb043b29b4e05c4c1a72fadca2a06c | 945 | 2 (observation_date, UNRATE) | 1948-01-01 to 2026-09-01, monthly | 1 empty value: 2025-10-01 | 0 duplicate dates |
| data/GDPC1.csv | 1c6c6e9f59e383e20c849dd299175c7a307526c09abdc18f18da9754fc5b3343 | 319 | 2 (observation_date, GDPC1) | 1947Q1 to 2026Q3, quarterly | 0 | 0 |
| data/README.md | cb177a40e235651c0792ccb9a038f2b6bed53740c22ac902f9e6ae4e47856e3c | – | – | – | – | – |
SHA-256 of both CSVs match README.md and bundle.json. Row counts match TASK.md (945, 319).
Units: UNRATE percent (SA), range 2.5–14.8; GDPC1 billions chained 2017 $ SAAR, 2172–24611. Date spacing regular (no gaps).
Anomaly: UNRATE for Oct 2025 is empty (no release, likely the 2025 federal shutdown). It lies outside the 1959Q4–2019Q4 window → no effect; recorded in results.json data_issues.
Every quarter 1959Q4–2019Q4 has exactly 3 monthly UNRATE values (asserted in analysis.py).
Availability: the files are a current vintage (not real-time), which the task explicitly allows. Data after 2019Q4 and before 1959Q4 are read but discarded (exclusion ledger step 1).