Skip to content

Base the Illinois EIC on the federal EITC alone before 2023 and add the 2000–2017 match rates - #9824

Merged
PavelMakarchuk merged 5 commits into
mainfrom
il-eitc-pre-2023-federal
Oct 27, 2026
Merged

PavelMakarchuk merged 5 commits into
mainfrom
il-eitc-pre-2023-federal

Conversation

@PavelMakarchuk

@PavelMakarchuk PavelMakarchuk commented Oct 5, 2026 •

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 (2018–2022).
  • match.yaml now has the full 35 ILCS 5/212(a) schedule: 5% (2000–2011), 7.5% (2012), 10% (2013–2016), 14% (2017), 18% (2018–2022) and 20% (2023 on). Before, 18% was extrapolated back from 2021.
  • 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 65, 2021 137.70 137.70
Age 24, 2022 0 68.85
Age 65, 2022 0 68.85
Age 40, 2022 68.85 68.85
Age 40, 2017 53.55 68.85
Age 70, 2023 76.50 76.50
ITIN, age 40, 2022 0 68.85
ITIN, age 40, 2023 76.50 76.50

The expected values are the § 212(a) rate times the federal EITC:

  • 2017: 7.65% × 5,000 = 382.50 (Rev. Proc. 2016-55: maximum 510, phase-out from 8,340), × 14% = 53.55.
  • 2021, age 65: IRC 32(n) drops the maximum age and sets 15.3%, so 765, × 18% = 137.70.
  • 2022, age 40: 382.50 × 18% = 68.85. The other 2021–2022 cases have no federal EITC.
  • 2023: 20% × 7.65% × 5,000 under (b-10) and (b-15).

TAXSIM-35 itself also gives the 2021–2022 Illinois credit to the filers with no federal EITC, 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 Illinois tax 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).

axiom: TheAxiomFoundation/rulespec-us#1919 queued (open, pe-parity; the signed encoder dispatch needs approval)

🤖 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.

- match.yaml now has the full 35 ILCS 5/212(a) schedule: 5% (2000), 7.5%
  (2012), 10% (2013), 14% (2017), 18% (2018) and 20% (2023), with the
  statute reference. Before, 18% was extrapolated back from 2021.
- expansion_in_effect starts at 2000-01-01: false, and its description uses
  the "if this is true" form; the note on the earlier credit moves to the
  il_eitc code comment.
- New cases: a 2017 childless filer gets 14% of the federal EITC (53.55), and
  a 2021 childless filer aged 65 gets 18% through the federal credit under
  IRC 32(n) (137.70).
- The 2023 ITIN case cites 35 ILCS 5/212(b-15), not (b-5).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PavelMakarchuk PavelMakarchuk changed the title Use 18% of the federal EITC for the Illinois EIC before 2023 Base the Illinois EIC on the federal EITC alone before 2023 and add the 2000–2017 match rates Oct 26, 2026
@PavelMakarchuk

Copy link
Copy Markdown
Collaborator Author

Thanks, David. Commit 6280f44 addresses the review.

Should 1: rates before 2018. match.yaml now has the full 35 ILCS 5/212(a) schedule, with a § 212(a) reference. From the statute:

(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% of the federal tax credit for each taxable year beginning on or after January 1, 2012 and ending prior to December 31, 2013, (iii) 10% of the federal tax credit for each taxable year beginning on or after January 1, 2013 and beginning prior to January 1, 2017, (iv) 14% of the federal tax credit for each taxable year beginning on or after January 1, 2017 and beginning prior to January 1, 2018, (v) 18% of the federal tax credit for each taxable year beginning on or after January 1, 2018 and beginning prior to January 1, 2023, and (vi) 20% of the federal tax credit for each taxable year beginning on or after January 1, 2023.

The values are 2000-01-01: 0.05, 2012-01-01: 0.075, 2013-01-01: 0.1, 2017-01-01: 0.14, 2018-01-01: 0.18 and 2023-01-01: 0.2. The earliest date is before 2015, so backdate_parameters does not move it. The new 2017 case is your example: 7.65% × 5,000 = 382.50 (Rev. Proc. 2016-55 § 3.05: maximum 510, phase-out from 8,340), × 14% = 53.55. I also moved expansion_in_effect to start at 2000-01-01: false, so both parameters cover the same years. The changelog now names the earlier rates. I did not add cases before 2017, because PE's federal EITC parameters start in 2017.

Should 2: ITIN citation. The test comment now cites (b-15). The statute's (b-15) is the ITIN route: "each individual taxpayer filing a return using an individual taxpayer identification number (ITIN) ... is entitled to the credit".

Should 3: axiom: line. Not added yet. As you found, rulespec-us#1699 covers the 2023+ composition only, so the pre-2023 base needs its own pe-parity issue. I drafted it (module us-il/statutes/35/5/212.yaml, the § 212(a) text and the (b-5)/(b-10)/(b-15) lead-ins, the 2022 Schedule IL-E/EIC lines 5–6, and the cases from this PR as companions). The line will be axiom: rulespec-us#<n> queued once that issue is filed.

Suggestion 1. Added "Childless filer aged 65 in 2021 gets 18% of the federal EITC": IRC 32(n)(2) drops "but not attained age 65" and 32(n)(3) sets 15.3%, so 15.3% × 5,000 = 765, × 18% = 137.70.

Suggestion 2. The expansion_in_effect description now ends "if this is true." The sentence about the earlier credit moved to the code comment in il_eitc.py.

All 18 cases in il_eitc_pre_2023.yaml and il_eitc.yaml pass locally, and so do all Illinois tax tests.

@DTrim99

DTrim99 commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

PR Review (round 2): Base the Illinois EIC on the federal EITC alone before 2023 and add the 2000–2017 match rates

Summary

One author commit since round 1 (6280f440cf, reviewed against d7ce1afbac).

  • Fixed. It fixes Should 1 and Should 2 and takes both suggestions.
    • match.yaml now carries the full 35 ILCS 5/212(a) schedule. I checked it against the current statute and the three public acts that set the rates.
    • It adds a 2017 case (14%) and a 2021 age-65 case.
    • The ITIN comment now cites (b-15).
    • The parameter description follows the bool template.
    • Both new expectations check out by hand.
  • Still open: Should 3 (axiom line). The PR body still has no axiom: line. No rulespec-us issue has been filed: the author's comment says the issue is drafted but not yet filed.
  • CI. One failure, "Package and compatibility". Main caused it: the branch's uv.lock predates Stop trusting the compromised eMudhra CA certificates #10377's uv pin. The fix is to merge main and re-run. It is not a finding.
  • Merged tree. The merge with main is clean. Main's newer federal EITC changes reach the pre-2023 branch through eitc, as § 212(a) intends, and leave every new case unchanged. The source-conflict ratchet passes statically.

Open: 0 critical, 1 should, 0 suggestions.

Prior findings

Finding Status Evidence
S1: match.yaml extrapolated 18% back before 2021 Fixed Values are now 2000: 0.05, 2012: 0.075, 2013: 0.1, 2017: 0.14, 2018: 0.18 and 2023: 0.2, with a 35 ILCS 5/212(a) reference. They match the statute and P.A. 97-652, 100-22 and 102-700 (quotes under Verified). New case "Childless filer aged 40 in 2017 gets 14% of the federal EITC" = 53.55. Title and changelog reworded.
S2: ITIN comment cited (b-5) Fixed The 2023 ITIN case now reads "From 2023 35 ILCS 5/212(b-15) accepts an ITIN."
S3: no axiom: line Open The body has no line containing "axiom" (checked at 6280f440cf). rulespec-us has no issue that references #9824 or the pre-2023 IL base. rulespec-us#1699 is unchanged since 2026-10-12.
Suggestion 1: 2021 age-65 case Fixed Added "Childless filer aged 65 in 2021 gets 18% of the federal EITC" = 137.70.
Suggestion 2: bool description template Fixed The description now ends "..., and to ITIN filers, if this is true." The note about the earlier credit moved to the il_eitc.py comment.

New findings

None.

Verified

Rate schedule.

  • Current law. 35 ILCS 5/212(a), as amended through P.A. 102-700, reads: "(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."
  • How the dates map. A calendar 2012 year doesn't end "prior to December 31, 2012", so 2012 takes 7.5%. Likewise 2013 takes 10%. The parameter dates are therefore right.
  • Public acts.
    • P.A. 97-652 added "(ii) 7.5% … January 1, 2012 … and (iii) 10% … beginning on or after January 1, 2013".
    • P.A. 100-22 added "(iv) 14% … January 1, 2017 … and (v) 18% … beginning on or after January 1, 2018".
    • P.A. 102-700 is the statute's source note for the 20% rate and (b-5)/(b-10)/(b-15).

Hand-checked expectations (every new or changed one). All three are single filers with $5,000 of wages and no children.

  • Age 40, 2017: 53.55. Rev. Proc. 2016-55 § 3.05 gives, for no children, "Earned Income Amount … $6,670", "Maximum Amount of Credit … $510" and "Threshold Phaseout Amount (Single …) … $8,340". So the federal credit is 7.65% × 5,000 = 382.50, and 14% of that is 53.55. PE's eitc/max.yaml (2017: 510) and eitc/phase_out/start.yaml (2017: 8,340) agree.

  • Age 65, 2021: 137.70. IRC 32(n):

    • (2): "applied without regard to the phrase 'but not attained age 65'";
    • (3): "substituting '15.3' for '7.65'";
    • (4)(A): "$9,820" and "$11,610".

    So the federal credit is 15.3% × 5,000 = 765, below the 1,502 maximum and the 11,610 phase-out start, and 18% of that is 137.70. PE has age max 2021 .inf, max 1,502 and phase-out 11,610. The test comment's paragraph citations are correct.

  • ITIN, 2023: 76.50 (comment-only change). 7.65% × 5,000 = 382.50, below the 2023 maximum of 600 and the 9,800 phase-out. 20% of that is 76.50. The statute's (b-15) is the ITIN route: "each individual taxpayer filing a return using an individual taxpayer identification number (ITIN) … is entitled to the credit".

  • PR body "Before" column. The new 2017 row shows 68.85, which is 18% × 382.50: the old extrapolated rate. The 2021 age-65 row shows 137.70 before and after. Both are right.

Reach of the rate change. No IL tax test on main or at the head has a period of 2017 or earlier, apart from the new case. The IL partner eitc/ctc cases are all 2023 or later. So moving 2000–2017 off 18% changes no other expectation.

Years before 2017.

  • PE's federal EITC amounts start in 2017. A 2000–2016 IL EIC would therefore apply the correct § 212(a) rate to 2017 federal amounts extrapolated backward. The author's reason for not adding pre-2017 cases is sound.
  • § 212(b) made the credit nonrefundable "for taxable years beginning before January 1, 2003". That is also outside what PE computes. Neither point needs action.

Code and parameters.

  • The new il_eitc.py comment ("a percentage of the federal credit allowed, with no age or ITIN route (35 ILCS 5/212(a); …)") is accurate.
  • Moving expansion_in_effect to 2000-01-01: false is harmless and aligns the two parameters' start dates.
  • reference and unit sit under metadata, so main's test_parameter_yaml_keys.py is satisfied.
  • The NH Add New Hampshire state supplementation for 2026 #10156 pattern doesn't apply.

Changelog. changelog.d/il-eitc-pre-2023-federal.fixed.md is still a top-level fixed fragment, with accurate wording.

Source-conflict ratchet (#10287). The head tree predates the guard. I ran main's CONFLICT_COMMENT_RE over the comment lines of il_eitc.py, match.yaml and expansion_in_effect.yaml and got no hits. Test YAML isn't scanned. The merged tree therefore passes.

Partner tests. No files under tests/policy/baseline/partners/** are touched.

Axiom line assessment

Still missing, so Should 3 stays open. Pavel is staff, so axiom: needed isn't available. encoded-correct doesn't fit: rulespec-us us-il/statutes/35/5/212.yaml has the rate schedule, but its credit output only has effective_from: '2023-01-01' versions.

What's needed. File the drafted issue on rulespec-us. It must be OPEN, labelled pe-parity and dispatch-ready, then add axiom: rulespec-us#<n> queued to the body. The issue needs:

  • the module path;
  • the corpus citation and verbatim § 212(a)(i)–(vi) text, 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 whose base is the federal credit allowed;
  • companion cases.

About the companion cases. The author plans to reuse this PR's cases. That works only if the issue presents each one with its external derivation, not as PolicyEngine output. For example: the Rev. Proc. 2016-55 amounts × 14% = 53.55; IRC 32(n) × 18% = 137.70; and the 2022 Schedule IL-E/EIC lines 5–6.

Alternative. Extend rulespec-us#1699 (OPEN, pe-parity) to cover the pre-2023 base.

CI status

gh pr checks 9824 at 6280f440cf: 32 pass, 1 fail, none pending. The four Baseline states shards, Quick Feedback and Household API Partners all pass.

The failure is "Package and compatibility" (run 40317907190, job 121555249060). It is caused by main and is not a finding.

  • Failing step. Both "Refresh only the release version in the registry lock" steps (the rc1 and final candidates) exit 2 with release_lock.py: error: Versioning changed the reviewed dependency graph; prepare and review a registry lock first.
  • Cause.
    • The job runs main's workflow, which pins uv 0.13.4. Stop trusting the compromised eMudhra CA certificates #10377 (merged 2026-10-22) set that pin and moved main's uv.lock to revision = 5.
    • The branch's uv.lock is still revision = 3.
    • Re-locking with uv 0.13.4 therefore rewrites the lock, and release_lock.py rejects any non-version difference.
  • Everything else in the job passes: test_build_metadata.py (39 passed), the smoke imports on Python 3.11 to 3.14 ("import OK"), and the microsimulation data tests (78 passed on each).
  • Fix. The PR doesn't touch uv.lock, so merging main and re-running clears it.

Branch status

The branch is 4 commits ahead of main and 355 behind.

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.

Round 2: S1 is fixed (match.yaml now has the full 35 ILCS 5/212(a) schedule from 2000, plus a 2017 case), and so are S2 and both suggestions. All new expectations hand-check. One item still open: there's no axiom line and no rulespec-us issue yet. Please file the drafted pe-parity issue and add 'axiom: rulespec-us# queued', or extend #1699. The red 'Package and compatibility' check is main-caused (the branch's uv.lock revision 3 vs main's uv 0.13.4 after #10377), so merge main and re-run. Full report in the comment above.

@PavelMakarchuk

Copy link
Copy Markdown
Collaborator Author

Thanks, David.

  • Axiom line. The PR body now has axiom: TheAxiomFoundation/rulespec-us#1919 queued. rulespec-us#1919 is the drafted pe-parity issue for the pre-2023 base. It was filed as a new issue, not as an extension of Relax dependencies #1699, because Relax dependencies #1699 covers the 2023+ age and ITIN routes.
  • Package and compatibility. Commit 6f625ff merges main, so uv.lock now matches main. CI is running again.

@DTrim99

DTrim99 commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

PR Review (round 3): Base the Illinois EIC on the federal EITC alone before 2023 and add the 2000–2017 match rates

Summary

Head 6f625ffafa. Since round 2 (6280f440cf), the only changes are a clean merge of main (no hand resolutions; none of this PR's files change) and the new axiom line axiom: TheAxiomFoundation/rulespec-us#1919 queued. The one open item is closed, so nothing is left open.

Prior findings

Finding Status Evidence
Should 1 (round 2, carried from round 1 S3): no axiom line and no rulespec-us issue Fixed rulespec-us#1919 is open and labelled pe-parity. It names us-il/statutes/35/5/212.yaml and its test companion. It quotes § 212(a) and the 2022 Schedule IL-E/EIC line 6 (18%). It notes that the module already encodes the full 0.05 / 0.075 / 0.10 / 0.14 / 0.18 / 0.20 schedule (2000 / 2012 / 2013 / 2017 / 2018 / 2023). Its companion tests come from the same external sources as this PR's YAML (2017: 53.55; 2021 age 65: 137.70; the 2022 age-24, age-65 and ITIN zeros), and it records the blocker.
Round-1 S1, S2 and both suggestions Fixed in round 2 Unchanged at this head.

Axiom

rulespec-us#1919 queued is valid: open, pe-parity, dispatch-ready, matches the head, blocker recorded.

CI and branch

The merge with main should clear round 2's main-caused "Package and compatibility" failure. At review time, 27 checks pass and 6 Contrib shards are still pending. Let CI finish green before merging. The branch is 3 behind main and merges cleanly.

Verdict: APPROVE

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

Round 3: the last open item is fixed. rulespec-us#1919 queued is open, pe-parity labelled, and dispatch-ready, with companion cases matching this PR's YAML, and the main merge changed none of the PR's files. A few Contrib shards were still pending when I checked, so please let CI finish green before merging. Full note in the comment above.

@PavelMakarchuk
PavelMakarchuk merged commit eff6f62 into main Oct 27, 2026
33 checks passed
@PavelMakarchuk
PavelMakarchuk deleted the il-eitc-pre-2023-federal branch October 27, 2026 16:59
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