Skip to content

Update Connecticut 2025 income tax#7193

Merged
DTrim99 merged 8 commits intoPolicyEngine:mainfrom
hua7450:hua7450/issue7191
Jan 27, 2026
Merged

Update Connecticut 2025 income tax#7193
DTrim99 merged 8 commits intoPolicyEngine:mainfrom
hua7450:hua7450/issue7191

Conversation

@hua7450
Copy link
Collaborator

@hua7450 hua7450 commented Jan 16, 2026

Summary

Updates Connecticut income tax parameters for 2025 and adds new EITC qualifying child bonus.

Fixes #7191

Changes

New Feature: CT EITC Qualifying Child Bonus (Effective 2025)

  • Added $250 bonus for EITC recipients with at least one qualifying child
  • New parameters:
    • qualifying_child_bonus/in_effect.yaml - Controls when bonus is active
    • qualifying_child_bonus/amount.yaml - The $250 bonus amount
  • Updated ct_eitc.py formula to include the bonus

2025 Reference Updates

Added 2025 Form CT-1040 Instructions references to all CT income tax parameters:

  • Tax rates (single, joint, separate, head of household, surviving spouse)
  • Personal exemptions (max amount, reduction start/amount/increment)
  • AGI credit tables (all filing statuses)
  • Tax recapture (low/middle/high brackets)
  • 2% Phase-out add-back (amount, increment, max_amount, start)
  • Property tax credit
  • Pension and annuity subtraction
  • Social security benefit adjustment
  • AGI subtractions list
  • AGI additions list
  • Tuition subtraction cap

New Tests

  • ct_eitc.yaml - 10 test cases covering 2022-2025 with qualifying child bonus scenarios
  • ct_agi_subtractions.yaml - 5 test cases including negative subtraction edge case

Code Cleanup

  • Deleted unused ct_subtractions.py (duplicate of ct_agi_subtractions.py)

Existing Features Not Modeled

The following CT income tax features exist in the 2025 instructions but are not implemented in PolicyEngine (they are not new to 2025):

Feature Description
ABLE Account Subtraction (Line 48d) Deduction for contributions to ABLE accounts, limited to $5,000 (single/HoH/separate) or $10,000 (joint/surviving spouse)
Credit for Taxes Paid to Other States (Schedule 2) Credit to avoid double taxation when income is taxed by both CT and another state
IRA vs Pension Distinction IRA distributions get 75% subtraction; pensions/annuities get 100% subtraction
Use Tax (Schedule 4) Sales/use tax on out-of-state purchases (not income tax)

Regulatory Authority

Test plan

  • All CT income tax tests pass (109 existing + 15 new = 124 total)
  • Integration tests verify 2021 and 2024 calculations unchanged
  • New EITC bonus only applies from 2025 onwards
  • Negative subtraction edge case returns 0

🤖 Generated with Claude Code

@codecov
Copy link

codecov bot commented Jan 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (767ec5f) to head (849bec6).
⚠️ Report is 23 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #7193   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            5         1    -4     
  Lines           69        19   -50     
  Branches         0         1    +1     
=========================================
- Hits            69        19   -50     
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 Sentry.
📢 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.

@hua7450 hua7450 marked this pull request as ready for review January 16, 2026 04:48
@MaxGhenis MaxGhenis requested a review from DTrim99 January 18, 2026 20:48
@DTrim99
Copy link
Collaborator

DTrim99 commented Jan 19, 2026

PR Review

🔴 Critical (Must Fix)

None found. The implementation correctly matches the regulatory requirements.

🟡 Should Address

  1. Regulatory clarification needed (ct_eitc.py:21-23): The legislation states the bonus is for taxpayers "eligible for an EITC" with at least one qualifying child. The current implementation checks eitc_child_count > 0, which counts qualifying children but doesn't verify federal EITC eligibility. Consider adding a check for eitc_eligible or documenting why this simplified approach is acceptable.

    • Test Case 9 allows $250 bonus when eitc: 0 but eitc_child_count: 1. This could award the bonus to taxpayers who have qualifying children but aren't eligible for federal EITC (e.g., due to investment income limits or income phase-out).

    • If the intent is that any non-zero federal EITC implies eligibility, consider changing the condition to federal_eitc > 0 | (has_qualifying_child & eitc_eligible) or documenting the current behavior.

🟢 Suggestions

  1. Parameter comment style: The reference comments like # Not updated yet in amount.yaml and in_effect.yaml are helpful for tracking, but consider removing before final merge if the statute has been updated.

  2. Reference ordering: The references in several parameter files were reordered (e.g., AGI tables moving 2025 to top). This is fine but creates larger diffs. Consider maintaining chronological order (oldest to newest) for consistency.

  3. Test naming: Test case naming like "Case 1, 2022 no federal EITC" is clear and follows conventions. Good improvement from the previous naming.


