Skip to content

Book Connecticut child tax rebate in 2021 eligibility year (like RI/NM) - #9274

Open
DTrim99 wants to merge 2 commits into
PolicyEngine:mainfrom
DTrim99:fix/ct-child-rebate-2021
Open

Book Connecticut child tax rebate in 2021 eligibility year (like RI/NM)#9274
DTrim99 wants to merge 2 commits into
PolicyEngine:mainfrom
DTrim99:fix/ct-child-rebate-2021

Conversation

@DTrim99

@DTrim99 DTrim99 commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Fixes #9270. Surfaced by PolicyEngine/policyengine-taxsim#1127.

Problem

The Connecticut 2022 Child Tax Rebate (PA 22-118) is $250/child (max 3), determined by the 2021 return, claimed by a separate application (June–July 2022), and paid in fall 2022 — CT DRS overview. It is not a line on the CT-1040.

PolicyEngine listed ct_child_tax_rebate among Connecticut's 2022 non-refundable income-tax credits, so it reduced 2022 CT income tax (e.g. a HoH with one child and CT AGI $54,934: CT income tax 2,094 → 1,844) and computed eligibility from 2022 income/dependents. TaxAct's 2022 CT-1040 shows CT income tax $2,094 with no rebate.

PolicyEngine already books the directly analogous prior-year rebates in the eligibility year: ri_child_tax_rebate (RI's $250/child, 2021-return-based, paid Oct 2022) and nm_2021_income_rebate are both in their 2021 refundable lists. Connecticut's was the outlier.

Fix

Mirror ri_child_tax_rebate:

  • Remove ct_child_tax_rebate from ct/tax/income/credits/non_refundable.yaml (2022).
  • Add it to ct/tax/income/credits/refundable.yaml under 2021-01-01 (removed 2022) — refundable, since the rebate is a check paid regardless of tax liability.
  • Shift the rebate parameters (amount, child_cap, reduction/*) from 2022-01-01 to 2021-01-01, so eligibility is computed from 2021 income/dependents.
  • Move the ct_child_tax_rebate unit tests to period 2021 (amounts unchanged).
  • Zero ct_child_tax_rebate in the two 2021 CT integration tests (their expected ct_income_tax comes from TAXSIM35, which does not model the rebate) — following the existing ri_child_tax_rebate: 0 convention in the RI integration test.

Result

2022 CT income tax no longer includes the rebate ($2,094, matching the CT-1040), and Connecticut is consistent with the eligibility-year treatment PolicyEngine uses for Rhode Island and New Mexico. Full CT baseline suite passes.

The Connecticut 2022 child tax rebate (PA 22-118) is determined by the
2021 return, claimed by a separate application, and paid in fall 2022 —
it is not a line on the CT-1040. PolicyEngine was applying it as a 2022
non-refundable income-tax credit, reducing 2022 CT income tax and
computing eligibility from 2022 data, while it books every other
prior-year rebate (ri_child_tax_rebate, nm_2021_income_rebate) in the
eligibility year.

Move ct_child_tax_rebate to the 2021 refundable-credit list (removed in
2022) and shift its parameters to 2021, mirroring ri_child_tax_rebate.
2022 CT income tax no longer includes the rebate, matching the CT-1040.
Zero ct_child_tax_rebate in the two 2021 CT integration tests (TAXSIM35
does not model it), following the ri_child_tax_rebate convention.

Fixes PolicyEngine#9270. Surfaced by PolicyEngine/policyengine-taxsim#1127.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@DTrim99
DTrim99 marked this pull request as ready for review August 12, 2026 20:47
@DTrim99
DTrim99 requested a review from PavelMakarchuk August 12, 2026 20:47

@PavelMakarchuk PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The re-booking mechanics themselves check out — parameter start dates, the refundable/non-refundable list moves, the RI/NM analog pattern, no impact on the CT contrib reforms, and the full CT tax suite (136 tests) plus the cross-state income tax suite (67 tests) pass on this branch.

Requesting changes for four findings, detailed inline:

  1. Phase-out uses ct_agi instead of federal AGI (ct_child_tax_rebate.py:13) — PA 22-118 phased out on federal AGI from the 2021 return. Pre-existing line, but this PR is what books the formula into the live 2021 baseline.
  2. Counts all dependents, not children 18 or younger (ct_child_tax_rebate.py:25) — the program required a dependent child age 18 or younger; cf. ri_child_tax_rebate's age check.
  3. No 2022 sunset on the rebate parametersct_child_tax_rebate returns $250/child for 2023+ when queried directly.
  4. Stale test name — "Head of household with $170,000 AGI" vs. ct_agi: 165_000 input.

Findings 1 and 2 are the substantive ones: they change real 2021 microsim outputs, and the current unit tests mask both by injecting ct_agi and tax_unit_count_dependents directly.

Sources: CT DRS Child Tax Rebate overview, CT OLR 2026-R-0020


Generated by Claude Code

…-out, age gate, sunset

Booking this credit into the live 2021 baseline surfaced three formula/parameter issues:
- F1: the phase-out read ct_agi; PA 22-118 phased out on FEDERAL AGI from the 2021
  return. Switch the income measure to adjusted_gross_income.
- F2: the count used tax_unit_count_dependents (all dependents); the program required a
  dependent child age 18 or younger. Count only age<=18 tax-unit dependents, RI-style,
  with a new ct rebate age_limit parameter (18).
- F3: the rebate parameters started 2021 with no sunset, so the variable returned phantom
  nonzero values for 2022+. Sunset amount and child_cap to 0 at 2022-01-01 (one-time rebate).
- F4/tests: the prior cases injected ct_agi and tax_unit_count_dependents, masking F1 and F2.
  Rewrite them to drive federal AGI + real dependents with ages (and fix the 70k/165k name
  mismatch), and add age-gate, federal-AGI-vs-ct_agi, and 2023-sunset cases. CT tax suite 140/140.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@DTrim99

DTrim99 commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator Author

Fixes applied from @PavelMakarchuk's review

All four findings addressed and pushed (CT tax suite 140/140). Thanks — the substantive two were both masked by the injected-input tests, exactly as you noted.

F1 — phase-out on federal AGI (fixed)

Switched the phase-out income measure in ct_child_tax_rebate.py from ct_agi to adjusted_gross_income, matching PA 22-118 (federal AGI from the 2021 return). Your case — federal AGI $110k with CT subtractions dropping ct_agi to $95k — now correctly triggers the reduction instead of paying the full rebate.

F2 — count only dependent children ≤18 (fixed)

Replaced tax_unit_count_dependents with the RI-style age gate: (age <= p.age_limit) & is_tax_unit_dependent, summed over members and capped. Added a ct/tax/income/rebate/age_limit parameter (18, referenced to CT DRS / OLR 2026-R-0020 / PA 22-118 §410). A unit whose only dependent is 21 now gets 0; mixed minor+adult units count only the minors.

F3 — 2022 sunset (fixed)

Added 2022-01-01: 0 to amount.yaml and child_cap.yaml (with a note that the credit was a one-time 2021 payment), so the variable is inert for 2022+ and can't be silently resurrected. I did not zero the reduction.increment (it's a divisor — that would introduce a div-by-zero); zeroing amount and cap fully sunsets the rebate.

F4 + test coverage

  • Fixed the stale name: the case is now "$165,000 federal AGI" to match its input (expected 250).
  • Since F1/F2 changed which inputs the formula reads, rewrote the 3 existing cases to inject adjusted_gross_income and real dependents with ages instead of ct_agi/tax_unit_count_dependents.
  • Added cases that each fail if the corresponding fix is reverted: age-21-only dependent → 0; mixed minor+adult → 250; federal AGI $130k with ct_agi $90k → 0 (federal phase-out); 2023 unit with a child → 0 (sunset).

No 2021 parameter values changed.

🤖 Generated with Claude Code

@DTrim99
DTrim99 requested a review from PavelMakarchuk August 17, 2026 14:03
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.

Connecticut child tax rebate wrongly reduces 2022 CT income tax (separate 2021-based application rebate)

2 participants