Skip to content

Deny the refundable CTC and the EITC to section 911 filers (26 U.S.C. 24(d)(3), 32(c)(1)(C), 6012(c)) - #9750

Merged
MaxGhenis merged 17 commits into
mainfrom
ctc-refundable-foreign-earned-income-exclusion
Oct 9, 2026
Merged

MaxGhenis merged 17 commits into
mainfrom
ctc-refundable-foreign-earned-income-exclusion

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary

refundable_ctc never applied 26 U.S.C. 24(d)(3), so a filer who excludes foreign earned income or housing amounts under section 911 (Form 2555) still got the additional child tax credit. This PR makes the refundable CTC zero for those filers from tax year 2015 (except fully refundable 2021). It also applies 26 U.S.C. 6012(c), which counts the section 911 exclusion toward the filing requirement (without that, the bar could turn some of these filers into model non-filers), and 26 U.S.C. 32(c)(1)(C), which denies the EITC to anyone who claims the benefits of section 911 (without that, the filing fix would have let the EITC through for them). The rest of the PR keeps those federal changes from pushing other variables the wrong way. A section 911 claimant under the filing threshold files when would_file_if_eligible_for_refundable_credit is true (the exclusion is claimed on Form 2555 with a return; see Methodology choices), so denying the credits does not turn it into a non-filer. The section 911 bar reaches New Jersey's childless EITC age exception, Colorado's replica of the refundable CTC, the state credits that recompute a federal-style EITC (Colorado, DC, Illinois, Indiana, Washington) and the American Family Act reform's copy of the refundable CTC in years before 2025.

Fix round 3 (2026-10-07)

Addresses review r2's sole P2 finding (P2-1). New PR head: 0df2fbec60b09f673fc3dec072efb0f1e7020176.

The 2040 American Family Act fixture with Puerto Rico residence previously kept the $825 federal refundable CTC but lost all $825 of the Puerto Rico refundable CTC because the shared section 911 bar became true after the reform's fully-refundable parameter expired in 2039. AFA now overrides the shared bar from 2025 onward; its refundable-credit formula, Puerto Rico credit and other consumers share that rule. Earlier years retain the baseline bar. AFA section 2(a), new IRC 24A(d), section 2(c), and section 2(f)(1) establish refundability including Puerto Rico, replace old section 24 after 2024, and apply without a sunset. The existing 2039 parameter-window limitation remains: this change preserves the modeled $825 rather than implementing the bill's full refund beyond that window.

Validation: 35/35 YAML cases across four files and 3/3 Python tests across two files passed, run sequentially as single files with locked dependencies on Python 3.13.15. make format (format and lint) and git diff --check passed. No failures or skips. These are local checks at this new head; the CI results below are historical results at 1d276d820d.

Single-file check Passed
AFA afa_other_dependent_credit.yaml 15
Current-law PR pr_refundable_ctc.yaml 6
refundable_ctc_barred_by_section_911_exclusion.yaml 6
ctc_credit_limit_worksheet_b_applies.yaml 8
AFA test_afa_section_911.py 1
test_ctc_foreign_earned_income_exclusion.py 2

The before-fix run preserved the failing shared-bar assertions in both 2040 AFA fixtures (13 passed, 2 failed); a true bar drives the Puerto Rico guard to $0. The matching current-law fixture remains barred and receives $0 federal and Puerto Rico refundable CTC. The new Python integration test uses Reform.from_dict activation and covers 2024, 2025, 2039 and 2040. Notes and logs remain untracked under build/hub-evidence/; no partner expectations were edited.

Current-law/default-dataset impact: this round changes only the AFA contrib implementation, with its default in_effect parameter false. Baseline formulas and parameter files are unchanged, so current-law outputs on the default dataset are unchanged by this fix. No microsimulation was run this round; the historical impact evidence below remains historical.

Earlier fix round (completed 2026-10-07)

The three P3 findings in review r1 are addressed. Validated prior PR head: 1d276d820d2315ac5b178218d14be26410b8ef32.

  • P3-1 (7caa0a5733): the grid docstring and ctc/integration.yaml describe section 911(f) stacking, already on main via Tax Form 2555 filers' income at stacked rates (26 U.S.C. 911(f)) #9761. The grid explicitly reaches excluders with stacked tax above their no-exclusion twins and a refund to deny. Invariant 5 checks the tax identity with stacking in both runs.
  • P3-2 (e1631f8199): Worksheet B now reads refundable_ctc_barred_by_section_911_exclusion; one condition decides both the worksheet and the refundable credit. Calculated outputs remain unchanged. Directly setting the bar as an input intentionally changes Worksheet B in the two added regression cases. The 2021 early return remains unchanged.
  • P3-3 (e0b5bafd15): the changelog includes the state credits, AFA and Wyden-Smith reforms, and the filing propensity choice.
  • Main was merged at 1614285197 (47ab53e0fb) and again at 1d276d820d (26348e7cf7); both merges were clean.

Validation: all 35 checks at the prior head passed, including the IRS CTC/EITC shard, state/contrib/reform shards, Python/property tests, Household API Partners and CI microsimulation. Completed CI run.

Targeted CI evidence at that prior head: 455/455 YAML cases across 77 files and 45/45 Python tests, with no failures or skips. The Python total comprises the grid (2), Hypothesis (1), credit worksheets (3), federal credit order (16), and override branches (23). CI's synthetic merge tree is identical to the prior PR head tree.

The declared YAML selection contains 449 cases at pre-refactor 1614285197, 451 at e0b5bafd15, and 455 at the prior head. P3-2 adds only the two Worksheet B input-override cases; all six original worksheet cases and all 19 parsed integration cases are unchanged. The later main merge adds four social-security-tax cases. The earlier body's 459/461 local tallies cannot be reconciled to the declared selection from surviving logs and are not counted as validated results. The interrupted mutation run has no result and is not counted either.

Completed local checks (one file at a time, foreground, nice 0): grid 2/2; seeded Hypothesis property test 1/1. With only Worksheet B replaced by its 1614285197 implementation in separate systems, all 13 property outputs were array-equal in 20 current-law/bar-off comparisons (10 generated batches; years 2018, 2022 and 2025). This isolates P3-2 from unrelated main changes.

