Skip to content

Fix the 2020 unemployment compensation exclusion: cutoff test, per-spouse cap, dependents - #10175

Open
MaxGhenis wants to merge 10 commits into
mainfrom
fix-uc-exclusion-2020
Open

MaxGhenis wants to merge 10 commits into
mainfrom
fix-uc-exclusion-2020

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Fix the 2020 unemployment compensation exclusion, including the strict income cutoff, each spouse's cap and dependents' separate returns. Also net dependents' estate and trust losses and apply their own excess business loss limit.

Law and calculation

Under IRC 85(c), taxpayers with exclusion AGI below $150,000 exclude up to $10,200 of their own 2020 compensation. Each spouse receives a separate cap on a joint return. The IRS leaves compensation out when calculating that AGI and applies a strict cutoff in its 2020 exclusion worksheet, lines 1–9.

For example, spouses who receive $20,000 and $5,000 exclude $10,200 and $5,000 when eligible, leaving $9,800 taxable. A taxpayer whose exclusion AGI reaches $150,000 receives no exclusion.

Changes

  • Calculate taxable_unemployment_compensation for each person from total_unemployment_compensation. Compare the filers' taxable_uc_agi directly with the cutoff and test dependents against their own dependent_taxable_uc_agi.
  • Sum only nondependents in tax_unit_taxable_unemployment_compensation, matching the filers' federal gross income. Indiana's unemployment deduction and the TAXSIM output receive that return total.
  • Preserve modeled state unemployment insurance and reported compensation overrides from main. Leave taxable compensation at zero for a net repayment, and preserve the negative balance in tax_exempt_unemployment_compensation.
  • Include estate and trust losses in the dependent income helper and limit business losses to business income plus the dependent's single or separate IRC 461(l) threshold. The helper also feeds dependent Social Security MAGI and IRA deductions.
  • Pin both terms identified in review with YAML cases: positive business income within the dependent loss limit, and a dependent repayment that must not raise exclusion AGI.
  • Add the promised 2020 California and Rhode Island cases for the boundary between returns. Keep a dependent's own taxable or excluded compensation off the filers' state adjustment.
  • Remove the property assertion that repeats the exclusion formula. Retain checks for bounds, the AGI differential, dependents' separate returns, spouse symmetry and the exclusion ending after 2020.

Outside 2020, the exclusion amount remains zero. We still exclude dependents from the tax unit total and apply their own business loss limits.

Consumers and related work

As checked on 2026-11-13, #10187 merged on 2026-10-18, #10191 merged on 2026-11-10, and #10331 merged on 2026-11-09. We merged their California, Rhode Island, Wisconsin and Montana changes from main.

We now count gross compensation in South Carolina TANF through total_unemployment_compensation, so we removed its outdated grid and proposed follow-up.

We still count a dependent's full compensation in the qualifying relative gross income test. Directly substituting taxable compensation would create a cycle through filing status and head of household eligibility. The hub will review follow-up drafts for that calculation and § 461(l) parity.

Validation

Final head: d3f91be.

Local checks passed both property tests and all nine dependent Social Security YAML cases. The dependent unemployment API run timed out before assertions. Its isolated YAML retry remains incomplete.

We did not complete unmodified local California or Rhode Island file runs before cleanup. CI passed both files. The required local file matrix remains incomplete.

The final local source-conflict run reached its 180-second cap after two completed cases, without a file result. CI passed all 103 guard cases.

Each of four semantic mutants failed its new YAML regression case: business-income allowance, repayment floor, California return boundary and Rhode Island return boundary.

CI passed all 411 cases across the 28 requested files in Pull request run 43471044578, with no failures, errors or skips. All 36 jobs succeeded, with no whole jobs skipped or cancelled.

GitHub skipped 25 conditional steps. Quick Feedback deferred nine changed test files because its limit allows eight. Later CI jobs ran their cases in shards and batches. We verified case counts against JUnit records and exact-path test logs.

Impact

impact: pending a comparison at the final head.

axiom: TheAxiomFoundation/rulespec-us#1719 queued. us:statutes/26/85 already encodes § 85(c)(1) correctly: per-recipient $10,200 cap, joint return summed per spouse, strict <, with tests temporary_2020_exclusion_applies_per_spouse_on_joint_return and temporary_2020_exclusion_denied_at_threshold. But the § 85(c)(2) AGI and the recipient relation are free inputs. #1719 queues encoding both, with companion tests from the same worksheet cases.

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits October 12, 2026 16:36
- Compare taxable_uc_agi, which already leaves out unemployment
  compensation, with the $150,000 cutoff instead of subtracting the
  compensation from it a second time.
