Skip to content

Use 18% of the federal EITC for the Illinois EIC before 2023 - #9824

Open
PavelMakarchuk wants to merge 3 commits into
mainfrom
il-eitc-pre-2023-federal
Open

PavelMakarchuk wants to merge 3 commits into
mainfrom
il-eitc-pre-2023-federal

Conversation

@PavelMakarchuk

Copy link
Copy Markdown
Collaborator

Fixes #9823.

Change

  • New parameter gov.states.il.tax.income.credits.eitc.expansion_in_effect: false before 2023, true from 2023 (35 ILCS 5/212(b-5), (b-10), (b-15)).
  • When it is false, il_eitc returns eitc × match. This is Schedule IL-E/EIC Step 4: line 5 is the federal EIC, line 6 is 18% of it.
  • From 2023 the formula does not change.

Tests

New file il_eitc_pre_2023.yaml, single filer with $5,000 of wages and no children:

Case Expected Before
Age 18, 2021 0 137.70
Age 24, 2022 0 68.85
Age 65, 2022 0 68.85
Age 40, 2022 68.85 68.85
Age 70, 2023 76.50 76.50

The expected values are 18% (2021–2022) of the federal EITC from TAXSIM-35 (v25) for the same filers: 0, 0, 0 and 382.50. The 2023 case is 20% × 7.65% × 5,000 under (b-10). TAXSIM-35 itself also gives the 2021–2022 Illinois credit to these filers, so its v39 is not used as the expected value.

The existing "2021 Illinois Zero EITC" test now sets eitc_earned_income instead of filer_adjusted_earnings, because the 2021 credit now comes from the federal eitc. #9820 makes the same change to this line, so the two PRs merge cleanly.

All 900 Illinois tests pass locally.

Census effect

In the TAXSIM-35 census comparison for Illinois, 6 household-years change (2021–2022 households where a spouse has a self-employment loss) and none that matched before stop matching. 3 now match TAXSIM; the 3 from 2021 also need #9822 (rebate at negative AGI).

🤖 Generated with Claude Code

35 ILCS 5/212(b-5), (b-10) and (b-15) extend the credit to childless
filers aged 18-24 and 65+ and to ITIN filers only for taxable years
beginning on or after January 1, 2023. Fixes #9823.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PavelMakarchuk
PavelMakarchuk requested a review from hua7450 October 5, 2026 21:34
@codecov

codecov Bot commented Oct 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (909176a) to head (9a4b7b7).
⚠️ Report is 202 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #9824   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            4         1    -3     
  Lines           76        25   -51     
  Branches         2         1    -1     
=========================================
- Hits            76        25   -51     
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.

@hua7450 hua7450 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.

Reviewed 9a4b7b7. No calculation defect found in the static review. Delegating the pre-2023 calculation to federal eitc preserves the federal eligibility rules, including the temporary 2021 ARPA age rules. The 2023 expanded Illinois calculation remains unchanged.

  • Please add the required axiom: parity declaration to the PR description, following CLAUDE.md's Axiom Parity section.
  • Optional regression coverage: add otherwise-identical ITIN cases for 2022 and 2023 to pin the expansion boundary alongside the age tests.

Verification limits: I did not independently run the tests. All 37 check runs on this commit are successful as of October 6, 02:40 UTC. The source audit is partial because some historical Illinois primary documents could not be retrieved.

PavelMakarchuk and others added 2 commits October 8, 2026 09:31
@PavelMakarchuk

Copy link
Copy Markdown
Collaborator Author

Thanks. Merged main (clean) and added the ITIN pair you suggested to il_eitc_pre_2023.yaml, otherwise identical to the existing age-40 case (single, wages 5,000):

  • 2022 with an ITIN: 0. The IL EIC is 18% of the federal EITC, which needs a Social Security number (IRC 32(m)).
  • 2023 with an ITIN: 76.50. 35 ILCS 5/212(b-5) accepts an ITIN; childless phase-in 7.65% × 5,000 = 382.50, times 20%.

