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>
Describes the lower income limit as the Level I limit, checks the national liheap total, and records the cooling benefit amounts in the source-conflict candidates. 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>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ogram prefix Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review: Add Georgia LIHEAP regular cooling assistanceReviewed at head SummaryThe core of the PR is right. Georgia pays a regular cooling benefit that is separate from heating, a household may receive both in one program year, and the amounts ($500 at Level I, $400 at Level II, one value for every fuel) match the printed COOLING BENEFIT column in the FY2025 and FY2026 matrices. The Level I cutoff is the same Step 1 range heating uses, the fiscal-year dating is right for a summer benefit, the income test was moved without changing any heating result, and the stale path in the existing floor candidate was updated. CI ran the three new test files green at this head. Four items should be addressed before merge, none critical:
Critical (must fix)None. Should address1.
2. Rent that includes all utilities: heating pays this renter, cooling does not, and the stated reason is inaccurate
3. The new candidate is
4. Mutation gap: the size clip in
Suggestions
Verified correct
Axiom line assessment
CI statusAt head Branch status7 commits behind main ( Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Requesting changes on four points; none is critical, and the core of the PR is right. Georgia pays a regular cooling benefit separate from heating, a household may get both in one program year, the $500 and $400 match the printed COOLING BENEFIT column for FY2025 and FY2026, and the income test moved without changing any heating result.
heating_typeUNSPECIFIED. The comment, the test and the description say it pays $0 "as in every state LIHEAP program", but Georgia's own heating variable pays an unspecified fuel (ga_liheap.yamlCase 14), and nothing in the cooling formula reads the fuel. Drop the term, or label it a PolicyEngine convention and remove the claim.- Rent that includes all utilities. Heating pays this renter through
ga_liheap_has_direct_payment_route, and the manual pays them for cooling too, but cooling gives $0. The comment's "no input identifies cooling costs included in rent" isn't accurate. Pay cooling on the same route, or say the gap is a decision and where it is recorded. - The new candidate is
state: ruledwith no ruling on record. Its note says "The user ruled on 2026-11-08", names no role and links nothing. Link the project lead's ruling, or set it tounreviewed. - The size clip in
ga_liheap_coolingis pinned by no test. It is the only guard against a missing key for a household above 16 people or a unit in another state. Two cases close it.
Details and worked households are in the report above. CI is green at 3a78498bb3 apart from three contributed-reform shards still running.
|
Ruling by the project lead, 2026-11-13: For Georgia's regular cooling benefit, follow the FY2026 benefit matrix (step 2, the cooling benefit: $500 at Level I and $400 at Level II for every main heating fuel) and FY2026 plan item 16.1, which removed the rule that households with a member aged 60 or older receive the highest benefit. PAMMS chapter 100 (page 5: $350 to $400, seniors at the $400 maximum) and the January 2022 manual (section 101.4: $350 to $500, seniors at the $500 maximum) are not followed for the amounts. Reason: the matrix and the plan are the dated, year-specific sources for FY2026; the PAMMS chapter has been in effect since October 2020. FY2027 has no posted matrix, so the FY2026 amounts carry forward. Example: a one-person Level I household with a member aged 70 receives $500 of cooling. |
Addresses DTrim99's round-1 review; upstream main merged first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
This push (head Should address
Suggestions
TheAxiomFoundation/rulespec-us#2180 now names this head. Its cooling-eligible output, companion test 8 and interpretations 4 and 7 are updated as you listed, and companion tests 11 to 13 cover the new cases. Tests were not run locally. CI is running at |
Adds Georgia's regular LIHEAP cooling benefit: $500 at income Level I and $400 at Level II.
Fixes #10745
Builds on the national LIHEAP total from #10730, merged on 2026-11-12: this PR adds
ga_liheap_coolingtogov.hhs.liheap.regular_payments.What and why
The FY2026 benefit matrix ("UPDATED W/FY 2026 INCOME GUIDELINES") prints a COOLING BENEFIT column of $500 at Level I and $400 at Level II, one value for every main heating fuel; the FY2025 matrix has the same column. The FY2026 plan sets the same 60% SMI limit for cooling (item 3.1) and a $400 to $500 range (item 3.6). Plan item 16.1 removes the rule that gave households with a member aged 60 or older the highest benefit. The DFCS manual (PAMMS chapter 100, p. 5) allows "a maximum of one heating benefit and one cooling benefit within the same program year". This PR follows the FY2026 matrix and plan over the older manual figures: the 2020 PAMMS chapter's $350 to $400 with seniors at $400, and the January 2022 manual's $350 to $500 with seniors at $500 (section 101.4).
ga_liheap_income_eligibleholds the income test, including the federal 110% poverty floor, moved unchanged fromga_liheap_eligibleso cooling can reuse it. Heating results are unchanged.ga_liheap_cooling_eligible: household size, the income test, and eitherhas_cooling_expenseor heating's direct payment route for unsubsidized rent that includes all utilities (ga_liheap_has_direct_payment_route). The manual's energy burden table pays this renter directly, and section 1300.2 pays costs "included in their rent and designated as a separate cost"; the rental agreement is assumed to designate the cost, as heating assumes the agreement is verified.ga_liheap_cooling: $500 when income is at or below the Level I cutoff (the shared parameter, now described as Level I payments), otherwise $400. New parametercooling/amount.yaml. No bill cap. FY2027 has no posted matrix, so the FY2026 amounts carry forward; the FY2027 plan prints the same $400 to $500 range (item 3.6).heating_type, including NONE and UNSPECIFIED, can be paid. Paying NONE reads that single cooling cell as covering homes with no heating.has_cooling_expenseis the cooling-cost input; the DHS 2026 release asks applicants for the "Most recent cooling bill or statement of service from their energy providers".Test plan
Tests were not run locally. This PR now targets
main, so CI runs them.liheaptotal.us-ga:liheap-cooling-benefit-amounts(ruled 2026-11-13 by the project lead: Add Georgia LIHEAP regular cooling assistance #10746 (comment)) records the choice of the FY2026 matrix and plan item 16.1 over PAMMS chapter 100, p. 5 ($350 to $400, seniors at the $400 maximum) and the January 2022 manual, section 101.4 ($350 to $500, seniors at $500).make format(ruff)changelog.d/Not modeled
axiom: TheAxiomFoundation/rulespec-us#2180 queued
🤖 Generated with Claude Code