The prior differential's 13 equal rows at e0b5bafd15 were preserved. The missing 2026 bar-off row is now equal too, completing 14 law/bar-off rows over 688 households in years 2015, 2017, 2018, 2021, 2022, 2025 and 2026; worksheet and bar source bytes are unchanged between those heads. These are 13 reused rows plus one new row, not 14 reruns at the prior head. Direct bar inputs deliberately differ: true disables 194 old Worksheet B results; false enables 304 results the old condition excluded. Both added YAML regressions pass in prior-head CI.

Detailed evidence and report. make format and lint passed. No partner test expectations were edited. The optional no-stacking mutation was not completed and is excluded from validated results.

Law (each source read on 2026-10-01)

  • 26 U.S.C. 24(d)(3) (Cornell LII): "Paragraph (1) shall not apply to any taxpayer for any taxable year if such taxpayer elects to exclude any amount from gross income under section 911 for such taxable year."
    • Pub. L. 114-27, § 807 added it as section 24(d)(5), for "taxable years beginning after December 31, 2014". Pub. L. 115-141 redesignated it as paragraph (3) in 2018, so the Cornell anchor is #d_3; there is no #d_5.
    • The text names section 911 only. The phrase "section 911, 931, or 933" belongs to the phase-out's modified AGI in section 24(b)(1).
  • 2025 Instructions for Schedule 8812, Part II-A (p. 3): "If you file Form 2555, you cannot claim the additional child tax credit."
  • 26 U.S.C. 6012(c) (Cornell LII): for the filing requirement, "gross income shall be computed ... without regard to the exclusion provided for in section 911".
  • 26 U.S.C. 32(c)(1)(C) (Cornell LII): "The term 'eligible individual' does not include any individual who claims the benefits of section 911 (relating to citizens or residents living abroad) for the taxable year." It took this form in 1986 (Pub. L. 99-514 § 1272(d)(4)), so it applies in every year the model covers, 2021 included.
  • 2015 Instructions for Schedule 8812, What's New: "Beginning 2015, if you file Form 2555 or Form 2555-EZ to claim the foreign earned income exclusion, housing exclusion, or housing deduction, you cannot claim the additional child tax credit." The 2014 instructions have no such rule.

What changes

  • Parameter gov.irs.credits.ctc.refundable.foreign_earned_income_exclusion_bar_applies: false before 2015, true from 2015. Order the residential clean energy credit after the CTC, following Schedule 8812 Credit Limit Worksheets A and B #9742 added the same file to main, so it is no longer in this PR's diff.
  • New variable refundable_ctc_barred_by_section_911_exclusion: true when foreign_earned_income_exclusion > 0, the parameter is true and the year is not fully refundable.
  • ctc_credit_limit_worksheet_b_applies (from Order the residential clean energy credit after the CTC, following Schedule 8812 Credit Limit Worksheets A and B #9742) reads the bar variable instead of repeating its test, so Form 2555 filers skip Schedule 8812 Credit Limit Worksheet B in exactly the years the bar applies (2025 instructions: Worksheet B only if "You are not filing Form 2555").
  • refundable_ctc returns 0 for a barred filer. non_refundable_ctc (ctc less refundable_ctc) becomes the whole credit, still limited to tax by section 26(a).
  • pr_refundable_ctc returns 0 for a barred filer. It takes the larger of refundable_ctc and social security taxes less the EITC, so without this the social security route handed the refund back. Section 24(k)(2)(B)(ii) drops only the three-children condition for residents of Puerto Rico; it does not waive 24(d)(3).
  • The Wyden-Smith reform's copy of refundable_ctc gets the same bar. H.R. 7024 §§ 101-104 amend section 24(h) and leave 24(d)(3) in place.
  • tax_unit_is_required_to_file adds foreign_earned_income_exclusion to gross income, as earned income (it does not count toward the unearned-income test). Before this, a Form 2555 filer below the threshold on included income alone could file only to claim a refundable credit; with that credit barred, tax_unit_is_filer could turn false, which zeroes aca_ptc and switches on Medicaid non-filer rules. An exclusion small enough to keep gross income under the threshold is covered by the filing rule below.
  • eitc_eligible is false for a tax unit with a positive foreign_earned_income_exclusion, in every year. Without it, the filing fix above made such a filer a required filer and the EITC followed: single, $5,000 included wages and $30,000 excluded went from $0 to $382.50 of EITC. The rule does not reuse the CTC bar variable, whose 2015 start and 2021 exception do not apply to the EITC.
  • New Jersey. nj_childless_eitc_age_eligible now excludes section 911 claimants. P.L. 2021, c.130, section 1a(4) (text) extends the credit to filers who are ineligible for the federal EITC "due to age requirements", and they "shall meet all qualifications, except for the minimum or maximum age, for the federal earned income tax credit". Without the guard, the federal EITC denial sent a childless section 911 filer into nj_eitc's age-exception fallback, which pays 40% of the federal childless maximum: a single 40-year-old with $5,000 of included wages and a $30,000 exclusion went from $153 to $259.60, where the law gives $0.
  • Colorado. co_refundable_ctc replicates the federal refundable CTC and subtracts the federal EITC from social security taxes. 1 CCR 201-2, Rule 39-22-129(1) (PDF p. 47) makes the Colorado credit "a percentage of the allowed federal child tax credit", so the section 24(d)(3) bar now applies to the replica. Without it, a 2022 filer with three young children, $1,000 of included wages and a $30,000 exclusion got $76.50 of refundable basis (and $45.90 of Colorado CTC) once the federal EITC went to zero.
  • Filing. tax_unit_is_filer gains a reason: the tax unit has foreign_earned_income_exclusion > 0 and would_file_if_eligible_for_refundable_credit is true (its default). This is a modelling proxy; see Methodology choices.
  • State EITC recomputations. A new helper, eitc_section_911_eligible in tools/state_eitc_helpers.py, applies 32(c)(1)(C) in calculate_eitc_like_amount (Colorado's ITIN and under-25 paths, Illinois, Indiana's conformity check, DC's with-child credit) and in DC's childless credit and both Washington WFTC paths. Each of these credits is the federal credit with named rules waived (age, SSN, separate filing): Illinois 35 ILCS 5/212(b-5), (b-10), (b-15) base the credit on "the federal tax credit for which [the taxpayer] would have been eligible" without regard to age or SSN; Colorado Rule 39-22-123.5(2), D.C. Code 47-1806.04(f), WAC 458-20-285 ("you cannot file Form 2555") and Indiana's IRC conformity likewise keep the federal qualifications. Without it, counting the exclusion toward the filing requirement made these filers required filers and paid them (a single 40-year-old with $5,000 of included wages and a $30,000 exclusion: Colorado $191.25, DC $382.50, Washington $335).
  • American Family Act reform. Its shared refundable_ctc_barred_by_section_911_exclusion keeps the baseline formula before 2025 and is false from 2025 onward. Both the federal and Puerto Rico refundable credits use that rule, including after the fully-refundable parameter expires in 2039. Without the pre-2025 bar, a 2024 claimant with three children and $1,000 of included wages got $76.50 once the federal EITC went to zero.
  • pr_refundable_ctc cites sections 24(k)(2)(B)(ii) and 24(d)(3). (An earlier version also split two reference strings fused by a missing comma; Separate concatenated URLs in Variable reference and documentation strings #9786 made that fix on main.)

What does not change, and why

  • 2021 (fully refundable year). Section 24(i)(1)(A), as in force for 2021, said that for a taxpayer with a principal place of abode in the United States for more than half the year (or a bona fide resident of Puerto Rico), "subsection (d) shall not apply". That switches off the section 911 bar too. The 2021 Schedule 8812 agrees: Part I-B (filers who check a box on line 13) has no Form 2555 condition, and only Part I-C filers are told "If you file Form 2555, do not complete Parts II-A through II-C". The model has no abode input and already sends every 2021 filer down Part I-B. A 2021 Form 2555 filer whose main home was abroad for most of the year should fall under Part I-C; the model still gives that filer the fully refundable credit. This limitation predates the PR.
  • Sections 931 and 933. Section 24(d)(3) covers section 911 only, so specified_possession_income (section 931) and puerto_rico_income (section 933) do not trigger the bar.
  • Other reforms that override refundable_ctc.
    • The American Family Act reform sets fully_refundable to true for 2025-2039. Its shared bar applies section 24(d)(3) for years before 2025 (current law) and is false from 2025 onward for all consumers, including Puerto Rico. The reform's parameter changes stop in 2039, so the same branch runs again from 2040; the bar is not applied there, because the bill replaces section 24 with a section 24A that has no section 911 bar and no sunset. A 2040 claimant with one child, $8,000 of included wages and a $1,000 exclusion keeps the $825 the reform gave on main, including the Puerto Rico refund. That figure is itself too low (the bill pays the full credit): the reform's year window is an existing limitation this PR leaves alone.
    • The CTC minimum refundable amount reform caps the refund at ctc_refundable_maximum and sets non_refundable_ctc to 0, so the rest of the credit is dropped. Adding the bar there would deny barred filers the whole credit, so it is left alone. Under that reform the bar variable is still true for an excluding filer, and pr_refundable_ctc (which reads it) is 0 while refundable_ctc is positive.

Methodology choices

A section 911 claimant under the filing threshold counts as a filer whenever would_file_if_eligible_for_refundable_credit is true (the new reason in tax_unit_is_filer). The law does not settle this for the model, so it is a modelling choice.

  • What the law settles. An election "must be filed either with the income tax return, or with an amended return, for the first taxable year of the individual for which the election is to be effective. An election once made remains in effect for that year and all subsequent years unless revoked" (Treas. Reg. 1.911-7(a)(1)). Also, "in the case of an individual claiming an exclusion under section 911, he shall attach Form 2555 to the return required under this paragraph" (Treas. Reg. 1.6012-1(a)(3)). Section 6012(c) counts the exclusion toward the filing threshold, so a claimant over it is a required filer with no choice involved.
  • What it leaves open. The model has one input, the excluded amount. It cannot tell a first-year election, which is made on a return, from a later year of a continuing election, where a claimant under the threshold need not file.
  • The choice. The tax unit's would_file_if_eligible_for_refundable_credit propensity decides. With its default (true), a claimant under the threshold files. With it false and would_file_taxes_voluntarily false, the claimant does not file, as on main.
  • Alternatives considered.
    1. Every claimant files (any positive exclusion is a filing reason). That is right for a first-year election. But it overrides a false filing propensity for continuing-election claimants who need not file, and it fails the two "would not file" cases in tax_unit_is_filer.yaml (the seventh-version mutation check below).
    2. Main's rule: only the existing reasons count. Sections 24(d)(3) and 32(c)(1)(C) remove the refundable credits that were these filers' reason to file, so claimants under the threshold would become model non-filers. aca_ptc gates on tax_unit_is_filer and medicaid_uses_non_filer_rules reads it, so these filers would lose the premium tax credit and switch to Medicaid non-filer rules. That happens even though they report an exclusion that can only be claimed with a return (married parents, one child, $28,000 of included wages and a $1,000 exclusion).
    3. Use would_file_taxes_voluntarily instead. Its default is false, so a household-calculator user who enters an exclusion would be a non-filer by default. That is the same outcome as (2).
  • Why this one. The exclusion is a tax benefit claimed on a return, and the refundable-credit propensity is the closest existing input. With its default, household calculations treat an entered exclusion as claimed. Microdata that set the propensity false keep the claimant a non-filer.
  • Cost. A claimant under the threshold with no refundable credit and no voluntary filing propensity can become a filer here under the default refundable-credit propensity: a childless 22-year-old with $10,000 of included wages and a $1,000 exclusion.
  • Published numbers. The certified dataset has no exclusion input, so these PR paths do not change its published results (see the impact section).

Section 911(f) stacking (on main since #9761)

Main now taxes a Form 2555 filer's included income at the rates it would face with the excluded amount added back (income_tax_main_rates uses taxable_income_plus_section_911_exclusion, less the tax on the excluded amount alone; the AMT does the same). The CTC's tax limit sees that stacked tax: see the #9761 case at the top of ctc/integration.yaml.

This PR's household cases in that file have zero taxable income. The 2025 Form 1040 instructions (p. 37) say "If Form 1040 or 1040-SR, line 15, is zero, don't complete this worksheet", and the model's stacked tax is $0 there too, so their figures match the form. The grid invariants run with stacking in both the bar-on and bar-off runs. The integration tests and grid run with this treatment in place.

Interaction with other PRs (all now merged or closed)

Invariants

policyengine_us/tests/test_ctc_foreign_earned_income_exclusion.py checks these on a 288-household grid (it does not need Hypothesis), and test_ctc_foreign_earned_income_exclusion_property.py checks them on Hypothesis-generated households (single or married, 0-4 dependants aged 0-17, wages to $500,000, exclusion 0 or $1-$130,000; Texas, standard deduction; 2018, 2022, 2025 and 2026). Each batch runs under current law and under a reform that switches the parameter off, which isolates the refundable-CTC bar while preserving the other section 911 rules.

  1. refundable_ctc_barred_by_section_911_exclusion is true exactly for filers with an exclusion, and they have refundable_ctc == 0, pr_refundable_ctc == 0 and eitc == 0 (the EITC under both runs).
  2. A filer without one has refundable_ctc, non_refundable_ctc, pr_refundable_ctc and income_tax bitwise equal to the bar-off run.
  3. The bar never raises refundable_ctc.
  4. 0 <= refundable_ctc <= min(ctc, ctc_refundable_maximum). (refundable_ctc + non_refundable_ctc == ctc is also asserted; it holds by definition.)
  5. The section 26(a)-limited non-refundable credits are equal with and without the bar, even though a barred filer's non_refundable_ctc is the whole credit; so income_tax rises by exactly the refund denied. Both runs tax included income at the section 911(f) stacked rates (Tax Form 2555 filers' income at stacked rates (26 U.S.C. 911(f)) #9761), and the grid test asserts that it includes filers whose stacked tax is above their no-exclusion twin's and who still have part of the credit to refund, so the identity is checked on stacked tax.
  6. In 2021 the bar changes nothing (section 24(i)(1)(A)).
  7. A barred filer never completes Credit Limit Worksheet B, and Worksheet B equals its bar-off value less the barred filers, so the bar is its only Form 2555 test.

Historical mutation checks reported in earlier versions (not rerun this round): with refundable_ctc.py reverted to main (first version of this PR), exactly the four YAML cases that asserted the bar failed and the other 28 in those files passed. With the guard removed from pr_refundable_ctc.py (second version), exactly the one Puerto Rico case that asserts it failed and the other four passed. With the EITC guard removed (fourth version), exactly the three cases that assert it failed (two in eitc_eligible.yaml, one in tax_unit_is_filer.yaml) and the other 13 in those files passed. With the New Jersey and Colorado guards removed (fifth version), exactly the four new state cases failed and the other 71 in those folders passed. With the new state helper disabled (sixth version), all five cases in section_911_state_eitc.yaml failed; removing the filer or AFA guard failed exactly its one new case. For the seventh version: making every exclusion a filing reason fails exactly the two "would not file" cases in tax_unit_is_filer.yaml, and removing the section 911 filing reason fails exactly the two default-propensity cases (11 others pass each time); applying the AFA bar in every year fails only the 2040 case, and in no year only the 2024 case (13 others pass).

Tests

  • ctc_credit_limit_worksheet_b_applies.yaml: 2 new cases (the bar set to true as an input with no exclusion turns Worksheet B off; set to false with an exclusion, Worksheet B applies). Both fail on 2656278f28, where Worksheet B repeated the bar's test.
  • refundable_ctc_barred_by_section_911_exclusion.yaml: 6 cases (exclusion; none; 2014; 2015; 2021; parameter off).
  • refundable_ctc.yaml: 7 new cases (bar on; bar on with the phase-in computed from social security taxes for three children, and its control; parameter switched off; 2014 no bar; 2015 bar; 2021 unchanged).
  • pr_refundable_ctc.yaml: 4 new cases (exclusion with social security taxes gives 0; the same filer without it gets $1,530; 2021 unchanged; matching current-law Puerto Rico 2040 fixture still has no federal or Puerto Rico refund).
  • tax_unit/tax_unit_is_filer.yaml: 3 new cases for section 6012(c) (exclusion over the threshold makes filing required, and the EITC stays $0; the same filer without it is not; the exclusion does not count as unearned income).
  • earned_income/eitc_eligible.yaml: 3 new cases for section 32(c)(1)(C) (ineligible in 2025; the same filer without an exclusion is eligible; ineligible in 2021).
  • states/nj/.../nj_childless_eitc_age_eligible.yaml and nj_eitc.yaml: 4 new cases (the age exception excludes a section 911 claimant; households aged 40 and 20 with an exclusion get $0; the 40-year-old without one gets $153).
  • states/co/.../co_refundable_ctc.yaml: 2 new cases (a section 911 filer gets no refundable basis; the same filer without the exclusion gets $76.50).
  • states/section_911_state_eitc.yaml: 5 cases (Colorado, DC, Illinois, Washington, Indiana), each a required filer because of the exclusion, with no state EITC.
  • tax_unit/tax_unit_is_filer.yaml: 4 cases for claimants below the threshold (a single claimant and married parents with one child each file under the default propensity, and do not file with both propensities false).
  • contrib/congress/afa/afa_other_dependent_credit.yaml: a 2024 claimant remains barred with the reform active; Texas and Puerto Rico 2040 claimants have the shared bar false and keep the reform's $825.
  • contrib/congress/afa/test_afa_section_911.py: production AFA activation preserves the 2024 bar, removes it in 2025/2039/2040, keeps both Puerto Rico refunds in 2040, and preserves current-law bars and refunds in all four years.
  • ctc/integration.yaml: a 2025 head of household with two children, $8,000 of included wages, $12,500 of interest and a $40,000 exclusion. Taxable income and tax are zero (the Foreign Earned Income Tax Worksheet is skipped when Form 1040 line 15 is zero), the EITC is zero (investment income over $11,950), the credit is $4,400 and Schedule 8812 line 14 allows $0 of it. The additional child tax credit is $0, so income tax is $0. A household with the same included income and no foreign earnings gets $825 (line 27), so income tax is -$825.
  • reform/ctc_expansion.yaml: the Wyden-Smith reform with an exclusion.
  • Property tests as above.

Microsimulation impact

Earlier fix round (2026-10-07): the r7 impact result is retained; no new local microsimulation was run. P3-1 updates comments and test coverage. P3-2 changes the implementation of Worksheet B without changing its calculated condition; only explicit bar inputs intentionally differ. Prior-head (1d276d820d) YAML/property CI pass (run); the paired local property outputs and completed worksheet differential above confirm no output change from P3-2 for computed bar values. The retained result is the earlier measured zero difference; the totals below are historical, not measurements at the new head. The reasons:

  • The fix commits preserve the PR's calculated conditions. Subsequent main changes are shared with the comparison baseline; they can change absolute totals. Every formula the PR changes takes a new path only when foreign_earned_income_exclusion > 0, or through refundable_ctc_barred_by_section_911_exclusion, which needs it. The Wyden-Smith and AFA paths are reforms, not current law.
  • On the merged tree, foreign_earned_income_exclusion is still input-only: no formula and no adds.
  • The default dataset is the same build the r7 run used (populace_us_2024.h5@populace-us-2024-spm-20260909, sha256 6496cc43…aee84). The prior r7 investigation inspected that file: none of its 377 columns across the 6 entity tables contains "foreign" or "911". So the exclusion is 0 for every tax unit, and every record takes main's path.
  • The Worksheet B change is output-identical for every input the formula computes. In years that are not fully refundable, the bar is exactly the old test (exclusion > 0 and the parameter on). In 2021 the formula still returns false before reading anything. The two can differ only when the bar is set as an input, which the certified dataset does not.
  • The totals in the table are main's at 6b0e773868. Main has moved since then (for example Limit the CTC by actual tax liability and make formula branches calculate under their overrides #9741 changes the CTC's tax limit), so they are not today's totals. What carries over is the zero difference between branch and main.

Real runs of the default microsimulation for 2026: this branch (050fb01b21) against its merge base on main (6b0e773868), same dataset (populace_us_2024.h5@populace-us-2024-spm-20260909, sha256 6496cc43…aee84), policyengine-core 3.32.12, one process each. Main and branch totals are equal to the cent, so one column shows both.

Variable Main and branch (weighted) Tax units changed
ctc $157.514bn 0 of 79,729
refundable_ctc $40.716bn 0 of 79,729
non_refundable_ctc $116.798bn 0 of 79,729
income_tax $2,592.755bn 0 of 79,729
eitc $69.346bn 0 of 79,729
nj_eitc $0.644bn 0 of 79,729
co_ctc $0.190bn 0 of 79,729
co_eitc $0.222bn 0 of 79,729
dc_eitc $0.134bn 0 of 79,729
il_eitc $0.549bn 0 of 79,729
wa_working_families_tax_credit $0.267bn 0 of 79,729
tax_unit_is_required_to_file (weighted count) 138.09m 0 of 79,729
tax_unit_is_filer (weighted count) 160.59m 0 of 79,729

All 16 arrays measured are bitwise identical, including eitc_eligible, co_refundable_ctc and pr_refundable_ctc (the last has no residence test in its formula, so its national total is not a meaningful figure and is left out). The dataset has no foreign_earned_income_exclusion column in any entity table, and the variable has no formula, so it is 0 for every tax unit and none of the changes fires. The measured society-wide results for this certified dataset do not change; household calculations change only for users who enter a section 911 exclusion. Earlier heads of this PR measured the same.

Axiom

axiom: us:statutes/26/24/d#ctc_refundable_foreign_income_eligible encoded-correct for current law (rules effective from 2026-01-01; rulespec-us does not encode the 2015-2025 years this PR also changes). The companion case section_911_foreign_earned_income_exclusion_exception_denies_refundable_credit in rulespec-us us/statutes/26/24/d.test.yaml sets elects_foreign_earned_income_exclusion_under_911: true and expects refundable_ctc: 0 and non_refundable_ctc: 4000. At rulespec-us main 0a4a8d08a, axiom-encode test with the pinned toolchain passes all 4 cases in that file. The module's rules are effective from 2026-01-01.

axiom: us:statutes/26/32#eitc_demographic_eligible (32(c)(1)(C)) queued in TheAxiomFoundation/rulespec-us#1484. The rule already contains not taxpayer_claims_section_911_benefits, but no companion case sets that input to true. A case copied from one_child_phase_in_and_allowed with the input set to true, expecting eitc_demographic_eligible: not_holds, eitc_allowed: not_holds and eitc: 0, passes locally at rulespec-us 2066cef61 (encoder 3869d66d, engine ffd82132). Adding it needs the signed encoder, and 32.yaml is waiver-frozen.

axiom: us:statutes/26/6012#gross_income_for_section_6012 (6012(c)) queued in TheAxiomFoundation/rulespec-us#1484 as well. The rule (effective 2018-01-01) adds the section 911 exclusion to filing gross income, but every companion case sets that input to 0. A case with a $30,000 exclusion and $10,000 of gross income, expecting $40,000 and a required return, passes locally on the same toolchain.

Follow-ups found on the way (not in this PR)

  • The CTC phase-out uses AGI, not the section 24(b)(1) modified AGI that adds back sections 911, 931 and 933 exclusions.
  • Maryland's federal_eitc_without_age_minimum and Maine's me_pro_forma_childless_eitc do not apply section 32(c)(1)(C). This PR does not change their values: neither reads the filing requirement, the federal EITC or its eligibility, so a section 911 filer's childless credit there is the same before and after (and still wrong where state law follows the federal qualifications). New Jersey's age fallback applies to any federally ineligible childless filer aged 18 or over, not only to filers ineligible because of age; it does enforce investment income (nj_eitc_income_eligible).
  • ma_gross_income subtracts foreign_earned_income_exclusion from federal gross income, while the federal MAGI variables treat that amount as outside AGI.

@codecov

codecov Bot commented Oct 2, 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 (13bd6a8).
⚠️ Report is 132 commits behind head on main.

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

@MaxGhenis
MaxGhenis marked this pull request as ready for review October 2, 2026 13:43
@MaxGhenis
MaxGhenis force-pushed the ctc-refundable-foreign-earned-income-exclusion branch from 74bd843 to a0b9b88 Compare October 2, 2026 20:34
@MaxGhenis
MaxGhenis force-pushed the ctc-refundable-foreign-earned-income-exclusion branch from a0b9b88 to 13bd6a8 Compare October 3, 2026 03:16
MaxGhenis added a commit that referenced this pull request Oct 3, 2026
…3, citations

- Worksheet B excludes Form 2555 filers only from 2015, when 24(d)(3) (then
  (d)(5)) first barred their refundable CTC. Reuses #9750's
  foreign_earned_income_exclusion_bar_applies parameter, byte-identical.
- Colorado's 2023 DR 0104CN line 4 is Schedule 8812 line 13 (Worksheet A
  line 5, after Worksheet B); 2022 lines 4-6 stay Worksheet A lines 1-3.
- Comments name the 2022 lines (Form 5695 line 30; no 6m) and the credits
  not modeled (Form 8978, Form 8910); split the Worksheet A line 4 and
  Worksheet B line 15 anchors; Worksheet B line 14 is on page 6.
- The 24(h)(5) cap is $1,400 indexed ($1,700 for 2025).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis force-pushed the ctc-refundable-foreign-earned-income-exclusion branch 2 times, most recently from 7ecaa09 to adad909 Compare October 3, 2026 14:16
MaxGhenis and others added 7 commits October 3, 2026 12:21
26 U.S.C. 24(d)(3) says the refundable portion of the Child Tax Credit
"shall not apply to any taxpayer for any taxable year if such taxpayer
elects to exclude any amount from gross income under section 911 for such
taxable year". refundable_ctc never read foreign_earned_income_exclusion,
so Form 2555 filers got the additional child tax credit.

- Add gov.irs.credits.ctc.refundable.foreign_earned_income_exclusion_bar_applies
  (false before 2015, true from 2015: Pub. L. 114-27 section 807 applies to
  taxable years beginning after 2014).
- refundable_ctc is zero when the exclusion is positive and the bar applies.
  The fully refundable year (2021) is unchanged: section 24(i)(1)(A) switched
  off subsection (d) for filers living in the United States, which the model
  assumes.
- Apply the same bar in the Wyden-Smith reform's copy of refundable_ctc
  (H.R. 7024 amends section 24(h) and leaves 24(d)(3) in place).
- Add YAML unit, household and reform tests, and Hypothesis property tests
  (hypothesis joins the dev extras).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hypothesis is a dev extra. Importing it at module level would fail test
collection in any environment installed without dev extras.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review of the first version found two problems.

pr_refundable_ctc takes the larger of refundable_ctc and social security
taxes less the EITC, so the social security route handed the refund back
to a filer the bar had just denied. Section 24(k)(2)(B) drops only the
three-children condition for residents of Puerto Rico; it does not waive
section 24(d)(3). The bar now lives in one variable,
refundable_ctc_barred_by_section_911_exclusion, read by refundable_ctc,
the Wyden-Smith reform and pr_refundable_ctc.

The household test gave a tax figure the model computes without section
911(f), which taxes included income at the rates it would face with the
excluded amount added back. The test now uses zero taxable income, where
the Foreign Earned Income Tax Worksheet is skipped, so its figures match
the form.

Also fix two reference URLs fused by a missing comma in pr_refundable_ctc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Second review of this PR (APPROVE WITH CHANGES) found:

- With the bar on, a Form 2555 filer whose only reason to file was the
  refundable credit could become a model non-filer, which zeroes the
  premium tax credit and switches on Medicaid non-filer rules. The root
  cause predates this PR: 26 U.S.C. 6012(c) computes gross income for the
  filing requirement "without regard to the exclusion provided for in
  section 911", and tax_unit_is_required_to_file did not. It now adds the
  exclusion to gross income (as earned income, not unearned).
- The household test's counterfactual and "every figure is the form's"
  wording overclaimed; it now asserts the section 26(a)-limited credits.
- The social security case did not route through ctc_phase_in; it now
  computes the phase-in from social security taxes.
- The 2021 Puerto Rico case used an input combination 2021 law rules out.
- The property test replaces a 26(a) check that could not fail with the
  equality of the limited credits under the bar and without it, covers
  pr_refundable_ctc, and caps dependants at 17.

Also: changelog and parameter text name the 2021 exception, cite
24(k)(2)(B)(ii) and the prior-year Schedule 8812 instructions URL, fix
two fused reference URLs, and ignore .hypothesis/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Third review of this PR found that the section 6012(c) filing fix made a
Form 2555 filer a required filer, which let the EITC through: the
model's EITC lacked section 32(c)(1)(C), "The term 'eligible individual'
does not include any individual who claims the benefits of section 911".
In the new filing fixture (single, $5,000 included wages, $30,000
excluded) the EITC went from $0 to $382.50.

eitc_eligible now excludes a tax unit with a positive
foreign_earned_income_exclusion. Unlike the CTC bar, the rule has no 2015
start or 2021 exception, so it does not reuse the CTC bar variable.

Also: the deterministic grid tests move out of the Hypothesis module so
they run without the dev extra, the property tests assert a zero EITC for
section 911 claimants, and a Puerto Rico test comment cites
24(k)(2)(B)(ii).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fourth review of this PR found two state credits that the federal
changes made worse for section 911 filers.

- New Jersey: with the federal EITC now denied (32(c)(1)(C)), a childless
  section 911 filer fell into nj_eitc's age-exception fallback, which pays
  40% of the federal childless maximum. A single 40-year-old with $5,000 of
  included wages and a $30,000 exclusion went from $153 to $259.60; the
  law gives $0. P.L. 2021, c.130, section 1a(4) requires the filer to
  "meet all qualifications, except for the minimum or maximum age, for
  the federal earned income tax credit". nj_childless_eitc_age_eligible
  now excludes section 911 claimants.
- Colorado: co_refundable_ctc replicates the federal refundable CTC and
  subtracts the federal EITC from social security taxes. With that EITC
  now zero, a 2022 filer with three young children, $1,000 of included
  wages and a $30,000 exclusion got $76.50 of refundable basis. Colorado
  matches the allowed federal credit (1 CCR 201-2, Rule 39-22-129(1)), so
  the section 24(d)(3) bar now applies to the replica.

Removing either guard fails exactly the new cases that assert it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fifth review of this PR found three more places where the earlier changes
moved a section 911 claimant the wrong way.

- Filing: with the refundable CTC and the EITC denied, a claimant below
  the filing threshold lost the refundable-credit reason to file and became
  a model non-filer (no premium tax credit; Medicaid non-filer rules). But
  the exclusion is claimed on Form 2555 attached to the return (Treas.
  Reg. 1.911-7(a)(1): the election "must be filed either with the income
  tax return, or with an amended return"). tax_unit_is_filer now treats a
  positive exclusion as filing.
- State EITCs: counting the exclusion toward the filing requirement
  (6012(c)) opened state credits that recompute a federal-style EITC
  without 32(c)(1)(C): Colorado's ITIN and under-25 paths, DC's childless
  credit, Illinois, Indiana's conformity check and Washington's WFTC. Each
  waives only named federal rules (age, SSN, separate filing). A new
  helper, eitc_section_911_eligible, applies the exclusion in
  calculate_eitc_like_amount and in DC's and Washington's own paths.
- AFA: the reform's copy of refundable_ctc runs current law before 2025
  and lacked the section 24(d)(3) bar, so a 2024 claimant gained $76.50
  once the federal EITC went to zero.

Removing any of the three guards fails exactly the new cases for it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis force-pushed the ctc-refundable-foreign-earned-income-exclusion branch from adad909 to 20cbba0 Compare October 3, 2026 16:21
A continuing section 911 election needs no return below the filing
threshold (Treas. Reg. 1.911-7(a)(1)), so a claimant under the threshold
files only when the tax unit would file to claim a tax benefit. The
American Family Act has no section 911 bar, so the reform's copy of the
refundable CTC applies the bar only to years before 2025.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis MaxGhenis changed the title Deny the refundable CTC to filers electing the section 911 exclusion (26 U.S.C. 24(d)(3)) Deny the refundable CTC and the EITC to section 911 filers (26 U.S.C. 24(d)(3), 32(c)(1)(C), 6012(c)) Oct 3, 2026
MaxGhenis added a commit that referenced this pull request Oct 5, 2026
…hedule 8812 Credit Limit Worksheets A and B (#9742)

* Order the residential clean energy credit after the CTC (Schedule 8812 Credit Limit Worksheets A and B)

The CTC's tax-liability limit subtracted every other non-refundable credit,
and the residential clean energy credit (26 U.S.C. 25D) was ordered before
the CTC and before the 25C, elderly and clean vehicle credits. Section 25D(c)
orders it last. Follow the IRS worksheets:

- Credit Limit Worksheet A line 2 is a parameter
  (gov.irs.credits.ctc_tax_liability_limit.preceding_credits); line 3 is the
  new ctc_tax_liability_after_preceding_credits.
- Worksheet A line 4 / Worksheet B line 15 (subsequent_credits) reduces the
  limit only when Worksheet B applies (ctc_credit_limit_worksheet_b_applies).
- Worksheet B line 14 is ctc_non_refundable_minimum, the CTC that precedes the
  residential clean energy credit on the Form 5695 line 14 worksheet.
- The residential clean energy credit's limit subtracts every other credit;
  the 25C, elderly and clean vehicle lists no longer subtract it.
- Colorado's 2022-2023 replica reads Worksheet A line 3 (DR 0104CN 4-6).
- The Alabama 2020-IRC pin, CRFB and AFA reforms update the new lists.

Adds YAML tests (hand-worked 2025 households) and a statutory differential
plus Hypothesis property tests; adds hypothesis to the dev extra.

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

* Cite 24(d)(3), not the pre-2018 (d)(5), for the Form 2555 bar on Worksheet B

The section 911 exclusion bar was added as 24(d)(5) and redesignated (d)(3)
by Pub. L. 115-141; Cornell LII has no #d_5 anchor.

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

* Cite the 2020 Publication 972 worksheet lines, not the 2013 numbering

The 2020 CTC and ODC Worksheet lists the preceding credits on line 12, and
the credits ordered after the CTC are line 15 of its Line 14 Worksheet.

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

* Apply review findings: Form 2555 gate from 2015, Colorado 2023 line 13, citations

- Worksheet B excludes Form 2555 filers only from 2015, when 24(d)(3) (then
  (d)(5)) first barred their refundable CTC. Reuses #9750's
  foreign_earned_income_exclusion_bar_applies parameter, byte-identical.
- Colorado's 2023 DR 0104CN line 4 is Schedule 8812 line 13 (Worksheet A
  line 5, after Worksheet B); 2022 lines 4-6 stay Worksheet A lines 1-3.
- Comments name the 2022 lines (Form 5695 line 30; no 6m) and the credits
  not modeled (Form 8978, Form 8910); split the Worksheet A line 4 and
  Worksheet B line 15 anchors; Worksheet B line 14 is on page 6.
- The 24(h)(5) cap is $1,400 indexed ($1,700 for 2025).

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

* Recompute the residential clean energy credit on pinned CTC branches

The residential clean energy credit's limit now subtracts the non-refundable
CTC, so New York's pre-TCJA CTC branch and Alabama's 2020 IRC branch must
recompute it instead of inheriting the parent's value. Before, NY's CTC for a
2021 joint return (two children, $6,000 wages, $40,000 interest, $10,000 solar)
was $660 when calculated fresh but $200 when income_tax was calculated first.
The callers now also drop variables named in
pinned_tbs.CREDIT_DEPENDENT_VARIABLES; a test checks three calculation orders.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 5, 2026
)

* Order the residential clean energy credit after the CTC (Schedule 8812 Credit Limit Worksheets A and B)

The CTC's tax-liability limit subtracted every other non-refundable credit,
and the residential clean energy credit (26 U.S.C. 25D) was ordered before
the CTC and before the 25C, elderly and clean vehicle credits. Section 25D(c)
orders it last. Follow the IRS worksheets:

- Credit Limit Worksheet A line 2 is a parameter
  (gov.irs.credits.ctc_tax_liability_limit.preceding_credits); line 3 is the
  new ctc_tax_liability_after_preceding_credits.
- Worksheet A line 4 / Worksheet B line 15 (subsequent_credits) reduces the
  limit only when Worksheet B applies (ctc_credit_limit_worksheet_b_applies).
- Worksheet B line 14 is ctc_non_refundable_minimum, the CTC that precedes the
  residential clean energy credit on the Form 5695 line 14 worksheet.
- The residential clean energy credit's limit subtracts every other credit;
  the 25C, elderly and clean vehicle lists no longer subtract it.
- Colorado's 2022-2023 replica reads Worksheet A line 3 (DR 0104CN 4-6).
- The Alabama 2020-IRC pin, CRFB and AFA reforms update the new lists.

Adds YAML tests (hand-worked 2025 households) and a statutory differential
plus Hypothesis property tests; adds hypothesis to the dev extra.

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

* Cite 24(d)(3), not the pre-2018 (d)(5), for the Form 2555 bar on Worksheet B

The section 911 exclusion bar was added as 24(d)(5) and redesignated (d)(3)
by Pub. L. 115-141; Cornell LII has no #d_5 anchor.

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

* Cite the 2020 Publication 972 worksheet lines, not the 2013 numbering

The 2020 CTC and ODC Worksheet lists the preceding credits on line 12, and
the credits ordered after the CTC are line 15 of its Line 14 Worksheet.

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

* Apply review findings: Form 2555 gate from 2015, Colorado 2023 line 13, citations

- Worksheet B excludes Form 2555 filers only from 2015, when 24(d)(3) (then
  (d)(5)) first barred their refundable CTC. Reuses #9750's
  foreign_earned_income_exclusion_bar_applies parameter, byte-identical.
- Colorado's 2023 DR 0104CN line 4 is Schedule 8812 line 13 (Worksheet A
  line 5, after Worksheet B); 2022 lines 4-6 stay Worksheet A lines 1-3.
- Comments name the 2022 lines (Form 5695 line 30; no 6m) and the credits
  not modeled (Form 8978, Form 8910); split the Worksheet A line 4 and
  Worksheet B line 15 anchors; Worksheet B line 14 is on page 6.
- The 24(h)(5) cap is $1,400 indexed ($1,700 for 2025).

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

* Order federal credit limits as the IRS credit limit worksheets do

Each non-refundable credit's limit subtracts a preceding_credits list. Several
lists followed the Schedule 3 line order instead of the credit's own credit
limit worksheet. Read together, the 2013-2025 worksheets give one order:
foreign tax, child and dependent care, elderly or disabled, education,
retirement savings, energy efficient home improvement, previously owned clean
vehicle, new clean vehicle, Child Tax Credit, residential clean energy.

- Schedule R subtracts only Schedule 3 lines 1, 2 and 6l, so the elderly or
  disabled credit precedes the education, saver's and 25C credits (Forms
  8863, 8880 and 5695 subtract line 6d).