- Exclude up to $10,200 of each person's own compensation, so each spouse
  on a joint return excludes up to $10,200 (worksheet lines 8 and 9).
- Keep a dependent's compensation on the dependent's own return: the tax
  unit's taxable compensation sums only members who are not dependents,
  and a dependent's exclusion is tested on a new dependent_taxable_uc_agi.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hypothesis batches of single, joint, joint-with-dependent and single-parent
tax units near the $150,000 cutoff check: per-person bounds, the cutoff on
the filers' and each dependent's own return, a differential between
taxable_uc_agi and AGI less the taxable compensation, that dependents'
compensation never moves the filers' return, and spouse symmetry; and that
nothing is excluded in 2021.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tax unit's taxable unemployment compensation now sums only the head
and spouse, in every year, so Indiana's deduction (IC 6-3-2-10) no longer
deducts a dependent's compensation that is not in the filers' federal AGI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 12, 2026 21:03
MaxGhenis added a commit that referenced this pull request Oct 12, 2026
…ment_compensation_addback; supply Case 7's taxable allocation as an input

Both review rounds noted that the helper adds more than nontaxable compensation
for a person recorded as both a dependent and the head. Case 7 no longer pins
the federal exclusion's allocation, which #10175 changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 3 commits October 12, 2026 20:43
…ts' estate losses

Address the independent review of #10175:
- California's Schedule CA subtraction and Wisconsin's unemployment
  compensation subtraction now read tax_unit_taxable_unemployment_compensation,
  and Rhode Island adds back the new tax_unit_tax_exempt_unemployment_compensation,
  so a dependent's own-return amount no longer lands on the filers' return.
- Add estate_income to the dependent helper's loss sources: limited_business_loss
  deducts estate and trust losses for filers, and the helper's own comment says
  it lists the sources loss_ald deducts. This reaches the dependent's IRC 86 and
  85(c) modified AGIs and the dependent's IRA deduction.
- Fix two form-line citations (Form 1040 line 5b, Schedule 1 line 17) and state
  that the differential invariant covers compensation that is not negative.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#10187 fixes the same three state lines
(ca_agi_subtractions, ri_additions, wi_unemployment_compensation_subtraction)
more broadly and has its own review, impact run and Axiom issues. Restore them
to main here and drop tax_unit_tax_exempt_unemployment_compensation, which only
Rhode Island used. #10175 should land after #10187, so the dependent routing
never meets the old pooled state lines.

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

Address round 2 of the independent review of #10175:
- dependent_income_and_deductions now limits a dependent's business losses
  (self-employment, farm, rental, partnership/S corporation and, since the last
  commit, estate and trust) to business income plus the IRC 461(l) threshold,
  as limited_business_loss does for the filers. The threshold is infinite while
  the limit is suspended (2018-2020), so the 2020 exclusion test keeps the whole
  loss.
- taxable_unemployment_compensation is floored at zero. irs_gross_income counts
  positive amounts only, so a net repayment never reduced gross income; a
  negative taxable amount let CA, PA and MA subtract it anyway. The exempt part
  carries the repayment, as before this PR, which Wisconsin's homestead income
  reads.
- The property test now draws net repayments, and the differential invariant
  holds for every input.

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

Copy link
Copy Markdown
Contributor Author

Hand-off to the US + core hub. Session bebaaf35, head 9fde2d1ec4.

MaxGhenis added a commit that referenced this pull request Oct 13, 2026
… in Montana's elderly homeowner/renter credit income (#10163)

* Count SSI, TANF and workers' compensation in Montana's elderly credit income

MCA 15-30-2337(9)(a) counts all nontaxable income, including (vi) cash
public assistance and relief. Schedule 2EC line 16 (2024, 2025) names SSI
and workers' compensation, and the 2014-2023 instructions list SSI
payments and workers' compensation as disability benefits. Add ssi,
tanf_person (the SPM unit's TANF per capita, so the household sum counts
it once) and workers_compensation to every period of the gross income
sources, with worked Schedule 2EC / Form 2EC cases for 2016-2025.

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

* Add property tests for government assistance in Montana's elderly credit

For a claimant, another adult and a child in four arrangements (one return
or two, one SPM unit or two, and more assistance), gross household income
adds every member's SSI and workers' compensation and the TANF once; the
credit matches an independent reading of Schedule 2EC lines 18 to 30, does
not depend on the arrangement, stays within the cap and never rises with
more assistance.

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

* Format the Montana government assistance property tests

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

* Pin SSI to zero in Montana elderly credit cases that test other income

Gross household income now counts SSI, and the model computes SSI for a
claimant aged 65 or older with little income (take-up defaults to true).
Three gross household income cases and three property-test builders are
about other items, so they now input no SSI; SSI has its own cases in the
government assistance tests.

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

* Count guaranteed income payments; move the cases to variable-named files

Review follow-ups: gi_cash_assistance is outside federal AGI and
15-30-2337(9)(a) counts all nontaxable income (a government-funded pilot
is also "any other government assistance" on Schedule 2EC line 16), so it
joins every period of the sources. The worked cases move into
mt_elderly_homeowner_or_renter_credit.yaml (and the SNAP guard into the gross
household income file), with a guaranteed income case, the 2016 worksheet
total corrected to line 10 and the references consolidated to one per
document, with the 2009 MCA text for the 2009 period.

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

* Count disability benefits and unemployment compensation outside federal AGI in Montana's elderly credit income (WIP)

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

* Test the 2020 cutoff above the band the federal test double subtracts; add changelog

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

* Add a grid invariant test: disability benefits and unemployment compensation count once in every arrangement and year

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

* Pin SSI in the one-claimant property test; format reference titles

#9900's one-claimant property test (now on main) builds claimants aged 65
or older with little income, for whom the model computes SSI, which gross
household income now counts; its reference leaves SSI out, so the builder
inputs none. Reference titles follow the repo format: no page in a
single-page title, and quoted titles ending in "#page N-M" for several.

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

* Name line 5 for disability pensions, describe the add-back's role edge, and test each list period's wiring

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

* Rename the add-back to mt_elderly_homeowner_or_renter_credit_unemployment_compensation_addback; supply Case 7's taxable allocation as an input

Both review rounds noted that the helper adds more than nontaxable compensation
for a person recorded as both a dependent and the head. Case 7 no longer pins
the federal exclusion's allocation, which #10175 changes.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@DTrim99

DTrim99 commented Nov 5, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Fix the 2020 unemployment compensation exclusion: cutoff test, per-spouse cap, dependents

Summary

I checked the law before reading the code.

The statute and form.

  • 26 U.S.C. 85(c)(1), added by ARPA § 9042: "if the adjusted gross income of the taxpayer for such taxable year is less than $150,000, the gross income of such taxpayer shall not include so much of the unemployment compensation received by such taxpayer (or, in the case of a joint return, received by each spouse) as does not exceed $10,200."
  • § 85(c)(2): that AGI is figured "(A) after application of sections 86, 135, 137, 219, 221, 222, and 469, and (B) without regard to this section."
  • Conforming amendments. Pub. L. 117-2 also inserted "85(c)," into § 86(b)(2)(A) and § 219(g)(3)(A)(ii) (Cornell LII amendment notes). Taxable Social Security and the IRA limit are therefore figured with all of the compensation.
  • The worksheet. The 2020 Instructions for Form 1040 (Rev. 4-2021) implement this in the Unemployment Compensation Exclusion Worksheet, file page 88:
    • line 2: "Don't include any amount of unemployment compensation from Schedule 1, line 7";
    • line 6: "This is your modified adjusted gross income";
    • line 7: "Is the amount on line 6 $150,000 or more? The $150,000 threshold applies to all filing statuses ... Yes. Stop.";
    • lines 8 and 9: the compensation paid to you and, if married filing jointly, to your spouse, "Don't enter more than $10,200" on each line.
  • The joint example. File page 87 gives it: $20,000 and $5,000 of compensation, $15,200 excluded.

The PR matches the law on all three fixes:

  • the cutoff AGI leaves out the compensation exactly once, and the test is a strict "<" at $150,000 for every filing status;
  • each spouse's cap is their own compensation up to $10,200;
  • a dependent, who files their own return, is tested on their own § 85(c)(2) AGI and excludes their own compensation there, outside the filers' return.

