Skip to content

Fix pre-2018 AMT child exemption and income base - #10308

Open
MaxGhenis wants to merge 3 commits into
mainfrom
amt-child-pre-2018
Open

MaxGhenis wants to merge 3 commits into
mainfrom
amt-child-pre-2018

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

WIP: Correct the pre-2018 AMT child exemption and income base identified in Yale/PSL unit U4. A child with $50,000 AMTI and a $7,500 exemption should have a $42,500 AMT base; a 2017 joint return by young spouses should receive the ordinary joint exemption.

Plan:

  • Install U4's two historical regressions and retain its three passing controls.
  • Apply the limited exemption to AMTI for all years; keep the historical child cap in amt_exemption.
  • Exclude joint returns from amt_kiddie_tax_applies.
  • Add a property test comparing AMT with the original formulas for 2018 onward.
  • Run each AMT YAML file in its own foreground process and the focused Python property test. The hub will run impact analysis; no microsimulation is run here.

Sources:

Validation:

  • Formatting and Ruff checks pass.
  • 108 AMT YAML cases pass across 13 files, run one file per foreground process.
  • The property test passes (1 test, 3 Hypothesis examples). It compares the original and corrected formulas for every year from 2018 through 2030, including all filing statuses and exemption phase-out stages.
  • Folder validation is incomplete within the six-hour job budget on the heavily loaded host. qualified_dividend_netting.yaml was stopped during initialization before the job wall; regular_tax_before_credits.yaml was not started (19 cases remain). No test process remains running.
  • No microsimulation was run. Hub impact analysis is pending; no default-data impact is expected because the default data has no pre-2024 records.

axiom: us:statutes/26/59#section_59_j_kiddie_exemption_limit_applies encoded-correct for 2018 onward (false from 2018-01-01; companion tests us/statutes/26/59.test.yaml); TheAxiomFoundation/rulespec-us#1857 queued for TY2013-2017 (§59(j), §1(g)(2) including the joint-return exclusion, and the §55(b)(1)(A)(ii) AMTI taxable excess). It is blocked on three things: axiom-corpus ingestion of the TY2013-2017 statute text and the Form 6251 instructions (TheAxiomFoundation/axiom-corpus#915), a re-pin to a release that carries the 2013-2016 revenue procedures, and approval of the billed encoder run.

@MaxGhenis
MaxGhenis marked this pull request as ready for review October 21, 2026 00:16
@MaxGhenis MaxGhenis closed this Oct 21, 2026
@MaxGhenis MaxGhenis reopened this Oct 21, 2026
@DTrim99

DTrim99 commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Fix pre-2018 AMT child exemption and income base

PR #10308 (author: MaxGhenis), head e7b010e809. This is a first review. The PR makes two model changes:

  • The income base. Before 2018, amt_income_less_exemptions gave a child subject to the kiddie tax regular taxable income less the AMT exemption. It now uses AMTI less the exemption in every year. The §59(j) cap stays in amt_exemption.
  • Joint returns. amt_kiddie_tax_applies now returns false for joint returns, under §1(g)(2)(C).
  • Tests. It adds 3 YAML cases to amt_exemption.yaml and 2 to amt_income_less_exemptions.yaml. It flips 4 expectations to the joint-return rule, adds 2 cases and filing statuses to amt_kiddie_tax_applies.yaml, and adds a Hypothesis property test plus a changelog fragment.

The PR has no comments or reviews yet. It touches no partner test file.

Path prefixes:

  • V/ = policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/
  • T/ = policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/

Sources read for this review (all fetched 2026-10-21):

Summary

What is right.

  • The law: the cap limits only the exemption.
    • §59(j)(1) (2016 ed.): "In the case of a child to whom section 1(g) applies, the exemption amount for purposes of section 55 shall not exceed the sum of— (A) such child's earned income (as defined in section 911(d)(2)) for the taxable year, plus (B) $5,000", indexed under (j)(2).
    • The base is still AMTI. §55(b)(1)(A)(ii) defines the taxable excess as "so much of the alternative minimum taxable income for the taxable year as exceeds the exemption amount".
    • The 2017 form does the same. Form 6251 line 30 is "Subtract line 29 from line 28" (line 28 is AMTI). Exemption Worksheet line 2 reads "Enter your alternative minimum taxable income (AMTI) from Form 6251, line 28". Lines 7-10 then cap the exemption at "$7,500" plus earned income: "Enter the smaller of line 6 or line 9" (file page 10).
    • The old code had no basis. No pre-2018 form or instruction swaps regular taxable income in for a child. The PR's new formula, max_(0, amt_income - amt_exemption), is §55(b)(1)(A)(ii).
  • Joint returns.
    • §1(g)(2) applies only if "(C) such child does not file a joint return for the taxable year".
    • The 2017 instructions (file page 11) say: "Exception. If you filed a joint return for 2017 or neither of your parents was alive at the end of 2017, don't complete lines 7 through 10 of the Exemption Worksheet." The 2015 and 2016 instructions say the same.
    • The new & ~joint is right. Before, two young spouses filing jointly got the child cap.
  • 2018 and later are unchanged. The cap is off from 2018, and the statute keeps it off in 2026:
    • The current statute. Current §55(d)(4)(A) reads: "In the case of any taxable year beginning after December 31, 2017 — ... (iii) subsection (j) of section 59 shall not apply."
    • Who turned it off. The SECURE Act (Pub. L. 116-94, §501(b)) added clause (iii), "applicable to taxable years beginning after Dec. 31, 2017". TCJA itself didn't repeal §59(j). The original 2018 Form 6251 still applied the cap, and the Rev. February 2020 instructions (file page 10) say the SECURE Act "retroactively suspended the special exemption limit".
    • OBBBA. §70107(a)(1) "struck out ', and before January 1, 2026' after 'December 31, 2017'", effective for years after 2025. So §59(j) stays off in 2026 and later. child/in_effect.yaml (false from 2018, with no 2026 entry) matches.
    • The code. In those years amt_exemption returns before it reads amt_kiddie_tax_applies. amt_income_less_exemptions already used AMTI there. No state reads amt_kiddie_tax_applies (Colorado reads amt_income_less_exemptions, which doesn't change after 2017). So 2018+ outputs are unchanged, as the 2018, 2021, 2022, 2025 and 2026 cases confirm.
  • The pre-2018 income base (Form 6251 lines 1-7, 2015-2017). The PR doesn't change amt_income, but child filers now go through it. Its add-backs check out:
    • Standard deduction and exemptions. Line 1 is Form 1040 line 41 for itemizers and line 38 (AGI) otherwise; neither subtracts personal exemptions. amt_income gives taxable_income + exemptions (or agi - deductions at zero taxable income), plus the standard deduction for non-itemizers.
    • Medical. The 2015-2016 line 2 adds back 2.5% of AGI only "If you or your spouse was 65 or older". The 2017 line 2 is "Reserved for future use". The model's medical floor is 10% for everyone in 2013-2016 and 7.5% from 2017, so it needs no AMT add-back.
    • Taxes and miscellaneous deductions. Line 3 ("Taxes from Schedule A, line 9") and line 5 (Schedule A line 27, after the 2% floor) match salt_deduction and misc_deduction in itemized_deductions_add_back.yaml.
    • Lines 4, 6 and 7 are pre-existing gaps (see G3).
  • Tests. I hand-checked 11 cases (about 40 expectations), listed under Verified correct. CI passed every changed file.
  • Batch checks. The source-conflict ratchet passes on the merged tree, in CI and statically. The PR has no state-gated key and changes no income-source list.

There are no critical findings and three should-address items:

  • S1. Invalid Axiom line. axiom: pending: hub files parity is not an allowed form, as on Fix the 2021 CTC split and surviving-spouse phaseout threshold #10306. rulespec-us encodes only the post-2017 off switch, not the pre-2018 cap or §1(g)(2)(C).
  • S2. Missing coverage for the newly reached branches. Child filers now get every AMTI add-back, but the tests cover only the non-itemizer path. No pre-2018 case has a child whose earned income lifts the cap above the ordinary exemption.
  • S3. The Python property test. It keeps copies of the old formulas and builds a second reformed system. Its JOINT-only assertion locks in the rest of the old predicate. The PR body doesn't report the CI cost that CLAUDE.md requires: about 22 s, and a larger peak in the Rest Python policy group.

There are also four suggestions: the stale PR body, gaps left in the child test, pre-existing pre-2018 AMTI gaps, and references for the pre-2019 child amounts.

Status.

Critical (must fix)

None.

Should address

S1. The Axiom line axiom: pending: hub files parity is not a valid form

  • Where: the last line of the PR body.
  • The rule (CLAUDE.md, "Axiom Parity"): a PR that adds, updates or fixes policy needs one of encoded-correct, <rulespec PR> encoded, <rulespec issue> queued or n/a: <reason>. pending is not one of them. We flagged the same form on Fix the 2021 CTC split and surviving-spouse phaseout threshold #10306.
  • Why n/a doesn't fit. §59(j)(1), §1(g)(2)(C) and §55(b)(1)(A)(ii) are statutory, and the PR changes 2013-2017 AMT for child filers and young joint filers.
  • What rulespec-us has (main 5796861e58):
    • us/statutes/26/59.yaml has section_59_j_kiddie_exemption_limit_applies, with a single version from 2018-01-01 whose formula is false. That matches the model from 2018, so encoded-correct is available for the switch.
    • No pre-2018 version. There is no version before 2018: no cap of earned income plus the indexed amount, and no §1(g)(2) applicability rule. us/statutes/26/1/ has only h and j.
    • 55.yaml is "Bounded tax-year-2026": every rule, including amt_income_less_exemptions, starts 2026-01-01.
    • Issues. Searches for "59(j)", "kiddie", "1(g)", "Form 6251" and "alternative minimum" found California integration test #1424 (§1(g)(7) parent's election) and Add South Dakota Medicaid expansion #1487 (§55(b)(3)). Neither covers these provisions.
  • Severity: should. An invalid Axiom line is a merge blocker, not a model error.
  • Fix: file an open, pe-parity-labelled, dispatch-ready issue in TheAxiomFoundation/rulespec-us, modelled on Add AMT parameters for 2020-2023 #1467. Then change the line to axiom: us:statutes/26/59#section_59_j_kiddie_exemption_limit_applies encoded-correct; TheAxiomFoundation/rulespec-us#<n> queued. Alternatively, run the signed encoder and cite the PR as encoded. The issue needs:
    • Target module: a pre-2018 version (taxable years 2013-2017) of the child limit in us/statutes/26/59.yaml. It also needs a §1(g)(2) applicability rule (a new us/statutes/26/1/g.yaml, or inputs) and the taxable excess for those years.
    • Corpus citations: us/statute/26/59/j, us/statute/26/1/g/2, us/statute/26/55/b/1 and us/statute/26/55/d/4.
    • Verbatim law: §59(j)(1)-(2) and §1(g)(2)(A)-(C) (2016 edition), §55(b)(1)(A)(ii), and §55(d)(4)(A)(iii) for the cut-off. All are quoted under Summary.
    • Required outputs: whether §1(g) applies to the filer, the §59(j) cap, the exemption after the cap, and the taxable excess.
    • Companion tests from the 2017 Form 6251, its Exemption Worksheet and Rev. Proc. 2016-55 §3.10-3.11, not from PolicyEngine output. These are the same sources as the PR's YAML. All are single filers aged 17 unless noted:
      • AMTI $50,000, earned income $0. Worksheet line 6 is $54,300, line 9 is $7,500 and line 10 is $7,500. Form line 30 is $42,500 and line 31 is $11,050.
      • AMTI $200,000, earned income $10,000. Line 4 is $79,300, line 5 is $19,825, line 6 is $34,475, line 9 is $17,500 and line 10 is $17,500. Line 30 is $182,500.
      • Joint, spouses 18 and 17, AMTI $150,000, earned income $29,000. The Exception skips lines 7-10, so line 29 is $84,500 and line 30 is $65,500.
      • Separate return, age 18, no earned income: the limit applies.
    • Why queued: the blocker. The likely one is scope, since rulespec-us individual-tax modules are bounded to 2026. Approval for a billed run is another.

S2. Missing coverage for the branches child filers now reach

  • Where: T/income/amt_income_less_exemptions.yaml:108 and T/exemption/amt_exemption.yaml:70.

  • Child filers now reach every AMTI add-back. Before the PR, a pre-2018 child's base skipped amt_income. It now includes all of its add-backs:

    • the standard deduction and personal exemptions (Form 6251 line 1);
    • taxes (line 3) and miscellaneous deductions after the 2% floor (line 5) for itemizers;
    • the separate-return addition.
  • What the new cases cover. The new 2017 child case covers only the non-itemizer path (standard deduction 6,350 and exemption 4,050). No pre-2018 case has an itemizing child, so the line 3 and line 5 add-backs never reach a child's base in a test.

  • No case on the other side of the cap. The pre-2018 cases have earned income of $0 or $10,000, so the cap always binds. None has a child whose earned income plus the indexed amount exceeds the phased-out exemption, so the ordinary exemption never binds for a child.

  • Severity: should (missing edge tests for changed logic).

  • Fix: add these 2017 cases (TX, single, age 17, not claimed elsewhere, with upstream inputs supplied as in the PR's own 2017 cases). I computed the values from the 2017 Form 6251, the Exemption Worksheet and Rev. Proc. 2016-55. The last column shows what the old code gave.

    Case Taxable income AMTI amt_exemption amt_income_less_exemptions amt_base_tax Old base
    Itemizer: interest 60,000; SALT 6,000; misc 1,500 (2,700 of expenses less 2% × 60,000); charity 1,000; exemption 4,050 47,450 59,000 7,500 51,500 13,390 39,950
    Wages 46,000 + interest 30,000; standard deduction 6,350; exemption 4,050 65,600 76,000 53,500 (cap binds) 22,500 5,850 12,100
    Wages 47,000 + interest 30,000; same deductions 66,600 77,000 54,300 (cap 54,500 does not bind) 22,700 5,902 12,300
    • The itemizer row. Line 1 = 60,000 − 8,500 = 51,500. Add line 3 (6,000) and line 5 (1,500) to get 59,000. The charitable deduction stays deducted. AGI is below the $261,500 Pease threshold.
    • The wage rows sit on either side of the boundary at earned income of $46,800, where 46,800 + 7,500 = 54,300.

S3. The Python property test keeps old formulas, locks in the old predicate and has no cost report

  • Where: T/test_post_2017_child_amt_invariance.py.
  • What it does. Lines 36-74 restate both old formulas as a Reform. Lines 77-79 build that reformed system in a module fixture. The test then compares the two systems over 2018-2030 for about 365 tax units in each of 3 Hypothesis examples.
  • It locks in the old predicate. Line 216 asserts that amt_kiddie_tax_applies changes only for JOINT rows. Line 214 asserts that it changes somewhere in every year.
    • Why it matters. The predicate still omits the §1(g)(2)(A)(ii)(II) support test for 18-year-olds and students (G2). A later legal fix there would change only pre-2018 results, yet it would fail this test.
    • What it really checks. The test pins the variable to the legacy formula, which is more than its docstring ("post-2017 AMT unchanged") says.
  • CLAUDE.md ("Test design and CI cost"):
    • Duplicated formula. "Do not duplicate a policy formula in Python merely to test it against itself." After merge, the reform is a frozen copy of code the PR deletes.
    • YAML can do this. The post-2017 claim is already covered in YAML: the 2018 transition case, the 2021 and 2022 controls, and the 2025 and 2026 cases.
    • No measurement. "Measure simulation-heavy additions" asks for elapsed time, including setup, and peak memory for tests that build models. The PR body gives neither.
  • The cost, as measured in CI (Linux; not a controlled before/after):
    • Quick Feedback: 11.70 s call and 8.36 s setup.
    • Rest Python policy group: 17.94 s call and 3.99 s setup, the eighth-slowest of 981 tests.
    • Memory. That group peaked at 11,954,096 KiB (11.4 GiB). Two PR runs on the same main base peaked at 11,590,704 and 11,608,628 KiB, so about 340-355 MiB more here. The Makefile's stated goal for these groups is about 10 GB per process, on a 16 GB runner.
  • Severity: should (a code-pattern violation of the repository's test rules).
  • Fix: delete the file, since the YAML controls carry the post-2017 claim. If you keep it, drop the assertions on lines 214-216, say in the PR body which failure only this test catches, and give the CI cost above.

Suggestions

G1. The PR body is stale

  • Draft language. It opens with "WIP:" although the PR is not a draft.
  • Stale validation section. It says folder validation is incomplete: qualified_dividend_netting.yaml was stopped and regular_tax_before_credits.yaml wasn't started. The Baseline (irs) suite has since passed in CI, including both files.
  • Hub analysis is still listed as pending.
  • Fix (optional): replace the validation section with the CI result, and fix the Axiom line (S1).

G2. Gaps left in the child test, all pre-existing

  • The support test. §1(g)(2)(A)(ii)(II) applies the cap to an 18-year-old, or a full-time student aged 19-23, only if "earned income ... does not exceed one-half of the amount of the individual's support". The 2017 instructions list this as conditions 2 and 3. amt_kiddie_tax_applies doesn't model it, so the 2017 test "A young separate filer remains subject to the child limitation" (T/kiddie_tax/amt_kiddie_tax_applies.yaml:110) holds only because the filer has no earnings.
  • The spouse-age clause is now redundant. After the joint exclusion, no_or_young_spouse (V/kiddie_tax/amt_kiddie_tax_applies.py:49) matters only for a non-joint unit that contains a spouse. That happens only with a hand-set filing_status. In that case §1(g)(2) looks at the filer alone, so the clause would wrongly drop the cap.
  • The living-parent condition (§1(g)(2)(B)) is assumed, as the test comment notes.
  • Fix (optional):

G3. Pre-existing pre-2018 AMTI gaps that child filers now inherit

These predate the PR, which doesn't claim them. Because children now go through amt_income, they apply to child filers too.

  • Line 6, the overall limit (Pease). The 2017 instructions say: if Form 1040 line 38 is over $261,500 ($313,800 joint), "enter the amount from line 9 of the Itemized Deductions Worksheet ... Enter it as a negative amount". amt_income adds back SALT and miscellaneous deductions in full but never subtracts the §68 reduction (itemized_taxable_income_deductions_reduction, active 2013-2017). So it overstates 2013-2017 AMTI for high-income itemizers.
  • Line 7 (tax refunds) isn't modelled either. Draft Leave state tax refunds and the section 68 reduction out of federal AMTI, and fix Colorado AMTI to match #10099 (same author) addresses lines 6 and 7.
  • Line 4 (home mortgage interest adjustment) isn't modelled.
  • The standard deduction (gov.irs.deductions.standard.amount) has no values before 2018, so 2017 backdates $12,000/$24,000. The PR's tests work around this by supplying 2017 amounts. AMTI for non-itemizers is AGI either way, but end-to-end 2017 regular tax, and so AMT, is still off.
  • Fix (optional): mention these in the PR body, and open an issue for the standard deduction and line 4 if none exists.

G4. References for the pre-2019 child amounts

  • The gap. policyengine_us/parameters/gov/irs/income/amt/exemption/child/amount.yaml has references only from 2019. The PR's fix now depends on its 2013-2018 values ($7,400 for 2015-2016, $7,500 for 2017).
  • The values are right. Rev. Proc. 2016-55 §3.11 (file page 14) gives "$7,500" for 2017. The 2015 and 2016 Exemption Worksheets, line 7, give "$7,400".
  • Fix (optional): add those Rev. Procs. as references.

Verified correct

  • Hand-checks (11 cases, about 40 expectations). Each is TX.
    1. T/exemption/amt_exemption.yaml:203, 2017 joint, spouses 18 and 17, wages 29,000, interest 121,000.
      • Taxable income = 150,000 − 12,700 − 2 × 4,050 = 129,200. Rev. Proc. 2016-55 gives the $12,700 standard deduction (file page 15) and the $4,050 exemption (file page 18).
      • AMTI = 129,200 + 8,100 + 12,700 = 150,000. That is below the $160,900 joint phase-out start, so the exemption is $84,500 (§3.10, file page 13). The Exception applies, so amt_kiddie_tax_applies is false.
      • Base = 65,500 and the tentative tax is 26% × 65,500 = 17,030.
      • Regular tax = 10,452.50 + 25% × 53,300 = 23,777.50 (Table 1, file page 7), so AMT is 0.
      • Old code: cap 29,000 + 7,500 = 36,500, base 129,200 − 36,500 = 92,700, tax 24,102, AMT 324.50.
    2. T/income/amt_income_less_exemptions.yaml:108, 2017 single, age 17, interest 50,000.
      • Taxable income = 50,000 − 6,350 − 4,050 = 39,600. AMTI = 50,000.
      • Exemption = min(54,300, 0 + 7,500) = 7,500 (earned income below the limit). The base is 42,500 and the tax 11,050.
      • Old code: base 32,100.
    3. Same file, line 47, 2017, AMTI 200,000, earnings 10,000.
      • Exemption. The phase-out is 25% × 79,300 = 19,825, leaving 34,475, and the cap is 17,500. So the exemption is 17,500, the base 182,500 and the old base 172,500.
      • T/exemption/amt_exemption.yaml:70 (17,500) is unchanged.
    4. Same file, line 146, 2025 single, age 17, interest 200,000.
      • Taxable income = 200,000 − 15,750 = 184,250. AMTI is 200,000 and the exemption 88,100 (no cap after 2017).
      • The base is 111,900 and the tax 29,094.
    5. T/exemption/amt_exemption.yaml:252, 2021 joint, wages 29,000.
      • Taxable income is 29,000 − 25,100 = 3,900, and AMTI is 29,000.
      • The exemption is 114,600, so the base and AMT are 0.
    6. Same file, line 284 (2022). Taxable income is 29,000 − 25,900 = 3,100, the exemption 118,100, and the base 0.
    7. Same file, lines 134 and 170, joint with both spouses 18. amt_kiddie_tax_applies is false. The exemption is 137,000 in 2025 and 140,200 in 2026, unchanged from before.
    8. T/income/amt_income_less_exemptions.yaml:88, 2025 joint with both spouses 18, AMTI 100,000. The predicate is false and the base is 0.
    9. T/kiddie_tax/amt_kiddie_tax_applies.yaml:
      • Line 110 (2017, separate return, age 18): true. §1(g)(2)(C) excludes only joint returns.
      • Line 118 (2017, joint, students aged 22 and 23): false. The old code gave true, because both are under 24.
      • Line 18 (2022, joint, both 18): false.
    10. 2017 against 2018.
      • T/exemption/amt_exemption.yaml:86 (2018, single, age 18, no earnings): 70,300 with no cap, because in_effect is false from 2018.
      • The 2017 cap. For 2017 the cap uses the $7,500 amount.
    11. The indexed amount. child/amount.yaml matches the IRS:
      • 2015 and 2016: $7,400 (worksheet line 7, file page 10 of each year's instructions).
      • 2017: $7,500 (Rev. Proc. 2016-55 §3.11).
  • The 2015-2017 form.
    • The exemption amounts and phase-out starts in amount.yaml and phase_out/start.yaml match the line 29 charts. In 2017, for example, they are $54,300/$120,700, $84,500/$160,900 and $42,250/$80,450.
    • The 26% bracket ends at $187,800 in 2017, which matches line 31.
  • Callers at the head:
    • amt_kiddie_tax_applies is read only by amt_exemption, and only while child.in_effect is true (before 2018).
    • amt_income_less_exemptions feeds the federal AMT, the §911 variables and co_alternative_minimum_taxable_income. Those change only before 2018. The Colorado AMT rate starts in 2021.
    • California. ca_amt_exemption reads only child.amount and its own child test, so it is unaffected.
  • References.
    • The 2017 instructions. File page 10 holds the Exemption Worksheet (amt_income_less_exemptions.py), and file page 11 holds the joint-return Exception (amt_kiddie_tax_applies.py).
    • Rev. Proc. 2016-55. The test comments cite pages 7, 15 and 18, which show the rate table, the standard deduction and the exemption.
    • §56(b)(1)(D), cited in a test comment, is the standard-deduction and exemption disallowance.
  • Changelog. changelog.d/amt-child-pre-2018.fixed.md is a top-level fragment, and fixed is the right type.
  • Batch lessons:

Axiom line assessment

Invalid: axiom: pending: hub files parity (S1).

  • Recommended form: axiom: us:statutes/26/59#section_59_j_kiddie_exemption_limit_applies encoded-correct; TheAxiomFoundation/rulespec-us#<n> queued. The queued issue is a new open, pe-parity-labelled, dispatch-ready issue for the pre-2018 §59(j)(1) cap, the §1(g)(2) applicability (including (C)) and the taxable excess. The required contents are listed under S1. Alternatively, cite an encoder PR as encoded.
  • Not n/a. These are statutory provisions, and the PR changes 2013-2017 AMT results.
  • encoded-correct covers only the post-2017 switch. rulespec-us main (5796861e58) encodes the switch as false from 2018-01-01, which matches the model. It has no pre-2018 version, and 55.yaml covers only 2026.

CI status

27 pass, 3 skipping, 0 pending, 0 failed. I re-checked gh pr checks 10308 at the end of this review, and the head is still e7b010e809.

  • The green run. Run 39608011006 (pull_request, created 2026-10-21 13:26 UTC) tested merge commit 70ec14b2. That merges the head into fec98b87c8 (Count the FL and SD LIHEAP comments in the source-conflict ratchet baseline #10334), so CI's tree contains the Tie source-conflict markers to the register shared with Axiom #10287 ratchet and the FL/SD LIHEAP baseline fix. The known main-caused ratchet failure therefore doesn't apply.
  • The skipped checks are the umbrella jobs of the superseded run 39507938034 (2026-10-20 22:25 UTC).
  • Where the changed tests ran.
    • Quick Feedback selected and passed: amt_exemption.yaml (17), amt_income_less_exemptions.yaml (10), amt_kiddie_tax_applies.yaml (11) and the property test (1).
    • Full suites. The Baseline (irs) suite, the Rest Python policy group (which reran the property test), Microsimulation and Household API Partners all passed.
  • Locally: I ran no tests or model probes. CI is green at the current head. Every expectation and the S2 values were checked by hand from the code, the parameters and the IRS sources.

Branch status

0 critical, 3 should and 4 suggestions are open at this head.

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.

Both changes are correct. s.59(j) caps only the exemption, joint returns are excluded under s.1(g)(2)(C), s.59(j) stays off from 2018 (SECURE Act, and OBBBA s.70107 struck the 2026 end date), and the pre-2018 add-backs match Form 6251. Three should-address items: (1) the 'pending: hub files parity' axiom line is invalid (cite 59(j) encoded-correct, plus a queued issue for the pre-2018 cap and 1(g)(2)); (2) add cases for an itemizing 2017 child and a pair either side of the cap; (3) the Python property test restates the old formulas and locks in the old predicate, with no cost report. Four suggestions. Full report in the comment above.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants