Repository navigation
Use the $100,000 car loan interest phase-out threshold for surviving spouses - #10395
Merged
MaxGhenis merged 3 commits intoOct 24, 2026
Merged
Conversation
26 U.S.C. 163(h)(4)(C)(ii)(I) reduces the deduction for modified AGI over $100,000 ($200,000 in the case of a joint return), and Schedule 1-A line 26 reads "$100,000 ($200,000 if married filing jointly)". A surviving spouse does not file a joint return, so the parameter's $200,000 was wrong. Adds statute and form references, and YAML boundary cases for a surviving spouse at $100,000, $100,001, $101,000, $101,001 and $150,000, plus the threshold for head of household, separate and joint filers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Checks the model against a restatement of Schedule 1-A lines 24-30 under every filing status, the bounds and $200 steps, the rounded-up $1,000 increments at every step, that only a joint return has the $200,000 threshold, and monotonicity in income and interest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- start.yaml also cites 26 CFR 1.163-16(h)(2) (T.D. 10054) and the 2025 Form 1040 instructions, which name "All other filing statuses". - cap, step and increment cite the statute and their Schedule 1-A lines, and their descriptions lose two typos and say modified AGI. - The formula's comments cite Schedule 1-A lines 26-29, not an older worksheet's lines, and its references add the statute and the form. - YAML adds a single filer at $100,001, a surviving spouse whose reduction passes the interest, and 1.163-16(h)(3) Example 2 for single and surviving-spouse filers. - The step walk runs with interest below, at and above the cap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
marked this pull request as ready for review
October 23, 2026 11:43
Contributor
Author
|
Hand-off to the US + core hub.
|
MaxGhenis
added a commit
that referenced
this pull request
Oct 23, 2026
Keeps auto_loan_interest_deduction.yaml as on main, so this PR no longer conflicts with #10395, which appends cases to that file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
deleted the
fix/auto-loan-interest-surviving-spouse-threshold
branch
October 24, 2026 13:13
Contributor
Author
|
US + core hub merge audit, us#10395 at
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What's wrong
gov.irs.deductions.auto_loan_interest.phase_out.startgives a qualifying surviving spouse a $200,000 threshold. The law gives $100,000:26 U.S.C. 163(h)(4)(C)(ii)(I) reduces the deduction "by $200 for each $1,000 (or portion thereof) by which the modified adjusted gross income of the taxpayer for the taxable year exceeds $100,000 ($200,000 in the case of a joint return)".
2025 Schedule 1-A, line 26: "Enter $100,000 ($200,000 if married filing jointly)".
2025 Form 1040 instructions, page 109 (No Tax on Car Loan Interest): "Married filing jointly—$200,000. All other filing statuses—$100,000."
26 CFR 1.163-16(h)(2) (T.D. 10054, 91 FR 57241, applying to 2025-2028): "$100,000 or, in the case of a joint Federal income tax return... $200,000". The preamble says the statute gives "a $100,000 phaseout threshold applicable to all other taxpayers".
A surviving spouse does not file a joint return (section 6013(a) allows one only to a husband and wife). The IRS reads the same wording in sections 224 and 225 and in 24(h)(3) (Schedule 8812 line 9, "All other filing statuses—$200,000") the same way.
The model's tips and overtime thresholds (sections 224 and 225, with the same wording) already give a surviving spouse the single amount. The federal CTC threshold still gives surviving spouses $400,000; that is issue #9703, which PR #10306 fixes.
The other statuses, checked against the same three sources:
Changes
phase_out/start.yaml: SURVIVING_SPOUSE goes from 200,000 to 100,000. The references are now the statute clause and Schedule 1-A line 26 (page 2), and the description says modified AGI, which the formula uses.np.ceilapplies.tests/core/test_auto_loan_interest_deduction_properties.py(new) checks:Invariants
For every filing status
s, modified AGImand qualified interesti ≥ 0:0 ≤ deduction ≤ min(i, 10,000), andmin(i, 10,000) − deductionis a multiple of $200 when the deduction is positive.deduction = max(min(i, 10,000) − 200 × ceil(max(m − T(s), 0) / 1,000), 0), withT(JOINT) = 200,000andT(s) = 100,000otherwise.mand doesn't fall withi. It stays constant while the rounded-up count of $1,000 increments is unchanged.m. A joint return atmgets what a single filer gets atm − 100,000.Tests and CI cost
764d24f, an independent review ran 14 mutants, and every one failed at least one of the two files. Mutant n (single threshold $100,500) passed every YAML case then; the single filer at $100,001 now catches it. CI's Rest Pythoncoregroup (shard 2) collects the file.764d24f: 1.63 s of test time, 22.8 s wall clock and 1.10 GB peak, almost all of it importing the sharedsystem, which the group already pays for. On main's latest push run (c5837fb0), that group took 51:03 with a 10.9 GB peak on Linux CI.354d6e6triples the step walk's units; I have not measured that locally. This PR's CI artifactrest-python-test-timings-shard-2gives the after numbers.764d24f, all 16 affected test files passed locally through heavy_run: the two above, the 7 state and federal consumer YAML files, and the itemized, backdating, MAGI, parameter-file, scale-threshold and build-metadata Python tests. The local rerun at354d6e6was held by a host reservation, so CI is the check at the final head.Review
764d24f, ran on in-session Opus 5.5 agents because the Codex lanes were closed. Law review: APPROVE-WITH-NITS. Code and tests review: APPROVE-WITH-NITS, 14 of 14 mutants killed.354d6e6addresses their nits.354d6e6: APPROVE-WITH-NITS, nothing blocking. Its nits were the cost note and durable Axiom evidence, both covered here.axiom: us:statutes/26/163/h/4/C/ii/I encoded-correct
2c9154c9), the module givesmodified_adjusted_gross_income_phaseout_threshold_joint($200,000) only whenfiling_status == 1(joint). Every other code, including 4 (surviving spouse), gets $100,000. The reduction is200 * ceil(max(0, MAGI - threshold) / 1000).axiom-encode teston the pinned engine (89571cc2, from rulespec-us.axiom/workflow-toolchain.toml). They cover:Hub microsimulation impact (current head)
A real microsimulation on the default dataset, main at the merge base
3128b7894cagainst this PR's head764d24f9c2, for 2025 and 2026. The runs went one at a time under the shared heavy-job lock. Sums are weighted.auto_loan_interest_deductionstate_income_taxincome_taxhousehold_net_incomehousehold_benefitsComparison files are in
fixes/10395-impact/on the hub host.These runs were at
764d24f9c2. The one later commit,354d6e6cb3, changes no computed value: every parameter value is identical and the formula's code is identical apart from itsreferencetuple (checked by YAML and AST comparison); the rest is tests. The change is confined to surviving spouses with car loan interest and modified AGI between $100,000 and $250,000.🤖 Generated with Claude Code