The Illinois tests pass (906). I will add the axiom: line separately.

@DTrim99

DTrim99 commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Use 18% of the federal EITC for the Illinois EIC before 2023

Summary

The PR adds gov.states.il.tax.income.credits.eitc.expansion_in_effect: false before 2023, true from 2023. When the flag is false, il_eitc returns the federal eitc × match. Before this, il_eitc ran the 2023 expanded computation in every year, because childless_min_age (18, from 2023) and the ITIN path extrapolate backward. That gave the IL EIC to 18–24 and 65+ childless filers, and to ITIN filers, in 2021–2022, when Illinois only matched the federal credit.

  • Law. The fix matches 35 ILCS 5/212 (I fetched the statute). The age and ITIN extensions in (b-5), (b-10) and (b-15) apply "For taxable years beginning on or after January 1, 2023". Before that, the credit is a percentage of "the federal earned income tax credit allowed for the taxable year under Section 32".
  • Code. The change is small, vectorized and limited to IL. The 2023+ path is unchanged.
  • Tests. All 7 new expectations check out by hand.
  • Merged tree. The merge with main is clean, as is the merge with main plus Net spouses' self-employment losses in state EITC helper earned income (IL, CO, DC, IN) #9820. Main hasn't changed il_eitc.py, the IL EIC parameters or the IL credit tests since the merge base.
  • Problems.
    • The title and changelog say "18% … before 2023", but match.yaml begins in 2021 and extrapolates 18% backward. 2017 (14%) and 2013–2016 (10%) therefore come out wrong.
    • One test comment cites the wrong subsection for the ITIN rule.
    • The axiom: line is still missing.

Critical (must fix)

None.

Should address

1. Add the IL match rates for 2017 and earlier, or narrow the claim to 2018–2022.

File: policyengine_us/parameters/gov/states/il/tax/income/credits/eitc/match.yaml. The PR doesn't change it, but the new branch's result depends on it.

What's wrong. The values are 2021-01-01: 0.18 and 2023-01-01: 0.20. Parameters extrapolate the first value backward, so every year before 2021 gets 18%. PolicyEngine computes a federal EITC from 2017 (gov.irs.credits.eitc.max starts 2017-01-01), so a 2017 Illinois filer now gets eitc × 0.18. The PR's title and changelog ("Limit the Illinois EIC to 18% of the federal EITC before 2023") state that rate for every pre-2023 year.

The law. 35 ILCS 5/212(a): "(i) 5% of the federal tax credit for each taxable year beginning on or after January 1, 2000 and ending prior to December 31, 2012, (ii) 7.5% … beginning on or after January 1, 2012 and ending prior to December 31, 2013, (iii) 10% … beginning on or after January 1, 2013 and beginning prior to January 1, 2017, (iv) 14% … beginning on or after January 1, 2017 and beginning prior to January 1, 2018, (v) 18% … beginning on or after January 1, 2018 and beginning prior to January 1, 2023, and (vi) 20% … on or after January 1, 2023." rulespec-us us-il/statutes/35/5/212.yaml encodes the same schedule (0.05 / 0.075 / 0.10 / 0.14 / 0.18 / 0.20 from 2000 / 2012 / 2013 / 2017 / 2018 / 2023).

Fix (preferred). Add 2000-01-01: 0.05, 2012-01-01: 0.075, 2013-01-01: 0.10, 2017-01-01: 0.14 and 2018-01-01: 0.18 to match.yaml, with the § 212(a) reference. Add a 2017 case, such as the age-40 single filer with $5,000 of wages: 2017 federal 7.65% × 5,000 = 382.50 (max 510), × 14% = 53.55. This is a one-file change that makes the "before 2023" claim true.

Fallback. Reword the title and changelog to "2018–2022" and file an issue for the earlier rates.