Code and tests.

  • The person-level formula is vectorized and the entities and periods are right.
  • I worked 25 expectations by hand.
  • On a tree merged with today's main (479 commits ahead of the merge base), the PR's YAML files, its invariants module and the main-side guards it could trip all pass. So do the main-side tests that read the changed variables.

Open items.

  • One should: two new terms survive deletion.
  • Four suggestions.

Critical

None.

Should address

S1. Two new terms are unpinned: deleting either fails no test.

(a) The business income term in the dependent's IRC 461(l) limit.

  • Where: dependent_taxable_ss_magi.py, dependent_income_and_deductions:
    income += business_income - min_(business_loss, business_income + threshold)
  • The law: § 461(l)(3)(A) allows business deductions up to "(I) the aggregate gross income or gain of such taxpayer for the taxable year which is attributable to such trades or businesses, plus (II) $250,000".
  • Why no test catches it: the only test where the limit binds is the 2025 $700,000 estate loss case, and that dependent has no business income. The 2020 case (dependent_taxable_uc_agi.yaml Case 4) has an infinite threshold. Deleting business_income + would cap the loss at the threshold alone, and every test would still pass.
  • Fix: add a 2025 case to dependent_taxable_ss_magi.yaml.
    • Inputs: a dependent with dividend_income 400,000, rental_income 100,000 and estate_income -500,000.
    • Arithmetic: the allowed loss is min(500,000, 100,000 + 313,000) = 413,000, so modified AGI is 400,000 + 100,000 - 413,000 = 87,000.
    • Checks: I confirmed 87,000 on the merged tree. Without the term the result is 187,000.

(b) The floor on the compensation removed in dependent_taxable_uc_agi.

  • Where: dependent_taxable_uc_agi.py:
    income -= max_(0, person("total_unemployment_compensation", period))
  • Why the floor matters: the shared helper adds only positive compensation. The floor keeps the subtraction consistent with that, so a net repayment never raises worksheet line 6.
  • Why no test catches it:
    • No YAML case gives a dependent a net repayment.
    • The Hypothesis invariant 2 uses dependent_taxable_uc_agi only to decide an exclusion whose cap is 0 when compensation is negative, so it can't see the difference.
  • Fix: add a 2020 case to dependent_taxable_uc_agi.yaml.
    • Inputs: a dependent student with employment_income 12,000 and unemployment_compensation -500.
    • Expected: dependent_taxable_uc_agi 12,000, taxable_unemployment_compensation 0, tax_exempt_unemployment_compensation -500.
    • Checks: I confirmed all three on the merged tree. Without the floor, line 6 is 12,500.

Suggestions

G1. Extend the axiom line to the dependent-loss change.

  • The gap: the line covers § 85 only. The PR also changes the dependent's own-return AGI: the § 461(l) limit and netting estate or trust losses. That AGI feeds § 86(b)(2) MAGI, dependent_traditional_ira_deduction and the new § 85(c)(2) AGI, and the changelog lists the estate-loss change as a fix.
  • rulespec-us coverage: us/statutes/26 has 62 and 86 modules but no § 461 module.
  • Fix: say how parity is handled for that part, either a queued issue or a note in NYC School Tax Credit Fixed Amount #1719.

G2. Refresh the PR body before squash. The squash commit will carry it.

G3. Follow-up issue: dependent_gross_income in 2020.

  • The issue: it counts a dependent's full compensation for the § 152(d)(1)(B) gross income test, through the override in DEPENDENT_GROSS_INCOME_SOURCE_OVERRIDES. Yet § 85(c)(1) says "the gross income of such taxpayer shall not include" the excluded part.
  • Why it isn't in scope:
    • It predates this PR and is outside the diff.
    • A direct fix would cycle through is_tax_unit_dependent.
  • Why file it now: this PR computes each dependent's own exclusion, so the gap is easier to close.

G4. Invariant 2 restates the formula.

  • The issue: in test_unemployment_compensation_exclusion_invariants.py, invariant 2 is np.maximum(0, received - under * cap). CLAUDE.md asks not to test a formula against itself.
  • What earns the module its place: invariants 3 to 5 (the AGI differential, the return boundary and spouse symmetry) are independent checks.
  • Options: drop invariant 2, or derive under independently.
  • Cost: the module is cheap. At the head, Rest CI timed it at 0.49 s and 0.19 s per call, and it took 9.6 s locally.

Verified correct

