Repository navigation
Count the same cash payments in household and SPM income - #10573
Merged
Merged
Conversation
household_net_income and spm_unit_net_income keep separate lists, and the lists had drifted. SPM resources missed the Alaska Permanent Fund Dividend, New Jersey property tax relief, Massachusetts EAEDC, California CAPI and two Los Angeles County payments. Household benefits missed Alaska energy relief from 2024, New York's Drive Clean rebate and everything in household_local_benefits, which nothing added. Partly addresses #9919, which covers the other market income sources. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A low-burden case keeps other benefits out of the household total, so the expected value is the energy relief alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
marked this pull request as ready for review
November 1, 2026 23:53
Review found both reforms added it to their household lists alone, so SPM resources fell .34 for an Alaska couple in 2024. The cash guard now covers ak_energy_relief and ny_drive_clean_rebate on the SPM side, and the parity test builds fewer simulations. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The household list started in 2026 while the SPM list has no dates, so a value entered for an earlier year reached one total only. Drop the exception the parity test carried for it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Merging at 0d4a7c3 under the repo's merge gates: every check passed on this head, the PR is mergeable, and no review asks for changes. The only block was the required approving review on a PR opened from Max's account. Independent reviews, on Opus lanes because the Codex lanes are closed this week: earlier rounds asked for New Jersey's relief in every household block from 2023. 0d4a7c3 adds it, and the review of that head approved. Notes it left open all predate this PR: no household block for 2022, and the reform SPM copies (#10226). Local runs on all five reconciliation PRs merged together: 585 YAML and 142 pytest cases passed, the parity and list-integrity tests included. |
This was referenced Nov 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
household_net_incomeandspm_unit_net_incomekeep separate lists of what they add, and the lists have drifted. A cash payment could reach one total and miss the other, and one reached neither. This PR makes the lists agree and adds a test that fails on the next drift.Partly addresses #9919, which also covers
partnership_s_corp_income,farm_rent_incomeanddebt_relief. Those stay out of this PR and on an allow-list in the test.What changed
ak_permanent_fund_dividendmarket_incomenj_property_tax_relief(ANCHOR, Senior Freeze, Stay NJ)ak_energy_reliefca_capima_eaedcca_la_expectant_parent_payment,ca_la_infant_supplementco_denver_property_tax_reliefhousehold_local_benefitsny_drive_clean_rebatehousehold_benefitsnow addshousehold_local_benefits. The SPM list's four reform copies and the household list's two literal copies carry the same changes, and a test now guards them. That includesak_energy_relief, which the ECPA and BOOST SPM copies lacked. #10226 tracks replacing those copies.nj_property_tax_reliefin every block, because the SPM list has no dates. The variable has no formula before 2026, so this changes earlier years only for a value someone enters.ca_cvrpsets the precedent for counting one on both sides.acpandebbtwice, becausespm_unit_net_incomeadds them again, and they miss about 40 state SSI supplements pluswa_sfaandwa_rca. Both predate this PR, and Keep one spm_unit_benefits list so reforms that add a benefit stop dropping baseline programs #10226 is the place to fix them.Child care stays out of this PR: #9503 handles the household side, and #10569 handles the SPM side.
Differences that stay, on purpose
The test names each with its reason:
acpandebb:spm_unit_net_incomeadds them itself.ca_care,ca_fera,ca_la_ez_saveandca_riv_share_payment: bill discounts or credits, not payments.spm_unit_capped_housing_subsidyandspm_unit_energy_subsidy.Invariants
test_household_spm_resource_parity.pystates three:On main, tests 1 and 2 fail, and test 3 fails for Alaska and New Jersey.
Test cost: YAML pins single payments, but these three assert a rule across every listed payment, year and jurisdiction, and test 3 compares two implementations.
test_household_spm_resource_parity.pywithtest_aggregate_list_integrity.pytook 110.98s at 2.22 GB peak on local macOS under load. I trimmed the parity file from about 233 simulations to about 140, which took it from 157.34s to 107.74s alone. These aren't Linux CI numbers, and I have no Linux peak memory figure. Both files land in the "Python tests / Full Suite - Rest" shards.Alaska double count
Populace US carries reported dividends in
miscellaneous_income: 11.05% of Alaska's person records have it, against 0.80% in Washington and 0.69% in Oregon, with spikes at past payment amounts.household_market_incomealready counts those people twice, andspm_unit_market_incomewill too after this PR. The list fix stays correct, and PolicyEngine/microcosm#1443 tracks the data fix, which lands in a data release.Impact
These come from real 2026 microsimulations on Populace US (
populace-us-2024-spm-20260909), one state's records at a time, comparing 469ad12 with this branch. No other state pays these programs.Across these states, SPM resources rise $2.90B and household resources rise $150M.
A national run on the same file and year, at 469ad12 and at this branch, gives the same totals and these rates:
spm_unit_net_incomehousehold_net_incomenj_property_tax_relief, Massachusetts's isma_eaedc, and California's isca_capi.co_denver_property_tax_relief,ny_drive_clean_rebateand both Los Angeles County payments are $0 in these runs. Their lists still change, so a household that receives them counts them in both totals.miscellaneous_incometotals $295M in Alaska, and some of it is the reported dividend that the section above describes.axiom: n/a: household and SPM aggregate lists, no rule changes
🤖 Generated with Claude Code