Repository navigation
Leave state tax refunds and the section 68 reduction out of federal AMTI, and fix Colorado AMTI to match - #10099
Conversation
26 U.S.C. 56(b)(1)(C): no recovery of state and local taxes is included in AMTI (Form 6251 line 2b; 2017 line 7). 56(b)(1)(E): section 68 does not apply (2017 Form 6251 line 6 subtracts the reduction). Main started from taxable income, which includes the refund and is net of the section 68 reduction, without either adjustment. Colorado AMTI (DR 0104AMT) starts from federal AMTI and adds DR 0104 lines 3-7 and 9 and subtracts DR 0104AD subtractions except the state income tax refund. Main added the line 2 state income tax addback and subtracted the refund, which offset the federal refund omission; both change together here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With itemization fixed and no AGI-dependent deductions, a refund enters AGI and is subtracted back, and the section 68 and SALT-cap changes it causes cancel. Checked with Hypothesis for 2017, 2025 and 2026. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Picking this up for the US hub. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
Brings the branch up to date with main before adoption; the merge has no conflicts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WR8LHahgdvZhtnGRY21L5Y
Drop charitable gifts from the property test's draws: from 2026 the 0.5% floor of 26 U.S.C. 170(b)(1)(I) ties the charitable deduction to AGI, so a refund rightly raises AMTI by 0.5% of it. Hypothesis found that on the merged branch ( refund, +/bin/bash.02). Add a second property on the same simulations, that AMTI is AGI less the refund less the itemized deductions the AMT allows, and two YAML cases that compute AMTI from wages for a 2025 refund and the 2026 section 68 reduction. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WR8LHahgdvZhtnGRY21L5Y
The 2017 instructions put lines 6 and 7 on PDF pages 2 and 3, and the 2025 DR 0104 numbers the Colorado additions that DR 0104AMT line 2 sums. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WR8LHahgdvZhtnGRY21L5Y
…w does 26 U.S.C. 55(d)(2) figures a married separate filer's increase on AMTI determined without that increase, so it now uses amt_income_before_separate_addition, which carries the refund and section 68 lines; before, the refund and the reduction still raised the increase. DR 0104AMT line 1 enters Form 6251 line 4 less line 5 as a negative amount when the exemption is larger, and line 4 cannot go below zero, so the PR's line 2 and line 4 changes no longer create a Colorado AMT on a refund. The AMTI refund line now subtracts what irs_gross_income put in AGI, each filer's refund floored at zero. The 2017 test case now uses a zero exemption, which a 4,155 section 68 reduction implies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WR8LHahgdvZhtnGRY21L5Y
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WR8LHahgdvZhtnGRY21L5Y
|
Picking this up for the US hub. I continue an earlier session's work on this PR: it pushed five commits ( Generated by Claude Code |
Brings in main since the November 2 merge, including #10594's state section 68 changes, which share no file or line with this branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6GA1FXMB3qVPzGgvWQ
|
Picking this up for the US hub. I continue the earlier sessions' work on this PR (its five commits Generated by Claude Code |
|
Ready for hub review Head: What I didThe earlier sessions' commits, checked one by one:
#10594#10594 merged into main at 2026-11-03T07:16Z and is in this branch now. The two share no file or line. #10594 changes MD, ME and NM itemized deductions. Outside the federal AMT folder, only Hand computations (before reading the code's output)
All three match the YAML. Tests (merged head, one file per process)
Mutants (each in its own process, code restored after)
Judgment calls
Proposed follow-ups
Generated by Claude Code |
|
Hub review in progress Superseded by the final review: #10099 (comment) Generated by Claude Code |
|
Ready for hub review The head is unchanged since the hand-off. One thing changed on GitHub: the PR is no longer a draft (marked ready at 20:44Z). The Pull request run at this head (run 41715326437) completed with conclusion I found no wrong result. All findings below are P3: test strength and body text. FindingsP3-1. The property test does not reach section 68 or the separate filer's increase in 2026
The YAML still kills both (the 2026 end-to-end case, and the separate filer case). The docstring says the test covers "2026 (the P.L. 119-21 section 68)", but in practice it doesn't. Hypothesis seeds the derandomized draws from the test's source, so any edit to the file reshuffles which years get covered. When I added a debug print, the draws changed and the 2026 case under the first mutant began to fail. Fix: pin boundary households with from hypothesis import HealthCheck, example, given, settings
...
BOUNDARY_UNITS = [
dict(status="SINGLE", itemizes=True, employment_income=2_000_000,
salt_refund_income=5_000, real_estate_taxes=12_000,
home_mortgage_interest=30_000),
dict(status="JOINT", itemizes=True, employment_income=3_000_000,
salt_refund_income=8_000, real_estate_taxes=20_000,
home_mortgage_interest=40_000),
dict(status="SEPARATE", itemizes=False, employment_income=700_000,
salt_refund_income=10_000, real_estate_taxes=0,
home_mortgage_interest=0),
dict(status="SEPARATE", itemizes=False, employment_income=950_000,
salt_refund_income=20_000, real_estate_taxes=0,
home_mortgage_interest=0),
]
...
@given(units=st.lists(tax_unit(), min_size=8, max_size=8))
# Fixed households that reach section 68 in 2017 and 2026 and the separate
# filer's increase in every year, on both sides of the 2026 cap.
@example(units=BOUNDARY_UNITS)
def test_amt_income_leaves_out_refunds_and_section_68(year, units):(Run P3-2. No YAML case pins the separate filer's increase at the 2026 rate
Here is the hand case for a 2026 separate filer with wages of 700,000, a 10,000 refund and the standard deduction:
At the PR head the model gives # 26 U.S.C. 55(d)(2) and (d)(4)(A)(ii)(IV): from 2026 the separate filer's
# increase is 50% of AMTI (net of the refund) over 640,200, up to the 70,100
# exemption.
- name: Separate filer's 2026 increase is 50% and figured after the refund
absolute_error_margin: 0.01
period: 2026
input:
people:
person1:
age: 45
employment_income: 700_000
salt_refund_income: 10_000
tax_units:
tax_unit:
members: [person1]
filing_status: SEPARATE
tax_unit_itemizes: false
households:
household:
members: [person1]
state_code: TX
output:
# 710,000 AGI - 16,100 standard deduction + 16,100 - 10,000 refund
amt_income_before_separate_addition: 700_000
# min(70,100, 0.5 x (700,000 - 640,200))
amt_separate_addition: 29_900
amt_income: 729_900P3-3. Body: the source-check paragraph can go, and two "Not changed" items need correctingThe hub fetched every source on 2026-11-03 and found that the body's quotes match (see "What I couldn't check": I couldn't refetch them). So replace the "Source check" section with:
Under "Not changed", replace the DR 0104AMT duplication bullet with:
Add to "Not changed":
Also correct item 3. Main's separate filer base didn't "still hold" the 2025 senior deduction. It lacked the senior deduction add-back, and before 2018 the personal exemptions. Neither is reachable in practice, because both phase out far below the separate filer limit. Suggested wording: "...which still held the refund and the section 68 reduction, and lacked the add-backs of the 2025 senior deduction and, before 2018, the personal exemptions." P3-4. The hand-off's separate filer narrative misstates the deductionThe hand-off says the filer "takes the 15,000 standard deduction and taxable income is 1,005,000". But the YAML case forces Checked and soundDefect reproduced at main ( Hand values, computed before reading the model's output, then run at both trees:
The $520.50 Colorado case. The CO AMT rate parameter is
The PR's negative line 1 (0 − 88,100) gives CO AMTI 0 and The refund's mirror. Section 68. The sign is right. The 2026 rate. See P3-2. The phase-out and the increase read one parameter, so there is no mismatch. The 105(2)(a) exceptions and the duplication bar.
Minnesota follow-up. Mutants. Each ran in its own process; I restored the code after each and
Tests at the head, one file per process. Readers.
Scope. Nothing under Overlap.
Baseline movement. The diff moves baseline outputs:
Population checks for the hub: change in federal AMT revenue and AMT payer counts in 2025 and 2026, with 2026 split by section 68 itemizers; and Colorado What I couldn't check
Generated by Claude Code |
PR Review: Leave state tax refunds and the section 68 reduction out of federal AMTI, and fix Colorado AMTI to matchPR #10099 (author: MaxGhenis), head
No partner test file is touched. SummaryThe law supports every change, and I found no wrong result in a claimed year. The body says the sources couldn't be refetched, so I fetched each one myself. The body's quotes match.
The Colorado reading needs no source-conflict entry. Measured against federal AMTI, which allows no state tax deduction and holds no refund, the (3)(d) addback and the (4)(e) subtraction are both zero. The form says the same, so the statute and the form agree. All 11 new cases, the edited case and the body's $520.50 figure check out by hand (below). CI is green at this head, and the merge with No critical findings. Three should items:
Five suggestions: the draft 2026 Form 6251 (re-check it when the final form is out), a 2026 separate filer case at the 50% rate, a variable-named YAML file for the new variable, an issue for Colorado's DR 0104AMT duplication bar, and body corrections. CriticalNone. Should addressS1. The Where. The PR body ends with What rulespec-us has:
Fix. File one dispatch-ready,
Then write the line as S2. The property test doesn't reach what its docstring and the body say it covers in 2026. Where. What's wrong. Under pytest, the derandomized draws are fixed by the test's source, the node id (the Hypothesis pytest plugin gives each parametrized id its own digest) and the Hypothesis version. I regenerated them without building a model:
The 2026 draws reach neither provision:
So in 2026 the statutory identity is checked only where section 68 is zero, and the increase is never exercised. The Fix. Pin boundary households with from hypothesis import HealthCheck, example, given, settings
BOUNDARY_UNITS = [
dict(status="SINGLE", itemizes=True, employment_income=2_000_000,
salt_refund_income=5_000, real_estate_taxes=12_000,
home_mortgage_interest=30_000),
dict(status="JOINT", itemizes=True, employment_income=3_000_000,
salt_refund_income=8_000, real_estate_taxes=20_000,
home_mortgage_interest=40_000),
dict(status="SEPARATE", itemizes=False, employment_income=700_000,
salt_refund_income=10_000, real_estate_taxes=0,
home_mortgage_interest=0),
dict(status="SEPARATE", itemizes=False, employment_income=950_000,
salt_refund_income=20_000, real_estate_taxes=0,
home_mortgage_interest=0),
]
@given(units=st.lists(tax_unit(), min_size=8, max_size=8))
@example(units=BOUNDARY_UNITS)
def test_amt_income_leaves_out_refunds_and_section_68(year, units):The 700,000 separate filer falls inside the 2026 band (AMTI 700,000 > 640,200). The 950,000 filer falls inside the 2025 band (> 900,350) and is capped in 2026. Both single and joint itemizers exceed the 2026 37% thresholds. The author's comment reports that this patch kills both 2026 mutants. If you'd rather not, drop "2026 (the P.L. 119-21 section 68)" from the docstring and the body, and the 2026 parametrization with it. S3. The zero floor on the refund is not pinned. Where. What's wrong. The floor is right: it mirrors Fix. Add one case to - name: A negative refund input is not in AGI and adds nothing to AMTI, 2025
absolute_error_margin: 0.01
period: 2025
input:
tax_unit_itemizes: true
taxable_income: 100_000
salt_deduction: 8_000
salt_refund_income: -2_000
filing_status: SINGLE
output:
# irs_gross_income floors each source at zero: 100,000 + 8,000.
amt_income: 108_000Without the floor the model would give 100,000 + 8,000 + 2,000 = 110,000. SuggestionsG1. Re-check 2026 once the final Form 6251 is out.
G2. Pin the separate filer's increase at the 2026 rate.
G3. Give the new variable its own YAML file. The refund and section 68 terms live in G4. Open an issue for DR 0104AMT's duplication bar (pre-existing).
G5. Body corrections.
Verified correctHand checks (the inputs are the YAML's):
The refund mirrors AGI exactly. Section 68.
Colorado.
Code and tests.
Axiom line assessmentThe line is invalid (S1). The TY2026 section 68 reversal is encoded in rulespec-us CI status
Branch statusThe branch is 7 commits behind
Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Requesting changes: 0 critical, 3 should (the axiom line isn't a valid form and rulespec-us covers only the TY2026 section 68 reversal; the property test never reaches the 2026 section 68 reduction or a 2026 separate filer's increase despite its docstring; the new zero floor on the refund is unpinned). 26 USC 56(b)(1)(C)/(E) and the Colorado reading are right. Full report in the comment above.
|
Picking this up for the US hub. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
Bring in #10094, which nets Colorado's federal deduction addback of the state income tax addback. Colorado AMTI reads co_additions, so the two changes now move it together. The merge is clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N2tyHP3hjAvuftmiMnzT62
The five cases that test only the refund and section 68 lines set taxable income directly, so they test amt_income_before_separate_addition. They now live in that variable's file and assert it, and they keep their amt_income checks. The end-to-end and separate filer cases stay put. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N2tyHP3hjAvuftmiMnzT62
Every case used a positive refund, so deleting max_(0, ...) failed nothing. irs_gross_income floors each refund at zero, so a negative input never enters AGI; a case now checks that AMTI doesn't take it back out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N2tyHP3hjAvuftmiMnzT62
This PR changes the base of the 55(d)(2) increase, but the only cases were 2025 and 2022. A 2026 separate filer at $700,000 of wages now pins the 50% rate and the $640,200 start, figured after the refund. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N2tyHP3hjAvuftmiMnzT62
The derandomized draws never reached the 2026 section 68 reduction or a 2026 separate filer's increase, so mutants that break both passed the 2026 case. A fixed example now adds itemizers above both section 68 thresholds and separate filers in the 2025 and 2026 increase bands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N2tyHP3hjAvuftmiMnzT62
Colorado AMTI reads co_additions, which now nets the federal deduction addback of the state income tax addback (#10094). No case pinned the two changes together. A 2025 and a 2026 single itemizer with $450,000 of wages now do: 354,900 and 363,900, matching a hand computation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N2tyHP3hjAvuftmiMnzT62
|
Ready for hub review This round fixes DTrim99's two open should-address items (S2 and S3) and does four of the five suggestions. S1, the Commits since
1. Main
2. The Colorado end-to-end caseCases at I computed both by hand from the sources before running them:
Both match the hub's figures and the model at the final head. Each case also pins taxable income,
3. Findings
The hub's P3-4 (the earlier hand-off's narrative) needs no code change. The separate filer case forces itemizing, so taxable income is $1,015,000, and AMTI before the increase is $1,000,000 in every version. 4. Rulings for the hub
Sources I read this round:
I couldn't fetch the 2025 DR 0104. Its quotes in the body rest on DTrim99's review. 5. Axiom drafts (for the hub to file)
6. MutantsEach ran in its own process at the final head against the named file, and was then restored with
G3 moves cases and changes no result, so no mutant applies. 7. Tests and CIAt the final head, one process each:
Property test cost, measured locally (Python 3.14, 4 vCPU; not Linux CI): 95 s of wall time before and 88 s after, including the model load, with a peak of 1,760 MB before and 1,766 MB after. The pinned example adds no measurable time. It runs in CI's Rest Python group. CI: the Pull request run at 8. BodyEvery section now describes
9. Judgment calls
10. Proposed follow-up issues
DISMISSAL MAP
Generated by Claude Code |
PR Review (round 2): Leave state tax refunds and the section 68 reduction out of federal AMTI, and fix Colorado AMTI to matchPR #10099 (author: MaxGhenis), head
The five commits of the author's own touch only test files. The formulas, references and changelog fragment are byte-identical to what we reviewed. Between the two heads, the only change to the PR's variable directories is #10308's SummaryAll three should items are fixed, and each fix is pinned. Removing any one of them now fails a test.
Suggestions:
Checks:
No critical or should items remain open. Three suggestions remain. Prior findings
New findingsCriticalNone. Should addressNone. Suggestions1. File the DR 0104AMT duplication-bar issue (G4, carried).
2. Bring rulespec-us#2033 and #2034 up to this head. Both issues still cite
3. G1, carried, and two body lines.
VerifiedHand checks (every new or changed expectation):
Sources for the 2026 amounts:
The merged changes from
Code, tests and scope:
Main-side guards:
AxiomThe line is valid.
Both record the blocker that justifies CI
The log of Rest Python shard 4 shows BranchThe branch is 14 commits ahead of
Verdict: APPROVE |
DTrim99
left a comment
There was a problem hiding this comment.
Round 2: all round 1 should-address items are fixed and pinned by tests. Three suggestions remain; details in the review comment above.
|
US + core hub merge audit, us#10099 at
🤖 Generated with Claude Code |
Federal alternative minimum taxable income (
amt_income) starts from taxable income (Form 6251 line 1) and adds back the deductions the AMT doesn't allow. Main left two adjustments out, and Colorado's AMT copied the result. This PR makes both adjustments, figures the married-filing-separately increase on the corrected amount, and makes Colorado's DR 0104AMT lines 1, 2 and 4 follow the form.What changes
1. State and local tax refunds leave AMTI. 26 U.S.C. 56(b)(1)(C) (56(b)(1)(D) before P.L. 116-94): "No recovery of any tax to which subparagraph (A)(ii) applied shall be included in gross income for purposes of determining alternative minimum taxable income." Form 6251 subtracts the refund on line 2b (2025) or line 7 (2017), whether or not the filer itemizes. The new
amt_income_before_separate_additionsubtracts exactly whatirs_gross_incomeput in AGI: each head's or spouse'ssalt_refund_income, floored at zero. A dependent's refund is on the dependent's own return.2. Section 68 does not apply. 56(b)(1)(E) (formerly (F)): "Section 68 shall not apply." P.L. 119-21 amended 56(a)(3), (b)(2) and (e)(1)(B) but not (b)(1). Taxable income is net of
itemized_taxable_income_deductions_reduction, which is nonzero in 2013–2017 and from 2026. Section 68 raised taxable income by that reduction, so AMTI now subtracts it for itemizers, restoring the full itemized deductions the AMT allows, as 2017 Form 6251 line 6 did with a negative entry.3. The married-filing-separately increase uses the corrected AMTI. 26 U.S.C. 55(d)(2) increases a separate filer's AMTI by the lesser of the exemption and 25% (50% from 2026, under 55(d)(4)(A)(ii)(IV)) of the excess of AMTI "determined without regard to this sentence" over the zero-exemption level.
amt_separate_additionused to recompute that base as taxable income plus the excluded deductions. That base still held the refund and the section 68 reduction, and lacked the add-backs of the 2025 senior deduction and, before 2018, the personal exemptions. It now readsamt_income_before_separate_addition, andamt_incomeis that amount plus the increase.4. Colorado. C.R.S. 39-22-105(2)(a) applies the 39-22-104 modifications to federal AMTI less the exemption. Against that base, the state income tax addback, "an amount equal to the deduction claimed" (39-22-104(3)(d)), is zero, because 56(b)(1)(A)(ii) allows no such deduction. The refund subtraction of 39-22-104(4)(e) exists "to avoid re-taxing" a refund that AMTI already leaves out. The 2025 DR 0104AMT follows both readings:
co_state_addbackfromco_additions.salt_refund_incomefrom line 4 and floors the line at zero.Before this PR the two refund errors offset each other: federal AMTI kept the refund and Colorado line 4 took it back out. Now the refund leaves once.
#10094, which merged on 2026-11-07, nets the DR 0104 line 4 addback of the line 2 state income tax addback, as the 2025 104 Book's line 4 instructions say. This branch has merged it, so DR 0104AMT line 2 now equals DR 0104 lines 3 through 7 and 9. The Colorado end-to-end cases below pin the two PRs together.
Examples
mainamt_income)amt_income)amt_income)amt_income)The
maincolumn is main atba9bfdea75, the base this branch last merged, which includes #10094. Before #10094 merged, main gave 364,900 and 373,900 for the last row.The 2026 itemizer: section 68 takes 2/37 × 40,000 = 2,162.16, so taxable income is 962,162.16. AMTI adds back the 10,000 SALT deduction and the 2,162.16 reduction, giving 970,000 = AGI less the non-tax itemized deductions. Main prints 972,162.19, its float32 value of 972,162.16.
The Colorado itemizer, by hand:
Sources
Source check
On 2026-11-09 the fix session fetched and read 26 U.S.C. 55 and 56, the 2025 Form 6251 instructions (pages 2 and 9), the 2017 Form 6251 and its instructions (pages 2-3), Rev. Proc. 2025-32, the 2025 DR 0104AMT (pages 1 and 3), the 2025 104 Book (pages 8-9) and C.R.S. Title 39 (pages 380-386 and 401). The quotes above match them. It couldn't fetch the 2025 DR 0104 itself; DTrim99's review of 2026-11-04 read it and confirms line 2 and the reserved line 8.
Invariants
policyengine_us/tests/core/test_amt_income_refund_and_section_68_invariants.pychecks two properties with Hypothesis, for 2017 (old section 68), 2025 (none) and 2026 (P.L. 119-21 section 68), for single, joint and separate filers, itemizing or not. The households have no deduction that depends on AGI once the AMT add-backs are made, so they have no medical expenses and no charitable gifts. From 2026, the 0.5% floor of 170(b)(1)(I) ties the charitable deduction to AGI, and a refund then rightly raises AMTI by 0.5% of the refund.The derandomized draws rarely reach section 68 or the separate filer's increase. So a fixed
@exampleadds four households to every year: single and joint itemizers above the 2017 and 2026 section 68 thresholds, and separate filers at 700,000 (inside the 2026 increase band) and 950,000 (inside the 2025 band). Dropping the section 68 subtraction now fails[2017]and[2026]. Going back to the old separate base fails[2025]and[2026]through the fixed example, and[2017]through the current draws.Tests
amt_income.yaml: 13 cases, 4 of them new (2 end to end from wages, and separate filers in 2025 and 2026).amt_income_before_separate_addition.yaml(new): 6 cases, the 5 unit-input cases moved fromamt_income.yamland a negative refund input.co_alternative_minimum_taxable_income.yaml: 8 cases, 5 of them new (including the 2025 and 2026 end-to-end itemizers).amt_income.yaml13 passed,amt_income_before_separate_addition.yaml6 passed,co_alternative_minimum_taxable_income.yaml8 passed, the property test 3 passed, andtest_source_conflicts.py103 passed.co_amt.yaml,amt_separate_addition.yamlandco_federal_deduction_addback.yamlpass too.[2017]and[2026]);497c8168bf(42758259887) passed all 36 jobs. It tested this head merged into main atee466893c3, which includes the 2027 AMT amounts from Update federal tax parameters to the 2027 amounts in Rev. Proc. 2026-35 #10683.Not changed
us_govt_interest, the pension, military retirement, CollegeInvest, ABLE and charitable subtractions, andco_other_subtractions) don't duplicate a federal AMTI adjustment. On line 2,co_federal_deduction_addback(DR 0104 line 4) can duplicate the standard deduction or the taxes that federal AMTI already adds back. In the Colorado itemizer above, if the 5,000 of real estate tax in that addback counts as a duplicate, Colorado AMTI is 5,000 lower. Main has the same gap, and is worse there because it also adds the state income tax addback. Left as a follow-up.irs_gross_income:salt_refund_incomeis its only refund source. So AMTI subtracts onlysalt_refund_income.mn_amt_taxable_income) starts from federal AGI and never subtracts the refund (Schedule M1MT line 15). Left as a follow-up.Coordination
amt_income_less_exemptionsnow subtractsamt_exemptionfromamt_income, so the refund and section 68 changes reach the pre-2018 child AMT too.Microsimulation impact
We estimate that this PR lowers federal alternative minimum tax by $67.3m (1.3%) in 2025 and by $398.0m (4.0%) in 2026 on the default dataset. We compared
mainatba9bfdea75with this branch at497c8168bf.Federal AMTI falls for 7,221 sampled tax units in 2025 (15.1m weighted) and for 7,631 in 2026 (16.0m weighted). The tax falls for 8 sampled tax units in 2025 (20,661 weighted) and for 49 in 2026 (231,168 weighted), by at most $11,398 and $13,177, and household net income rises by the same totals. Colorado AMTI falls by $2.03bn in 2025 and by $3.62bn in 2026. Colorado's AMT comes to $0 on main and on this branch, so Colorado income tax doesn't change. In 2026, one sampled tax unit (3,218 weighted) pays $30 more state income tax. Household benefits don't change.
amt_incomeamt_income_less_exemptionsalternative_minimum_taxco_alternative_minimum_taxable_incomeco_amtco_income_taxstate_income_taxincome_taxhousehold_net_incomehousehold_benefitsThis PR adds
amt_income_before_separate_addition, so main has no total to compare.impact: federal AMT −$67.3m (−1.3%) in 2025 and −$398.0m (−4.0%) in 2026 (8 and 49 sampled tax units; 20,661 and 231,168 weighted); Colorado's AMT stays at $0; household benefits don't change
axiom: TheAxiomFoundation/rulespec-us#2033 queued (federal tax recoveries, historical section 68 reversal and separate-filer AMTI composition; historical corpus ingestion, release/re-pin and encoder approval); TheAxiomFoundation/rulespec-us#2034 queued (Colorado AMTI; dated source ingestion, release/re-pin and encoder approval).
🤖 Generated with Claude Code