Law and form.

  • § 85(c)(1)-(2) text, checked on Cornell LII.
  • Pub. L. 117-2 inserted 85(c) into § 86(b)(2)(A) and § 219(g)(3)(A)(ii).
  • Worksheet lines 1-11, file page 88.
  • The file page 87 note: the joint example, and the caution that taxable Social Security, the IRA, student loan interest and tuition deductions use the full compensation.
  • Social Security Benefits Worksheet line 3 (file page 31) includes Schedule 1 line 7 in full.
  • The PDF is the Rev. 4-2021 revision.

Code.

  • taxable_unemployment_compensation:
    • each person's own exclusion is eligible * min(max(0, received), 10_200);
    • filers are tested on taxable_uc_agi < cutoff[filing_status], a dependent on dependent_taxable_uc_agi < cutoff[SINGLE or SEPARATE];
    • the result is floored at 0.
  • Every cutoff is $150,000 in 2020. All five filing statuses are 150,000 for 2020 and 0 otherwise, and the amount is 0 outside 2020.
  • Non-dependents are the head and spouse only. is_tax_unit_dependent is ~head & ~spouse, so sum_among_non_dependents matches irs_gross_income.
  • The old double subtraction is gone. taxable_uc_agi already drops taxable_unemployment_compensation, and taxable_ss_magi uses total_unemployment_compensation, so Social Security is figured with all of the compensation, with no cycle.
  • The dependent override counts full compensation. DEPENDENT_GROSS_INCOME_SOURCE_OVERRIDES maps taxable compensation to total_unemployment_compensation, so the dependent's income includes it in full before dependent_taxable_uc_agi removes it once.
  • The new 461(l) helper keeps 2018-2020 results. It mirrors limited_business_loss, and with the infinite 2018-2020 threshold it reduces to the old netting.

Hand checks (each person's own exclusion = min(own compensation, 10,200) if their return's line 6 < 150,000):

  1. taxable_unemployment_compensation Case 4. Line 6 = 150,000 pension. Not under 150,000, so taxable 8,000 and AGI 158,000.
  2. Case 5. Line 6 = 149,999, so 8,000 is excluded; taxable 0, AGI 149,999.
  3. Case 6 (the IRS joint example). Line 6 = 60,000. The head excludes min(20,000, 10,200) = 10,200, so 9,800 is taxable; the spouse excludes all 5,000. Total 9,800; AGI 60,000 + 9,800 = 69,800.
  4. Case 7. Each spouse has 20,000 - 10,200 = 9,800 taxable. Total 19,600 = AGI.
  5. Case 8. The couple's line 6 = 30,000, so the spouse's 8,000 is excluded. The dependent's own line 6 = 4,000 - 4,000 = 0, so their 4,000 is excluded. The tax unit has 0 taxable; AGI 30,000.
  6. Case 9. The dependent's taxable amount is 15,000 - 10,200 = 4,800, all on their own return. The tax unit has 0.
  7. Case 10. The dependent's line 6 = 150,000 + 5,000 - 5,000 = 150,000, so no exclusion and 5,000 taxable. The head's line 6 = 30,000, so 0 taxable.
  8. Case 11. SS worksheet: line 3 = 140,000 + 10,000 = 150,000; plus half of benefits gives 160,000. Taxable benefits = min(0.85 × 20,000 = 17,000, 0.85 × (160,000 - 34,000) + 4,500) = 17,000. Line 6 = 157,000, so no exclusion; AGI 167,000.
  9. Case 12. Line 6 = 150,400 - 500 = 149,900, so 5,000 is excluded; AGI 149,900.
  10. Cases 14 and 15. For -500 of compensation: excluded = min(max(0, -500), 10,200) = 0; taxable = max(0, -500) = 0; exempt = -500 - 0 = -500.
  11. tax_unit_taxable_unemployment_compensation Case 4. Head 15,000 - 10,200 = 4,800; spouse 12,000 - 10,200 = 1,800; child 11,000 - 10,200 = 800, on the child's own return. Return total 6,600; AGI 40,000 + 6,600 = 46,600.
  12. dependent_taxable_uc_agi Case 2. Provisional income = 30,000 + 6,000 + 5,000 = 41,000. Taxable benefits = min(8,500, 0.85 × 7,000 + 4,500 = 10,450) = 8,500. Line 6 = 30,000 + 8,500 = 38,500.
  13. Case 3. 150,000 + 5,000 - 1,000 - 5,000 = 149,000, so 5,000 is excluded.
  14. Case 5. MAGI = 12,000 + 6,000 - 100 = 17,900 and 12,000 + 4,000 - 100 = 15,900. Line 6 = 11,900 each.
  15. dependent_taxable_ss_magi, 2025 461(l) case. Allowed loss = min(700,000, 0 + 313,000) = 313,000. MAGI = 401,000 - 313,000 = 88,000. Taxable benefits = min(17,000, 0.85 × (98,000 - 34,000) + 4,500) = 17,000.
  16. Indiana Case 2. Reduced AGI = max(0, 15,000 - 18,000) = 0, so the deduction is all 5,000.
  17. Indiana Case 3. The return holds 0 of the dependent's compensation, so the deduction is 0.
  18. Montana Case 10. The claimant's line 6 = 20,000, so all 8,000 is excluded and the addback is 8,000. The dependent's 155,000 already includes their full compensation, so their addback is 0. Gross household income = 20,000 + 8,000 + 1,800 = 29,800, where 1,800 is the 2020 recovery rebates: $1,200 CARES plus $600 CAA. The 20-year-old dependent adds no child amount.

