Skip to content

Apply the federal 110% poverty floor to state LIHEAP programs (DC, MA, MS, NJ, OR) - #10279

Merged
hua7450 merged 5 commits into
mainfrom
liheap-federal-fpg-floor
Oct 19, 2026
Merged

hua7450 merged 5 commits into
mainfrom
liheap-federal-fpg-floor

Conversation

@PavelMakarchuk

@PavelMakarchuk PavelMakarchuk commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

42 U.S.C. 8624(b)(2)(B) bars a state from excluding a household from LIHEAP solely on income if that income is less than 110% of the poverty level. This PR audits the 14 state LIHEAP programs on main and Riverside County (CA) against that floor. It applies the floor in five of the eight programs where the limit can fall below it: DC, Massachusetts, Mississippi, New Jersey and Oregon. Indiana, Maryland and Riverside County will come in a follow-up PR.

Each changed eligibility formula now uses (income <= limit) | (income < round(1.1 x FPG(size, lagged year), 2)). The floor uses the guidelines that HHS makes mandatory on October 1 of the program year (LIHEAP IM 2023-01, 2024-02, 2025-02 and 2026-01), so model year Y uses the January Y-1 guidelines.

DC, MS, NJ and OR each get an fpg_year_lag parameter, as in the GA and FL PRs. MA reuses ma_liheap_fpg, which already reads the guideline in force on October 1 of the preceding year.

Shared parameter gov.hhs.liheap.fpg_floor

#9968 (GA), #9969 (FL) and #9975 (OH) add the same file. This PR's copy has the #b_2_B anchor on the 42 U.S.C. 8624 reference (blob aeb7f8c5b0), so it is no longer identical to their copies (blob ae7cb29621). Their author will add the same anchor to those three copies. After that change the files are identical again, and any merge order is clean. Until then, the PR that merges second gets an add/add conflict on this file.

Audit of state LIHEAP programs on main

First household size at which the program's limit falls below 110% of the lagged FPG, by model year (checked to size 40):

Program Income limit Floor binds from (size, by year) Action
Mississippi LIHEAP 60% SMI 2026: 11; 2027: 11 Floor added
Indiana EAP 60% SMI 2025: 15; 2026: 16; 2027: 16 (size 16 in 2026: limit $104,543, floor $107,965) Follow-up PR
Oregon LIHEAP 60% SMI 2025: 19; 2026: 20; 2027: 20 Floor added
Riverside County (CA) LIHEAP 60% SMI 2025: 20; 2026: 21; 2027: 21 Follow-up PR
New Jersey LIHEAP 60% SMI (table to 12, then a fixed step) 2022: 30; 2023: 30; 2024: 28; 2025: 30; 2026: 32; 2027: 31 Floor added
Maryland MEAP 200% FPG below size 11; 60% SMI from size 11 2025: 29; 2026: 29; 2027: 29 Follow-up PR
Massachusetts LIHEAP 60% SMI 2022: 31; 2023: 31; 2024: 30; 2025: 32; 2026: 34; 2027: 34 Floor added
DC LIHEAP 60% SMI 2022: 34; 2023: 39; 2024: 36; never to size 40 from 2025 (lowest limit/floor ratio 1.047) Floor added
Illinois LIHEAP Greater of 60% SMI and 200% FPG Never (lowest ratio 1.86) Unchanged
Texas CEAP 150% FPG (and 60% SMI in FY2024) Never (lowest ratio 1.39) Unchanged
Kansas LIEAP 150% FPG Never (ratio 1.36) Unchanged
Kentucky LIHEAP 150% FPG Never (ratio 1.36) Unchanged
Nebraska LIHEAP 150% FPG Never (ratio 1.36) Unchanged
New York HEAP Greater of 60% SMI and 150% FPG Never (lowest ratio 1.36) Unchanged
North Carolina LIEAP 130% FPG (150% for the special population) Never (lowest ratio 1.18) Unchanged

Example rows for the changed states:

State Year, size Limit Floor
MS FY2026, 11 $75,593 $77,715
OR PY2026, 20 $128,441 $132,165
NJ FY2026, 32 $202,092 $204,765
MA FY2026, 34 $215,077.68 $216,865
DC FY2024, 36 $212,669.78 $213,928

Under the 45 CFR 96.85(b) size factors, each person above six adds only 3% of the four-person SMI. The poverty guideline adds about $5,500 per person. For this reason every SMI-only limit eventually falls below the floor, and low-SMI states reach it first. In Mississippi, the Rule 6.1 C limit and its printed 60% SMI table (manual PDF page 58) are below the floor at every printed size from 11 to 20, while FY2026 plan assurance (2) (page 44) repeats the floor.

