Repository navigation
Conversation
… insurance deduction 26 U.S.C. 162(l)(2)(B) disallows the deduction for any month the taxpayer is eligible for a subsidized plan of their own or their spouse's employer (Form 7206 line 1). The premium base now leaves out the premiums of a person who has or is offered employer coverage, whose employer pays part of the premiums, or whose spouse on a joint return does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oyer-plan bar Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…issue (#10124) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Correction to this PR's body, from the session that wrote it. The US + core hub now owns this PR. Head Local runs: don't rely on the 28-file and 9-file results.
Impact: nothing ran. The pair (base Review: no verdict at any head. Subfleet run
None of them wrote findings. Their progress notes are unaccepted evidence, not a review. Stale lines in the body.
Still current. The law and form citations, the five barred cases failing on main at the time, the not-modeled list, #10124 (open) and the |
|
Picking this up for the US hub. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
The only conflict is the documentation of self_employed_health_insurance_premiums, which #10046 rewrote to say pretax payroll payments belong only in pre_tax_health_insurance_premiums and that the pretax and non-pretax sets are disjoint. Keep this PR's formula and documentation and add those statements: the formula still reads health_insurance_premiums, the non-pretax input, and returns 0 when self_employed_health_insurance_employer_plan_eligible holds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Picking this up for the US hub, continuing an earlier session's work on this brief (that session pushed nothing here). I'll post a hand-off comment here when it's ready. Generated by Claude Code |
Brings in #10554 (California state supplement for disabled dependent children) and the version bump; no file overlaps this PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Ready for hub review Head: 1. Merge main. Two merge commits, no rebase:
2. Re-verified on the merged tree.
3. Tests at this head, one file per process, with nothing editing the checkout: 109 passed, 0 failed, in 13 files (the body has the table). All but one ran at
Mutants, run at
All three are killed. The old body had 3 property failures for M3; I got 4. Hypothesis draws vary, and the test still kills the mutant either way. 4. Body, posted and read back. It matches my file except for one line. I removed the 28-file/314-case and 9-file/51-case claims and the lane-folder log, and added what I ran at this head. Not done / judgment calls
Generated by Claude Code |
PR Review: Exclude employer-plan-eligible premiums from the self-employed health insurance deductionSummaryThe PR adds I checked the law first. The approach follows it:
The PR applies the bar per person, before the earned income limit (Form 7206 line 1, then line 14). It handles the spouse's plan and leaves out a dependent's own coverage. It documents what annual inputs can't show: the months, a spouse filing separately, and a dependent's or child's plan that the taxpayer can join. Long-term care premiums are not in this base, so the separate long-term care test doesn't arise. Open finding. One should-address item. The coverage flags don't record whose employer maintains the plan, so a person covered by or offered a parent's employer plan is barred, though the statute doesn't list a parent's employer. The code comment and test docstring claim the opposite. There are no critical findings. CI is 35/35 green, with 3 jobs skipped by an earlier run. CriticalNone. Should address1. The own-coverage test treats any ESI enrollment or offer as the person's own employer's plan, but the inputs don't say whose employer it is. A parent's plan therefore bars the deduction, against the statute and against the PR's own comment (
Suggestions
Verified correct
Axiom line assessment
CI status35 checks pass at Branch status
Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Requesting changes: 0 critical, 1 should. The § 162(l)(2)(B) bar is applied correctly, and the axiom line is valid. Open: has_esi and the offer and contribution flags don't record whose employer maintains the plan, so a dependent on a parent's plan is barred though (l)(2)(B) doesn't list a parent's employer, and the code comment and test docstring claim the opposite. Document the approximation and correct both. Full report in the comment above.
|
Hub review in progress Head reviewed:
Generated by Claude Code |
|
Ready for hub review Independent review of the head above. It is unchanged since the hand-off. Main has since moved to The bar works for the case it targets: a spouse's employer plan on a joint return. It reproduces at main and is fixed here. I'm requesting changes for three reasons: the code says it protects dependents from a parent's plan, but it doesn't; main's #10265 has made the body's reader list and its long-term care statement untrue; and the documentation carries an unverified data claim. FindingsP11. A parent's employer plan bars a dependent (and a young filer) whose own coverage flags come from that plan. The code comment, the test docstring and the body all say the opposite.
P22. Main has moved under the PR. Since #10265, the body's reader list and its long-term care statement are false, and the green CI predates that merge.
3. The variable documentation states an unverified data fact. At
P3
Follow-up (identical on main; not this PR's defect)
Defect, rule and hand values
Checks on the brief's points
Readers (merged tree)
Tests run (one file per process)
CI at MutantsI ran these at
Checked and sound
What I couldn't check
Generated by Claude Code |
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>
PR Review (round 2): Exclude employer-plan-eligible premiums from the self-employed health insurance deductionSummarySince our round 1 review (2026-11-04, head Round 1 findings. The should-address item is fixed, through a behavior change rather than only a documentation change. A tax unit dependent is now barred only when their own employer pays SOME or ALL of the premiums. Their New in the fix commits. An Two new should-address items. Neither is a formula error at the head.
CI: 36/36 pass at Prior findings
New findingsCriticalNone. Should address1. #10120 has merged, so this PR now lands second. It must add the input distinction its own body names. On the merged tree, flagging the payment of a plan the person's own partnership or S corporation establishes bars the deduction (
2. The queued rulespec-us issue no longer matches the head after the dependent fix (rulespec-us#1676, addendum comment).
Suggestions
Verified
Axiom
CI36/36 checks pass at Branch
Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Round 2: the round 1 should-address item and suggestions 1-5 are fixed. Two new should-address items: #10120 has merged, so this PR lands second and needs the own-business plan documentation the body describes, and rulespec-us#1676 needs an update for the new dependent rule. Details in the review comment above.
What changes
We exclude medical premiums from the self-employed health insurance deduction when the taxpayer can join a subsidized employer plan.
self_employed_health_insurance_employer_plan_eligiblesupplies the person-level flag; the existing earned-income limit still caps the deduction.Congress bars a month's deduction when the taxpayer can join a subsidized plan maintained by their employer, their spouse's employer, a dependent's employer, or an under-27 child's employer. 26 U.S.C. 162(l)(2)(B)
The IRS excludes these amounts from Form 7206 line 1: “Amounts for any month you were eligible to participate in a health plan subsidized by your employer or your spouse's employer …”. The IRS also includes a dependent's or under-27 child's employer in that exclusion.
The IRS applies the bar “even if you didn’t actually participate” in its 2025 instructions, “Other coverage”. The IRS also treats QSEHRAs as subsidized employer plans in its 2022 and 2018 Form 1040 instructions.
Methodology choice
has_esi,offered_aca_disqualifying_esi, or employer contributions of SOME or ALL as access through their own or their spouse's employer. We bar both joint filers if either meets that test. These annual inputs identify neither the employer maintaining a plan nor its subsidy.Not modeled
We avoid reading
filing_statusbecause its calculation reaches dependents' incomes and this deduction. We use the existing head and spouse roles to pass eligibility between the two filers.Examples and downstream effects
For example, a joint couple has $50,000 of Schedule C profit, $40,000 of spouse wages, $6,000 of medical premiums, and spouse ESI. Half the self-employment tax equals 50,000 × 0.9235 × 0.153 ÷ 2 = $3,532.3875, leaving a $46,467.6125 earned-income limit. Main deducts $6,000; this branch deducts $0, raising AGI from $80,467.61 to $86,467.61.
A 22-year-old dependent with $3,000 of profit and $1,000 of premiums for their own policy deducts $1,000 despite an enrollment or offer flag. Half the self-employment tax equals 3,000 × 0.9235 × 0.153 ÷ 2 = $211.94325, leaving a $2,788.05675 limit. We bar that deduction if their own employer pays SOME or ALL.
With the same joint couple and $500 of eligible long-term care premiums, we exclude the $6,000 of medical premiums and retain the $500 deduction for long-term care. The long-term care part equals $500, AGI equals 90,000 − 3,532.3875 − 500 = $85,967.61, and Schedule A medical expenses before its floor equal $6,000.
self_employed_health_insurance_premiumshas two readers:self_employed_health_insurance_ald_personadds the line 1 medical premiums and line 2 eligible long-term care premiums before applying the earned-income limit.self_employed_health_insurance_ald_long_term_care_partsubtracts the medical part from the person's deduction to identify its long-term care part.The deduction feeds federal AGI, the QBI deduction definition, student-loan-interest MAGI, dependent Social Security calculations, and Schedule A premium exclusions. Its readers also feed deductions or income calculations in Alabama, Idaho, Michigan, Missouri, Mississippi, Montana, New Jersey, Ohio, and South Carolina.
We leave the original premium inputs from #10046 unchanged. We can still change
spm_unit_health_insurance_premiumsthrough AGI → Medicaid MAGI → ACA MAGI → premium tax credit → used credit → net Marketplace premium.For example, the joint couple above takes up Marketplace coverage with annual benchmark and selected-plan premiums of $10,000. We hold the head's PTC eligibility true and the spouse's false to isolate the AGI path.
We leave coordination between the deduction and the premium tax credit to #10124.
Properties and tests
test_self_employed_health_insurance_employer_plan_properties.pycompares each drawn tax unit with a copy whose coverage flags we clear. Across 2024–2026, we check:The reference repeats the formula's flag interpretation. We also compare each drawn household with a copy whose eligibility flags we clear. We check bounds and relationships between those copies across generated households, income boundaries, years, and flag combinations. Fixed YAML expectations cannot express those generated relationships. A deterministic grid covers every combination of each filer's coverage, offer, and contribution category, with a dependent's ESI flag clear or set.
The AGI identity does not hold for all incomes. A single 67-year-old with $20,000 of profit, $20,000 of Social Security, $6,000 of premiums, and an employer offer loses the $6,000 deduction. We include another $1,793.52 of taxable benefits, increasing AGI by $7,793.52.
We retain the head, spouse, housemate, and parent cases in the renamed YAML file. We add dependent enrollment and offer flags, dependent SOME contributions, filer ALL contributions, and the medical-versus-long-term-care example, with hand computations beside their expectations.
b184b86cdaef2e525f448ab46ebf5dccb3458f43.CI passed all 147 tests in the 15 files below at this head.
self_employed_health_insurance_employer_plan_eligible.yamltest_self_employed_health_insurance_employer_plan_properties.pyremaining-1test_self_employed_health_insurance_properties.pyremaining-2test_medical_expense_premium_conservation.pycore-2self_employed_health_insurance_ald.yamlself_employed_health_insurance_earned_income_limit.yamleitc_earned_income.yamlpolicybench_ira.yamlca_income_tax_before_refundable_credits.yamlca_itemized_deductions_pre_limitation.yamloh_uninsured_unreimbursed_medical_care_expenses.yamlheat_and_eat/snap.yamlowners_draw_self_employed_health_insurance_earned_income_limit.yamlself_employed_health_insurance_ald_long_term_care_part.yamlid_health_insurance_premiums_subtraction.yamlCI recorded 4.473 seconds for the employer-plan property file, summing its seven testcase times including setup and teardown. It ran in Rest Python shard 4, group
remaining-1. CI recorded 1,490.94 seconds of wall time and 7,542,788 KiB (7.193 GiB) of peak resident memory for that whole group process. CI does not report this file's peak memory separately.We ran each mutant separately against each test file and restored the original code after each run, checking
git diff --exit-code. We recorded the capped M6 property run as unfinished; it gives no code verdict.adds = ["health_insurance_premiums"]Enrolled in employer coverage, so no premiums count.test_premium_base_matches_the_form_7206_referenceandtest_grid_bars_on_head_or_spouse_coverage_only[2024–2026].The spouse's employer plan bars a joint filer's deduction.test_premium_base_matches_the_form_7206_referenceandtest_grid_bars_on_head_or_spouse_coverage_only[2024–2026].A dependent's ESI flag leaves the parents' employer-plan eligibility clear.test_premium_base_matches_the_form_7206_referenceandtest_grid_bars_on_head_or_spouse_coverage_only[2024–2026].A dependent's employer offer flag leaves premiums for their own policy deductible.test_premium_base_matches_the_form_7206_referenceandtest_grid_bars_on_head_or_spouse_coverage_only[2024–2026].ownAn employer pays part of the premiums, so no premiums count.test_premium_base_matches_the_form_7206_referenceandtest_grid_bars_on_head_or_spouse_coverage_only[2024–2026].employer_paysAn employer pays all premiums for a plan, so the filer's own-policy premiums do not count.run_capped: killed (rss) after 489.1s: footprint 1.95 GB, rss 2.00 GB > cap 2.00 GB. No assertion result.Microsimulation impact
We estimate that this branch lowers the self-employed health insurance deduction by $1.00bn in 2026 on the default dataset, and raises federal income tax by $119.9m and state income tax by $27.1m. We compared main at the merge base
4279ce2e63with this branch atb184b86cda.The premium base falls by $1.05bn for 75 self-employed people (231,552 weighted) whose premiums the employer-plan test now excludes. The deduction takes the smaller of the premiums and the earned-income limit, so it falls by less where that limit already capped the deduction on main. Household net income falls by $147.2m, and
household_benefitsdoesn't change.self_employed_health_insurance_premiumsself_employed_health_insurance_aldadjusted_gross_incomeincome_taxstate_income_taxhousehold_benefitshousehold_net_incomeRelated work and follow-ups
#10120 remains open. Users should enter a business's own payment or reimbursement of premiums for its proprietor, partner, or more-than-2% S corporation shareholder as that person's premiums. Users should not flag those payments as access to another employer plan. Whoever lands second should add this distinction to the input documentation.
Proposed follow-ups:
oh_employer_subsidized_health_plan_eligiblerepeats the three-input test for the head and spouse.Read the federal person flag for those filers and retain Ohio's tax-unit aggregation.
Annual flags cannot distinguish a partial year of eligibility from a full year.
Add month-level inputs and exclude premiums for eligible months, with separate long-term care eligibility.
The existing contribution input captures a QSEHRA only when the user enters it there.
Add a separate eligibility input, including months when the employee receives no reimbursement.
We currently exclude medical premiums before long-term care premiums, even when the deduction took only long-term care premiums.
Use the deduction's actual premium split so state deductions receive the corresponding medical and long-term care amounts.
The author describes PolicyEngine's three-flag test for every person in the linked Axiom addendum. We count only employer contributions for dependents here. We cannot represent all its monthly companion examples with annual inputs.
impact: in 2026 on the default dataset, the self-employed health insurance deduction falls by $1.00bn, federal income tax rises by $119.9m, state income tax rises by $27.1m and household net income falls by $147.2m.
axiom: us/statute/26/162/l queued (TheAxiomFoundation/rulespec-us#1676; (l)(2)(B) addendum with monthly companion tests: TheAxiomFoundation/rulespec-us#1676 (comment))
🤖 Generated with Claude Code