Skip to content

Add Idaho CTC revival and Georgia refundable CTC contributed reforms#8856

Open
DTrim99 wants to merge 2 commits into
PolicyEngine:mainfrom
DTrim99:id-ga-ctc-contrib-reforms
Open

Add Idaho CTC revival and Georgia refundable CTC contributed reforms#8856
DTrim99 wants to merge 2 commits into
PolicyEngine:mainfrom
DTrim99:id-ga-ctc-contrib-reforms

Conversation

@DTrim99

@DTrim99 DTrim99 commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Implements #8854 — two state child-tax-credit contributed reforms for the child-poverty dashboard, shipped together. Both are opt-in (default off) and mirror ut_ctc_reform.

1. Idaho CTC revival — gov.contrib.states.id.ctc

Idaho's $205/child CTC (id_ctc, §63-3029L) was dropped from the ordered nonrefundable list as of 2026. The reform:

  • in_effect — re-adds id_ctc to gov.states.id.tax.income.credits.non_refundable via modify_parameters, reviving the nonrefundable credit. The baseline gov.states.id.tax.income.credits.ctc.amount stays editable.
  • refundable.in_effect + refundable.amount — adds id_refundable_ctc (registered in the refundable list) paying min(unused id_ctc potential, amount × qualifying children). Cap = credit amount → fully refundable; cap 0 / refundable off → pure nonrefundable revival.

2. Georgia CTC refundability — gov.contrib.states.ga.ctc.refundable

ga_ctc ($250/child under 6, HB 136) is nonrefundable. The reform adds ga_refundable_ctc = min(unused ga_ctc_potential, amount × eligible under-6 children).

Design note: unlike ID/UT, Georgia has no refundable-credit list (ga_refundable_credits returned 0, no refundable.yaml). Rather than add baseline infrastructure, the reform wires ga_refundable_credits to adds = ["ga_refundable_ctc"] — a self-contained contrib with zero baseline change, keeping the ga_refundable_ctc/id_refundable_ctc variable shapes parallel (the issue's actual "stay parallel" requirement).

Shared

  • Both use the shared state_non_refundable_credit_limit shape for the unused-potential calculation.
  • Registered in reforms.py with the standard 5-year in_effect lookahead.
  • Changelog fragment + contrib tests per state (tests stub *_income_tax_before_non_refundable_credits to isolate the credit math).

Consumer: the child-poverty-impact-dashboard will wire both as reform options once released.

CI running now; will confirm green.

🤖 Generated with Claude Code

DTrim99 and others added 2 commits July 2, 2026 12:04
…olicyEngine#8854)

Two state child-tax-credit contrib reforms for the child-poverty dashboard:

- gov.contrib.states.id.ctc: revive Idaho's expired $205/child CTC by re-adding
  id_ctc to the ordered nonrefundable list via modify_parameters, with an
  optional refundable top-up (id_refundable_ctc, capped per child) registered in
  the refundable list. The baseline gov.states.id.tax.income.credits.ctc.amount
  stays editable; in_effect revives nonrefundably, refundable.in_effect adds the
  refund.
- gov.contrib.states.ga.ctc.refundable: pay the unused portion of ga_ctc as a
  refund (ga_refundable_ctc = min(unused potential, amount * eligible under-6
  children)). Georgia has no refundable-credit list, so the reform wires
  ga_refundable_credits to add ga_refundable_ctc (no baseline change).

Both share the state_non_refundable_credit_limit shape, register in reforms.py
with the standard 5-year in_effect lookahead, and mirror ut_ctc_reform.
Changelog fragments and contrib tests per state.

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

The Georgia refundable CTC reform references "ga_ctc" as the ordering key for
state_non_refundable_credit_limit (it reads the pre-ordering ga_ctc_potential
for the value, not the applied credit), which the code-health consumer test
requires to be reviewed. Add the reviewed entry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@DTrim99 DTrim99 requested a review from daphnehanse11 July 2, 2026 18:10
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