Payment effects

  • Mississippi: households of 11 to 17 and of 19 that qualify through the floor fall into the last, open-ended income band of the matrix, so they receive that band's payment. At sizes 18 and 20 the matrix ends in a zero gap band, and sizes above 20 have no matrix, so these households still get $0. This is the existing coverage gap.
  • Oregon: the payment table stops at size 12, so households that qualify through the floor are eligible but receive $0, which is the existing coverage gap.
  • New Jersey: the top monthly income band is open-ended, so floor-eligible households receive the band 5 payment.
  • Massachusetts: the benefit level follows the income/FPG ratio, so floor-eligible households (ratio below 110%) receive the matching benefit level.
  • DC: floor-eligible households fall into income level 10 of the payment matrix.

Tests

For each changed state:

  • One cent below, exactly at, and above the floor.
  • A control household one person smaller, where the state limit still applies.
  • A lag test with income between the lagged floor and the floor from the current year's guidelines.
  • Floor boundaries in a second year, which show the one-year guideline shift.

ms_liheap.yaml Case 20 also checks the payment for a household that qualifies only through the floor. Size 11 with $77,000 income is eligible and receives the $650 propane payment from band 4, while $77,715 (at the floor) receives $0.

policyengine-core test on the DC, MA, MS, NJ and OR LIHEAP folders: 236 passed. The MA partner tests that read these variables (partners/analytics_coverage/.../ma) still pass without edits.

Also in this PR: NC Special Assistance 2027 test

#10225 (2027 COLA) replaced the projected 2027 SSA uprating index and SSI federal benefit rate with actual values. nc_sa.yaml Case 37 still expected the old projections, so the states-shard-1 suite failed on main. The case now expects a $1,448 rate (1,397 x 328.746 / 317.265, rounded), the $1,029 FBR and a $489 payment. G.S. 108A-42.1 applies the announced 3.6% COLA, which gives $1,447. That $1 difference from the index-based uprating is left for a separate fix.

Follow-up (not in this PR)

  • Apply the floor to Indiana EAP, Maryland MEAP and Riverside County LIHEAP.
  • A shared floor helper next to liheap_smi_limit to replace the copies of the floor expression.
  • One federal guideline-lag parameter beside fpg_floor in place of the per-state fpg_year_lag parameters.

🤖 Generated with Claude Code

PavelMakarchuk and others added 2 commits October 19, 2026 11:44
42 U.S.C. 8624(b)(2)(B) bars a state from excluding a household solely on
income below 110% of the poverty level. The 60% SMI limit falls below that
floor in Mississippi from household size 11 (FY2026-FY2027) and in Oregon
from size 19 (PY2025) or 20 (PY2026-PY2027). Both eligibility tests now
accept income below 110% of the poverty guideline that HHS makes mandatory
on October 1 of the program year (one-year lag).

Adds gov.hhs.liheap.fpg_floor, identical to the file in #9968 and #9969,
plus a poverty guideline year lag for each state.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 60% SMI limits fall below 110% of the poverty guideline only for very
large households: DC from size 34 to 39 in 2022-2024, MA from size 30 to 34
and NJ from size 28 to 32 in 2022-2027. The eligibility tests now accept
income below the floor, using the one-year guideline lag. MA reuses
ma_liheap_fpg, which already lags the guideline; DC and NJ get their own
fpg_year_lag parameters.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PavelMakarchuk PavelMakarchuk changed the title Apply the federal 110% poverty floor to Mississippi and Oregon LIHEAP Apply the federal 110% poverty floor to state LIHEAP programs (DC, MA, MS, NJ, OR) Oct 19, 2026
@PavelMakarchuk
PavelMakarchuk marked this pull request as ready for review October 19, 2026 15:57
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#10225 replaced the projected 2027 SSA uprating index with the 2026Q3
CPI-W average and set the 2027 SSI federal benefit rate to $1,029. The
NC Special Assistance 2027 case still expected the old projections
($1,436 rate, $1,021.83 FBR), so the states-shard-1 suite fails on main
and on every PR. The uprated rate is now $1,448 and the payment $489.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@hua7450 hua7450 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving: the floor formula, guideline years and payment paths check out for DC, MA, MS, NJ and OR. A few follow-ups:

  1. Audit coverage. main has 14 state LIHEAP programs plus Riverside County, not nine. The floor also binds in three that the audit table leaves out:

    • Indiana EAP (in_eap_eligible): from size 15 in 2025 and size 16 in 2026-27. For example, size 16 in 2026 has limit $104,543 vs floor $107,965.
    • Maryland MEAP (md_meap_eligible): from size 29.
    • Riverside County (ca_riv_liheap_eligible): from size 20 in 2025 and size 21 in 2026-27. California's own printed CSD tables go below the floor at sizes 20-25 (2025 Final Plan PDF page 180; 2026 Final Plan PDF page 184).

    NC, NY and TX never reach the floor. Could you correct the body, and either add IN and MD here or leave all three for a follow-up PR?

  2. fpg_floor.yaml is no longer identical to the copies in PRs 9968, 9969 and 9975. Commit 9cf11a5 added the #b_2_B anchor, so the "will not conflict" line in the body no longer holds. We will add the same anchor to the GA, FL and OH copies so either merge order is clean.

  3. The floor expression now appears in eight formulas, and the rounding already differs: this PR rounds to cents, while GA, FL and OH do not. Without rounding, 1.1 x 103,650 = 114,015.00000000001 in float64, so an income exactly at the floor counts as below it. We will switch GA, FL and OH to np.round(..., 2). A small shared helper next to liheap_smi_limit could replace all eight copies in a follow-up.

