Repository navigation
Add Wisconsin WHEAP regular heating benefit - #10434
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # policyengine_us/programs.yaml
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #10434 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 1 8 +7
Lines 15 179 +164
Branches 0 3 +3
==========================================
+ Hits 15 179 +164
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
PR Review: Add Wisconsin WHEAP regular heating benefitPR #10434 (author: hua7450), head Path prefixes:
Sources read for this review:
SummaryWhat is right. The FFY2026 HE+ formula is encoded faithfully:
There are no critical findings and one should-address item:
There are also six suggestions:
Status.
Critical (must fix)None. Should addressS1. 15 of the 23 income-source entries, the unearned per-source floor and two branches have no test that would fail if they were dropped
SuggestionsG1. Count Wisconsin's state SSI supplement and Caretaker Supplement (checklist item 17), and correct Axiom interpretations 3 and 12.
G2. FFY2027 (unclaimed): the published PY27 manual ignores gambling winnings, and the FFY2027 plan raises the maximum.
G3. Record the agency-source choices in the backlog and at the code.
G4.
G5. Bedrooms understate the HE+ room count, which lowers the proxy for proxy-based households.
G6. Small fixes.
Verified correctValues against sources:
Income definition (manual 3.3 and Tables 3.4-3.6):
Household, eligibility and housing:
Hand-checked expectations (14, all match):
Case count. 7 + 14 + 6 + 10 + 9 + 9 + 1 = 56, as the body says. CI's per-file results match. Mutation check (beyond S1). Each of these has a case that would fail if it were removed:
Batch checks:
Axiom line assessmentValid:
CI status29 pass, 3 skipping, 0 failed. Run 40032591507 tested head
Branch status
0 critical, 1 should and 6 suggestions are open at this head. Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Requesting changes: 0 critical, 1 should (untested income sources and branches). Full report in the comment above.
Apply DTrim99's round 1 review: tests that pin every income source, the rule and documentation fixes, and source-conflict candidates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…into wi-liheap-wave1d # Conflicts: # policyengine_us/programs.yaml # source_conflicts/candidates.yaml
|
Thanks, David. Round 1 is in
The PR body and TheAxiomFoundation/rulespec-us#1895 now describe this head. I did not run the tests locally; CI passed every check at |
PR Review (round 2): Add Wisconsin WHEAP regular heating benefitPR #10434 (author: hua7450), head
The author answered each item on 2026-10-29. The PR still touches no partner test file. Path prefixes:
SummaryRound 1 is resolved.
There are no new critical or should-address findings. One housekeeping suggestion is open: tick the "CI passes" box. Status.
Prior findings
New findingsCritical (must fix)None. Should addressNone. SuggestionsN1. Tick the "CI passes" box. Run 40792580349 tested VerifiedHand-checked new and changed expectations (all match the head):
Other numbers in the new text:
Regressions and new branches:
Merge resolutions in
Main-side guards on the merged tree:
AxiomValid:
CI35 pass, 0 fail, 0 pending. Run 40792580349 tested head
Branch
0 critical, 0 should and 1 suggestion are open at this head. Verdict: APPROVE |
DTrim99
left a comment
There was a problem hiding this comment.
Approving round 2: 0 critical, 0 should. S1 is fixed and pinned, and the state SSI supplement is now counted. Full report in the comment above. Branch note: AK #10341 merged, so the coverage line needs AK + WI before landing.
…p-wave1d # Conflicts: # policyengine_us/programs.yaml
Adds Wisconsin's Home Energy Assistance Program (WHEAP) regular heating benefit for FFY2026, administered by the Department of Administration's Division of Energy, Housing and Community Resources. The model counts citizens, qualified noncitizens and noncitizens who receive Social Security in household size (ineligible members' income still counts), tests gross income against 60% of state median income with categorical eligibility and the federal 110% poverty floor, and computes the HE+ formula: a share of heating cost that falls from 70.2% at or below 60% of the poverty guideline to 17.6% at 215% or above. The heating cost is bounded by a heat proxy for the fuel, dwelling type and room count. Payments are truncated to whole dollars, capped at $2,580, and not issued below $30. The separate non-heating electric (public benefits) award, crisis assistance and weatherization are out of scope.
Fixes #10424
Regulatory authority
Eligibility
defined_for = StateCode.WIwi_wheap_household_sizecounts members who are citizens or qualified noncitizens (is_citizen_or_legal_immigrant) or who receive Social Security (social_security > 0), the manual's eligible noncitizens; size 0 is ineligibleliheap_smi_limit(floor of 60% of the four-person SMI, then of the size share) reproduces all 20 calculator rows; annual income stands in for the annualized one-month testssiorreceives_ssi(read month by month), by FoodShare when in the SNAP unit (is_snap_excluded_member, so refugees and five-year-bar residents outside SNAP are not covered), or by W-2 cash when a citizen or qualified noncitizen; passes the income test only. State supplement recipients qualify through SSI, whichwi_ssp_eligiblerequireshas_heating_expense, or heat included in rent without rental assistance or public housing; assisted housing with heat in rent is ineligibleheating_typeUNSPECIFIEDorNONEpays $0Countable income
employment_incomeof members 18 and older not in high school (is_in_k12_school)farm_rent_income) is entered as rental income type (R), which section 3.3.5 offsetswi_ssp_regular; SSI-E,wi_ssi_e, is not counted), the SSI Caretaker Supplement (wi_cts), pensions, military retirement, veterans benefits, workers' compensation, disability, alimony, child support received, strike benefits, General Relief, gambling winnings, trust income, gifts (financial_assistance), survivor benefits; each floored at zero per membermedicare_part_b_premium(Part C and D premiums have no input)tanfchild_support_expensedeductedTable 3.4 tells workers to "Enter the federal and state benefit as two separate SSI income lines. Do not count SSI-E income." and lists the "SSI Caretaker Supplement (C-Supp)". PR 10173 added both state amounts. A parent with SSI of $11,928, a state supplement of $1,072.40 and a Caretaker Supplement of $5,280 for two children, heating a three-bedroom house with $900 of natural gas, has countable income of $18,280.40 and receives $605; counting federal SSI alone would give $632.
Benefit
bedrooms, held between one and nine (HE+ accepts 1-9; a studio counts one room); a motel or camper counts one room.wi_wheap_dwelling_type(Single family, 2- to 4-unit building, Apartment or multi-unit building, Mobile home, Motel or camper/RV; default Single family). Kerosene, coal and other fuels use the wood-or-other row. Solar heat uses the electric row and its baseload, becauseheating_expensereads a grid-tied solar home's electric bill; manual 4.4.28.3 withholds a fuel record only when solar cells are the home's only source of electricity. A one-person single-family home with three bedrooms and a $1,500 electric bill has a heating cost of $600.Source choices
Four agency-document choices are recorded in
source_conflicts/candidates.yaml(eachfollows: gap-fill, ruled by the user):us-wi:liheap-categorical-benefit-incomeus-wi:liheap-general-relief-and-lump-sumsus-wi:liheap-maximum-benefitus-wi:liheap-proxy-cost-boundsNot modeled
FFY2027: the PY2027 manual and the final FFY2027 plan are posted, but no FFY2027 calculator, funding factor or proxy table is public, so 2027 and later results reuse the FFY2026 values as unverified estimates. Three FFY2027 changes are not encoded: PY2027 Table 3.6 ignores gambling winnings, FFY2027 plan item 2.6 raises the maximum to $2,784, and PY2027 Appendix E prints limits $1 above the model's at sizes 1, 5 and 6 ($39,864, $88,927 and $101,193). Earlier years are also unverified estimates through parameter backfilling.
Microsimulation:
heating_type, the heating bills andwi_wheap_dwelling_typeare not in current datasets; callers must supply them.Test plan
60 YAML cases in 7 files:
wi_wheap.yaml9,wi_wheap_household_size.yaml1,eligibility/wi_wheap_categorically_eligible.yaml8,eligibility/wi_wheap_eligible.yaml14,eligibility/wi_wheap_income_limit.yaml6,income/wi_wheap_countable_income.yaml12 andpayment/wi_wheap_heating_cost.yaml10. The four cases added in this round and the rewritten solar case were hand-derived and not run locally; CI validates them.income limits at sizes 0, 1, 4, 8 and 20, a mixed-status household, the exact-limit boundary and the size-20 federal floor at $132,164 (eligible) and $132,165 (ineligible);
categorical eligibility for FoodShare, all-SSI (computed and reported receipt), mixed, W-2, and FoodShare households with an undocumented or refugee member, and a W-2 household with an undocumented adult;
countable income: minors' and high-school students' wages and self-employment, household business netting with an SSTB loss, Social Security and Railroad Retirement net of Part B, the $120 interest threshold, withdrawals at 72 and 73, child support received and paid, ignored unemployment, gambling and W-2, every listed business, rental and unearned source with a distinct amount (including the state SSI line and the Caretaker Supplement), and a trust loss floored at zero;
heating cost inside, below and above the proxy bounds, heat in rent with and without a reported gas bill, electric baseload, motel rooms, the nine-room cap, kerosene, solar on the electric row, all five dwelling types;
benefit ratio floor and cap, the categorical limit substitution, truncation before the $30 minimum, a noncitizen with Temporary Protected Status who receives Social Security, alone and with a citizen spouse, a Milwaukee family end to end.
YAML tests with expected values from the manual, calculator and plan
ruff formatCI passes (program tests, registry and code-health checks)
Changelog fragment in
changelog.d/axiom: TheAxiomFoundation/rulespec-us#1895 queued
🤖 Generated with Claude Code