# 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).