Skip to content

Commit 87c9627

Browse files
authored
Merge pull request #7172 from hua7450/hua7450/issue6779
Illinois Home Weatherization Assistance Program (IHWAP)
2 parents de66beb + cbad6cf commit 87c9627

14 files changed

Lines changed: 676 additions & 15 deletions

File tree

changelog_entry.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
- bump: minor
2+
changes:
3+
added:
4+
- Illinois Home Weatherization Assistance Program (IHWAP) eligibility.
5+
- Reusable SMI (State Median Income) function.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
description: The Department of Health and Human Services sets this threshold for when the additional person rate applies under the State Median Income program.
2+
3+
values:
4+
2021-10-01: 6
5+
6+
metadata:
7+
unit: person
8+
period: year
9+
label: HHS SMI additional person threshold
10+
reference:
11+
- title: State Median Income (SMI) by household size FFY 2022
12+
href: https://www.acf.hhs.gov/sites/default/files/documents/ocs/COMM_LIHEAP_IM03%20Attachment1%20SMITable_FY2022.pdf
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
description: Illinois grants automatic income eligibility under the Home Weatherization Assistance Program to households participating in one of these programs.
2+
values:
3+
2023-10-01:
4+
- il_liheap
5+
- ssi
6+
- il_tanf # 42 U.S.C. 6862(7)(B) → 42 U.S.C. 601 (Title IV SSA)
7+
- il_aabd # Comparable state program per 42 U.S.C. 6862(7)(B)
8+
- housing_assistance
9+
# Additional programs per IL DCEO/DOE WPN 22-5 (not yet modeled):
10+
# - Community Development Block Grant (CDBG)
11+
# - HOME Investment Partnerships Program
12+
# - Lead Hazard Control
13+
# - Public Housing
14+
# - HUD-VASH (Veterans Affairs Supportive Housing)
15+
# - Low-Income Housing Tax Credit (LIHTC)
16+
# - USDA Section 521 Rural Rental Assistance
17+
# - USDA Section 502 Direct Home Loan
18+
# - USDA Section 533 Housing Preservation Grants
19+
# - USDA Section 504 Home Repair Loans and Grants
20+
21+
metadata:
22+
unit: list
23+
period: year
24+
label: Illinois IHWAP categorically eligible programs
25+
reference:
26+
- title: 42 U.S.C. 6862(7) - Definition of low-income
27+
href: https://www.law.cornell.edu/uscode/text/42/6862#7
28+
- title: Illinois DCEO Home Weatherization Assistance Program
29+
href: https://dceo.illinois.gov/communityservices/homeweatherization.html
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
description: Illinois limits income to this share of the federal poverty guidelines under the Home Weatherization Assistance Program.
2+
values:
3+
2023-10-01: 2
4+
5+
metadata:
6+
period: year
7+
unit: /1
8+
label: Illinois IHWAP FPG limit
9+
reference:
10+
- title: 42 U.S.C. 6862(7) - Definition of low-income
11+
href: https://www.law.cornell.edu/uscode/text/42/6862#7
12+
- title: Illinois DCEO Home Weatherization Assistance Program
13+
href: https://dceo.illinois.gov/communityservices/homeweatherization.html
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
description: Illinois applies the 60% State Median Income threshold only to households above this size under the Home Weatherization Assistance Program.
2+
values:
3+
2023-10-01: 7
4+
5+
metadata:
6+
period: year
7+
unit: person
8+
label: Illinois IHWAP SMI threshold household size
9+
reference:
10+
- title: Illinois DCEO IHWAP Income Eligibility Guidelines PY2026
11+
href: https://dceo.illinois.gov/communityservices/homeweatherization.html
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Unit tests for il_ihwap_categorically_eligible
2+
# Categorical eligibility: Receiving IL LIHEAP, SSI, IL TANF, IL AABD, or housing_assistance
3+
4+
- name: Case 1, IL LIHEAP recipient is categorically eligible.
5+
period: 2026
6+
input:
7+
state_code: IL
8+
il_liheap: 500
9+
output:
10+
il_ihwap_categorically_eligible: true
11+
12+
- name: Case 2, SSI recipient is categorically eligible.
13+
period: 2026
14+
input:
15+
state_code: IL
16+
ssi: 10_000
17+
output:
18+
il_ihwap_categorically_eligible: true
19+
20+
- name: Case 3, IL TANF recipient is categorically eligible.
21+
period: 2026
22+
input:
23+
state_code: IL
24+
il_tanf: 3_600
25+
output:
26+
il_ihwap_categorically_eligible: true
27+
28+
- name: Case 4, IL AABD recipient is categorically eligible.
29+
period: 2026
30+
input:
31+
state_code: IL
32+
il_aabd: 2_400
33+
output:
34+
il_ihwap_categorically_eligible: true
35+
36+
- name: Case 5, housing assistance recipient is categorically eligible.
37+
period: 2026
38+
input:
39+
state_code: IL
40+
housing_assistance: 6_000
41+
output:
42+
il_ihwap_categorically_eligible: true
43+
44+
- name: Case 6, no program benefits is not categorically eligible.
45+
period: 2026
46+
input:
47+
state_code: IL
48+
il_liheap: 0
49+
ssi: 0
50+
il_tanf: 0
51+
il_aabd: 0
52+
housing_assistance: 0
53+
output:
54+
il_ihwap_categorically_eligible: false
55+
56+
- name: Case 7, multiple qualifying programs is categorically eligible.
57+
period: 2026
58+
input:
59+
state_code: IL
60+
ssi: 9_000
61+
il_liheap: 300
62+
output:
63+
il_ihwap_categorically_eligible: true
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
# Unit tests for il_ihwap_income_eligible
2+
# Income eligibility:
3+
# Sizes 1-7: income <= 200% FPL
4+
# Sizes 8+: income <= max(200% FPL, 60% SMI)
5+
# Note: IL IHWAP PY N uses FPL from (N-1)-01-01 and SMI from (N-1)-10-01
6+
# period 2026 = PY2026 = FPL 2025-01-01 + SMI 2025-10-01
7+
8+
- name: Case 1, single person below 200% FPL is eligible.
9+
period: 2026
10+
input:
11+
state_code: IL
12+
spm_unit_size: 1
13+
irs_gross_income: 25_000
14+
# PY2026 threshold for 1 person (size <= 7, FPL only):
15+
# 200% FPL = $15,650 × 2 = $31,300
16+
# $25,000 < $31,300 = eligible
17+
output:
18+
il_ihwap_hhs_smi: 66_632.8
19+
il_ihwap_income_eligible: true
20+
21+
- name: Case 2, single person above 200% FPL is not eligible.
22+
period: 2026
23+
input:
24+
state_code: IL
25+
spm_unit_size: 1
26+
irs_gross_income: 35_000
27+
# PY2026 threshold for 1 person (size <= 7, FPL only):
28+
# 200% FPL = $31,300
29+
# $35,000 > $31,300 = not eligible
30+
output:
31+
il_ihwap_hhs_smi: 66_632.8
32+
il_ihwap_income_eligible: false
33+
34+
- name: Case 3, single person at exact 200% FPL threshold is eligible.
35+
period: 2026
36+
input:
37+
state_code: IL
38+
spm_unit_size: 1
39+
irs_gross_income: 31_300
40+
# 200% FPL = $31,300
41+
# $31,300 <= $31,300 = eligible
42+
output:
43+
il_ihwap_hhs_smi: 66_632.8
44+
il_ihwap_income_eligible: true
45+
46+
- name: Case 4, family of 4 below threshold is eligible.
47+
period: 2026
48+
input:
49+
state_code: IL
50+
spm_unit_size: 4
51+
irs_gross_income: 50_000
52+
# PY2026 threshold for 4 people (size <= 7, FPL only):
53+
# 200% FPL = $32,150 × 2 = $64,300
54+
# $50,000 < $64,300 = eligible
55+
output:
56+
il_ihwap_hhs_smi: 128_140
57+
il_ihwap_income_eligible: true
58+
59+
- name: Case 5, family of 4 above 200% FPL is not eligible.
60+
period: 2026
61+
input:
62+
state_code: IL
63+
spm_unit_size: 4
64+
irs_gross_income: 70_000
65+
# PY2026 threshold for 4 people (size <= 7, FPL only):
66+
# 200% FPL = $64,300
67+
# $70,000 > $64,300 = not eligible
68+
output:
69+
il_ihwap_hhs_smi: 128_140
70+
il_ihwap_income_eligible: false
71+
72+
- name: Case 6, family of 4 at exact 200% FPL threshold is eligible.
73+
period: 2026
74+
input:
75+
state_code: IL
76+
spm_unit_size: 4
77+
irs_gross_income: 64_300
78+
# PY2026 threshold for 4 people:
79+
# 200% FPL = $64,300
80+
# $64,300 <= $64,300 = eligible
81+
output:
82+
il_ihwap_hhs_smi: 128_140
83+
il_ihwap_income_eligible: true
84+
85+
- name: Case 7, zero income is eligible.
86+
period: 2026
87+
input:
88+
state_code: IL
89+
spm_unit_size: 1
90+
irs_gross_income: 0
91+
output:
92+
il_ihwap_hhs_smi: 66_632.8
93+
il_ihwap_income_eligible: true
94+
95+
- name: Case 8, large family of 8 below threshold is eligible.
96+
period: 2026
97+
input:
98+
state_code: IL
99+
spm_unit_size: 8
100+
irs_gross_income: 70_000
101+
# PY2026 thresholds for 8 people (size > 7, uses max):
102+
# 200% FPL = $54,150 × 2 = $108,300
103+
# 60% SMI = $176,833 × 0.6 = $106,100
104+
# Limit = max($108,300, $106,100) = $108,300
105+
# $70,000 < $108,300 = eligible
106+
output:
107+
il_ihwap_hhs_smi: 176_833.2
108+
il_ihwap_income_eligible: true
109+
110+
- name: Case 9, large family of 8 above threshold is not eligible.
111+
period: 2026
112+
input:
113+
state_code: IL
114+
spm_unit_size: 8
115+
irs_gross_income: 115_000
116+
# PY2026 threshold for 8 people:
117+
# Limit = max($108,300, $106,100) = $108,300
118+
# $115,000 > $108,300 = not eligible
119+
output:
120+
il_ihwap_hhs_smi: 176_833.2
121+
il_ihwap_income_eligible: false
122+
123+
- name: Case 10, family of 7 uses FPL only threshold.
124+
period: 2026
125+
input:
126+
state_code: IL
127+
spm_unit_size: 7
128+
irs_gross_income: 90_000
129+
# PY2026 threshold for 7 people (size <= 7, FPL only):
130+
# 200% FPL = $48,650 × 2 = $97,300
131+
# $90,000 < $97,300 = eligible
132+
output:
133+
il_ihwap_hhs_smi: 172_989
134+
il_ihwap_income_eligible: true
135+
136+
- name: Case 11, family of 7 above FPL threshold is not eligible.
137+
period: 2026
138+
input:
139+
state_code: IL
140+
spm_unit_size: 7
141+
irs_gross_income: 105_000
142+
# PY2026 threshold for 7 people (size <= 7, FPL only):
143+
# 200% FPL = $97,300
144+
# $105,000 > $97,300 = not eligible
145+
output:
146+
il_ihwap_hhs_smi: 172_989
147+
il_ihwap_income_eligible: false
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Unit tests for il_ihwap_eligible
2+
# Eligible if income_eligible OR categorically_eligible
3+
# Note: Size 1-7 uses 200% FPL only; Size 8+ uses max(200% FPL, 60% SMI)
4+
5+
- name: Case 1, income eligible only is eligible.
6+
period: 2026
7+
input:
8+
state_code: IL
9+
irs_gross_income: 20_000
10+
# Size 1: 200% FPL = $31,300
11+
# $20,000 < $31,300 = income eligible, no categorical programs
12+
output:
13+
il_ihwap_income_eligible: true
14+
il_ihwap_categorically_eligible: false
15+
il_ihwap_eligible: true
16+
17+
- name: Case 2, categorically eligible only with high income is eligible.
18+
period: 2026
19+
input:
20+
state_code: IL
21+
irs_gross_income: 50_000
22+
il_liheap: 800
23+
# Size 1: 200% FPL = $31,300
24+
# $50,000 > $31,300 = not income eligible, but has IL LIHEAP
25+
output:
26+
il_ihwap_income_eligible: false
27+
il_ihwap_categorically_eligible: true
28+
il_ihwap_eligible: true
29+
30+
- name: Case 3, both income and categorical eligible is eligible.
31+
period: 2026
32+
input:
33+
state_code: IL
34+
irs_gross_income: 18_000
35+
ssi: 9_000
36+
# $18,000 < $31,300 = income eligible, and receiving SSI
37+
output:
38+
il_ihwap_income_eligible: true
39+
il_ihwap_categorically_eligible: true
40+
il_ihwap_eligible: true
41+
42+
- name: Case 4, neither income nor categorical eligible is not eligible.
43+
period: 2026
44+
input:
45+
state_code: IL
46+
irs_gross_income: 50_000
47+
il_liheap: 0
48+
ssi: 0
49+
il_tanf: 0
50+
il_aabd: 0
51+
housing_assistance: 0
52+
# $50,000 > $31,300 = not income eligible, no categorical programs
53+
output:
54+
il_ihwap_income_eligible: false
55+
il_ihwap_categorically_eligible: false
56+
il_ihwap_eligible: false
57+
58+
- name: Case 5, non-IL resident is not eligible due to defined_for.
59+
period: 2026
60+
input:
61+
state_code: CA
62+
irs_gross_income: 20_000
63+
# Would be income eligible in IL, but not IL resident
64+
output:
65+
il_ihwap_eligible: false

0 commit comments

Comments
 (0)