Skip to content

Add Arizona LIHEAP Standard benefit - #10293

Open
hua7450 wants to merge 5 commits into
mainfrom
az-liheap-wave1c
Open

hua7450 wants to merge 5 commits into
mainfrom
az-liheap-wave1c

Conversation

@hua7450

@hua7450 hua7450 commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Adds Arizona's LIHEAP Standard benefit for FY2026. Arizona pays one annual benefit toward all home energy bills, and the plan's heating and cooling components are funding shares of that benefit, so the model treats it as the regular benefit. It counts citizens and qualified noncitizens for household size, counts the gross income of members 18 and over plus Cash Assistance, tests it against the greater of 60% of state median income and 150% of the 2025 poverty guideline or admits SNAP and Cash Assistance households, requires an energy bill or utilities in rent, scores the Eligibility Worksheet's income, energy-burden and energy-need points and pays $160, $320, $480 or $640. In FY2026, a single 40-year-old earning $30,576 with an $1,800 electric bill receives $160: income at 90.8% of the $33,684 limit gives 1 point, a 5.9% energy burden gives 1 point, and 2 points fall in the $160 band.

Fixes #10290

Regulatory authority

Eligibility

Requirement Source How modeled
Arizona residence Policy page 4 defined_for = StateCode.AZ
At least one citizen or qualified noncitizen; only eligible members count toward size; every adult's income counts Policy pages 4 to 8 az_liheap_household_size adds is_citizen_or_legal_immigrant; a household with no counted member is ineligible
Gross income at or below the greater of 60% SMI and 150% FPG; Appendix A monthly table Policy page 8 and Appendix A (page 37); plan section 2.1 az_liheap_income_limit reproduces all twelve Appendix A cells ($2,807 to $9,518 a month) and the $687 increment above twelve persons, using the shared liheap_smi_limit helper for the SMI arm and fpg(..., year_lag=1) for the FPG arm with the published floor order
Categorical eligibility through DES Cash Assistance or SNAP Policy pages 7 to 8; plan question 1.4 az_liheap_categorically_eligible from az_tanf and snap receipt
Energy-related expense required; renters with utilities in rent qualify Policy page 6; plan page 9 az_liheap_energy_cost adds the seven bill inputs, or heat_expense_included_in_rent
Heating fuel Worksheet section 2 heating_type UNSPECIFIED pays nothing; NONE stays eligible because the benefit covers every home energy bill

Countable income

Item Source How modeled
Members 18 and over Policy page 9 E, both revisions az_liheap_countable_earned_income and az_liheap_countable_unearned_income count members aged 18 or older. Revision 15 counts the unearned income of members under 18; a dated boolean switches on March 23, 2026.
Earned income Policy page 9 Wages and net self-employment, farm and partnership or S corporation income, each floored at zero
Unearned income Policy page 9; plan section 1.9 Social Security (gross), SSI, pensions, retirement distributions, railroad retirement, veterans benefits, unemployment, strike benefits, employment disability benefits, workers' compensation, child support received, alimony, rental income, interest, ordinary dividends and general assistance
Cash Assistance Policy page 9 az_tanf added once per household
Excluded receipts Plan section 1.9 SNAP and housing assistance are not counted.
Railroad retirement, disability and workers' compensation Policy pages 4, 8 and 14; plan section 1.9 Railroad retirement counts as "retirement income" (section VI.A.6.e.ii.B) and plan 1.9 checks "Retirement / pension benefits". Employment disability benefits count because plan 1.9 checks "Insurance payments made directly to the insured". Workers' compensation counts through the Gross Income definition and "Consistent income received from other sources" (section VI.A.6.e.ii.D); plan 1.9 neither lists nor excludes it.

Benefit

  • Income points (worksheet section 1): 5 for income up to 20% of the limit, then 4, 3, 2 and 1 for each further 20%, with inclusive band tops and the ratio formed in float64 before the lookup.
  • Energy-burden points (worksheet section 2): 0 to 6 as energy cost over income rises through 5%, 10%, 15%, 20%, 25% and 30%, plus 2 for propane, wood or coal. A household with no income and a bill takes the top band; a household with no bill takes zero.
  • Energy-need points (worksheet section 3): one each for a member aged 60 or older, a disabled member (is_disabled, SSI paid on the basis of blindness or disability, or Social Security disability receipt), a veteran (is_veteran) and a child aged 6 or under.
  • Payment (worksheet section 4; plan section 2.6; policy pages 30 and 33 to 34): $160 for 1 to 4 points, $320 for 5 to 8, $480 for 9 to 12 and $640 for 13 or more. The bill does not cap the award. A categorically eligible household above the limit with zero points receives $160, reconciling the plan's $160 minimum with a worksheet whose first row starts at 1 point; this is a reconciliation, not an express rule.

Years covered

Model year Program year Guideline One-person annual limit
2026 FY2026 under revision 13 2025 $33,684
2027 Revision 15 (children's unearned income counted) with the FY2027 guideline vintage; unverified against a published FY2027 matrix 2026 $35,232

The registry entry records verified_years: "2026". Parameters are read at the period start, so model year 2026 applies revision 13 and model year 2027 applies revision 15.

Not modeled and source conflicts

  • Annual amounts stand for twelve times the policy's 30-day income snapshot.
  • The disability definition (policy page 4) treats "a recipient of benefits under Title II or XVI of the Social Security Act, or other State-administered disability benefits" as disabled. The model reads Title II and XVI as disability benefits: Social Security disability, and SSI paid on the basis of blindness or disability (is_blind or is_ssi_disabled). A retirement or survivor beneficiary, or an SSI recipient who qualifies by age alone, gets the point only with another disability flag.
  • Social Security is counted gross; the Medicare premium subtraction is deferred as in Kansas.
  • The subsidized-housing utility allowance exclusion, the Tribal LIHEAP first-apply rule, the bar on costs paid by another program, the SUAP $640 recertification maximum and the per-vendor $5 payment rule have no inputs and are not modeled.
  • Revision 16A, effective July 1, 2026, changes no eligibility, income or points rule. It updates the income limits for FY2027, which model year 2027 already reproduces ($2,936 to $9,805 a month, plus $710 per additional person), and moves the benefit matrix into Appendix B. The model's verified year stays FY2026.

Test plan

  • 13 YAML files with 117 cases under policyengine_us/tests/policy/baseline/gov/states/az/des/liheap/; expected values are hand computed from the policy, the worksheet and the DES examples in case comments. The suite was not run locally; CI runs it.
  • YAML tests whose expected values come from an external source (statute, official form or worksheet, official calculator)
  • make format
  • Changelog fragment in changelog.d/

axiom: TheAxiomFoundation/rulespec-us#1833 queued

🤖 Generated with Claude Code

hua7450 and others added 3 commits October 3, 2026 23:39
Encode Arizona's FY2026 Standard LIHEAP benefit from the DES LIHEAP
Policy (revision 13 effective August 25, 2025 and revision 15 effective
March 23, 2026), the $640-limit eligibility worksheet and the FY2026
state plan: household size of citizens and qualified noncitizens, gross
countable income of adults with the dated under-18 unearned income rule,
an income limit equal to the greater of 60 percent of state median income
and 150 percent of the prior-year poverty guideline reproduced from the
federal parameters, TANF or SNAP categorical eligibility, and the points
worksheet (income ratio, energy burden with portable fuel, energy need)
paying $160, $320, $480 or $640. Registers the program with
verified_years "2026". Crisis assistance, evaporative-cooling water and
weatherization are out of scope.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
liheap_smi_limit (PR 10019) floors the four-person 60% amount and then the
size-adjusted amount, the order Appendix A requires, so the formula keeps
only the monthly floor and the 150% FPG arm.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
hua7450 and others added 2 commits October 20, 2026 01:09
- Count railroad retirement, employment disability benefits and workers'
  compensation as unearned income.
- Disability need point: SSI counts only when paid on the basis of
  blindness or disability.
- Label the revision 15 child unearned income rule as an inference.
- References follow the repo convention for PDF pages; the $640 standard
  payment is on page 30.
- Tests: new income source, railroad and SSI need-point cases (117 total).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450
hua7450 marked this pull request as ready for review October 20, 2026 05:31
@codecov

codecov Bot commented Oct 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (909176a) to head (c12ed6d).
⚠️ Report is 546 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main    #10293    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            4        14    +10     
  Lines           76       217   +141     
  Branches         2         1     -1     
==========================================
+ Hits            76       217   +141     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Arizona LIHEAP Standard benefit

1 participant