2. Fix the ITIN citation in the new test.

File: policyengine_us/tests/policy/baseline/gov/states/il/tax/income/credits/il_eitc_pre_2023.yaml, last case. The comment says "From 2023 35 ILCS 5/212(b-5) accepts an ITIN." Subsection (b-5) is the 18–24 age extension. The ITIN rule is (b-15): "each individual taxpayer filing a return using an individual taxpayer identification number (ITIN) … is entitled to the credit … without applying the restrictions regarding social security numbers in Section 32(m)." Change "(b-5)" to "(b-15)". The author's 2026-10-08 comment has the same slip.

3. Add the axiom: line to the PR body.

The body has no line mentioning axiom in any form. hua7450 asked for one, and the author wrote "I will add the axiom: line separately". Pavel is staff, so axiom: needed isn't available.

What rulespec-us has. us-il/statutes/35/5/212.yaml encodes the full rate schedule correctly. But federal_earned_income_credit_base_for_illinois_credit and il_earned_income_credit have only effective_from: '2023-01-01' versions. So the pre-2023 credit, the federal credit allowed × 18% with no age or ITIN route, has no encoded output.

Recommended line. File a dispatch-ready pe-parity issue on rulespec-us and use axiom: rulespec-us#<n> queued. The issue should have:

  • the module path (us-il/statutes/35/5/212.yaml);
  • the corpus citation and verbatim text of § 212(a)(iv)–(vi), plus the "For taxable years beginning on or after January 1, 2023" lead-ins of (b-5), (b-10) and (b-15);
  • required outputs: pre-2023 versions in which the base is only the federal credit allowed;
  • companion cases taken from the 2022 Schedule IL-E/EIC, lines 5–6.

Alternatively, extend rulespec-us#1699 (IL1, OPEN, pe-parity), which already covers composing the § 212 base.

Suggestions

  1. Add a 2021 65+ childless case. In 2021, ARPA removed the federal maximum age for childless filers. So a 65-year-old childless filer gets the federal EITC, and therefore 18% in Illinois, through the new branch. A 2021 age-65 case (wages 5,000: 15.3% × 5,000 = 765, × 18% = 137.70) would pin that the 2021 route really comes from federal law rather than (b-10). It would sit beside the 2022 age-65 zero.
  2. Parameter description template. For a boolean, the house form is "Illinois … if this is true." The current description reads "… when this is true. Before then, …". The second sentence describes the 2018–2022 alternative, which works better in a code comment.

Verified correct

  • Pre-2023 form. The 2022 Schedule IL-E/EIC (PDF p. 1) says "You must have claimed the federal Earned Income Credit in order to …". Page 2, Step 4 has "5 Enter the amount of federal Earned Income Credit from your federal Form 1040 or 1040-SR, Line 27" and "6 Multiply the amount on Line 5 by 18% (.18)." The code comment's "Step 4, lines 5 and 6" is correct.
  • 2023 form. The 2023 Schedule (PDF p. 1) says "New for 2023! Taxpayers who did not qualify for the federal EITC …" and adds the Expanded EITC Worksheet (page 3, line 23 feeds Step 4 line 6, × 20%). Both reference anchors show the quoted text.
  • Hand-checked expectations (7 new, plus 1 renamed input). All new cases are single filers with $5,000 of wages and no children.
    • Age 18, 2021: 0. The ARPA childless minimum age is 19 (the 18 exception is only for former foster or homeless youth), so the federal EITC is 0.
    • Age 24, 2022: 0. The federal minimum is 25, and (b-5) starts in 2023.
    • Age 65, 2022: 0. The federal maximum is 64, and (b-10) starts in 2023.
    • Age 40, 2022: 68.85. 7.65% × 5,000 = 382.50 (under the 560 maximum; the single phase-out starts at 9,160), × 18%.
    • Age 70, 2023: 76.50. The expanded path gives 382.50 (under 600, below the 9,800 phase-out), × 20%.
    • ITIN, 2022: 0. The federal SSN rule in 32(m) applies.
    • ITIN, 2023: 76.50. The (b-15) path applies.
    • "2021 Illinois Zero EITC" (input renamed to eitc_earned_income): 180. The federal 1-child credit is 34% × 2,941.18 = 1,000, × 18%. This is the same edit Net spouses' self-employment losses in state EITC helper earned income (IL, CO, DC, IN) #9820 makes, so the two merge cleanly together, which I confirmed with merge-tree.
  • The PR body's "before" figures. 137.70 = 18% × 15.3% × 5,000 under the 2021 ARPA schedule, and 68.85 = 18% × 382.50.
  • Compatibility with Net spouses' self-employment losses in state EITC helper earned income (IL, CO, DC, IN) #9820. Net spouses' self-employment losses in state EITC helper earned income (IL, CO, DC, IN) #9820's 2021 IL case (joint, wages 10,000, spouse SE −4,000) stays at 432 under this PR's branch: the federal eitc already nets the loss (2,400), and 2,400 × 18% = 432.
  • Code.
    • if not p.expansion_in_effect branches on a scalar parameter, which is fine in a vectorized formula.
    • The branch reuses the federal eitc, so the federal filing, take-up, investment-income, section 911 and qualifying-child SSN rules all apply.
    • The NH Add New Hampshire state supplementation for 2026 #10156 pattern doesn't apply (no state-gated key).
    • The 2023+ path is byte-identical apart from hoisting p.
  • Other IL tests. The pre-2023 cases on the merged tree are "2021 Illinois Zero EITC" (180) and "2021 Illinois Positive EITC", which supplies eitc: 0 and gets 0. Both stay correct. The pre-2023 rebate, property and credit-order files don't supply age-expanded or ITIN filers.
  • Changelog. changelog.d/il-eitc-pre-2023-federal.fixed.md is a top-level fragment with the fixed type.
  • Source-conflict ratchet (Tie source-conflict markers to the register shared with Axiom #10287). The one added comment in il_eitc.py matches neither CONFLICT_COMMENT_RE nor ATTEMPT_RE, and the new parameter has no comments, so the ratchet passes statically.
  • Partner tests. No files under tests/policy/baseline/partners/** are touched.

Axiom line assessment

There is no axiom: line (checked in every format), which is a SHOULD (Should 3). encoded-correct doesn't fit, because rulespec's IL credit output starts in 2023. The recommended line is a dispatch-ready pe-parity issue marked queued, or an extension of rulespec-us#1699. rulespec-us has no issue that references #9824.

CI status

All 26 reported checks pass at d7ce1afbac (gh pr checks 9824), including the four Baseline states shards and Quick Feedback. None is pending or failing. Unlike #9820, this head shows no codecov checks. That run is from 2026-10-08, before main's 319 newer commits. I didn't rerun locally: the local core can't import current main, and the merged-tree conclusions above come from static tracing.

Branch status

The branch is 3 commits ahead of main and 319 behind. git merge-tree --write-tree PolicyEngine/main d7ce1afbac merges cleanly. It also merges cleanly on top of main merged with #9820 (an identical edit to the first il_eitc.yaml case).

Verdict: REQUEST_CHANGES

@DTrim99 DTrim99 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 gate and the 2021-2022 results are correct (35 ILCS 5/212; Schedule IL-E/EIC 2022 lines 5-6). Three should-address items: (1) match.yaml extrapolates 18% back before 2018, but the law gives 14% (2017), 10% (2013-16), 7.5% (2012) and 5% (2000-11), so add the dated rates and a 2017 case or narrow the claim to 2018-2022; (2) the ITIN comment cites (b-5) instead of (b-15); (3) there's no axiom line. Two suggestions. Full report in the comment above.

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.

Illinois EIC applies the 2023 age and ITIN expansion in 2021 and 2022

3 participants