Skip to content

Pin Michigan 2026 income tax rate - #9164

Open
PavelMakarchuk wants to merge 1 commit into
mainfrom
fix/mi-2026-income-tax-rate
Open

Pin Michigan 2026 income tax rate#9164
PavelMakarchuk wants to merge 1 commit into
mainfrom
fix/mi-2026-income-tax-rate

Conversation

@PavelMakarchuk

Copy link
Copy Markdown
Collaborator

Summary

  • add the official TY2026 Michigan individual income-tax rate determination as an explicit annual parameter anchor
  • cite the Michigan Department of Treasury taxpayer notice issued April 15, 2026
  • protect the dated anchor and ordinary pre-credit calculation with focused regression tests

This corrects the underlying PolicyEngine parameter tree; it does not add an oracle-specific override, formula branch, or case-based workaround.

Official source: https://www.michigan.gov/treasury/reference/taxpayer-notices/2026/04/15/425-income-tax-rate-for-individuals-and-fiduciaries-in-2026-tax-year

Checks

  • UV_PROJECT_ENVIRONMENT=/Users/pavelmakarchuk/policyengine-us/.venv UV_NO_SYNC=1 make format (ruff format and ruff check passed; two unrelated base formatter changes restored exactly)
  • python -m pytest -c pyproject.toml -q policyengine_us/tests/test_parameter_files.py (7 passed)
  • focused policyengine-core YAML file (3 passed)
  • full Michigan income-tax YAML suite (280 passed)
  • git diff --check
  • independent review: clean, no actionable findings

No partner contract test or formula was changed.

@PavelMakarchuk
PavelMakarchuk requested a review from MaxGhenis July 28, 2026 04:13
@PavelMakarchuk

Copy link
Copy Markdown
Collaborator Author

@MaxGhenis This is ready for maintainer review: the exact head c336f50cb0 is 31/31 green, its independent review was clean, and the change is limited to the official Michigan TY2026 rate anchor plus focused regressions.

@DTrim99

DTrim99 commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Program Review — PR #9164 (Pin Michigan 2026 income tax rate)

Author: PavelMakarchuk

Source Documents

  • MI Dept. of Treasury taxpayer notice (April 15 2026) — "4.25% Income Tax Rate for Individuals and Fiduciaries in 2026 Tax Year" · corroborated by the signed Treasury rate letter ("the rate in effect under Section 51 for the 2026 tax year is 4.25%")

Branch Status

⚠ 6 commits behind main (1 ahead). Minor; review scoped to the merge-base diff.

Summary

Clean single-value anchor. 0 critical, 0 should-address. The MI 2026 individual income-tax rate is pinned at 0.0425 (4.25%), correct per the Treasury notice, correctly dated with all prior years intact, and properly referenced. CI green (31/31).

Value audit

  • 2026 rate = 0.0425 — confirmed against the Treasury notice title and the signed rate letter. Critically, the MCL 206.51(1)(c) formulary-reduction trigger was evaluated and did not fire for 2026 (FY2025 GF/GP revenue −1.56% vs 2.70% inflation), so 4.25% is the actually-in-effect rate — neither a stale 4.25% nor an erroneously-reduced value.
  • Prior years intact: 2007 (4.35%), 2013/2024/2025 (4.25%), and the 2023 temporary 4.05% are all untouched; the diff is two additive hunks (one value line + one reference).
  • Reference resolves (HTTP 200), title matches, proper {title, href} dict form; HTML source so no #page= needed.
  • Scalar parameter, no formula/structure change — mi_taxable_income × rate flows the 0.0425 through directly.

Critical / Should Address

None.

Suggestions (optional)

  • The 2026 test case (mi_taxable_income: 20_000 → 850) is a byte-for-byte echo of the existing 2022 case. It's a valid regression guard (a wrong 2026 rate changes the output), but a distinct income level (e.g. 50,000 → 2,125) would add representative variety.
  • .fixed changelog type is defensible (the 2026 rate equals 2025's, so this pins/confirms); .added would also be reasonable for new-year coverage.
  • The test_parameter_files.py addition (test_mi_2026_income_tax_rate_uses_official_annual_determination) is a purely-additive strengthening guard — it ties the 2026 value to its citation. Good.

Validation Summary

Check Result
Regulatory / Value Audit 0.0425 confirmed (trigger did not fire); prior years intact
Reference Quality Treasury notice cited, resolves, title matches; correct dict form
Code Patterns 0 critical / 0 should — clean 2026-01-01 anchor, correct format, test_parameter_files.py strengthened
Test Coverage 2026 pre-credit computation pinned (20,000 → 850); flat-rate coverage sufficient
CI Status Passing (31/31)

Review Severity: APPROVE

A correct, minimal, well-sourced rate pin with an added parameter-guard test. No blocking or should-address items — only optional variety/wording notes. Rebase off the 6-commit lag before merge.

Review generated with Claude Code via /review-program

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