Smaller suggestions:

  • The MS comment could say that the manual's printed 60% SMI table (PDF page 58) itself falls below the floor at sizes 11-20, with Rule 6.1 C cited alongside the plan assurance.
  • The four new fpg_year_lag parameters each record the same federal HHS mandatory-use rule. One federal parameter beside fpg_floor could replace them, and the floor description could credit the statute rather than HHS.
  • The IM 2023-01 link (acf.hhs.gov) redirects to the acf.gov archive URL.
  • A few test comments show float-rounded limits, for example $215,077.68 vs $215,077.70.
  • No test checks the payment for a household that qualifies only through the floor.

The NC SA test update for the 2027 COLA is outside the LIHEAP scope, but it fixes a failure on main after PR 10225, so keeping it here is fine.

- Cite Rule 6.1 C, the printed 60% SMI table and FY2026 plan assurance (2)
  in the Mississippi floor comment; the printed table itself falls below
  the floor at sizes 11 to 20.
- Point the IM 2023-01 references to the acf.gov archive URL.
- Correct test comments that showed float32-rounded DC and MA limits.
- Add a Mississippi payment test for a household that qualifies only
  through the floor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PavelMakarchuk

Copy link
Copy Markdown
Collaborator Author

Thanks @hua7450. Changes in 9aca379 and the PR description:

  • Audit table: now covers all 14 state programs plus Riverside County, with the first binding size by year. I reproduced your numbers: Indiana EAP from size 15 (2025) and 16 (2026-27; size 16 in 2026 is $104,543 against $107,965), Maryland MEAP from size 29, and Riverside County from size 20 (2025) and 21 (2026-27). NC, NY and TX never bind.
  • fpg_floor.yaml: removed the "will not conflict" line. The body now says that this copy carries the #b_2_B anchor and that the GA, FL and OH copies need the same anchor.
  • Mississippi comment: now says that the Rule 6.1 C limit and its printed 60% SMI table (manual PDF pages 22 and 58) fall below the floor at sizes 11-20. It also cites FY2026 plan assurance (2) (page 44).
  • IM 2023-01: the DC and NJ lag parameters now use the acf.gov archive URL.
  • Test comments: corrected the float-rounded limits (DC 209,795.87 and 210,731.60; MA 215,077.68, 212,090.49 and 198,676.80).
  • Payment test: ms_liheap.yaml Case 20 computes eligibility and the payment for a size-11 household at $77,000. The household is above the limit and below the floor, so it qualifies and receives the $650 band-4 propane payment; at the floor it receives $0.

Indiana, Maryland and Riverside County will come in a follow-up PR. The shared floor helper and a single federal guideline-lag parameter will come in that PR too.

@hua7450
hua7450 merged commit 1661d71 into main Oct 19, 2026
27 checks passed
@hua7450
hua7450 deleted the liheap-federal-fpg-floor branch October 19, 2026 20:41
MaxGhenis added a commit that referenced this pull request Oct 19, 2026
#10288 sets North Carolina's 2027 Special Assistance rates to the approved COLA, and #10279 already updated main's Case 37. This PR is about SSI child allocations, so the North Carolina change belongs there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 19, 2026
Brings in main through 1661d71, including #10279's update to North Carolina SA Case 37.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 19, 2026
Brings in main through 1661d71, including #10279's update to North Carolina SA Case 37, which was the only CI failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 19, 2026
Brings in main through 1661d71, including #10279's update to North Carolina SA Case 37, which was the only CI failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 19, 2026
Brings in main through 1661d71, including #10279's update to North Carolina SA Case 37, which was the only CI failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 20, 2026
Brings in main through f198773 (#10185, #10133, #10279 and others) so CI runs on the combined tree. The two sides share no files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants