Data audit (P1)
All SHA-256 match data/README.md / bundle.json (checked below). Row counts are data rows.
| file | sha256 | rows | cols | first | last | missing values | dup dates | gaps in monthly index |
|---|---|---|---|---|---|---|---|---|
| RSAFS_current.csv | 627d8bb386ac80f4aede3a9496b63040df584875fb766d455b08ebd84311468f | 417 | 2 | 1992-01-01 | 2026-09-01 | 0 | 0 | 0 |
| UMCSENT.csv | 3076277f9f21f4bd3dc77fd68add84d417e5cce23f3adb96dc70313b3ad2dd46 | 887 | 2 | 1952-11-01 | 2026-09-01 | 210 | 0 | 0 |
| first_release.csv | 1d1ae8b3cacf7799aaefc7e0a969b3886e7979c36fce02ccf77d7c79fb7343e4 | 28 | 5 | 2024-06-01 | 2026-09-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2025-10-31.csv | d4b4c909ed321fbf8021c385beb1512ac000009e22bb20bc27c791a248d33c60 | 1040 | 2 | 1939-01-01 | 2025-08-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2025-11-30.csv | a05ef7fc50cfc339207788f9d4205a619717bc44a335488d7790ae823bdb7b77 | 1041 | 2 | 1939-01-01 | 2025-09-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2025-12-31.csv | 829dae087af61916e87994220a3e5ebf5853fa43cc163b3798715603ec8bb031 | 1043 | 2 | 1939-01-01 | 2025-11-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2026-01-31.csv | 8fd01c5d2740e869458721a66b81bb2e247085e1e60cb93f3cb06bedf01885d7 | 1044 | 2 | 1939-01-01 | 2025-12-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2026-02-28.csv | 4a913e67ac5ffbb4d127f03f6f10ce0647998779629579617dabf1344d072db3 | 1045 | 2 | 1939-01-01 | 2026-01-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2026-03-31.csv | 919de86b07be90466e19844b54482ef8a3f6c8da7f9fe2a3ef3af0d02923c92e | 1046 | 2 | 1939-01-01 | 2026-02-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2026-04-30.csv | 06a8d663d9aaa61c6d5bda15d2893b10fd127b1d64fa16d47335341f62431c7a | 1047 | 2 | 1939-01-01 | 2026-03-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2026-05-31.csv | e2a152e874139acdebfc1715ffff9c1e5320f639f1443fff976b389724a5932d | 1048 | 2 | 1939-01-01 | 2026-04-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2026-06-30.csv | 19fbc6cd3547ffad1e22f32ac76f91758859804654b77622a4f42eac2d4e286a | 1049 | 2 | 1939-01-01 | 2026-05-01 | 0 | 0 | 0 |
| vintages/PAYEMS_vintage_2026-07-31.csv | 3a3a6603fcc31c6eb2ee3293143888ab3440bbe3a962565eb39711b92019df41 | 1050 | 2 | 1939-01-01 | 2026-06-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2025-10-31.csv | 3ecb0832a391e7261145af41a7a951f823df3a08d476162721022a0922d37e36 | 404 | 2 | 1992-01-01 | 2025-08-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2025-11-30.csv | 4a683d85374690f1e73d66c4f890156d0d32cd8b27d5d67b72582b9a0dd825a4 | 405 | 2 | 1992-01-01 | 2025-09-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2025-12-31.csv | 436df4b5509b1dfe61ea11b8f98dce27f012ff6b0255eb194eea564ad7e880dd | 406 | 2 | 1992-01-01 | 2025-10-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2026-01-31.csv | b92ab6a5c1dbdc5653e85c56fdb7dc0646f1fca7227ed6e64f1424e17446aa9e | 407 | 2 | 1992-01-01 | 2025-11-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2026-02-28.csv | 2af0a3aaeeba81efddb2613d326e3f96b5a1c88c41eb30ad384ab3cc4b289a77 | 408 | 2 | 1992-01-01 | 2025-12-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2026-03-31.csv | 0316fdf238d55d9f109b0be85e8c2d2eb00aee57016c0328d39405b349a8815f | 409 | 2 | 1992-01-01 | 2026-01-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2026-04-30.csv | 02dcc697a1db34753194974b1481dbd6a3ffcfe333864850e5ddd0e3202d2b8f | 411 | 2 | 1992-01-01 | 2026-03-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2026-05-31.csv | 8c3fe3530213589635ad6bb086f78ed613c459bf435c4558a5c51c597e19d87b | 412 | 2 | 1992-01-01 | 2026-04-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2026-06-30.csv | 2f103157f4a9b7a3c90c63af2033b9570d5e334205878714bbd35c8b304d7524 | 413 | 2 | 1992-01-01 | 2026-05-01 | 0 | 0 | 0 |
| vintages/RSAFS_vintage_2026-07-31.csv | 52c04a8fce2effa727f3ef267eaee04e13aef20f8aaabc982277d08fc5b8e5b2 | 414 | 2 | 1992-01-01 | 2026-06-01 | 0 | 0 | 0 |
Schema and units
- RSAFS vintages/current:
observation_date(YYYY-MM-01), level in millions of USD, SA. PAYEMS vintages: thousands of persons, SA. UMCSENT: index 1966Q1=100; 210 empty values, all before 1978 (quarterly survey era), none from 1978 on. first_release.csv: target_month, first_release_vintage, two levels, yoy_first_release (%).
Real-time design / anomalies
- last(V) per origin: 2025-10-31→2025-08 (2-month lag), 2025-11-30→2025-09, 2025-12-31→2025-10, 2026-01-31→2025-11, 2026-02-28→2025-12, 2026-03-31→2026-01 (2-month lag), 2026-04-30→2026-03 (two months added at once), 2026-05-31→2026-04, 2026-06-30→2026-05, 2026-07-31→2026-06. Hence target months for h=1: 2025-09…2026-02, 2026-04…2026-07 (2026-03 is never an h=1 target; 2026-02 is the h=1 target of origin 2026-03-31). All 20 targets exist in first_release.csv.
- PAYEMS vintage 2025-12-31 adds two months (2025-10 and 2025-11) at once; PAYEMS ends 0–1 month after RSAFS last(V) depending on origin (ragged edge).
- PAYEMS annual benchmark revision appears in the 2026-02-28 vintage (level shifts of ~ −800 thousand). Not used by my model.
- RSAFS annual revision visible in vintage 2026-07-31 (e.g. 2025-06 level 723033 → 720164). The current RSAFS file is on a much lower level (~ −4.4%, e.g. 2026-06: 768553 first vs 732898 current), i.e. a benchmark revision between the 2026-08-31 and 2026-09-30 vintages (first_release levels also jump from 763602 for 2026-07 to 737763 for 2026-08). This affects levels strongly but growth rates less; it matters for estimand (d) (revision of growth) and is why levels are never compared across vintages.
- First-release dates: 2025-09 first appears in the 2025-11-30 vintage; 2026-02 and 2026-03 both first appear in 2026-04-30 (publication disruption, consistent with README).
Availability decisions
- RSAFS_current.csv is read only in the revision block (estimand d), after all forecasts are made; no forecast function receives it.
- UMCSENT current vintage is admissible for months ≤ month(V) (not revised). My model does not use UMCSENT or PAYEMS (decision documented in log.md), so no availability issue arises from them; they are still read and audited.
- No input violates the rules as long as these restrictions are enforced in code.