Skip to content

Pause Colorado's family affordability credit in 2026 and leave Idaho's expired child tax credit out of 2026 totals - #10051

Draft
MaxGhenis wants to merge 6 commits into
mainfrom
credits-2026-id-ctc-co-fatc
Draft

MaxGhenis wants to merge 6 commits into
mainfrom
credits-2026-id-ctc-co-fatc

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Colorado's refundable family affordability credit still paid out in 2026, while Idaho's expired child tax credit still counted in state child tax credit reporting:

Change Rule Source
gov.states.co.tax.income.credits.family_affordability.amount: $3,273 in 2025, $0 from 2026 No family affordability credit for tax year 2026 C.R.S. 39-22-130(6)(f) (HB24-1311, p.10): with forecast revenue growth "LESS THAN THREE PERCENT, NO CREDIT IS ALLOWED"; the Department of Revenue "will temporarily pause the Family Affordability Tax Credit for Tax Year 2026" (FAQ)
gov.states.household.state_ctcs: drop id_ctc from 2026 Idaho's child tax credit ended after 2025 Idaho Code 63-3029L(1): "For taxable years beginning on or after January 1, 2018, and before January 1, 2026"

The Colorado change removes a refundable credit the model was still paying in 2026 (the age multiplier scales the base amount, so the older-child amount, $2,455 in 2025, is also $0).

Idaho's applied credit was already zero in 2026: the nonrefundable credit list drops id_ctc from 2026, and the two contributed reforms that revive the credit (gov.contrib.states.id.ctc, S1450) add it back to that list. The expired worksheet amount still counted in the baseline state child tax credit totals (taxsim_state_ctc), which now leave it out from 2026. id_ctc keeps its $205 amount and documents that it is the worksheet amount a reform can revive.

Both revival reforms also restore id_ctc to state child tax credit reporting, preserving their aggregate outputs. The ordinary/refundable revival uses its existing activation date, so reporting remains zero before delayed activation. Later changes to other states' reporting entries, including Rhode Island's 2027 credit, remain intact. Existing reform tests now cover these totals without adding a model setup or counting the refundable top-up twice.

