Skip to content

Offset New Jersey claim of right repayments within their income category (N.J.S.A. 54A:5-2) - #10198

Merged
MaxGhenis merged 75 commits into
mainfrom
nj-claim-of-right
Nov 9, 2026
Merged

MaxGhenis merged 75 commits into
mainfrom
nj-claim-of-right

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Summary

New Jersey has no section 1341 credit. A filer who repays income taxed in an earlier year instead offsets the repayment against income of the same category in the year of repayment. PolicyEngine had no such offset, so a repayment changed nothing in New Jersey. This PR adds it.

  • nj_claim_of_right_repayment_category (person input, enum, default WAGES): the N.J.S.A. 54A:5-1 category of the repaid income: wages (a), interest (e), dividends (f), gambling winnings (g), pensions and annuities (j), alimony (n), another category the model doesn't offset (OTHER), or income New Jersey didn't tax when received (NOT_TAXED).
  • nj_claim_of_right_offset (person): the reduction in New Jersey gross income, which nj_gross_income subtracts. nj_claim_of_right_pension_offset and nj_claim_of_right_wage_offset hold its pension and wage parts.
  • nj_eligible_pension_income (the pension exclusion's base, NJ-1040 line 28a's "Line A. Amount from line 20a") nets out the pension part, and Worksheet D's $3,000 earnings test (line 4, "the amount from line 15") nets out the wage part.
  • gov.states.nj.tax.income.gross_income.claim_of_right_category_sources.* lists the income sources in each category, matching the lines of non_negative_sources.

The law

N.J.S.A. 54A:5-2, as the Legislature reprinted it in S796 of 2012, lets losses within one category offset "other sources of gross income within the same category of gross income during the taxable year". The same section bars applying a net loss in one category against another.

TAM 2011-7, Claim of Right Repayment Refunds (IRC 1341), issued January 13, 2011, says the Gross Income Tax Act "does not contain provisions similar to IRC section 1341". It adds that "any repayment or deduction may be applied against other income earned in the same category and in the same tax year as the repayment". Its example adjusts 2011 wages for wages repaid in 2011 that the filer received in 2010. A filer whose offset produces a net loss "must report zero income in that category".

The TAM also says New Jersey doesn't let a filer amend the earlier year's return to recover the tax. The 2025 NJ-1040 instructions (PDF p. 9) state the same category rule and don't mention repayments.

The statute doesn't name repayments, so the model follows the TAM, which applies the section to them.

Design notes

  • The repayer's income first, then the spouse's. A repayment offsets the repayer's own taxable income in its category first. On a joint return, whose category line combines both spouses, any excess offsets the other spouse's income in it. The return's offset in each category equals min(the head's and spouse's repayments in the category, their income in it), and no one's income in a category goes below zero. No source speaks to joint repayments, so we take the repayer first.
  • The order changes the pension exclusion. The exclusion counts only an eligible spouse's pension (2025 instructions, Line A). A 70-year-old's exclusion falls by their own pension repayment, and by a younger spouse's only for the part that exceeds the younger spouse's own pension income. If each has a $20,000 pension and the younger repays $30,000, the older spouse's pension bears $10,000.
  • The offset reaches gross income and the lines that read it. Total income (NJ-1040 line 27), the pension exclusion's income percentage, and ANCHOR's and property tax relief's gross income all see it. The pension exclusion's base (line 20a, 2025 instructions PDF p. 22) and Worksheet D's earnings test (line 15, p. 23) see its pension and wage parts. Without those two, the model would subtract $8,000 twice for a 70-year-old who repays $8,000 of a $50,000 pension.
  • Exempt interest stays out of the offset. The model caps the interest category at the taxable-interest sources: federal taxable interest less interest on U.S. obligations, which New Jersey subtracts from gross income separately (claim_of_right_category_exempt_sources). New Jersey also taxes interest on other states' municipal obligations (2025 instructions, PDF pp. 10-12), which the model's New Jersey income leaves out, so a repayment can't offset it here.
  • New Jersey applies no threshold and no federal method. The TAM and the statute have neither. Repaid income New Jersey didn't tax (unemployment compensation, Social Security) offsets nothing.
  • The category takes a leaf input. The model can't derive the kind of income repaid, a fact about the earlier year. The input defaults to wages, the category of the TAM's example. A repayment of unemployment compensation or Social Security needs NOT_TAXED, and one of another category needs OTHER.
  • Dependents file their own returns, so the offset leaves out their repayments and income. The model's nj_agi already adds every tax unit member's total income, dependents included, and this PR doesn't change that.

Illinois and Ohio (#10195), Indiana, Massachusetts and West Virginia (#10196), Hawaii (#10200) and Arkansas (#10203) use the same federal input in their own PRs.

Not modeled:

  • More than one repayment category for the same person in a year. A person's entire claim_of_right_repayment takes the single category input, so the model can't represent one person repaying both wages and pension income.
  • Interest on other states' municipal obligations, as above.
  • Offsets in the other categories (prizes and awards, estates and trusts, gains, rents, partnership and S corporation income, and the rest). Enter them as OTHER.
  • Repayments of income New Jersey taxed but federal AGI left out, such as alimony under a divorce executed after 2018 (New Jersey line 25 takes "any court-ordered alimony", 2025 instructions PDF p. 21). claim_of_right_repayment covers income included in federal AGI, so it can't carry them.
  • Repayments deducted in arriving at AGI, such as repaid business income deducted on Schedule C.

Household example (2025, single, age 40)

Household No repayment With the repayment
A wage repayment like TAM 2011-7's example: wages $50,000, repays $8,000 of wages, earlier-year federal decrease $1,760 Federal $3,871.50; NJ $1,214.75 Federal $2,111.50 (credit); NJ $772.75 ($442 less: $8,000 at 5.525%)

Tests

gov/states/nj/tax/income/adjusted_gross_income/nj_claim_of_right_offset.yaml, 17 cases, with expected values from the cited sources:

  • a wage repayment like the TAM's ($8,000 off $50,000), and a repayment above wages that reports wages as zero while interest stays;
  • a repaid pension at age 70 offsetting pensions only, with the pension exclusion then zero and New Jersey AGI $10,000;
  • repaid unemployment compensation (NOT_TAXED) and an OTHER category, each offsetting nothing;
  • a joint return where the head's $6,000 wage repayment offsets the head's $2,000 of wages and then $4,000 of the spouse's;
  • the federal credit method, and another state;
  • a 70-year-old repaying $8,000 of a $50,000 pension (line 20a $42,000, exclusion $42,000, New Jersey AGI $30,000), and a 65-year-old whose wage repayment brings line 15 to $2,000, so Worksheet D's unused exclusion applies;
  • a repayment of interest that finds only exempt Treasury interest, and an $8,000 interest repayment against $10,000 of interest, $5,000 of it Treasury interest, which offsets the $5,000 New Jersey taxes (gross income $35,000, total income $30,000);
  • a couple of 70 and 40, each with a $20,000 pension, where an $8,000 pension repayment gives New Jersey AGI of $42,000 when the younger spouse repays and $50,000 when the older one does;
  • dividends and gambling winnings against $5,000 of dividends and $4,000 of winnings, where $4,500 of dividends repaid gives a $4,500 offset and $4,500 of winnings repaid gives $4,000;
  • $2,000 of alimony repaid against $1,500 of alimony, which gives $1,500.

tests/unit/test_nj_claim_of_right_properties.py (the Rest job's remaining group) needs Python because its main check compares against a separate simulation, on a grid that crosses ages, pensions and filing status.

Invariants

The property test runs a 576-return grid: category × repayment × head wages × head pension × head age 40 or 70 × filing type. Filing types cover single returns, joint returns with a same-age spouse with wages, and joint returns with an other-age spouse with a pension.

  1. A repayment acts as less income in its category. New Jersey AGI and taxable income equal those of a simulation with no repayment and each filer's income in the repaid category lowered by the return's offset. That offset equals min(repayment, the filers' income in that category), taken from the repayer first and then the spouse. This reaches the pension exclusion, including for mixed-age couples, and Worksheet D. Both simulations pin the medical expense deduction, because lowering wages in the reference can qualify a couple over 65 for a Medicare Savings Program, which removes their Part B premiums, while the repayment doesn't.
  2. Per-spouse bound. No filer's offset goes below zero or above their own income in the repaid category.
  3. Method independence; never raises; monotone, on this grid. The grid's households have no federal child and dependent care credit. Their New Jersey income tax stays the same with the federal credit method fixed, never exceeds its no-repayment value, and never rises as the repayment grows. The offset itself doesn't read the federal method. New Jersey tax can otherwise depend on that method because Worksheet J starts from the federal child and dependent care credit as claimed (2025 instructions, PDF p. 45).
  4. Sources. In every year block, the category lists together cover non_negative_sources except line 26's other income, without overlap, and the pension category equals the pension exclusion's sources.

Reverting the pension exclusion wiring, reverting the Worksheet D wiring, dropping the category cap, or sharing the offset proportionally between spouses each fails the property test. Counting exempt interest fails YAML cases 11 and 14, and an interest category that offsets nothing fails case 14. Swapping the dividends and gambling-winnings mappings and mapping alimony to wages fails the three category cases.

test_claim_of_right_section_1341_properties.py now holds an explicit, sourced map of the states whose own relief applies under the federal credit method. Each listed state whose variable exists must lower the household's tax by more than $1, and every other state stays unchanged, apart from the three that deduct federal tax. #10195, #10196, #10200 and #10203 carry the identical file, so they merge in any order.

Cost

At an earlier head, CI run 38545538935 took 15.3 s for this property file in Rest shard-1's remaining group, including 3.24 s of fixture setup and 12.07 s of teardown charged to the last test. That group ran 2,344 tests in 20:52 wall clock with a 7.49 GB peak on the 16 GB runner. The file builds four simulations of 576 returns and frees them at teardown.

Microsimulation impact

We estimate no change in 2025. No record in the default dataset carries claim_of_right_repayment, and the offset needs a repayment, so no record changes in nj_gross_income, nj_agi, state_income_tax, income_tax or household_net_income.

Axiom

axiom: TheAxiomFoundation/rulespec-us#1795 queued

rulespec-us has no us-nj/statutes/54a:5-2.yaml module, and us-nj/policies/income_tax/2026_resident_ordinary_core.yaml cites 54A:5-2 for the property-disposition (c) and rents (d) categories only. The current rulespec-us corpus pin reads us-nj/statute/54a:5-1 and us-nj/statute/54a:5-2. TAM 2011-7 needs an ingest and release inclusion, and the existing 2025 NJ-1040 instructions row needs release inclusion. TheAxiomFoundation/rulespec-us#1635 shares the destination and covers category (h)'s estate and trust loss isolation.

impact: none in 2025; no record in the default dataset carries claim_of_right_repayment

🤖 Generated with Claude Code

MaxGhenis and others added 16 commits October 9, 2026 08:50
G.S. 105-153.5(a)(2)d, added by S.L. 2016-5 for 2014 and later, lets North
Carolina itemizers deduct repayments of income included in AGI in an earlier
year under a claim of right (Form D-400 Schedule A line 8). Repayments above
$3,000 are deductible in full; smaller ones are reduced by 2% of federal AGI
less other miscellaneous itemized deductions, which the 2016 and 2025 NCDOR
worksheets both reproduce. PE had no input for these repayments, so it adds
claim_of_right_repayment (person level; only the head's and spouse's count)
and moves North Carolina's uncapped itemized items into a parameter list.

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

Review r1 (subfleet 20261009-090558-nc-itemized-review):
- S.L. 2026-31 section 1.8 rewrites G.S. 105-153.5(a)(2)d for taxable years
  beginning on or after January 1, 2026: the repaid amount must have been
  included in AGI "as modified in G.S. 105-153.5 and G.S. 105-153.6" in the
  earlier year. New person input
  nc_claim_of_right_repayment_excluded_from_income (the part NC deducted when
  received, such as repaid Social Security) and a dated parameter apply it.
- Count only the head's and spouse's other miscellaneous expenses against
  the pre-2018 floor; a dependent's are on the dependent's return.
- The property grid now varies property taxes (so the $20,000 cap binds) and
  adds a 2026 grid for the excluded part.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…h Carolina's 1341(a)(5) bar and G.S. 105-266.2 payment (WIP)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…es that exclude them (AZ, KS, WI, MO, OR, VA); property tests

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…to keep it at two seconds

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…urn-level prior-year inputs, California and Montana flows

- The branches that fix the claim of right method start from inputs only, and
  the itemization branches settle the method in the parent first, so a tax
  liability calculated before the method is known cannot leak into them.
- Ties are compared to the cent, so a one-cent difference picks the credit.
- The prior-year federal decrease and NC increase are return-level inputs
  defined on chapter 1 and Article 4 tax.
- California leaves out the federal deduction (Schedule CA Part II line 16);
  Montana deducts it through 2023 (Form 2 itemized line 18).
- Section 67(g) is now 67(h); document the Arizona and NC coverage limits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review r2 found that with itemization branching off, tax_liability_if_not_itemizing
used the parent's method when calculated first but chose its own after
income_tax. The itemizing branches now take the method as an input. A branch
keeps its parent's cache when an override equals the value the parent already
holds, so ordinary simulations still share it. Adds the review's Texas
household as an order test under both itemization settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… branches only when someone qualifies

Review r3 showed that keeping a parent's cache when an override equals the
parent's current value can reuse tax calculated before another input
changed. Branches again drop inherited values whenever the parent knows an
overridden variable. The itemizing branches add the claim of right method as
an override only when some tax unit repays more than $3,000, so simulations
without a qualifying repayment keep sharing the parent's cache. Adds the
review's stale-parent sequence as a test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…th use tax

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ate property test

Under the federal credit method, section 1341(b)(3) keeps the repayment out of
every state that only follows the federal deduction, so their tax must not
change. States with their own claim of right relief may lower tax under either
method. The test now reads which states have their own rule from the model's
variable names (<state>_claim_of_right_...), so a state PR adds its variables
without editing this list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
N.J.S.A. 54A:5-2 lets a loss reduce only income of its own category, and TAM
2011-7 applies that to claim of right repayments: New Jersey has no section
1341 credit, and "any repayment ... may be applied against other income earned
in the same category and in the same tax year", reporting zero if the offset
leaves the category negative.

A new person-level input, nj_claim_of_right_repayment_category (wages by
default), says which category the repaid income was. The return's offset in
each category is the smaller of the filers' repayments and their income in it,
borne by each spouse in proportion to their own income in the category. It
comes off New Jersey gross income, so total income, ANCHOR and property tax
relief income all see it. YAML cases include the TAM's wage example; property
tests check the cap, the per-spouse bound, federal-method independence and
that tax never rises.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits October 13, 2026 01:47
…eral credit

Reviews of #10195, #10196 and #10198 found that reading own-rule states from
variable names weakened the cross-state test: North Carolina and Montana lost
their exact check, nothing asserted that a state's own relief actually lowered
its tax, and any future <state>_claim_of_right_ input would exempt a state.

Now an explicit, sourced map names each state whose relief applies under the
federal credit method and the variable that carries it. Under that method each
listed state whose variable is in the model must lower the household's tax by
more than $1, and every other state's tax must not change. The same commit is
on every state branch, so they still merge in any order.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd Worksheet D

Review of #10198 found that a repaid pension still counted in the pension
exclusion's base, NJ-1040 line 28a's Line A ("Amount from line 20a"), and
that Worksheet D's $3,000 test, line 4 ("the amount from line 15"), ignored a
wage repayment. Both lines are net of the offset under N.J.S.A. 54A:5-2 and
TAM 2011-7.

- The per-category computation moves to nj_claim_of_right_category_offset; new
  nj_claim_of_right_pension_offset and nj_claim_of_right_wage_offset carry
  the two categories those lines read.
- nj_eligible_pension_income nets out the pension offset; Worksheet D's
  earnings test nets out the wage offset.
- A new OTHER category is not offset, so a repayment of prizes, estate
  income or another unmodeled category need not be mislabeled as wages.
- The property test is now a differential: on a grid of single and joint
  returns aged 40 and 70, a repayment gives the same New Jersey AGI and
  taxable income as a simulation with no repayment and that much less income
  in its category. Reverting either fix fails it. It also checks that each
  category's sources are New Jersey gross income sources.
- YAML: Case 3 asserts New Jersey AGI; new cases for a pension repayment at
  age 70, Worksheet D after a wage repayment, and the OTHER category.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 13, 2026
…eral credit

Reviews of #10195, #10196 and #10198 found that reading own-rule states from
variable names weakened the cross-state test: North Carolina and Montana lost
their exact check, nothing asserted that a state's own relief actually lowered
its tax, and any future <state>_claim_of_right_ input would exempt a state.

Now an explicit, sourced map names each state whose relief applies under the
federal credit method and the variable that carries it. Under that method each
listed state whose variable is in the model must lower the household's tax by
more than $1, and every other state's tax must not change. The same commit is
on every state branch, so they still merge in any order.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 13, 2026
…eral credit

Reviews of #10195, #10196 and #10198 found that reading own-rule states from
variable names weakened the cross-state test: North Carolina and Montana lost
their exact check, nothing asserted that a state's own relief actually lowered
its tax, and any future <state>_claim_of_right_ input would exempt a state.

Now an explicit, sourced map names each state whose relief applies under the
federal credit method and the variable that carries it. Under that method each
listed state whose variable is in the model must lower the household's tax by
more than $1, and every other state's tax must not change. The same commit is
on every state branch, so they still merge in any order.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 13, 2026
…eral credit

Reviews of #10195, #10196 and #10198 found that reading own-rule states from
variable names weakened the cross-state test: North Carolina and Montana lost
their exact check, nothing asserted that a state's own relief actually lowered
its tax, and any future <state>_claim_of_right_ input would exempt a state.

Now an explicit, sourced map names each state whose relief applies under the
federal credit method and the variable that carries it. Under that method each
listed state whose variable is in the model must lower the household's tax by
more than $1, and every other state's tax must not change. The same commit is
on every state branch, so they still merge in any order.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits October 13, 2026 02:31
- A repayment now offsets the repayer's own income in its category first,
  and only the excess offsets the other spouse's (the joint return's category
  line combines both). Proportional sharing let a younger spouse's pension
  repayment cut the older spouse's pension exclusion. New YAML cases 12 and
  13 give a mixed-age couple New Jersey AGI of $42,000 when the younger spouse
  repays and $50,000 when the older one does; case 5 now splits $2,000 and
  $4,000.
- The interest category's cap leaves out interest on U.S. obligations, which
  New Jersey subtracts from gross income separately, so a repayment cannot
  offset exempt Treasury interest and reach wages (case 11).
- The property grid adds spouses of the other age with their own pensions;
  its reference takes the repayer's income first. The category lists are
  checked for completeness against non_negative_sources and the pension
  exclusion's sources in every year block. Restoring proportional sharing
  fails the grid; counting exempt interest fails case 11.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits October 13, 2026 07:32
Resolves the add/add conflicts with #10028's squash (557b539) by
keeping this branch's 26 U.S.C. 1341(a)(5) bar on the North Carolina
deduction, its added NC cases and the method fixture in the NC property
grid, and keeps both sides' Arizona itemized deduction cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude added 14 commits November 3, 2026 20:53
… 2025

The 2024 Form 2 Worksheet A reduces the federal deduction by the capped
state-income-tax addback before line 3's zero floor. The 2025 form stops
adjusting line 2 and reports the addback on Schedule I line 4, a Montana
addition after the floor, as MCA 15-30-2120(1) treats the (2)(j) item
alongside the other additions. A new boolean parameter is true in 2024 and
false from 2025 (2026 follows the 2025 form by convention), and both
mt_taxable_income_joint and mt_federal_deductions read it.

Adds 2025 and 2026 YAML witnesses (the review's AGI 10,000 / itemized
20,000 household gives 4,250 in 2025), keeps the 2024 pre-floor witnesses,
limits the property test to 2024, and points the misc_deductions comment at
mt_taxable_income_joint, which is what reads the federal base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ala. Admin. Code r. 810-3-15-.20(1)(d)2 subtracts all credits shown as
payments on the federal return, and its current text dates from a 2010
amendment, so it governs every year the parameter covers, not only 2021 on.
The legacy pre-2021 list (total AOC, no section 1341 credit or net PTC) is
dropped, and the 2020 case that pinned it now expects
5,000 - 1,000 - 1,500 - 1,000 - 750 = 750.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main's backlog still described the code before this PR: AL, MO and WI as
following the worksheets and OR as unknown. The head follows the statute or
regulation in all four, so set pe_us.follows to statute and state to ruled,
replace the notes that said a model change was still needed, start AL's
years in 2015 (the corrected credit list now applies from the parameter's
first year), and cite ORS 316.685(1)(b), the EITC-only disregard the OR
code follows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 2017 Montana Form 2 with Legal References now 404s at its original
address; cite the Wayback Machine copy of 2024-01-07, whose PDF p. 6
Schedule III lines 25, 26 and 28 the reviewer confirmed. Drop the "2023 HB
109" reference: its URL mixes HB0199 and HB0109, returns 404, and what it
was meant to support could not be confirmed; MCA 15-30-2120 is already
cited for the deduction.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both cases set claim_of_right_credit as an input that neither formula reads,
so they only checked that income_tax passes through. They now use the
federal integration case 4 household (2025, $40,000 wages, $10,000
repayment, $2,200 prior-year decrease), where the credit method wins and
flows through income_tax: 2,671.50 - 2,200 = 471.50. Missouri deducts
25% x 471.50 = 117.875 and Oregon subtracts 471.50. Adding the credit back
in either formula fails its case.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main's #10186 made the 2020 itemization choice compare two branches with
different AGI (the 2020 above-the-line charitable deduction), and no
invariant in this file ran on that path. Add 2020 to YEARS (last, so the
tests that read YEARS[0] and YEARS[1] keep 2025 and 2026) and run the
calculation-order test in 2020 as well. Every existing assertion is kept;
all 58 tests pass. Locally the file went from 182 s to 220 s and its peak
RSS from 3.2 GB to 3.5 GB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The claim-of-right fragment described the Montana work as repayment
treatment, but from 2024 every Montana filer's taxable income now starts
from the federal base (all six mt_taxable_income_joint cases changed), and
every Alabama AOC claimant now subtracts only the refundable part.

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

The old 2025 case supplied a positive QBI deduction at a binding floor, which
the model can't produce before 2026. From 2026 the 199A(i) $400 minimum can
exceed taxable income, so a derived household now pins the order: MCA
15-30-2101(22) and 15-30-2120(2)(i) add the deduction back to federal
taxable income before Form 2's line 7 floor, giving 0, not 400.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LwQq6JfLQkf8A2aNSw51a4
Once #10093 nets the premium tax credit in Oregon's subtraction, this
household's modeled credit would zero the subtraction. Pinning it keeps the
case isolating the section 1341 credit at 471.50.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LwQq6JfLQkf8A2aNSw51a4
YEARS is (2024,), so the Schedule 1-A draw and the year >= 2025 branches
never ran; YAML cases cover 2025 and 2026.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LwQq6JfLQkf8A2aNSw51a4
mt_taxable_income_joint computes its own deduction term from
taxable_income_deductions, which also holds the QBI deduction and the
Schedule 1-A deductions, so the two differ (e.g. 15,750 against 21,750 in
the 2025 tip case) and the formula can't read this variable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LwQq6JfLQkf8A2aNSw51a4
The code applies the regulation's list from 2015, but worksheets before 2018
went unchecked, so the item can't claim a conflict for 2015-2017.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LwQq6JfLQkf8A2aNSw51a4
The comment argued from federal taxable income having no floor, which
would also remove the line 3 floor the code keeps for Montana's other
additions. The order follows the form: line 2 leaves the QBI deduction
out, and line 3 floors line 1 minus line 2 at zero.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LwQq6K4hbmpvP2YevFmELw
MaxGhenis and others added 6 commits November 6, 2026 14:16
Main removed gov.household.household_refundable_credits and
gov.household.household_tax_before_refundable_credits, which no formula
read after it dropped the abolish-tax structural reforms. This branch had
added North Carolina to both. The merge keeps the removal; this branch's
North Carolina entries stay in gov.household.household_refundable_state_credits
and the gov.states.household lists.

Main's new North Carolina use tax case under the payroll tax repeal enters
nc_income_tax, which this branch's state list no longer reads: the list now
counts North Carolina tax before refundable credits. The case now enters
nc_income_tax_before_refundable_credits, and its totals stay at 1,020.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#10094 also adds an entry to
source_conflicts/candidates.yaml. Git merges the two cleanly, and the
merged register keeps unique ids.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The shared property test keeps main's two-state deduction list and its
Alabama, Missouri and Oregon case, and this branch's relief-state map.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main carries the federal section 1341 work, so its changelog fragments
leave this branch. The Oregon files and the candidate list follow main.

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

codecov Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (aae7f98) to head (9593b23).
⚠️ Report is 73 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main    #10198    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            1         7     +6     
  Lines           37       153   +116     
  Branches         0         2     +2     
==========================================
+ Hits            37       153   +116     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

The backlog item now gives the code and the reading this PR takes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis dismissed DTrim99’s stale review November 9, 2026 08:58

David, 9593b23 resolves each item:

  • Should 1: the description's Axiom section carries the queued line for rulespec-us#1795.
  • Should 2: cases 15–17 of nj_claim_of_right_offset.yaml test dividends, gambling winnings and alimony with your amounts, and swapping those mappings fails them.
  • Suggestion 1: the Cost section reports the CI figures, and the third invariant limits its tax claims to a grid with no federal child and dependent care credit.
  • Suggestion 2: the six category lists link to page 2 of the form, and nj_eligible_pension_income and nj_other_retirement_income_exclusion link to pages 22 and 23 of the instructions.
  • Suggestion 3: nj_claim_of_right_repayment_category documents that a person's whole repayment takes one category, and the description lists that limit under Not modeled.
  • The California item from #10038: main carries that fix, and this branch includes it.
@MaxGhenis
MaxGhenis merged commit 94cac9f into main Nov 9, 2026
65 of 66 checks passed
@MaxGhenis
MaxGhenis deleted the nj-claim-of-right branch November 9, 2026 09:46
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Merging at 9593b23716 as an admin squash with --match-head-commit, past the required-review gate.

  • Checks: gh pr checks passes all 38 checks at this head, including pull request run 42582295226 (36 of 36 jobs). GitHub reports the PR MERGEABLE, and no change request stands: we dismissed DTrim99's review 5525742096 on 2026-11-09 with a mapping of each point to its fix.
  • An independent review approved the code at 9412265d2b, after the merges of Model the claim of right repayment deduction and credit (26 U.S.C. 1341) and North Carolina's rules that depend on it #10038 and main.
  • An independent delta review approved 9593b23716. The commits after 9412265d2b change source_conflicts/candidates.yaml, and no formula or expected value moved.
  • On a tree that composes all five claim-of-right PRs on main at fc521b4f6c, the source-conflict guard (103 of 103) and the shared section 1341 property file (58 of 58) pass. So do the New Jersey cases (17 of 17) and property file (4 of 4).
  • The review ran each mutation the description lists, and each household figure in the description matches a simulation to the cent.

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.

3 participants