Repository navigation
Conversation
Sum each state's regular LIHEAP payment in a new liheap variable, add an Illinois regular heating payment without crisis assistance, add a Michigan Home Heating Credit registry entry, and record each state's cooling treatment in its registry note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add regular_payments.yaml to the aggregate-list integrity test, which checks that each member exists, is state-gated and is not dropped between year blocks. Say that Rhode Island plans no regular cooling payment, since its FY2027 plan still allows a leftover-funds cooling grant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
921 KAR 4:116 Section 4(3)(a)2 pays the landlord for these renters. The income-point bands now use heating's guideline year, which reproduces the FY2026 workbook; the income limit keeps the 2026 guideline. Updates shared parameter descriptions, test comments and margins, and checks the national liheap total. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The national `liheap` total evaluates every state's formula over a mixed-state population, which no household test does. Two patterns on main raised errors there: - 26 formula files passed options=[ADD] to an entity call. Core's Microsimulation.calculate_add rejects the keyword an entity call passes. The option is redundant: a plain read already sums a monthly variable over the year through the same Core function. - The DC and Illinois payment formulas look up a matrix by an income level that is 0 for households outside the state. Add the floor Maryland and Kansas already use. Also: - Reword the North Dakota registry note: the state reserves an optional direct cooling payment, so its cooling component is not only equipment. - Add a `liheap` case with Texas, DC and Illinois households in one simulation. - Add a code-health check against options=[ADD] and options=[DIVIDE]. - Check that every state payment in the LIHEAP registry entry is in the list `liheap` sums. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
PolicyEngine/policyengine-core#647 fixes the cause in Core: it lets a Microsimulation accept the keyword an entity call passes with options=[ADD] or options=[DIVIDE]. Once that is released the option works again, so a check that bans it here would be wrong. The 26 formula files stay without the option, which was redundant and lets `liheap` run on today's Core. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…ogram prefix Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review: Add Kentucky LIHEAP regular cooling assistanceSummaryThe PR adds Kentucky's one-time electric cooling subsidy ( The amounts are right. The cooling Electric column (K) equals the heating Electricity column (E) in all 64 workbook rows, and every cell I checked follows min(size, 5) + income points + 6, at 16.66 a point rounded up, with 30% rounded up in subsidized housing. The fact sheet limits are exactly 150% of the 2026 guidelines. Listing heating and cooling together in the national total does not double count: Kentucky pays both in one program year (quoted below). The refactor leaves heating unchanged line by line, and no existing expectation changed. CI is 36/36 green at the head, and both new test files ran (6 and 4 cases passed). One should-fix: the new rent route has two terms, and no test pins either one on its own. The suggestions are disclosure and labelling points: the second FY2026 round, the cooling-cost input, UNSPECIFIED fuel for utilities-in-rent renters, the existing subsidized-points candidate, the band extension above $1,957, reference anchors, and a stale line in the axiom issue. Critical (must fix)None. Should address
Suggestions
Verified correct
Axiom line assessment
CI status
Branch statusThe branch is 15 commits ahead of main and 12 behind (cc48633). Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Requesting one change, two test cases. The amounts are right: the cooling Electric column equals the heating Electricity column in all 64 workbook rows, every cell I checked follows min(size, 5) + income points + 6 at 16.66 a point rounded up, and the fact-sheet limits are exactly 150% of the 2026 guidelines. Kentucky pays both the winter subsidy and the summer cooling subsidy in one program year, so the national total doesn't double count, and the refactor leaves heating unchanged line by line.
The rent route has two terms, ~tenant_pays_utilities and rent > 0, and only Case 4 reaches it, with both true. By my reading, dropping either term fails no case: a renter with positive rent who pays utilities separately, or a rent-free household with the flag false, would then get $184 with no electric bill. Two households, each expecting not eligible and $0, are in the report above (Should Address 1).
Seven optional suggestions follow; the most useful are labelling has_cooling_expense as a convention in the comment, and extending us-ky:liheap-subsidized-income-points to cooling. CI is green at 799669b167.
Addresses DTrim99's round-1 review; upstream main merged first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks, David. This push, head Should address
Suggestions
CI is running at |
Adds Kentucky's Summer Cooling Subsidy, a one-time electric benefit of $41 to $250 that equals the heating points with the fuel set to electric.
Fixes #10751
Builds on the national LIHEAP total from #10730, merged on 2026-11-12: this PR adds
ky_liheap_coolingtogov.hhs.liheap.regular_payments.What and why
The FY2026 plan says "Cooling assistance provides electric benefits only" (item 3.4), with a 150% FPG limit (3.1) and a $41 to $250 range (3.6). In the FY2026 heat-cool workbook the cooling Electric column equals the heating Electricity column in all 64 rows. The FFY 2026 Summer Cooling Subsidy fact sheet prints monthly limits of $1,995 for one person, plus $710 for each added person: 150% of the 2026 guidelines, while heating uses 2025. 921 KAR 4:116 Section 4(3)(a) pays the electric provider or the landlord.
cooling/fpg_year_lag.yaml(0 from FY2026): the cooling income limit uses the current year's guidelines, as the fact sheet prints. The income-point bands use heating's guideline (ky_liheap_fpg, lag 1), which reproduces every income range the FY2026 workbook prints beside the cooling column (for one person, 0-979, 979.01-1,305, 1,305.01-1,631 and 1,631.01-1,957).ky_liheap_cooling_eligible: monthly countable income at or below the cooling limit;has_cooling_expensewith a positive electricity bill, or electricity paid through the rent (fact sheet: "pay utility costs as an undesignated portion of rent"; 921 KAR 4:116 Section 4(3)(a)2 pays the landlord); and heating's citizenship and documentation rules.ky_liheap_cooling: the heating points amount with electric fuel points, ceil(points × 16.66), and the subsidized-housing share. No bill cap.heating_type, including NONE and UNSPECIFIED, can be paid, since the amount always uses the electric points.has_cooling_expenseis required with a positive electricity bill, except for renters whose utilities are included in rent. This is a PolicyEngine convention for cooling costs, not a Kentucky condition: the fact sheet asks for the current electric bill and sets no air-conditioning test. Renters whose utilities are in the rent are identified by the existingtenant_pays_utilitiesinput (false) with positiverent; no input is added.Test plan
Tests were not run locally. This PR now targets
main, so CI runs them.liheaptotal.us-ky:liheap-subsidized-income-pointstracks. This PR extends that candidate to cooling: it addsky_liheap_cooling.py, plan item 3.4, 921 KAR 4:116 Section 4(3)(c)2 and the workbook's cooling cells K52-K55 to the entry.make format(ruff)changelog.d/Not modeled
axiom: TheAxiomFoundation/rulespec-us#2187 queued
🤖 Generated with Claude Code