Repository navigation
Add Georgia LIHEAP regular cooling assistance - #10746
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 |
PR Review (round 2): Add Georgia LIHEAP regular cooling assistanceReviewed at head No test was run locally for this round. Each claim below says whether it rests on reading the code and tests at the head, on a hand trace, or on the CI logs. For this round I re-opened the FY2027 plan (page 11), the January 2022 manual (pages 5, 70 and 89) and the DHS cooling release of 2026-04-06. SummaryAll four should items are fixed, and each fix is pinned by a test. Suggestions 1, 2, 3 and 5 were taken. The decline of suggestion 4 is correct: what I suggested would have broken the reference rule in CLAUDE.md. The fix commit only widens cooling eligibility, in the two ways round 1 asked for, so no household that was paid at round 1 loses its payment and no amount changes. All 36 CI checks pass at the head, and the selective-tests job ran the PR's three test files: 13 cases, all passed. The branch merges cleanly with current main and with each of the eight open sibling PRs. One new suggestion is left, about wording in the queued rulespec-us issue. Prior findings
Ruling record. The cited comment exists. It was posted on 2026-11-13 at 20:24 UTC, from the author's account, under the heading "Ruling by the project lead". Merged rulings for #10762, #10613 and #10379 use the same form, and main's register already cites them. It reads:
The ruling's figures match the sources. PAMMS page 5 reads "$350 and maximum of $400", the manual's page 5 reads "$350 and maximum of $500", and PAMMS chapter 100 prints "Effective Date: October 2020". New findingsCritical (must fix)None. Should addressNone. Suggestions
Verified
Axiom
It is dispatch-ready: module paths, corpus status, verbatim text, required outputs and companion tests. Suggestion 1 covers two wording points. CIAll 36 checks pass at BranchThe head is 54 commits behind main ( Since CI ran, main has added one The siblings #10730, #10732, #10734, #10736, #10738, #10740, #10742 and #10762 are on main, so the main merge covers them. Test merges against the current heads of the eight open siblings are all clean: AR #10744 Verdict: APPROVE |
DTrim99
left a comment
There was a problem hiding this comment.
Approving (round 2). All four round-1 items are fixed:
- The fuel term is dropped.
- Cooling now takes heating's direct-payment route, so rent that includes all utilities is covered.
- The candidate's note links the dated 2026-11-13 ruling.
- Cases 5 and 6 pin both ends of the size clip.
No regression: the new eligibility condition is a superset of round 1's, and the amounts are unchanged. CI is green at 0046a70a0a, and the branch merges cleanly with main and the eight open siblings. The one suggestion is small: rulespec-us#2180 interpretation 4 credits a ruling that has no record, and two lines still say CI hasn't passed.
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