- Form 8936 line 11 subtracts line 6m, so the previously owned clean vehicle
  credit precedes the new one; the used credit now applies its own limit
  (the unused part is lost, line 18).
- The foreign tax credit applies against tax before 2022 too (26 U.S.C.
  26(a)(1); Pub. 972 and every worksheet subtract it).
- The 2021 lists drop the CDCC, a subpart C credit that year (21(g)(1)); the
  Alabama 2020-IRC pin restores it in every split list.
- gov.irs.credits.non_refundable is in that order. Oklahoma's federal CTC
  applies the credits Credit Limit Worksheet A subtracts (line 2, plus line
  4 under Worksheet B), not those listed before the CTC.
- CRFB and AFA reform lists follow the order; AFA now includes the foreign
  tax credit.

Tests: hand-worked YAML cases for each list, Oklahoma cases, a parameter
chain test (baseline, Alabama pin, both reforms) and a sequential 26(a)
differential with Hypothesis households.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 6 commits October 6, 2026 02:18
…me-exclusion

Conflict: pr_refundable_ctc.py reference tuple. Kept main's comma fix
(#9786) and re-added the PR's 24(k)(2)(B)(ii) and 24(d)(3) references;
the PR's section 911 bar on line 27 is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…me-exclusion

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ctc_credit_limit_worksheet_b_applies (#9742) repeated the bar's test
(exclusion > 0 and the parameter on, outside fully refundable years)
instead of reading refundable_ctc_barred_by_section_911_exclusion. The two
agree whenever both are calculated, so no output changes; they could
disagree only when the bar is set as an input. Worksheet B now reads the
bar, so one variable decides both the refund and the worksheet (2025
Schedule 8812 instructions: Worksheet B only if "You are not filing Form
2555").

Two YAML cases set the bar as an input in each direction, and the grid
and Hypothesis invariants check that Worksheet B equals its bar-off value
less the barred filers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Since #9761, main taxes a Form 2555 filer's included income at the rates
it would face with the exclusion added back. The grid test's docstring
and the integration.yaml note said the model did not, which contradicted
the #9761 case at the top of the same file. Both now describe the stacked
tax, and the grid test asserts that it reaches filers whose stacked tax
leaves part of the credit to refund, so the tax identity is checked on
stacked tax. The changelog fragment now names the state credits, the
reforms and the new filing reason.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The filing reason reads would_file_if_eligible_for_refundable_credit; the
claimant needs no refundable credit. The integration.yaml note now says
the Foreign Earned Income Tax Worksheet is skipped for the Form 2555
filer (the second case has no exclusion) and why the capped credits
equal Schedule 8812 line 14 there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…me-exclusion

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis merged commit c5f1486 into main Oct 9, 2026
26 checks passed
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

US + core hub merge audit, us#9750 at 086fbfe961 (squash; branch updated from main. The PR diff is byte-identical to the reviewed 0df2fbec60)

  • Reviews:
    • Independent reviews (Subfleet, Codex): r1 and r2 REQUEST_CHANGES, then delta review r3 APPROVE at 0df2fbe.
    • r3 confirms that r2's P2-1 is fixed: AFA's Puerto Rico refund survives after 2039. It also confirms the r1 P3s, and that no prior finding regressed.
    • Every changed formula was checked against §24(d)(3), §32(c)(1)(C), §6012(c), Schedule 8812 and the cited state sources.
  • Max's ruling d1056 (2026-10-08): approve the filing rule as built, so a section 911 claimant below the filing threshold files when would_file_if_eligible_for_refundable_credit is true.
  • Gates checked live at merge:
    • gh pr checks exits 0;
    • MERGEABLE;
    • not a draft;
    • no CHANGES_REQUESTED review;
    • head pinned with --match-head-commit.
  • Impact: zero on the default dataset. A paired microsim of 79,729 tax units shows 16 identical arrays, because foreign_earned_income_exclusion is $0 in every record and the AFA change is inactive by default. The fix changes results only for filers who report the exclusion.
  • --admin: used only because a required approving review is the sole block.

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