Skip to content

Read the Michigan home heating credit from the canonical heating inputs - #9398

Draft
hua7450 wants to merge 2 commits into
PolicyEngine:mainfrom
hua7450:mi-home-heating-canonical-heating-inputs
Draft

Read the Michigan home heating credit from the canonical heating inputs#9398
hua7450 wants to merge 2 commits into
PolicyEngine:mainfrom
hua7450:mi-home-heating-canonical-heating-inputs

Conversation

@hua7450

@hua7450 hua7450 commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

Stage 2b of the heating-input consolidation (#9284, under #9275), following #9360 and the SNAP half in #9397. Moves the Michigan home heating credit onto the canonical heating inputs. Refs #8964.

What the statute and form say

  • MCL 206.527a(1)(c)(i): the standard credit is multiplied by 50% "for a claimant whose heating costs are included in the claimant's rent". The 2025 MI-1040CR-7 book (lines 40–43) adds that a claimant whose "heat cost is included with your rent" may not use the alternate credit.
  • MCL 206.527a(11): "Only 1 credit may be claimed for a household", and 206.508(3) defines household as "a claimant and spouse", so the claim unit is the tax unit, not the dwelling.
  • Shared housing (Michigan Treasury guidance, "Home Heating Credit and Shared Housing Situations"; CR-7 book p. 5): when two or more single adults share a home, each may claim a credit if each has contracted to pay rent or owns a share.

Changes

Variable Before After
heating_expenses (tax unit) adds = ["heating_expense_person"] Formula: the SPM unit's heating_expense split evenly across the tax units in that SPM unit (one head per tax unit). UNSPECIFIED households keep the person-level sum as the deprecated adapter.
mi_home_heating_credit_heat_included_in_rent New tax-unit bool, defined_for MI: heat_expense_included_in_rent (SPM unit) or utilities_included_in_rent. Rent covering all utilities necessarily covers heat, so the second term is an implication, not a fallback.
mi_standard_home_heating_credit halved on utilities_included_in_rent halved on the new variable
mi_alternate_home_heating_credit_eligible ~utilities_included_in_rent ~ the new variable
utilities_included_in_rent, heating_expense_person documentation updated (Maine PTFC line 5b remains the primary reader of the former)

Behavior preservation

  • Every existing MI test passes unchanged except one, which gains state_code: MI because the new variable is state-scoped (its flat inputs had no state before).
  • Households that set utilities_included_in_rent: true still get the halved standard credit and no alternate credit, through the implication.
  • Households that set heating_expense_person and no heating_type get the same heating_expenses as before.
  • Live traffic (household API analytics, 14 days to 2026-09-06): zero requests ask for any MI home heating credit output or send utilities_included_in_rent or heating_expenses, so no partner value moves.

Deliberately not in this PR

Tests

  • New heating_expenses.yaml (6 cases): legacy person sum, known type reads the fuel bill, two tax units split the bill, known type ignores the legacy input, NONE is zero, per-fuel bill alone is not read.
  • New mi_home_heating_credit_heat_included_in_rent.yaml (4 cases) including the implication and the out-of-state case.
  • Appended: standard credit heat-in-rent halving, alternate credit heat-in-rent bar, and three integration cases: canonical inputs reproducing test 1 exactly (623 / 853 / 767.70), heat in rent (426.50 / 383.85, alternate 0), and two single adults sharing a $2,000 gas bill (each 1,000 heating cost, 489 standard, 623 alternate, 560.70 credit).

🤖 Generated with Claude Code

heating_expenses splits the SPM unit's heating_expense evenly across the
tax units sharing the home, keeping the heating_expense_person sum for
UNSPECIFIED households. The standard credit's heat-in-rent reduction and
the alternate credit's heat-in-rent bar read a new
mi_home_heating_credit_heat_included_in_rent derived from
heat_expense_included_in_rent, treating utilities_included_in_rent as
implying heat is included.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@codecov

codecov Bot commented Sep 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (f9b5549) to head (a5e41a3).
⚠️ Report is 52 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #9398   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            2         6    +4     
  Lines           20        85   +65     
=========================================
+ Hits            20        85   +65     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…into mi-home-heating-canonical-heating-inputs
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.

1 participant