Repository navigation
Conversation
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>
- 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>
…into az-liheap-wave1c
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #10293 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 4 14 +10
Lines 76 223 +147
Branches 2 2
==========================================
+ Hits 76 223 +147
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:
|
Read total_unemployment_compensation (main's code-health check rejects the reported-only input), and pin az_tanf to 0 in seven cases whose expected income assumes no Cash Assistance: with wages entered as employment_income, the TANF model sees no earnings and would otherwise pay these households. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add main's military_retirement_income (military retirement pay and survivor benefit payments) to Arizona's unearned income list as retirement income (policy section VI.A.6.e.ii.B). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # policyengine_us/programs.yaml
PR Review: Add Arizona LIHEAP Standard benefitPR #10293 (author: hua7450), head Path prefixes:
Sources read for this review:
SummaryWhat is right. The published FY2026 rules are encoded faithfully, and the tests are thorough:
There are no critical findings and five should-address items:
There are also six suggestions. They include take-up handling ( Status.
Critical (must fix)None. Should addressS1. Medicare premiums are not subtracted: Social Security counts gross, although the policy and plan both subtract the premium
S2. Rental losses offset wages and other income
S3. The policy references cite revision 13 pages on a URL that now serves revision 16A
S4. rulespec-us#1833 no longer matches the head
S5. The zero-cost energy-burden branch has no test
SuggestionsG1. Count TANF through the take-up-gated
G2. A heat-in-rent household with
G3. The subsidized-housing allowance test can use
G4. Two income sources are missing.
G5. FY2027 is already published, and the July 1 switch is undocumented.
G6. Small test and polish items.
Verified correctValues against sources:
Hand-checked expectations (15 cases). Annual limits are 33,684 (size 1), 44,052 (size 2) and 54,420 (size 3).
Batch checks:
Checklist results (LIHEAP batch):
Axiom line assessmentValid but stale:
CI status19 pass, 10 pending, 0 failed. Run 39635438247 tests merge commit
Branch status
0 critical, 5 should and 6 suggestions are open at this head. Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
The Appendix A limits, worksheet points and benefit bands reproduce exactly, and so does the published FY27 table. All 23 income sources are exercised. Five should-address items: (1) the Medicare premium isn't subtracted (Policy VII.A.1.c.ii.D; plan 1.9); (2) rental losses offset wages; (3) the policy-manual anchors cite revision-13 pages on a URL that now serves 16A; (4) rulespec-us#1833 is stale; (5) the zero-cost burden guard is unpinned. Six suggestions, including that the FY27 table is out. Full report in the comment above.
…anchors - Count Social Security net of the Medicare Part B premium (Policy VII.A.1.c.ii.D) - Floor unearned sources per source; add farm rent and gambling winnings - Read the take-up-gated tanf for income and categorical eligibility - Re-anchor policy references to revision 16A pages - Pin the zero-cost energy-burden guard Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Revision 16A VII.A.1.c.ii.D: "Expenses related to Medicare (such as premiums) should be subtracted when determining gross income." Count Social Security gross and subtract members' Part B premiums in az_liheap_countable_income. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks, David. The fixes are in 49fa4c2, 004ed27 merges main, and 406a5ef moves the Medicare deduction to household income. All 124 Arizona cases pass locally, as do the registry, source-conflict and unemployment-reader checks. Should address
Suggestions
|
PR Review (round 2): Add Arizona LIHEAP Standard benefitPR #10293 (author: hua7450). This round reviews head
Ziming replied to every finding on 2026-10-24. The PR body still ends Path prefixes, as in round 1: SummaryZiming fixed all five round-1 should items:
Of the six suggestions, three are taken (G1 There are no new critical or should findings, and two new suggestions:
Batch checks:
I hand-checked every new or changed expectation: 5 new cases, 4 cases with changed expectations, and the pin-only and rename-only edits. CI is 29/29 green at the head, and states-shard-4 passed all 124 Arizona cases. The branch is 34 commits behind Prior findings status
New findingsCritical (must fix)None. Should addressNone. SuggestionsG7. The Medicare note is not limited to Part B, and
G8. Two optional refinements.
VerifiedThe merge resolution (
Hand-checks of every new or changed expectation. All use 2026, the size-1 limit of $33,684 (12 × $2,807) and the premium 12 × $202.90 = $2,434.80. New cases:
Changed expectations:
Pin-only and rename-only edits:
Case count. 14 + 7 + 5 + 10 + 11 + 3 + 6 + 4 + 13 + 6 + 18 + 15 + 12 = 124, as the body says. CI's per-file results match file by file. New-code checks:
Checklist results (LIHEAP batch):
Federal 110% floor: never binds. The limits are unchanged from round 1, at about 1.36 times the floor. Axiom line assessmentValid:
CI status29 pass, 0 pending, 0 failed. Run 40046280214 ran on head
Branch status
0 critical, 0 should and 2 suggestions are open at this head. Verdict: APPROVE |
DTrim99
left a comment
There was a problem hiding this comment.
Round 2: all five should items are fixed. Part B premiums now come off gross income ($34k SS now gets $160), unearned sources are floored per person, the policy anchors are correct, rulespec-us#1833 matches the head, and the zero-cost guard is pinned. The hand-resolved programs.yaml merge is correct, and all 124 AZ cases pass. Two optional suggestions, including Part A premiums (same as VA G7). Full report in the comment above.
- Subtract Medicare Part A premiums with Part B (Policy VII.A.1.c.ii.D note)
- Count gambling winnings less gambling losses, floored at zero ("gambling profits")
- Move the registry entry after AR and keep the coverage line as on main;
PR 10303 adds AZ there
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks, David. e1fd459 takes G7 and G8(b):
All 124 cases pass locally. The commit also moves the registry entry next to AR and stops this PR from editing the LIHEAP coverage line. #10303 now adds IA, AZ and VA there, so the three PRs merge without conflicts, with #10303 last. TheAxiomFoundation/rulespec-us#1833 is updated to this head. |
PR Review (round 3): Add Arizona LIHEAP Standard benefitSummaryHead The changes
New findingShould 1: both new branches are unpinned. No test has a Part A premium or gambling losses, so removing either would pass every case. Per the LIHEAP batch mutation rule, unpinned new logic is should-address. Add two cases:
CI and branchAt review time, 6 checks passed and 16 were pending; let CI finish green, including the registry test. Merge before #10303, which re-adds AZ to the coverage line. Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Round 3: the Part A premium subtraction and the gambling profits (winnings less losses, floored per person, no double count) are both correct. One should-address item: neither new branch has a test, so add a Part A premium case and a gambling-loss pair. Let CI finish and merge before #10303. Full note in the comment above.
- Countable income Case 5: Part A and Part B premiums both come off household income - Countable unearned Case 14 and countable income Case 6: losses offset winnings only, floored at zero, and never reduce wages Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks, David. e010083 adds the three cases:
Each case fails if its branch is removed. All 127 cases pass locally. TheAxiomFoundation/rulespec-us#1833 and the body are updated to this head. |
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 and counts the gross income of members 18 and over plus Cash Assistance, with each source floored at zero and members' Medicare Part B premiums subtracted. It tests that income 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
defined_for = StateCode.AZaz_liheap_household_sizeaddsis_citizen_or_legal_immigrant; a household with no counted member is ineligibleaz_liheap_income_limitreproduces all twelve FY2026 Appendix A cells ($2,807 to $9,518 a month) and the $687 increment above twelve persons, using the sharedliheap_smi_limithelper for the SMI arm andfpg(..., year_lag=1)for the FPG arm with the published floor orderaz_liheap_categorically_eligiblefrom receipt ofsnaportanf; both are take-up gated, andtanfincludes Arizona Cash Assistanceaz_liheap_energy_costadds the seven bill inputs, orheat_expense_included_in_rentheating_typeUNSPECIFIED pays nothing; NONE stays eligible because the benefit covers every home energy billCountable income
az_liheap_countable_earned_incomeandaz_liheap_countable_unearned_incomecount members aged 18 or older. Revision 15, effective March 23, 2026, narrowed the exclusion to the earned income of members under 18, and revision 16A keeps that wording. A dated boolean counts children's unearned income from March 23, 2026, an inference from the narrowed exclusion.az_liheap_countable_incomesubtracts the sum of members'medicare_part_a_premiumandmedicare_part_b_premiumfrom household gross income and floors the result at zero, so a premium comes off household income whatever the member's income source. Each premium is zero for a person not enrolled in Medicare and excludes any share a Medicare Savings Program pays; the Part A premium is also zero for premium-free Part A, which about 99% of enrollees have. A 67-year-old with $34,000 of Social Security pays the 2026 standard premium of $2,434.80 (12 × $202.90) and counts $31,565.20, under the $33,684 limit. Income at 93.7% of the limit gives 1 point, a 5.7% burden on an $1,800 electric bill gives 1 point and the elderly point makes 3, so the household receives $160; without the deduction, its income would be over the limit. A 67-year-old with a $24,000 pension and no Social Security counts $21,565.20.tanf, added once per householdgambling_winningslessgambling_losses, floored at zero, counts; losses offset winnings but no other income. Plan 1.9 leaves one-time lump sums such as "winnings from lotteries" unchecked; the inputs do not separate one-time winnings, so all profits count.Benefit
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.Years covered
The registry entry records
verified_years: "2026". To keep the three wave 1C PRs from editing the same line, #10303 adds IA, AZ and VA to the LIHEAP coverage line, so it merges last. Parameters are read at the period start, so model year 2026 applies revision 13 and model year 2027 applies the under-18 rule of revision 15, which revision 16A keeps. Revision 16A's Appendix A prints the FY2027 limits ($2,936 to $9,805 a month, plus $710 per additional person), and the model reproduces every cell for period 2027 from the FY2027 state median income and the 2026 guideline; integration Case 6 checks the two-person limit. Revision 16A applies the new limits from its July 1, 2026 effective date, while model year 2026 uses the FY2026 limits all year under the annual convention.Not modeled and source conflicts
is_blindoris_ssi_disabled). A retirement or survivor beneficiary, or an SSI recipient who qualifies by age alone, gets the point only with another disability flag.Test plan
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. All 127 cases pass locally on the head, as do the registry and code-health tests.az_liheap.yamlCase 14), the rental-loss floor (countable unearned Case 12: $36,000 of wages and a $6,000 rental loss leave the household over the limit, so it receives $0), farm rent and gambling winnings (countable unearned Case 13), military retirement and survivor pay (Cases 10 and 11) and the zero-cost burden rule (energy burden Case 18).make formatchangelog.d/axiom: TheAxiomFoundation/rulespec-us#1833 queued
🤖 Generated with Claude Code