Validation Summary

Check Result
Regulatory Accuracy ✅ Bonus amount ($250), effective date (2025), and structure match regulations
Reference Quality ✅ References include 2025 CT-1040 instructions, CT DRS announcements, and CGS
Code Patterns ✅ Uses existing if p.in_effect: pattern, proper vectorization
Test Coverage ✅ 10 comprehensive test cases covering years 2022-2025, bonus scenarios
CI Status ✅ All checks passing
File Cleanup ✅ Removed unused ct_subtractions.py (duplicate of ct_agi_subtractions.py)

Overall Assessment

This PR correctly implements the Connecticut 2025 EITC qualifying child bonus and updates tax parameter references. The implementation follows existing codebase patterns and includes comprehensive tests.

The one item worth discussing is whether the bonus eligibility check (eitc_child_count > 0) should also verify federal EITC eligibility. The current implementation is simpler but could theoretically award the bonus to taxpayers with qualifying children who aren't actually eligible for federal EITC.

Next Steps

To auto-fix any issues: /fix-pr 7193


🤖 Generated with Claude Code

@DTrim99
Copy link
Collaborator

DTrim99 commented Jan 27, 2026

PR Review

✅ Overall Assessment: APPROVE

This PR correctly implements the new Connecticut EITC Qualifying Child Bonus for 2025 and updates 2025 references across ~50 parameter files. The $250 bonus amount and eligibility logic have been verified against official CT DRS sources.


🟢 Verified (No Critical Issues)

Check Result
Regulatory Accuracy ✅ $250 bonus verified against CT DRS 2025 Income Tax Developments
Formula Logic ✅ Correctly requires federal EITC eligibility AND qualifying child
Parameter Structure ✅ All metadata present (unit, period, label, reference)
Test Coverage ✅ 10 comprehensive EITC test cases + 5 subtraction tests
Code Cleanup ✅ Duplicate ct_subtractions.py correctly removed

Regulatory Verification:

  • CT DRS 2025 confirms: "any taxpayer who is eligible for an EITC in a given taxable year and who has at least one qualifying child for federal income tax purposes in said taxable year is eligible to receive an additional two hundred fifty dollars ($250)"
  • Effective date: January 1, 2025 ✓
  • Bonus is flat $250 regardless of number of children ✓

Manual Calculation Verification:

Test Federal EITC Children Match (40%) Bonus Total Status
Case 8 $2,000 1 $800 $250 $1,050
Case 9 $0 1 $0 $0 $0
Case 10 $5,000 3 $2,000 $250 $2,250

🟢 Code Quality Improvements

  1. Fixed reference tuple bug - Original code had missing commas causing Python string concatenation
  2. Comprehensive test coverage - 10 test cases covering 2022-2025 with all edge cases
  3. Proper parameter structure - Uses in_effect boolean for time-varying feature flag
  4. Clean deletion - ct_subtractions.py was a true duplicate of ct_agi_subtractions.py

🟡 Minor Observations (Non-blocking)

  1. Statute reference note - The reference to CGS 12-704e includes # Not updated yet comment. The statute hasn't been codified with the $250 bonus yet, but CT DRS guidance and form instructions provide sufficient authority.

  2. Code pattern preference - The if p.qualifying_child_bonus.in_effect: pattern is technically valid (parameter is a scalar, not an array), but could alternatively use where() for consistency:

    bonus = where(
        p.qualifying_child_bonus.in_effect,
        eitc_eligible * has_qualifying_child * p.qualifying_child_bonus.amount,
        0,
    )

    Current code works correctly - this is a style preference only.

  3. Test coverage gaps (optional enhancements):

    • No test for 2021 rate (0.305) or 2017-2020 rate (0.23)
    • Social security and pension subtractions not tested in ct_agi_subtractions.yaml
    • These are existing gaps, not introduced by this PR

📋 Files Changed (51)

Category Count Description
New Parameters 2 qualifying_child_bonus/amount.yaml, in_effect.yaml
Modified Variable 1 ct_eitc.py - added bonus calculation
Updated References 47 Added 2025 Form CT-1040 Instructions
New Tests 2 ct_eitc.yaml (10 cases), ct_agi_subtractions.yaml (5 cases)
Deleted 1 ct_subtractions.py (duplicate)

✅ Recommendation: Merge

The implementation correctly reflects Connecticut law and provides comprehensive test coverage. All 15 new test cases have verified correct expected values.

Note: CI status shows "no checks reported" - please ensure CI passes before merging.


🤖 Generated with Claude Code

Copy link
Collaborator

@DTrim99 DTrim99 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ready to merge, just run checks again to make sure everything passes.

@DTrim99 DTrim99 merged commit 9b05637 into PolicyEngine:main Jan 27, 2026
9 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

Development

Successfully merging this pull request may close these issues.

Update Connecticut 2025 income tax

2 participants

Comments