Other checks.

  • Changelog: top-level fix-uc-exclusion-2020.fixed.md.
  • References: the amount and cutoff references corroborate $10,200 and $150,000. They give a single #page=88 with no page in the title.
  • Test files: tests sit in variable-named YAML files.
  • NH Add New Hampshire state supplementation for 2026 #10156 pattern: not applicable; there is no new state-gated key.
  • Partner files: none touched.
  • Python test cost: the PR body reports local time and memory and names the Rest core group, where it is collected automatically on main.

Axiom line assessment

Line: axiom: TheAxiomFoundation/rulespec-us#1719 queued, with an encoded-correct statement for us:statutes/26/85.

rulespec-us#1719 is valid.

  • State: OPEN and labelled pe-parity.
  • Dispatch-ready. It has:
    • the module path us/statutes/26/85.yaml and corpus citation us/statute/26/85;
    • the verbatim § 85(c) text;
    • the required outputs, which replace the free § 85(c)(2) AGI input and limit recipients to the taxpayer and spouse;
    • six companion tests (A-F) taken from the 2020 Form 1040 instructions, file pages 87-88 and 31 (YAML Cases 4-8, 11 and 12);
    • the recorded blocker: the signed encoder needs an approved billed run.
  • Matches the head: it names taxable_uc_agi, dependent_taxable_uc_agi and the person and tax-unit outputs.

The encoded-correct claim holds. us/statutes/26/85.yaml was last changed by rulespec-us #525.

  • Exclusion: each recipient's exclusion is min(max(0, unemployment_compensation), 10200), summed over the recipient relation, behind a strict < 150000.
  • Tests: temporary_2020_exclusion_applies_per_spouse_on_joint_return (12,000 and 13,000 give 20,400 excluded) and temporary_2020_exclusion_denied_at_threshold (AGI 150,000 gives 0) both exist.
  • Free inputs: the § 85(c)(2) AGI and the recipient relation are free inputs, as the line says.

Coverage: see G1 for the § 461(l) part.

CI status

All 27 checks pass at bceffce584 (run 39190151231, 2026-10-19). gh pr checks near the end of this review shows nothing pending.

That run predates several main-side guards: #10287 (source-conflict ratchet), #10317, #10408 and the #10439 Rest sharding. I checked them on the merged tree instead (see Branch status).

Branch status

Position: 7 commits ahead and 479 behind main, merge base 2ea9a7d3c4.

git merge-tree --write-tree against today's main is clean.

On the merged tree (one small run at a time), these pass:

Siblings (note only):

0 critical, 1 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.

Requesting changes: 0 critical, 1 should (two new terms are unpinned: business_income in the dependent's 461(l) limit, and the max_(0, ...) removed on UC in dependent_taxable_uc_agi; the report gives a case for each). All three fixes match § 85(c) and the 2020 worksheet, and on a tree merged with current main the #9558/#10317/#10408 guards, the ratchet and the PR's 45 cases pass. Full report in the comment above.

MaxGhenis and others added 3 commits November 13, 2026 08:59
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pin business income in the dependent loss limit and preserve exclusion AGI
after a dependent's net repayment. Add California and Rhode Island cases
for dependents' separate returns, and remove the property assertion that
repeats the exclusion formula.

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

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