Skip to content

Fix Maine EITC childless age expansion (#8927) and 2025 STFC base (#8928); close #8710, #8589 with evidence#8932

Merged
MaxGhenis merged 1 commit into
PolicyEngine:mainfrom
MaxGhenis:codex/de-me-accuracy
Jul 6, 2026
Merged

Fix Maine EITC childless age expansion (#8927) and 2025 STFC base (#8928); close #8710, #8589 with evidence#8932
MaxGhenis merged 1 commit into
PolicyEngine:mainfrom
MaxGhenis:codex/de-me-accuracy

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Summary

Accuracy-fix lane covering four issues. Two need code changes (Maine EITC #8927, Maine STFC #8928) and are fixed here with page-anchored citations and tests including the reported households. Two are already correct on main and are documented with reproductions for closing.

Issue State Verdict
#8927 ME Fixed — childless EITC age expansion (18-24) added
#8928 ME Fixed — 2025 STFC base corrected to $215
#8710 DE Already fixed on main by #7940 — close with evidence
#8589 PA Already fixed on main by #8922 — close with evidence

Draft — lead reviews before merge/ready/close.


#8927 — Maine EITC omits the §5219-S childless age expansion (FIXED)

Law. 36 M.R.S. § 5219-S:

  • sub-§6 (verbatim): "'eligible individual' has the same meaning as under Section 32(c)(1) of the Code except that 'eligible individual' also includes an individual who does not have a qualifying child for the taxable year, who is at least 18 years of age and has not attained 25 years of age before the close of the taxable year and who also meets the qualifications under Section 32(c)(1)(A)(ii)(I) and (III) of the Code."
  • sub-§5 (verbatim): "The credit for an eligible individual who is entitled to a credit under subsections 1 to 3-A, has not attained 25 years of age and does not have a qualifying child for the taxable year must be calculated in the same manner as it would be calculated if that individual were eligible for a federal earned income credit."
  • Section history: sub-§5/§6 added by PL 2019 c. 527 Pt. B, applying to tax years beginning on or after January 1, 2020.

Bug. me_eitc returned eitc * match_rate, and eitc is the actual federal credit — which is $0 for childless filers under the federal age floor (25 in 2022+). So a childless Maine filer aged 18-24 received $0 instead of 50% of a pro forma federal EIC.

Fix. New me_childless_eitc_age_eligible (childless tax unit with head/spouse aged 18 up to the federal minimum childless age) and me_pro_forma_childless_eitc (federal phase-in/reduction with the age gate dropped, retaining the § 32 investment-income and SSN tests, mirroring Maryland's federal_eitc_without_age_minimum). me_eitc now applies the match rate to max(eitc, me_pro_forma_childless_eitc). Maine lowers only the age floor; the federal childless maximum age (64) is preserved, so 65+ childless filers still get $0.

Reproduction (2025, ME, MFJ, ages 23/24, no dependents, $10,476 wages; from PolicyEngine/policyengine-taxsim#1056):

  • Before: eitc = 0, me_eitc = 0
  • After: pro forma childless EIC = $649 → me_eitc = $324.50 (TaxAct return shows $325 on Form 1040ME)

Fixes #8927.


#8928 — Maine STFC 2025 base amount is $220, form shows $215 (FIXED)

Source. 2025 Schedule PTFC/STFC, line 17 table, page 4. Lowest income band:

Filing status 0 dep 1 dep 2+ dep
MFJ / QSS (≤ $50,950) 215 250 280
Head of household (≤ $38,200), cols 0-1 / 2 / 3+ 215 250 280
Single (≤ $25,450) 155

The model had a 2025 base of $220 for joint/HoH/surviving-spouse (single $155 was correct). It matched the form for filers with dependents ($220 + $30 = $250, $220 + $60 = $280) but overstated the 0-dependent credit by $5. The 2+-dependent integration test from #8266 was insensitive to the base/add-on split, so the error passed.

Fix. Set the 2025 joint/HoH/surviving-spouse base to $215 and re-split the 2025 dependent add-ons to $35/$65 (from $30/$60), keeping the with-dependent totals at $250/$280. Adjacent years verified against their forms and left unchanged: 2023 = $200 (2023 form), 2024 = $210 (2024 form). Also corrected the 2024 reference links (they pointed at the 2023 file). Added 0-dependent pin tests (joint/HoH/surviving-spouse) plus a 2024 control.

Reproduction (2025, ME, MFJ, no dependents, low income): me_sales_tax_fairness_credit = 220.00 before, 215.00 after (matches form).

Fixes #8928.


#8710 — DE separate/combined non-refundable credit cap (ALREADY FIXED — recommend close)

Reported cause: non-refundable credits capped against combined tax instead of per-column. This was fixed on main by #7940 ("Fix DE Filing Status 4 per-column credit allocation", merged 2026-07-05, closing the sister issue #7931), which rewired the separate path so de_income_tax_before_refundable_credits_separate applies per-column credits in de_income_tax_after_non_refundable_credits_indv (PIT-RES Line 32 ≤ Line 26 per column). The draft PR #8726 that targeted this issue is now closed.

Reproduction of the issue's household on current main (DE, MFJ, both age 20, 1 dependent, $21,790 interest split 50/50, separate/combined): de_income_tax = $59.16 (was the reported $8.33). Column B's $220 personal credit is correctly capped at its own $169.16 tax; the surplus does not offset Column A. Form/TAXSIM ground truth is $58; the ~$1.16 residual is PolicyEngine's continuous rate-bracket computation vs the form's rounded tax table, unrelated to the credit-pooling bug. Every DE non-refundable credit (de_personal_credit, de_aged_personal_credit, de_cdcc, de_non_refundable_eitc) was audited: none cross-offsets between columns on the separate path.

Added the reported household as a regression test. Recommend closing #8710 with reference to #7940.


#8589 — PA over-charges qualified retirement income for retirees (ALREADY FIXED — recommend close)

Reported cause: PA taxes pension/IRA/401(k) distributions for past-retirement-age retirees. This was fixed on main by #8922 (merged 2026-07-06), which added pa_nontaxable_retirement_distributions covering IRA/401(k)/403(b)/SEP/Keogh under 61 Pa. Code § 101.6. The issue's household also includes taxable_pension_income (handled by the pre-existing pa_nontaxable_pension_income) and Social Security (handled by tax_exempt_social_security), so all four income components are exempt.

Reproduction of the issue's exact household on current main (2026, PA, MFJ, ages 67/65, $60k pensions + $30k IRA + $50k SS): state_income_tax = $0.00 (expected $0.00). The pre-retirement gating still works: a 401(k) or pension distribution at age 50 is taxed ($614 on $20k), at age 67 is exempt ($0) — no source type is missed.

Added the reported household as a regression test. Recommend closing #8589 with reference to #8922.


Tests

All baseline trees pass on this branch (local policyengine-core test):

policyengine-core test policyengine_us/tests/policy/baseline/gov/states/{me,de,pa}/ -c policyengine_us

🤖 Generated with Claude Code

Maine EITC (issue PolicyEngine#8927): 36 M.R.S. Sec. 5219-S(5)-(6) restores the EITC to
childless filers aged 18-24 whom federal Sec. 32 bars only on the minimum-age
floor. Add me_childless_eitc_age_eligible and me_pro_forma_childless_eitc, and
take the larger of the federal EITC and the pro forma amount in me_eitc.

Maine STFC (issue PolicyEngine#8928): the 2025 Schedule PTFC/STFC line 17 table shows a
base of $215 for joint, head of household, and surviving spouse filers with no
dependents; the model had $220. Set the 2025 base to $215 and re-split the
dependent add-ons to $35/$65 so the with-dependent totals ($250/$280) are
unchanged.

Also add reported-household regression tests for issues PolicyEngine#8710 (DE per-column
credit cap, already fixed by PolicyEngine#7940) and PolicyEngine#8589 (PA retiree income, already fixed
by PolicyEngine#8922).

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

codecov Bot commented Jul 6, 2026

Copy link
Copy Markdown

Codecov Report

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

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #8932   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            3         3           
  Lines           55        48    -7     
=========================================
- Hits            55        48    -7     
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.

@MaxGhenis MaxGhenis marked this pull request as ready for review July 6, 2026 17:33
@MaxGhenis MaxGhenis merged commit 766a53c into PolicyEngine:main Jul 6, 2026
35 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant