Skip to content
Merged
1 change: 1 addition & 0 deletions changelog.d/eitc-t25-irs-reconciliation.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The SOI Table 2.5 EITC child-split targets are now checked in CI against the real IRS rows. A fixture holds the 274 pinned-feed rows for TY2023 Publication 1304 Table 2.5 and the TY2024 filing-season EITC by AGI, verbatim. Tests check that each split's AGI bins tile AGI and add to its total row, that the four splits add to the all-returns total, and that the totals reconcile within 10% with IRS-published EITC: the TY2023 source rows with TY2023 (more than 23 million returns, about $64 billion, 27/36/24/13% by children), and the compiled 2024 rows with TY2024 (about 24 million, $69.6 billion). Two Hypothesis properties on the real layout check that the compiled AGI bins and total rows both add to any filing-season EITC by AGI, and that each split's bins add to its total row under uniform growth. Before #1227 the compile halved the total rows (11.92 million returns and $34.52 billion), and these tests fail on that code.
7 changes: 6 additions & 1 deletion docs/us-chronicle-feed-repin.md
Original file line number Diff line number Diff line change
Expand Up @@ -373,9 +373,14 @@ uv run python tools/build_us_target_parity_manifest.py
```

```bash
uv run pytest packages/microcosm-build/tests/engine_free/shared/test_release_target_parity.py packages/microcosm-build/tests/engine_free/us/test_us_chronicle_feed.py
uv run pytest packages/microcosm-build/tests/engine_free/shared/test_release_target_parity.py packages/microcosm-build/tests/engine_free/us/test_us_chronicle_feed.py packages/microcosm-build/tests/engine_free/us/test_us_eitc_table_2_5_irs_reconciliation.py
```

`test_us_eitc_table_2_5_irs_reconciliation.py` runs its EITC checks in CI on a
fixture that copies the feed's 274 Table 2.5 and filing-season EITC rows byte
for byte. Its last test fails when a re-pin changes any of those rows, and that
test's docstring says how to refresh the fixture.

## What moved and what did not

Fact keys were re-derived between Chronicle generations (334 of 37,405
Expand Down
Loading
Loading