Found while auditing the claimable-filer rules (#10049, #10050); these are not dependency rules, so they are separate. Branched from main.

Open question for 2027 and later: the Colorado credit returns only if the revenue trigger allows it, and HB26-1223, p.3 creates a separate credit (C.R.S. 39-22-131) from 2027 that the model does not have. The parameter stays at $0 until a later year is known.

Partner contract tests (needs the partner gate)

The 2026 Colorado pause intentionally removes positive partner-facing API outputs. The unchanged contract fixtures contain 12 affected cases and 21 assertions, listed below. File paths are relative to policyengine_us/tests/policy/baseline/partners/; every output is people.<person>.co_family_affordability_credit in 2026. Old values are the preserved contract expectations. New values follow from the current 2026 base amount of zero: the formula multiplies that amount by finite eligibility, age, and phaseout factors. All listed fixtures have ordinary finite inputs and no reform overrides. File-level runtime comparisons could not finish on the overloaded host and remain pending.

File (relative to policyengine_us/tests/policy/baseline/partners/) Case Person Old expectation New value
analytics_coverage/edge_cases/state/co/family_affordability_credit.yaml co_family_affordability_age_multiplier_ladder_5_6_17 (co) child1 3273.00 0
analytics_coverage/edge_cases/state/co/family_affordability_credit.yaml co_family_affordability_age_multiplier_ladder_5_6_17 (co) child2 2454.75 0
analytics_coverage/edge_cases/state/co/family_affordability_credit.yaml co_family_affordability_joint_agi_at_26k_threshold_full_credit (co) child1 3273.00 0
analytics_coverage/edge_cases/state/co/family_affordability_credit.yaml co_family_affordability_joint_agi_26k_plus_1_first_increment (co) child1 3047.98 0
analytics_coverage/edge_cases/state/co/tax_credits_composition.yaml statetax_size_3_single_parent_2_children (co) child1 2285.99 0
analytics_coverage/edge_cases/state/co/tax_credits_composition.yaml statetax_size_3_single_parent_2_children (co) child2 3047.98 0
analytics_coverage/edge_cases/state/co/tax_credits_composition.yaml statetax_size_4_couple_2_children (co) child1 2454.75 0
analytics_coverage/edge_cases/state/co/tax_credits_composition.yaml statetax_size_4_couple_2_children (co) child2 3273.00 0
analytics_coverage/edge_cases/state/co/eitc_ctc.yaml co_eitc_ctc_single_parent_agi_40k_mid_bracket (co) child1 2147.91 0
analytics_coverage/signatures/co.yaml signature_2 (62 reqs, +8 dupes) child1 1610.93 0
analytics_coverage/signatures/co.yaml signature_2 (62 reqs, +8 dupes) child2 2147.91 0
analytics_coverage/signatures/co.yaml signature_16 (13 reqs, +8 dupes) child1 1610.93 0
analytics_coverage/signatures/co.yaml signature_16 (13 reqs, +8 dupes) child2 2147.91 0
analytics_coverage/signatures/co.yaml signature_26 (9 reqs) child1 1610.93 0
analytics_coverage/signatures/co.yaml signature_26 (9 reqs) child2 2147.91 0
analytics_coverage/signatures/co.yaml signature_92 (3 reqs, +1 dupes) child1 1610.93 0
analytics_coverage/signatures/co.yaml signature_92 (3 reqs, +1 dupes) child2 2147.91 0
analytics_coverage/signatures/co.yaml signature_108 (2 reqs) child1 1610.93 0
analytics_coverage/signatures/co.yaml signature_108 (2 reqs) child2 2147.91 0
analytics_coverage/signatures/co.yaml signature_124 (2 reqs, +1 dupes) child1 1610.93 0
analytics_coverage/signatures/co.yaml signature_124 (2 reqs, +1 dupes) child2 2147.91 0

The age-17 child in the ladder already expects $0. The fully phased-out FATC case also stays at $0. A scan of all partner fixtures found no positive FATC assertions outside these four files, and no Idaho partner fixture or id_ctc / taxsim_state_ctc assertion.

Pending hub coordination with Ziming (hua7450): the hub asks the three-question partner gate before any expected-output edit and obtains his approval before landing. These failing fixtures remain unchanged as evidence.

This PR does not edit any file under tests/policy/baseline/partners/. Per the repo's partner-test rule, those expectations change only after the three-question gate, and Ziming (hua7450) gives the go for partner contract tests.

Tests

The touched baseline YAML covers an Idaho household with no applied credit or state CTC reporting in 2026, and Colorado's $3,273 young-child credit in 2025 followed by zero for both age groups in 2026. The contributed YAML now checks restored reporting alongside revival payouts. The existing activation Python file covers delayed activation, plus a parameter-only case for later credit entries and duplicate prevention; it adds no country-model setup. Its existing CI group remains test-policy-contrib-python.

Local model verification is blocked at 1e71253423537ffd4ab0ff5cd748594c0b3581ea. The parameter-only reporting assertions passed in an isolated function check; formatting and lint passed before every commit. The expanded activation Python file collected no cases after approximately 25 minutes, while the host reported load 270–289 and the process used about 13 seconds of CPU. A separate Colorado baseline attempt also stalled before collection (load remained above 220, under 3 seconds of CPU after about 10 minutes). Both attempts were stopped; these are incomplete checks, not assertion failures. The final activation run's peak RSS was unavailable after interruption.

Before the reporting extension, head 9440865b16d51ab50b6bf2f310fc6448e0c14ac3 passed the activation Python file (2 cases; overall 514.52s; peak RSS 2.08 GiB, borrowed Python 3.13.9/core 3.32.15) and the Idaho contrib CTC YAML (5 cases; overall 917.39s; peak RSS 10.05 GiB, isolated Python 3.14.4/core 3.33.2). S1450 reported 7 passing cases before interruption to implement the reporting fix. These local measurements include host contention and do not establish Linux CI cost.

Required reruns on a host with capacity, still one foreground file per process:

  • policyengine_us/tests/policy/contrib/states/test_id_ga_ctc_reform_activation.py (3 cases after expansion).
  • policyengine_us/tests/policy/contrib/states/id/ctc/id_ctc_reform.yaml (5 cases).
  • policyengine_us/tests/policy/contrib/states/id/s1450/id_s1450.yaml (7 cases).
  • policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/family_affordability/co_family_affordability_credit.yaml (6 cases).
  • policyengine_us/tests/policy/baseline/gov/states/id/tax/income/credits/id_ctc.yaml (10 cases).
  • Read-only comparisons of the four partner files above (14 cases / 370 assertions); keep their expectations unchanged for Ziming's gate.

Hub microsimulation impact (current head)

A real microsimulation on the default dataset, main at the merge base 35f3c1f92a against this PR's head 1e71253423, for 2026. The runs went one at a time under the shared heavy-job lock. Sums are weighted.

Output 2026 change 2026 records changed (weighted)
co_family_affordability_credit -1.15bn 381 (577,225)
co_refundable_credits -1.15bn 209 (307,376)
co_income_tax +1.15bn 209 (307,376)
id_ctc +0 0 (0)
id_income_tax +0 0 (0)
state_income_tax +1.15bn 209 (307,376)
income_tax +0 0 (0)
household_net_income -1.15bn 206 (297,049)
household_benefits +0 0 (0)

Comparison files are in fixes/10051-impact/ on the hub host.

axiom: TheAxiomFoundation/rulespec-us#1698 queued; TheAxiomFoundation/rulespec-us#1704 queued

🤖 Generated with Claude Code

…ffordability credit in 2026

- Idaho Code 63-3029L(1) allows the $205 credit only for taxable years
  beginning "before January 1, 2026"; the model kept paying it.
- C.R.S. 39-22-130(6)(f) (HB24-1311) allows no family affordability credit
  when forecast revenue growth is below three percent, and the Department of
  Revenue "will temporarily pause the Family Affordability Tax Credit for Tax
  Year 2026"; the model kept paying $3,273 per young child.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… state child credit totals

The nonrefundable credit list already leaves Idaho's child tax credit out
from 2026, and both contrib reforms revive it by adding it back, so zeroing
the amount broke them. The only remaining place the expired credit showed up
was the state child tax credit totals (`taxsim_state_ctc`), which now leave it
out from 2026. `id_ctc` documents that it is the worksheet amount a reform can
revive. Also points the Colorado family affordability amount at the 2025
DR 0104CN, page 3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis MaxGhenis changed the title End Idaho's child tax credit after 2025 and pause Colorado's family affordability credit in 2026 Pause Colorado's family affordability credit in 2026 and leave Idaho's expired child tax credit out of 2026 totals Oct 10, 2026
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

@hua7450, a partner-contract change for your go (the policyengine-us partner-test gate).

What moves. Colorado's family affordability credit is $0 for tax year 2026 under C.R.S. 39-22-130(6)(f) (HB24-1311, p. 10): the credit pays only when forecast revenue growth clears the statute's threshold, and it doesn't for 2026. The model still paid it in 2026. With this PR, co_family_affordability_credit@2026 becomes 0 in 12 Amplifi analytics-coverage cases (21 assertions). The PR description lists each case with its old and new values. The hub ran the four files at this head (1e71253423), one process each:

File (under policyengine_us/tests/policy/baseline/partners/analytics_coverage/) Cases that change Old 2026 value(s)
edge_cases/state/co/family_affordability_credit.yaml 3 3,273; 3,273; 3,047.98
edge_cases/state/co/tax_credits_composition.yaml 2 2,285.99; 2,454.75
edge_cases/state/co/eitc_ctc.yaml 1 2,147.91
signatures/co.yaml 6 1,610.93 each

Every new value is 0. Nothing else in these files moves.

The three questions:

  1. Are you sure you want these partner test files edited to the new values?
  2. Has a team member been notified?
  3. Has the API partner (Amplifi) been notified?

Once you approve, the hub updates the 21 expectations in this PR and lands it on the usual gates. If the partner should hear first, say so and the hub holds.

@hua7450

hua7450 commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator

Partner cases. The 21 values going to 0 are correct. C.R.S. 39-22-130(6)(f) allows no credit when the estimated adjustment factor is below 3% (HB24-1311, p. 10), and Legislative Council Staff confirm that the December 2025 forecast put the FY 2026-27 factor below 3%, so the credit is unavailable for tax year 2026 (memo R26-322, p. 3). Yes to the three partner-test questions. Please update the four files; I'll review once that's pushed.

This branch has not been deployed

No deployments
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