diff --git a/changelog.d/hi-liheap-cooling.fixed.md b/changelog.d/hi-liheap-cooling.fixed.md new file mode 100644 index 00000000000..6b098738f00 --- /dev/null +++ b/changelog.d/hi-liheap-cooling.fixed.md @@ -0,0 +1 @@ +Pay Hawaii's LIHEAP Energy Credit on the electric (cooling) account to any eligible household with an electric bill or with utilities or electric heat included in its rent, including the subsidized-dwelling flat amount. diff --git a/policyengine_us/programs.yaml b/policyengine_us/programs.yaml index 0f74596fd68..69951f6229c 100644 --- a/policyengine_us/programs.yaml +++ b/policyengine_us/programs.yaml @@ -1106,7 +1106,7 @@ programs: full_name: Hawaii Low Income Home Energy Assistance Program subsidized dwelling benefit variable: hi_liheap_subsidized_amount parameter_prefix: gov.states.hi.dhs.liheap - notes: FY2026 eligibility, the subsidized-dwelling flat benefit and private-dwelling points; no private-dwelling dollar award because its statewide value per point was not located. Crisis, cooling, weatherization and equipment assistance are out of scope. + notes: FY2026 eligibility, the subsidized-dwelling flat benefit and private-dwelling points for the Energy Credit on a gas (heating) or electric (cooling) account for any eligible household with that bill or with utilities in its rent; no private-dwelling dollar award because its statewide value per point was not located. Crisis, weatherization and equipment assistance are out of scope. - state: OH status: partial name: Ohio HEAP diff --git a/policyengine_us/tests/policy/baseline/gov/states/hi/dhs/liheap/hi_liheap_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/hi/dhs/liheap/hi_liheap_eligible.yaml index ff25fd1564b..d73b433cb45 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/hi/dhs/liheap/hi_liheap_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/hi/dhs/liheap/hi_liheap_eligible.yaml @@ -89,22 +89,72 @@ hi_liheap_household_size: [1, 0, 0] hi_liheap_eligible: [true, false, false] -- name: Case 4, heating assistance needs gas paid by bill or through rent. +- name: Case 4, the credit needs a gas or electric bill, or gas or electric heat through rent. period: 2026 # Any home's gas bill and gas in rent qualify, whatever heats the home (rows 1, 3, 7, 8). # A separate gas bill still qualifies when electric heat is in the rent (row 10). - # A home with no gas bill does not: the electric bill is the cooling credit and bottled - # gas shows no utility account. Electricity in rent is not gas, and UNSPECIFIED pays nothing. + # An electric bill qualifies the electric account, which pays as cooling (row 4). + # Electric heat in the rent qualifies like gas in the rent (row 9). Bottled gas + # shows no utility account, and UNSPECIFIED pays nothing. Heat in the rent + # qualifies only gas or electric heat, so propane or an unspecified fuel with + # heat in the rent and no bill gets nothing (rows 11 and 12). input: - state_code: [HI, HI, HI, HI, HI, HI, HI, HI, HI, HI] - heating_type: [NATURAL_GAS, NATURAL_GAS, NATURAL_GAS, ELECTRICITY, PROPANE, UNSPECIFIED, NONE, ELECTRICITY, ELECTRICITY, ELECTRICITY] - gas_expense: [900, 0, 0, 0, 0, 900, 900, 900, 0, 900] - pre_subsidy_electricity_expense: [0, 0, 0, 900, 0, 0, 0, 0, 0, 0] - bottled_gas_expense: [0, 0, 0, 0, 900, 0, 0, 0, 0, 0] - heat_expense_included_in_rent: [false, false, true, false, false, false, false, false, true, true] - ssi: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - snap: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - tanf: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - hi_liheap_countable_income: [20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000] + state_code: [HI, HI, HI, HI, HI, HI, HI, HI, HI, HI, HI, HI] + heating_type: [NATURAL_GAS, NATURAL_GAS, NATURAL_GAS, ELECTRICITY, PROPANE, UNSPECIFIED, NONE, ELECTRICITY, ELECTRICITY, ELECTRICITY, PROPANE, UNSPECIFIED] + gas_expense: [900, 0, 0, 0, 0, 900, 900, 900, 0, 900, 0, 0] + pre_subsidy_electricity_expense: [0, 0, 0, 900, 0, 0, 0, 0, 0, 0, 0, 0] + bottled_gas_expense: [0, 0, 0, 0, 900, 0, 0, 0, 0, 0, 0, 0] + heat_expense_included_in_rent: [false, false, true, false, false, false, false, false, true, true, true, true] + ssi: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + snap: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + tanf: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + hi_liheap_countable_income: [20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000, 20_000] output: - hi_liheap_eligible: [true, false, true, false, false, false, true, true, false, true] + # Was false, now true for row 4: a household may have its electric account + # credited (2.12; application Q17). Was false, now true for row 9: the Energy + # Credit offsets "rent or applicant's share of the electric/gas cost when rent + # includes electric/gas". + hi_liheap_eligible: [true, false, true, true, false, false, true, true, true, true, false, false] + +- name: Case 5, the electric account qualifies for the cooling credit on its electric bill. + period: 2026 + # Draft 1.4 pays electricity as cooling, and 2.12 lets a household have one + # utility credited, gas or electric, with the same eligibility (plan 3.1-3.3, + # page 12). The electric bill is 2_016: HCEOC cites EIA's 2019 average Hawaii + # electric bill of $168 a month, and 168 x 12 = 2_016. The electric credit goes + # to a home with no heating, electric heat or propane heat (rows 1-3), with or + # without a cooling cost (row 4), since Hawaii asks none. It needs the electric + # bill (row 5). UNSPECIFIED pays nothing (row 6). + input: + state_code: [HI, HI, HI, HI, HI, HI] + heating_type: [NONE, ELECTRICITY, PROPANE, NONE, NONE, UNSPECIFIED] + has_cooling_expense: [true, true, true, false, true, true] + pre_subsidy_electricity_expense: [2_016, 2_016, 2_016, 2_016, 0, 2_016] + bottled_gas_expense: [0, 0, 900, 0, 0, 0] + gas_expense: [0, 0, 0, 0, 0, 0] + ssi: [0, 0, 0, 0, 0, 0] + snap: [0, 0, 0, 0, 0, 0] + tanf: [0, 0, 0, 0, 0, 0] + hi_liheap_countable_income: [20_000, 20_000, 20_000, 20_000, 20_000, 20_000] + output: + hi_liheap_eligible: [true, true, true, true, false, false] + +- name: Case 6, utilities included in the rent qualify any known fuel without a bill. + period: 2026 + # Draft 2.1 and 4.2 accept "the household's prorated share of the utility bill + # if rent includes utilities", and application Q23 + # asks whether rent includes "electric/gas service". A home with no heating whose + # utilities are in the rent qualifies with no bill of its own (row 1). An + # unspecified fuel still pays nothing (row 2). + input: + state_code: [HI, HI] + heating_type: [NONE, UNSPECIFIED] + tenant_pays_utilities: [false, false] + gas_expense: [0, 0] + pre_subsidy_electricity_expense: [0, 0] + ssi: [0, 0] + snap: [0, 0] + tanf: [0, 0] + hi_liheap_countable_income: [20_000, 20_000] + output: + hi_liheap_eligible: [true, false] diff --git a/policyengine_us/tests/policy/baseline/gov/states/hi/dhs/liheap/hi_liheap_subsidized_amount.yaml b/policyengine_us/tests/policy/baseline/gov/states/hi/dhs/liheap/hi_liheap_subsidized_amount.yaml index 856ca12b3c3..12b4971c686 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/hi/dhs/liheap/hi_liheap_subsidized_amount.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/hi/dhs/liheap/hi_liheap_subsidized_amount.yaml @@ -348,3 +348,119 @@ hi_liheap_countable_income: 30_000 hi_liheap_eligible: true hi_liheap_subsidized_amount: 425 + +- name: Case 5, a subsidized household with no heating receives the flat benefit on its electric account. + period: 2026 + absolute_error_margin: 0.01 + # Plan 3.5 (page 13) gives cooling the same flat amounts, and the matrix pays + # one "heating and cooling energy credit". Each adult works full time at + # Hawaii's $16 minimum wage from 2026 (HRS 387-2): 16 x 2_080 = 33_280, under the + # one-person limit of 41_941 and the three-person limit of 67_751. The electric + # bill is 2_016 (168 x 12, Case 5 of hi_liheap_eligible). A voucher holder pays + # 375 for size one and a public-housing family of three pays 425. A private + # dwelling is eligible, but this output reads zero for it. Hawaii asks no + # cooling cost, so the electric bill qualifies without one. + input: + people: + person1: + age: 35 + ssi: 0 + employment_income_before_lsr: 33_280 + person2: + age: 35 + ssi: 0 + employment_income_before_lsr: 33_280 + person3: + age: 35 + ssi: 0 + employment_income_before_lsr: 33_280 + person4: + age: 35 + ssi: 0 + employment_income_before_lsr: 33_280 + person5: + age: 33 + ssi: 0 + person6: + age: 8 + ssi: 0 + spm_units: + spm_unit1: + members: [person1] + heating_type: NONE + has_cooling_expense: true + pre_subsidy_electricity_expense: 2_016 + hi_tanf: 0 + receives_housing_assistance: true + spm_unit2: + members: [person2] + heating_type: NONE + has_cooling_expense: true + pre_subsidy_electricity_expense: 2_016 + hi_tanf: 0 + receives_housing_assistance: false + spm_unit3: + members: [person3] + heating_type: NONE + has_cooling_expense: false + pre_subsidy_electricity_expense: 2_016 + hi_tanf: 0 + receives_housing_assistance: true + spm_unit4: + members: [person4, person5, person6] + heating_type: NONE + has_cooling_expense: true + pre_subsidy_electricity_expense: 2_016 + hi_tanf: 0 + households: + household1: + members: [person1] + state_code: HI + county: HONOLULU_COUNTY_HI + household2: + members: [person2] + state_code: HI + county: HONOLULU_COUNTY_HI + household3: + members: [person3] + state_code: HI + county: HONOLULU_COUNTY_HI + household4: + members: [person4, person5, person6] + state_code: HI + county: HONOLULU_COUNTY_HI + is_in_public_housing: true + output: + hi_liheap_countable_income: [33_280, 33_280, 33_280, 33_280] + hi_liheap_eligible: [true, true, true, true] + hi_liheap_subsidized_amount: [375, 0, 375, 425] + +- name: Case 6, a public-housing tenant whose utilities are in the rent receives the flat benefit. + period: 2026 + absolute_error_margin: 0.01 + # One person aged 70 in Honolulu public housing with $18,000 of Social Security, + # under the one-person limit of 41_941. Rent includes the utilities and there + # is no separate bill; the draft's Energy Credit offsets "rent or applicant's + # share of the electric/gas cost when rent includes electric/gas". Size one + # receives 375. + input: + people: + person1: + age: 70 + ssi: 0 + social_security_retirement: 18_000 + spm_units: + spm_unit1: + members: [person1] + heating_type: NONE + hi_tanf: 0 + households: + household1: + members: [person1] + state_code: HI + county: HONOLULU_COUNTY_HI + is_in_public_housing: true + tenant_pays_utilities: false + output: + hi_liheap_eligible: true + hi_liheap_subsidized_amount: 375 diff --git a/policyengine_us/variables/gov/states/hi/dhs/liheap/hi_liheap_eligible.py b/policyengine_us/variables/gov/states/hi/dhs/liheap/hi_liheap_eligible.py index e5292c13fac..a8b9cfbfbc3 100644 --- a/policyengine_us/variables/gov/states/hi/dhs/liheap/hi_liheap_eligible.py +++ b/policyengine_us/variables/gov/states/hi/dhs/liheap/hi_liheap_eligible.py @@ -4,17 +4,18 @@ class hi_liheap_eligible(Variable): value_type = bool entity = SPMUnit - label = "Eligible for Hawaii LIHEAP regular heating assistance" + label = "Eligible for Hawaii LIHEAP regular heating or cooling assistance" definition_period = YEAR defined_for = StateCode.HI reference = ( - # PDF pages 5, 9 + # PDF pages 5,9,12 "https://liheapch.acf.gov/docs/2026/state-plans/HI_Plan_2026.pdf#page=5", # PDF pages 1, 3 "https://liheapch.acf.gov/docs/2026/benefits-matricies/HI_BenefitMatrix_2026.pdf#page=1", - # Draft FY2026 manual sections 1.4, 2.1, 2.8, 2.12, 4.2 and 5.5. - # PDF pages 57-58, 60-61, 65, 67 - "https://humanservices.hawaii.gov/wp-content/uploads/2025/07/Model-Plan-Packet-2026.pdf#page=57", + # Draft FY2026 manual Energy Credit definition and sections 1.4, 2.1, 2.8, + # 2.12, 4.2 and 5.5. + # PDF pages 55, 57-58, 60-61, 65, 67 + "https://humanservices.hawaii.gov/wp-content/uploads/2025/07/Model-Plan-Packet-2026.pdf#page=55", ) def formula(spm_unit, period, parameters): @@ -39,16 +40,22 @@ def formula(spm_unit, period, parameters): ) # Both manuals pay gas as heating and electricity as cooling, and a household # asks to have one utility credited (2.12; application Q17). So any home's - # gas bill qualifies, whatever heats it or the rent includes. Bottled gas does - # not show the active utility account that draft 2.1 requires. Callers must - # send heating_type. + # gas or electric bill qualifies, whatever heats it or the rent includes, + # with no cooling-cost condition. Bottled gas does not show the active + # utility account that draft 2.1 requires. Callers must send heating_type. fuel = spm_unit("heating_type", period) types = fuel.possible_values heat_in_rent = spm_unit("heat_expense_included_in_rent", period) gas_bill = spm_unit("gas_expense", period) > 0 - # Draft 2.1 and 4.2 and application Q23-24 accept a share of utilities in - # rent, which has no input; plan 2.3 and the 2020 manual do not. - responsible = (gas_bill & (fuel != types.UNSPECIFIED)) | ( - heat_in_rent & (fuel == types.NATURAL_GAS) - ) + electric_bill = spm_unit("pre_subsidy_electricity_expense", period) > 0 + # The draft's Energy Credit definition, 2.1 and 4.2 and application Q23-24 + # accept a share of utilities in rent, "electric/gas" alike. Utilities in + # rent (tenant_pays_utilities false) qualify any known fuel, and gas or + # electric heat in rent qualifies too. The size of the share has no input, + # and a third-party payer or a rent-free home is not identified. + utilities_in_rent = ~spm_unit.household("tenant_pays_utilities", period) + rent_fuel = (fuel == types.NATURAL_GAS) | (fuel == types.ELECTRICITY) + responsible = ( + (gas_bill | electric_bill | utilities_in_rent) & (fuel != types.UNSPECIFIED) + ) | (heat_in_rent & rent_fuel) return (size > 0) & (income_eligible | categorical) & responsible diff --git a/policyengine_us/variables/gov/states/hi/dhs/liheap/hi_liheap_subsidized_amount.py b/policyengine_us/variables/gov/states/hi/dhs/liheap/hi_liheap_subsidized_amount.py index 14bca994c5d..01dc925e937 100644 --- a/policyengine_us/variables/gov/states/hi/dhs/liheap/hi_liheap_subsidized_amount.py +++ b/policyengine_us/variables/gov/states/hi/dhs/liheap/hi_liheap_subsidized_amount.py @@ -4,11 +4,12 @@ class hi_liheap_subsidized_amount(Variable): value_type = float entity = SPMUnit - label = "Hawaii LIHEAP flat heating benefit for subsidized dwellings" + label = "Hawaii LIHEAP flat heating or cooling benefit for subsidized dwellings" definition_period = YEAR unit = USD defined_for = "hi_liheap_eligible" reference = ( + # PDF pages 10,13 "https://liheapch.acf.gov/docs/2026/state-plans/HI_Plan_2026.pdf#page=10", "https://liheapch.acf.gov/docs/2026/benefits-matricies/HI_BenefitMatrix_2026.pdf#page=2", ) diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 9d02eda84fd..7f32c862034 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -3101,12 +3101,13 @@ candidates: from: 2026 to: 2026 type: federal-fiscal - question: Is a Hawaii household whose gas is included in its rent eligible for LIHEAP, as the draft manual and application - provide, or ineligible, as the 2020 manual provides? + question: Is a Hawaii household whose gas or electricity is included in its rent eligible for LIHEAP, as the draft manual + and application provide, or ineligible, as the 2020 manual provides? sources: - kind: manual - citation: Hawaii draft FY2026 Policies and Procedures, sections 2.1 and 4.2, model plan packet PDF pages 58 and 65 - url: https://humanservices.hawaii.gov/wp-content/uploads/2025/07/Model-Plan-Packet-2026.pdf#page=58 + citation: Hawaii draft FY2026 Policies and Procedures, Energy Credit definition and sections 2.1 and 4.2, model plan + packet PDF pages 55, 58 and 65 + url: https://humanservices.hawaii.gov/wp-content/uploads/2025/07/Model-Plan-Packet-2026.pdf#page=55 - kind: form citation: 2026 H-HEAP application, questions 23 and 24, PDF page 4 url: https://humanservices.hawaii.gov/bessd/files/2026/06/2026-Application-Packet.pdf#page=4 @@ -3118,19 +3119,23 @@ candidates: url: https://liheapch.acf.gov/docs/2026/state-plans/HI_Plan_2026.pdf#page=9 readings: statute: No statute is supplied; draft 2.1 accepts "the household's prorated share of the utility bill if rent includes - utilities", and application questions 23 and 24 ask for that share. + utilities", the draft's Energy Credit definition offsets "rent or applicant's share of the electric/gas cost when rent + includes electric/gas", and application questions 23 and 24 ask for that share. other: The 2020 manual lists "Households where all utilities are included in the rent" as ineligible, and plan 2.3 answers No for differing policies for renters with utilities in the rent. - example: One person aged 70 in public housing with $18,000 of Social Security and gas in the rent receives $375 under the - draft manual and $0 under the 2020 manual. + example: One person aged 70 in public housing with $18,000 of Social Security and gas or electricity in the rent receives + $375 under the draft manual and $0 under the 2020 manual. pe_us: follows: gap-fill code: - policyengine_us/variables/gov/states/hi/dhs/liheap/hi_liheap_eligible.py prs: - https://github.com/PolicyEngine/policyengine-us/pull/10614 + - https://github.com/PolicyEngine/policyengine-us/pull/10734 state: ruled - note: 'Ruled 2026-11-02: follow the draft manual and application. The size of the share has no input.' + note: 'Ruled 2026-11-02: follow the draft manual and application. PR 10734 applies the same ruling to the electric account + it opens: utilities in the rent (tenant_pays_utilities false) qualify any known fuel, and gas or electric heat in the rent + qualifies. The size of the share has no input.' - id: us-hi:snap-abawd-implementation-date program: snap years: