Repository navigation
Conversation
…mized deductions on federal SALT as claimed New Jersey: the deduction-or-credit choice compared only the tax saving with the $50 credit, but the deduction also lowers NJ taxable income, which sets the refundable NJ child tax credit and the NJ child and dependent care credit. A filer just above $30,000 kept the $50 credit and lost a $200 child tax credit increase. The choice now counts those credit changes. The child count moves to nj_ctc_qualifying_children so both formulas share it. Nebraska: itemized deductions added real estate taxes capped by the static SALT cap to the non-SALT deductions. That dropped sales taxes claimed on Schedule A and, from 2025, could exceed the federal SALT deduction after the cap phase-down. They now start from the federal SALT deduction and remove only the income taxes in it, counting real estate taxes first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6L5ENJPWh7rPevAeE7
|
Picking this up for the US hub. This continues an earlier session's work on the state taxpayer-choice items; that session pushed nothing, so this branch starts from main. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
…ugs-continued-3mhani
|
Ready for hub review Head: This continues an earlier session's work on these items. It pushed nothing (its branch never existed), so there were no earlier commits to keep or fix. This PR is on branch Source access: this VM couldn't reach any statute or agency site. The Iowa, Virginia, Nebraska, Oregon, New York, New Jersey and New Mexico hosts, irs.gov, govinfo, uscode.house.gov and law.cornell.edu all failed (proxy 403 or DNS). Nothing below quotes a source fetched in this session. The only quotations come from text already in the repo, and they say so. Per item
The witnesses, hand computations and what each blocked item needs are in the PR body. Judgment calls
Tests
CIThe draft was skipped: the Pull request run at Proposed follow-ups
Generated by Claude Code |
|
Picking this up for the US hub. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
…apped Neb. Rev. Stat. 77-2716.01(4) allows federal itemized deductions except the state or local income taxes "before any federal disallowance", and the Form 1040N line 8 instructions say to enter the line 5a income taxes even when the SALT cap limited line 5e. The prior formula counted real estate taxes first inside the capped SALT deduction and removed only the rest, so it left too much whenever the cap bound. Start from itemized_taxable_income_deductions (Schedule A line 17), subtract the income taxes in full when line 5a holds them, and floor at zero. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6K6CPev5JwhCMUY7j6
|
Ready for hub review Head: Ownership note: the last push before mine (22:56Z) was inside the 6-hour window, but it was the named head, and its writer handed off at 22:59Z, before this item was filed. I took it as finished work, not an active writer. Source access: nebraskalegislature.gov failed DNS and web.archive.org was refused, so I couldn't fetch 77-2716.01 or the 1040N booklet. The statute and booklet words in the code, body and here are the text the hub supplied. I didn't verify them independently. Items
CIThe Pull request run at e9502f5 completed as Judgment calls
Proposed follow-ups
Generated by Claude Code |
|
Hub review in progress Reviewing head
Generated by Claude Code |
|
Ready for hub review Independent review of round 1 at the head above. The head hasn't moved since FindingsP2-1. New Jersey: the election departs from Worksheet H, and nothing records that as a reading
P2-2. New Jersey: #10043 rewrites the lines this PR moves, and its rule must go into
|
| Code | ne_itemized_deductions |
|---|---|
| main | 8,000 |
| this head | 8,000 |
| main + #10070 (local trial merge) | 38,000 |
| this head + #10070 (local trial merge) | 38,000 |
The two PRs touch no common file, and the merge reports no conflict. The landing order doesn't matter, and this PR makes nothing worse. Follow-up after #10070 lands: add this gambler case to ne_itemized_deductions.yaml.
Checked and sound
Defects reproduce at main (25c4253483). I ran a witness script against each tree.
- NJ witness: main keeps the credit,
nj_income_tax−1,253.01. The head takes the deduction: −1,450.26. - NE 2025 witness: main gives
ne_itemized_deductions50,000, above the 30,000 federal total, becausecapped_property_taxesignores the 2025 phase-down. The head gives 0, andne_taxable_incomeis 691,400. - NE 2024 binding cap: main 20,000, head 17,000.
NJ hand check of the $197.25 (computed before reading the code).
- Exemptions: 1,000 + 1,500 = 2,500, so taxable income is 33,000 − 2,500 = 30,500.
- Tax: 280 + 10,500 × 1.75% = 463.75.
- Deduction: 18% × 15,000 = 2,700, so taxable income is 27,800 and tax is 280 + 7,800 × 1.75% = 416.50.
- CTC: $800 above $30,000 and $1,000 at or below, from
ctc/amount.yamlfor 2023. - Credit route: 463.75 − 800 − 50 = −386.25. Deduction route: 416.50 − 1,000 = −583.50. The difference is 197.25, which matches −1,253.01 versus −1,450.26.
NE hand checks, all 8 cases, matching the YAML comments:
| Case | Federal itemized | Income taxes removed | Nebraska |
|---|---|---|---|
| Unit test 1 | 2,000 + 24,000 + 10,000 = 36,000 | 5,000 | 31,000 |
| Unit test 2 | 3,000 + 7,000 + 10,000 = 20,000 | 5,000 | 15,000 |
| Sales-tax filer | 23,000 | 0 (sales 3,000 > income 1,000) | 23,000 |
| Uncapped income-tax filer | 22,000 | 2,000 | 20,000 |
| 2025 witness | 30,000 | 35,000 | 0, so ne_taxable_income = 700,000 − 8,600 = 691,400 |
| 2024 binding cap | 25,000 | 8,000 | 17,000 |
| 2023 income above cap | 25,000 | 12,000 | 13,000 |
| Tie | 23,000 | 0 (3,000 = 2,000 + 1,000) | 23,000 |
The NE rule in code.
- The formula subtracts
state_withheld_income_tax + local_income_taxin full when that sum is strictly abovestate_sales_tax + local_sales_tax. That is the same pairstate_and_local_sales_or_income_taxcompares for federal line 5a. - It doesn't branch on filing status or year, so the uncapped subtraction holds for every status, the MFS $5,000 cap included.
- It floors at 0.
- The only reader is
ne_taxable_income, which takesmax_(itm_ded, std_ded)for federal itemizers.state_itemized_deductionslists it, but no non-test variable reads that total.
NE tests, before and after. The head's NE file fails 5 cases with the 6df1752b formula (unit tests 1 and 2, the 2025 witness, the 2024 binding cap, the 2023 above-cap case) and 7 with main's. All 8 pass at the head.
NJ readers of nj_taxable_income.
nj_main_income_tax,nj_ctcandnj_cdccread it, plustaxsim_state_taxable_income, a reporting sum.nj_non_refundable_creditshas no components, so the full main-tax saving reachesnj_income_tax.- The election itself moves
nj_property_tax_credit, which the comparison already counts. - The filing-threshold zeroing can't create a phantom saving, because
nj_property_tax_deduction_eligiblerequires AGI above the threshold. nj_eitcdoesn't read taxable income. No reader goes uncounted.
NJ structure.
- No cycle: the election reads
nj_ctc_qualifying_children(age and dependency),nj_ctc_eligible(filing status), federalcdccandnj_taxable_income_before_property_tax_deduction. None of them depends on the election. nj_ctc_qualifying_childrenhas the same expressionnj_ctchad on main, andnj_ctc.yamlpasses 19/19.taxable_income_after_deductionis floored at 0, likenj_taxable_income.- The CTC term applies
nj_ctc_eligibleasnj_ctc'sdefined_fordoes. - The election also runs in 2020 and 2021 (scratch cases, passed), where the CTC is 0.
NJ tests at main. The head's NJ file fails 3 cases on main's code (the CTC case, which can't load nj_ctc_qualifying_children, the CDCC case and the end-to-end renter) and passes 5. All 8 pass at the head.
Runs at the head, one file per process, all passing:
| File | Passed |
|---|---|
ne_itemized_deductions.yaml |
8 |
nj_taking_property_tax_deduction.yaml |
8 |
salt_refund_integration.yaml |
38 |
ne_income_tax_before_credits.yaml |
4 |
ne_income_tax_rates_2026.yaml |
3 |
ne_taxable_income.yaml |
5 |
ne_integration.yaml |
1 |
nj_taxable_income.yaml |
2 |
nj_ctc.yaml |
19 |
nj_cdcc.yaml |
8 |
nj_main_income_tax.yaml |
6 |
Mutants, each in its own process in a scratch worktree, restored after (git status clean):
| Mutant | Fails | Killed by |
|---|---|---|
| NE: every filer an income-tax claimer | 2 | sales-tax filer; tie |
NE: subtraction capped at salt_deduction |
2 | 2025 witness; 2023 above-cap case |
| NE: no floor | 1 | 2025 witness |
NE: >= |
1 | tie |
| NE: pre-section-68 total | 0, survives | none (P3-3) |
| NJ: drop CTC gain | 2 | CTC bracket case; end-to-end renter |
| NJ: drop CDCC gain | 1 | CDCC rate-rise case |
NJ (mine): drop nj_ctc_eligible |
0, survives | the P3-1 case kills it |
NJ (mine): drop right=True |
0, survives | the P3-2 case kills it |
Body claims about the unchanged items.
- OR:
or_standard_deductiondoesn't readseparate_filer_itemizes, while DC and ID do (grep). - VA: the VA integration test expects 257.5.
- NM:
uncapped_element_percentis 0.4 from 2019 and 0 from 2025, and its reference names HB0037. - NY: Choose New York's itemizing election by State plus City tax and require federal itemizing only before 2018 #10100 is open and still makes
ny_deductionsfollowny_itemizes. I read the diff but didn't run it. Its title now says "only before 2018", but that refers to the federal-itemizing gate. The overlap still goes in every year.
CI. The Pull request run at the head, https://github.com/PolicyEngine/policyengine-us/actions/runs/41745610068, concluded success. All 36 jobs succeeded, including the four state baseline shards and Household API Partners. The earlier draft run (41744533541) was skipped.
Scope and body.
- Seven files changed, none under
.github/orpolicyengine_us/tests/policy/baseline/partners/. - The changelog fragment is top-level and of type
fixed. - The body has
impact: the hub will measureandaxiom: needed. The hub still has to replace the axiom line. - Open-PR search on each changed variable name finds only this PR, except
nj_ctc, which finds Apply New Jersey, North Dakota, Ohio, Oklahoma and Pennsylvania rules for a filer who can be claimed as a dependent #10043 (P2-2).
Baseline impact. The diff moves baseline outputs.
- Nebraska federal itemizers in every year:
- Sales-tax claimers gain their sales tax back.
- Income-tax claimers lose up to the part of their income tax that main hid behind real estate taxes.
- From 2025, high-income filers lose main's overstatement from the unphased cap.
- New Jersey filers near a CTC or CDCC bracket switch to the deduction.
- The hub's population run should report:
- the count and net revenue of changed NE itemizers, split by sales-tax and income-tax claimers;
- the count of NJ elections that flip, and their net change in
nj_income_tax.
What I couldn't check
- Sources. This VM couldn't reach any primary source: the proxy refused nebraskalegislature.gov, revenue.nebraska.gov, irs.gov, govinfo.gov, uscode.house.gov, ecfr.gov, lis.njleg.state.nj.us, law.justia.com, nj.gov and web.archive.org (403 or DNS failure). So:
- I didn't confirm Neb. Rev. Stat. 77-2716.01(4), the Form 1040N booklets or the $8,600 2025 Nebraska standard deduction. I used PE's parameter.
- I didn't read N.J.S.A. 54A:3A-17 to -20, NJ-1040 Worksheet H, the 2026 Schedule A, or IRC 63(d) and 68.
- A web search returned only third-party summaries of 54A:3A-20, which I don't rely on.
- Population impact. I ran no microsimulation on population data.
- The author's property checks (300 random NJ households, 300 NE filers): not rerun, so unverified.
- The Iowa witness table in the body: not run.
Generated by Claude Code
|
Picking this up for the US hub. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
…st two edges The comment said the formula follows Worksheet H, but since the last round it also counts the change in the refundable NJ CTC and CDCC, which the worksheet leaves out. Two review cases close gaps no existing case covered: a separate filer, who cannot claim the NJ CTC, keeps the $50 credit; and a deduction that lands taxable income exactly on $30,000 gets the 50% NJ CDCC rate, as nj_cdcc's right=True reads it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QpcqEDJ2tmDgRbDecMcN7j
|
Ready for hub review Head: What the round 1 review asked for, and what I did
Hand computations (2023, single rates 1.4% to $20,000, 1.75% to $35,000)
MutantsEach ran in its own process on a scratch worktree, against the 10-case file at this head. I removed the worktrees afterwards;
Tests at the head (one process per file)
CINot finished at the 60-minute mark; the runners were congested. This is the only run at this head: the Pull request run 41856636964 at At 16:20Z, 60 minutes after my 15:20Z push, the run was
The hub needs to read the run's conclusion. Judgment calls
Proposed follow-upNJ child tax credit: an income exactly on a bracket edge gets the lower amount. The 2025 NJ-1040 instructions (line 65, fetched from nj.gov this session) give $1,000 for taxable income of "$30,000 or less". But Generated by Claude Code |
|
Hub review in progress Round 2 delta review of head
Generated by Claude Code |
|
Ready for hub review Round 2 delta review, from FindingsP3-1. NJ CTC at exactly $30,000: the election inherits
|
| Mutant | Result | Killed by |
|---|---|---|
M1: drop * nj_ctc_eligible |
1 failed, 9 passed | Separate filer with a child… |
M2: drop right=True on the after-deduction CDCC rate |
1 failed, 9 passed | Deduction that lands NJ taxable income exactly on $30,000… |
M3: drop + ctc_gain |
2 failed | CTC bracket case; renter end-to-end |
M4: drop + cdcc_gain |
2 failed | CDCC rate rise; $30,000 case |
M5 (mine): >= instead of > |
survives 10/10 | none. At a tie the net tax is equal either way, so this is close to an equivalent mutant |
M6 (mine): right=True in both CTC calls |
survives 10/10 | none (P3-1) |
| M7 (mine): drop the cohabiting halving | survives 10/10 | the P3-3 case kills it (1 failed) |
M1-M4 match the hand-off and the body's mutant sentence.
Runs at the head, one file per process:
| File | Result |
|---|---|
nj_taking_property_tax_deduction.yaml |
10 passed |
nj_ctc.yaml |
19 passed |
nj_ctc_eligible.yaml |
2 passed |
nj_cdcc.yaml |
8 passed |
ne_itemized_deductions.yaml |
8 passed |
test_source_conflicts.py |
103 passed |
ruff format --check and ruff check on the changed Python file both pass.
Overlap paragraph. It holds at #10043's current head, 6f241acce1 (open, draft, last updated 2026-10-16).
- Apply New Jersey, North Dakota, Ohio, Oklahoma and Pennsylvania rules for a filer who can be claimed as a dependent #10043's
nj_ctc.pysetsfiler_is_dependent = person.tax_unit("head_or_spouse_is_dependent_elsewhere_without_filing_exception", period)anddependent = ... & ~filer_is_dependentin the child count this PR moves. git merge-tree --write-tree pr-10654 pr-10043reportsCONFLICT (content)innj_ctc.py, so git won't let the condition land silently in the wrong file. It also reports a conflict inok_eitc.yaml.- Apply New Jersey, North Dakota, Ohio, Oklahoma and Pennsylvania rules for a filer who can be claimed as a dependent #10043 already conflicts with main in
nj_eitc.yamlandok_eitc.yaml, so it needs a rebase in any case. - Apply New Jersey, North Dakota, Ohio, Oklahoma and Pennsylvania rules for a filer who can be claimed as a dependent #10043 also edits the contrib
nj_dependent_exemption_reform.py, which doesn't read the CTC count.
Readers. The round 2 delta changes no formula, so no reader moves. The readers are unchanged from round 1:
nj_taking_property_tax_deduction:nj_property_tax_deductionandnj_property_tax_credit;nj_ctc_qualifying_children:nj_ctcand the election.
Body.
- "7 new cases, 10 in all" is right: main's file has 3 cases and the head's has 10.
- The listed cases and the mutant sentence match my runs.
impact: the hub will measureandaxiom: neededare present.neededis CLAUDE.md's form for an external contributor, so the hub still has to replace it.
Baseline impact. The delta can't move any output, since it changes a comment and adds tests. The PR as a whole moves NE itemizers and NJ elections near a CTC or CDCC bracket edge, as round 1 listed. The population check round 1 asked for still applies.
Scope.
- Seven files changed, none under
.github/orpolicyengine_us/tests/policy/baseline/partners/. - An open-PR search for
nj_taking_property_tax_deduction,nj_ctc_qualifying_childrenandne_itemized_deductionsfinds only this PR. A search fornj_ctcalso finds Apply New Jersey, North Dakota, Ohio, Oklahoma and Pennsylvania rules for a filer who can be claimed as a dependent #10043. git merge-treeof the head withorigin/main(25c4253483) reports no conflict.
CI. The Pull request run at the head, https://github.com/PolicyEngine/policyengine-us/actions/runs/41856636964, concluded success. All 36 jobs succeeded, none skipped or cancelled, including Python Full Suite - Microsimulation and every Contrib shard, which were still running at the hand-off.
Still open from round 1, not in this round's scope: P3-3, Nebraska line 7 before or after section 68, and P3-4, wagering losses until #10070 lands.
What I couldn't check
- Sources. This VM's proxy refused nj.gov, lis.njleg.state.nj.us, pub.njleg.state.nj.us, www.njleg.state.nj.us, law.justia.com, casetext.com and govinfo.gov (403 on CONNECT or DNS failure). So I didn't read:
- N.J.S.A. 54A:3A-20(a)(1). The hub's reading of it is taken as given.
- Worksheet H.
- The NJ-1040 line 65 "$30,000 or less" wording, or 54A:4-17.1.
- The author's 300-household NJ property check: not rerun.
- Population impact: I ran no microsimulation.
Generated by Claude Code
|
Picking this up for the US hub. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
…filers The election's reading rests on N.J.S.A. 54A:3A-20, which the property tax credit parameter already cites, so cite it here too. Add a case for a separate filer who lives with the spouse: the $50 credit halves to $25, so a $47.25 tax saving makes the deduction the better choice. Without the case, dropping the halving passed every test in the file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6HWtPqg7fKcLTqL3ef
|
Ready for hub review Head: Built on Items
MutantM7: CIPull request run 41947357640 at Judgment calls
Proposed follow-up (the hub's to file)None from this round. The review's P3-1 ( Generated by Claude Code |
PR Review: Fix state taxpayer-choice bugs: NJ property tax election and NE itemized deductionsSummaryThe New Jersey change is sound in principle. N.J.S.A. 54A:3A-20(a)(1) lets a taxpayer "elect to take a credit instead of the deduction". Both refundable credits that read taxable income (the NJ CTC and the NJ CDCC) use NJ-1040 line 42, after the property tax deduction. So counting their change when picking the better election is the right comparison. The algebra matches the net-tax difference, and the inputs don't depend on the election, so there is no cycle. The Nebraska change matches 77-2716.01(4) and the Form 1040N line 7–8 instructions for every year tested (2021–2025, all checked word for word). There are four open issues:
I hand-checked all 16 expectations in the two changed test files. CI is 36/36 green, and the merge with current main is clean. CriticalNone. Should addressS1. Nebraska: a filer whose federal SALT deduction is capped either way would enter sales taxes on line 5a. The PR always subtracts income taxes, which reverses its own 2025 witness and makes common homeowner cases worse than main.
S2. New Jersey: 54A:3A-20(b) halves the credit for every spouse filing separately, but the code (and a new test) halves it only for spouses who live together. The choice isn't recorded.
S3. New Jersey CTC boundary: the new election term (and
S4. Two new terms are unpinned: deleting either fails no test.
Suggestions
Verified correct
Axiom line assessment
CI status
Branch status
Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Requesting changes per the review above: 0 critical, 4 should (NE line 5a always treated as income taxes even when the SALT cap makes the sales-tax election free; NJ separate-filer half credit follows the instructions over 54A:3A-20(b) without a record; NJ CTC $30,000-or-under boundary; two unpinned terms), 4 suggestions.
Fixes two state taxpayer-choice bugs found in a review of the taxpayer-choice inventory, and reports the other five items with the evidence from running each claimed household at main.
This continues an earlier session's work on the same items. That session pushed nothing, so this branch starts from
main.The VM running this session could not reach any statute or agency site (Iowa, Virginia, Nebraska, Oregon, New York, New Jersey and New Mexico sites, irs.gov and law.cornell.edu were all blocked). Each fix rests on the code and on the references already in the repo. Where an item turns on text that couldn't be read, it is left unchanged, and the text needed is named below.
Items
3. New Jersey property tax election: FIXED
nj_taking_property_tax_deductionchose the deduction only when its tax saving beat the $50 credit. The deduction also lowersnj_taxable_income. Besides the main tax,nj_ctcandnj_cdccare the only NJ variables that read it, and both are refundable credits whose amounts step down with taxable income. The choice now adds the change in those two credits to the tax saving. The CTC child count moved to the newnj_ctc_qualifying_children, so the election andnj_ctcshare it.The existing code treats this as the filer's choice, and the change keeps that. It only makes the comparison count everything the deduction changes. Worksheet H compares only the tax saving with the $50 credit, so a filer who follows it keeps the credit in the witness below and gives up $197.25.
Witness (2023, single parent, one child aged 3, $33,000 wages, $15,000 rent):
main: taxable income $30,500. PE keeps the $50 credit and pays a $800 NJ CTC.nj_income_taxis −$1,253.01.nj_income_taxis −$1,450.26.nj_income_tax.Overlap. #10043 (open) drops a child from the New Jersey child tax credit when someone can claim the filer as a dependent, in the child count this PR moves. Whoever lands second puts that
~filer_is_dependentcondition intonj_ctc_qualifying_children.py, not back intonj_ctc.py, so the election and the credit count the same children.4. Nebraska itemized deductions: FIXED
Neb. Rev. Stat. 77-2716.01(4) gives a federal itemizer the greater of the Nebraska standard deduction and federal itemized deductions "except for the amount for state or local income taxes included in federal itemized deductions before any federal disallowance". The Form 1040N booklet's line 8 says the same: enter the Schedule A line 5a income taxes even when the SALT cap limited line 5e, and nothing when line 5a holds sales taxes. (This session couldn't fetch the Legislature's site or the booklet. The quoted words are from the text the hub supplied.)
ne_itemized_deductionsnow does that:itemized_taxable_income_deductions, the federal total after any section 68 reduction. Onmainas built (Count gambling winnings in federal gross income and fix the wagering losses deduction #10070 still open), this total does not includewagering_losses_deduction.taxable_income_deductions_if_itemizingadds those losses separately. Count gambling winnings in federal gross income and fix the wagering losses deduction #10070 moves them intoitemized_deductions.yaml, and Nebraska picks them up then with no change here.state_withheld_income_tax + local_income_taxabovestate_sales_tax + local_sales_tax, the same comparisonstate_and_local_sales_or_income_taxmakes), subtract those income taxes in full, with no cap. A tie counts as sales tax, and then nothing is subtracted.Witnesses:
ne_taxable_incometakes the $8,600 standard deduction: 700,000 − 8,600 = $691,400. At6df1752bthis was $30,000 of itemized deductions and $670,000 of taxable income.6df1752bthis was $20,000, because real estate taxes counted first inside the cap and only $5,000 of income tax was removed.Before this PR,
maingaveitemized_deductions_less_salt + capped_property_taxes, which dropped sales taxes and could exceed the federal total from 2025. Both errors stay fixed: the sales-tax filer still gets $23,000 and the uncapped income-tax filer still gets $20,000.1. Iowa alternate tax: reproduced, not changed
ia_base_tax_indivtakesmin(ia_regular_tax_indiv, ia_alternate_tax_indiv)for each spouse.ia_alternate_tax_indivis the unit's alternate tax prorated byia_prorate_fraction, so the per-spouse sum is never abovemin(sum of regular, unit alternate), and can be below it. Witness, 2022, married filing separately on a combined return:Needed to decide: the Iowa Alternate Tax Worksheet (41-145), lines 7–11, for filing status 3 and 4, and the alternate-tax paragraph of Iowa Code 422.5 for 2021–2022. Those show whether the smaller-of comparison is made per spouse or on combined amounts. The path applies only while
married_filing_separately_on_same_return.availabilityis true.2. Virginia spouse tax adjustment: reproduced, not changed
PE's worksheet never reaches the $259 cap. For two earners each above $17,000,
va_spouse_tax_adjustmentis $257.50, which is 2 × tax($17,000) − tax($34,000) at the 2/3/5/5.75% rates. Witnesses (2023, two earners at $30k/$30k, $40k/$25k, $26k/$26k and $100k/$30k) all give $257.50. The existing integration test expects $257.50 too. Thecap.yamlcomment says the legal code doesn't explicitly include the adjustment.Needed to decide: the 2021–2025 Form 760 Spouse Tax Adjustment worksheet (instructions p. 19), for the exact condition under which it enters $259 directly. Also needed is any statutory basis for the adjustment. The review cited Va. Code 58.1-332, which the repo doesn't cite. If the statute fixes the amount by the tax difference, statute-first would keep $257.50.
5. New York tuition: reproduced, already covered by #10100
Witness (2023, federal non-itemizer, $10,000 qualified tuition):
ny_itemizesis false because the filer doesn't itemize federally, sony_college_tuition_creditis $400. Butny_deductions = max(itemized, standard)still takes the $17,000 NY itemized amount, which includes the $10,000 tuition deduction. Open PR #10100 changesny_deductionsto followny_itemizes. That removes the overlap, since the credit already requires~ny_itemizes. That PR was updated today, so this one leaves New York alone.6. Oregon: reproduced, not changed
or_standard_deductionnever readsseparate_filer_itemizes. Witness (2024, separate filer, spouse itemizes, $60,000 wages): federalstandard_deductionis 0, butor_standard_deductionandor_deductionsare $2,745. Needed: ORS 316.695, the subsection on separate returns, and the OR-40 instructions on it. DC (dc_standard_deduction) and Idaho (id_itemizes) already readseparate_filer_itemizes, so the change would be one line once the rule is confirmed.7. New Mexico: not a parameter error
uncapped_element_percent.yamlsets 40% through 2024 and 0 from 2025. Its own reference is titled: "amends NMSA 7-2-34 to restrict the 40% element to business-sale gains, effective 2025-01-01". With no input for gains from the sale of a business, PE gives everyone the capped element only: $100,000 of long-term gains yields a $40,000 deduction in 2024 and $2,500 in 2025. That is a missing feature, not a wrong value. Two caveats: that reference names HB0037, whilenm_net_capital_gains_deductioncites 2024 HB252 for the 2025 text, and neither could be read here.Tests
nj_taking_property_tax_deduction.yaml: 8 new cases, 11 in all. They cover the CTC bracket crossing, the same case without a child, a separate filer with a child (no NJ CTC, so the $50 credit stays), CDCC rate crossings each way, a deduction that lands taxable income exactly on $30,000 (the 50% NJ CDCC rate, asnj_cdccreads it), an end-to-end renter household, and a separate filer who lives with the spouse and so weighs the deduction against half the credit, $25.ne_itemized_deductions.yaml: 8 cases, each hand-computed in its comments. The new or changed cases are the 2025 witness (now with wages, plusne_taxable_income), the 2024 binding cap, a tie between income and sales taxes, and three capped cases whose values change: unit test 1 goes from 35,000 to 31,000, unit test 2 from 16,000 to 15,000, and the 2023 income-above-cap case from 19,000 to 13,000. The sales-tax filer (23,000) and the uncapped income-tax filer (20,000) are unchanged. At6df1752b, 5 of the 8 fail; the tie case passes at both heads.* nj_ctc_eligiblefailed 1 (the separate filer); droppingright=Truefrom the after-deduction CDCC rate failed 1 (the $30,000 case). Against the 11 cases, dropping the halving of the credit for a cohabiting separate filer failed 1 (that filer's case). NE, against the 8 cases: treating every filer as an income-tax claimer failed 2 (sales-tax filer, tie). Capping the subtracted income taxes atsalt_deductionfailed 2 (2025 witness, 2023 above-cap case). Dropping the floor failed 1. Using>=failed the tie. The old real-estate-first allocation (6df1752b) failed 5.mainand 0 after.main, 82 had NE itemized deductions above the federal itemized total. With the fix, the deduction is at most the federal total by construction.impact: the hub will measure
axiom: TheAxiomFoundation/rulespec-us#2037 and TheAxiomFoundation/rulespec-us#2038 queued
Generated by Claude Code