Repository navigation
Add Louisiana LIHEAP regular heating assistance - #10429
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 #10429 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 1 6 +5
Lines 15 124 +109
Branches 0 2 +2
==========================================
+ Hits 15 124 +109
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 Louisiana LIHEAP regular heating assistancePR #10429 (author: hua7450), head Path prefixes:
Sources read for this review:
SummaryWhat is right. The published FY2026 tables and rules are encoded correctly:
Scope. Louisiana runs two regular components on the same rules and matrix:
There are no critical findings and one should-address item:
There are also four suggestions:
Status.
Critical (must fix)None. Should addressS1. 17 of the 21 income-source entries, and the public-housing branch of eligibility, have no test that would fail if they were dropped
SuggestionsG1. Model the cooling award too, or say plainly that
G2. The body's "winter bills usually exceed the annual average" is backwards for Louisiana's all-electric households.
G3. Count disability-based benefit receipt toward the priority supplement.
G4. Record the plan-vs-guide income choices in
Verified correctValues against sources:
Hand-checked expectations (all 49 cases). All are 2026, with a size-1 limit of 30,618:
Batch checks:
Wiring and housekeeping:
Checklist results (LIHEAP batch):
Axiom line assessmentValid:
CI status29 pass, 3 skipping, 0 failed. Run 40032541588 tested head
Branch status
0 critical, 1 should and 4 suggestions are open at this head. Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
The tables check out: all 10 FFY2026 (and FFY2025) limits, the 8-cell matrix, the $100 supplement, the utility allowance, electricity counted in total energy cost, Social Security net of Part B, and the 110% floor from size 14. All 49 cases hand-check, and rulespec-us#1890 is valid. One should-address item: 17 of 21 income sources never take a positive counted value in a test, and the is_in_public_housing branch is unpinned. Four suggestions, including that cooling, LA's larger component, is out of scope and the body's 'winter bills exceed the average' claim runs backwards for all-electric homes. 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 la-liheap-wave1d # Conflicts: # policyengine_us/programs.yaml # source_conflicts/candidates.yaml
|
Thanks, David. Round 1 is in
The PR body and TheAxiomFoundation/rulespec-us#1890 now describe this head. They cover the disability group, the cooling award, the annual-bill wording, both candidate ids and 54 cases: I did not run the tests locally; CI passed every check at |
PR Review (round 2): Add Louisiana LIHEAP regular heating assistancePR #10429 (author: hua7450), head
The author replied item by item on 2026-10-29. The PR body and rulespec-us#1890 were both rewritten for this head. The PR still touches no partner test file. Path prefixes:
SummaryS1 is fixed. Every one of the 21 income-source entries and the public-housing branch of eligibility now has a test that fails if it is deleted:
All four suggestions are adopted:
New findings: no critical and one should-address item.
There are also two housekeeping suggestions:
Status:
Prior findings
New findingsCriticalNone. Should addressN1. The reported-SSI alternative and the
|
DTrim99
left a comment
There was a problem hiding this comment.
Requesting changes, round 2: 0 critical, 1 should. All round-1 items are fixed. New: the receives_ssi term and the is_ssi_disabled condition added by the G3 fix have no test (add a receives_ssi case, and pin or drop the condition). Branch note: AK #10341 merged, so the coverage line now needs AK + LA. Full report in the comment above.
Apply DTrim99's round 2 review: SSI receipt alone places a member in the priority group, a test for reported SSI receipt, and candidate code paths. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…p-wave1d # Conflicts: # policyengine_us/programs.yaml
PR Review (round 3): Add Louisiana LIHEAP regular heating assistancePR #10429 (author: hua7450), head
There is no new reply comment. The commit message, the PR body and rulespec-us#1890 describe the changes. The PR still touches no partner test file. Path prefixes:
SummaryN1 is fixed, using the option we preferred. The
Deleting either term fails a test. Both suggestions are adopted:
New findings: none critical, none should-address, and one housekeeping suggestion (R3-G1). Status:
Prior findings
New findingsCriticalNone. Should addressNone. SuggestionsR3-G1. Refresh the CI wording again (housekeeping).
VerifiedHand checks of every new or changed expectation (2026; the size-1 limit is floor(floor(98,137 × 0.6) × 0.52) = floor(58,882 × 0.52) = $30,618):
Hand-resolved merge block (
Guards:
Axiom line assessmentValid:
CI status35 pass, 0 failed, 0 pending. Run 40989070923 (
Branch status
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 3: 0 critical, 0 should. N1 is fixed (condition dropped; both SSI terms pinned). Full report in the comment above. Branch note: more LIHEAP states merged, so re-resolve the coverage line (main's line plus LA) before landing.
…p-wave1d # Conflicts: # policyengine_us/programs.yaml
Adds Louisiana LIHEAP regular heating assistance for FY2026, administered by the Louisiana Housing Corporation (LHC). The model counts citizens and qualified noncitizens in household size (undocumented members' income still counts), tests gross countable income against 60% of state median income with the federal 110% poverty floor, divides the household's total energy cost by its income to get an energy burden, and pays the FFY2026 matrix amount for that burden band and household size ($200 to $700), plus one $100 supplement when a counted member is 60 or older, disabled, or age five or younger. A member who receives Social Security disability benefits or SSI falls in the disability group, because the guide accepts proof of disability from the Social Security Administration and SSI goes only to people who are 65 or older, blind or disabled. Households with zero income receive the maximum for their size.
la_liheapis Louisiana's heating-season award. Louisiana also pays a separate summer cooling award from the same matrix, and the FY2026 plan gives cooling 45.5% of funds against 25% for heating. A household may receive one heating and one cooling award each program year, so its program-year regular assistance can be twicela_liheap. The cooling award is out of scope: the all-state LIHEAP implementation covers heating assistance only.Fixes #10419
Regulatory authority
Eligibility
defined_for = StateCode.LAla_liheap_household_sizesumsis_citizen_or_legal_immigrant; size 0 is ineligiblela_liheap_income_limitusesliheap_smi_limit, which reproduces all ten published rows; larger sizes follow the federal size factorshas_heating_expenseorheat_expense_included_in_rent;NONEis ineligible,UNSPECIFIEDonly with heat in rentreceives_housing_assistanceoris_in_public_housingis true. The HUD utility allowance is subtracted from its energy cost unless a counted member is 60 or older (the guide's "60 years or older", followed over plan 2.3's "over 60"), and it needs a positive energy costCountable income
is_in_k12_school)financial_assistance), for members 18 and older (the guide counts "any income of a household member age 18 and older")medicare_part_b_premium, floored at zero per persontanfBenefit
is_disabledis true, whensocial_security_disabilityis above zero, or when the member receives SSI (ssiabove zero or a reportedreceives_ssi). Guide 4.2 A says disability "can be proven through the Social Security Administration", and SSI goes only to people who are 65 or older, blind or disabled (42 U.S.C. 1382c(a)(1)(A)). Aged recipients already qualify by age, and every SSI recipient under 60 is blind or disabled, including those who keep SSI while working under section 1619(a). Receipt of veterans' benefits or workers' compensation does not by itself place a member in the group.Not modeled
hud_utility_allowancehas no Louisiana schedule and is zero unless supplied; a supplied allowance should cover the heating and cooling utilities onlyFFY2027: LHC has posted only a proposed FFY2027 plan (its matrix is unchanged); no adopted plan or income notice exists yet, so 2027 results are unverified estimates. Earlier years are unverified estimates through parameter backfilling.
The FY2026 plan's section 1.9 checks one-time lump sums and leaves commissions and cash gifts unchecked; the Service Delivery Guide, which governs case processing, counts only net gambling lump sums, counts commissions and regular contributions, and is followed.
source_conflicts/candidates.yamlrecords this choice asus-la:liheap-plan-income-checklistand the age-60 utility allowance exemption asus-la:liheap-utility-allowance-age; each entry lists the files that implement it.Microsimulation:
heating_typeand the per-fuel bills are not in current datasets; callers must supply them.Test plan
55 YAML cases in 5 files:
la_liheap.yaml17,la_liheap_energy_cost.yaml5,eligibility/la_liheap_eligible.yaml15,eligibility/la_liheap_income_limit.yaml5 andincome/la_liheap_countable_income.yaml13. CI passed the other 54 cases at the previous head,a85f9738ae.la_liheapCase 17, added after the second review, has a hand-derived expected value ($750) and was not run locally; CI has not yet run at the current head,57b8cfdc24. No earlier expected value changed;la_liheapCase 16 changed only in its comments.income limits at sizes 1, 4, 10 and 14, the 110% floor at sizes 13 and 14, and the exact-limit boundary;
countable income: minor and high-school earnings, a minor's Social Security and SSI counted while the minor's interest and dividends are not, Social Security net of Part B, net gambling, FITAP, SSI, regular contributions, excluded sources, undocumented members' income, and a distinct positive amount for every listed earned and unearned source of an adult (SSTB, farm and partnership income; military survivor annuities, reported unemployment, railroad, veterans, disability, survivor, workers' compensation, alimony, rental, strike, farm rent, estate, dividends and interest);
energy cost across fuels, the utility allowance with and without a 60-year-old, a negative energy cost;
every burden band edge, sizes 3 and 4, zero income, each priority group once, the supplement without
is_disabledfor a Social Security disability recipient, an SSI recipient, and a blind member whose SSI receipt is reported throughreceives_ssiwith no SSI amount, heat in rent, subsidized households, and a public housing tenant whose utility allowance exceeds the bill.YAML tests with expected values from the plan, matrix, notice and guide
ruff formatChangelog fragment in
changelog.d/CI passes
axiom: TheAxiomFoundation/rulespec-us#1890 queued
🤖 Generated with Claude Code