Skip to content

Fix 2026 QBID minimum to use active-business QBI - #9194

Open
saisharan0103 wants to merge 2 commits into
PolicyEngine:mainfrom
saisharan0103:mergepath/issue-9150-2026-qbid-applies-the-199a-i
Open

Fix 2026 QBID minimum to use active-business QBI#9194
saisharan0103 wants to merge 2 commits into
PolicyEngine:mainfrom
saisharan0103:mergepath/issue-9150-2026-qbid-applies-the-199a-i

Conversation

@saisharan0103

Copy link
Copy Markdown
Contributor

Issue #9150 reports that the 2026 §199A(i) $400 minimum can apply based on ordinary QBI inputs even when there is no modeled active qualified trade or business income.

Root cause: qualified_business_income_deduction used the tax-unit sum of qualified_business_income plus sstb_qualified_business_income as the threshold base for the 2026 floor. Those are ordinary §199A deduction inputs and can be supplied directly, allowing the new minimum to override an otherwise zero wage/UBIA-limited deduction.

This changes the floor threshold to use a narrow Person-level active_qualified_business_income input documented as aggregate QBI from active qualified trades or businesses. The ordinary QBID computation and taxable-income cap are left unchanged.

Tests update the existing 2026 floor cases to provide active_qualified_business_income when the minimum is intended to apply, and add the reported above-phaseout zero wage/UBIA scenario showing ordinary QBI alone does not trigger the floor.

…minimum to all QBI, not active-business QBI

Closes PolicyEngine#9150
@codecov

codecov Bot commented Aug 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (838be3f) to head (7819321).
⚠️ Report is 14 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #9194   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            2         2           
  Lines           31        31           
  Branches         0         1    +1     
=========================================
  Hits            31        31           
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.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor

Cross-family dual review (Claude Fable 5 + GPT-5.6-sol, independent). Removing #9150's false positive is confirmed — the reported above-phaseout/zero-wage case now correctly returns $0, and pre-2026 results are mathematically unchanged. I pushed the missing changelog fragment. Blocked on the shape of the fix:

  1. The floor goes dark on every normal data path. active_qualified_business_income has no formula, producer, or default, and nothing populates it — a live branch sim with ordinary qualified self-employment income of $1,000 gets active_qualified_business_income = 0 and loses the $400 minimum it legally qualifies for. The false positive became a universal false negative for modeled active businesses. 2026 QBID applies the §199A(i) $400 minimum to all QBI, not active-business QBI #9150 allowed either a distinct input or a derived aggregate; this needs the derived default (e.g. formula defaulting to ordinary QBI, overridable) or an explicit maintainer-approved required-input contract plus a data-seeding plan.
  2. Person-level allocation breaks for floor-only cases. qualified_business_income_deduction_person allocates by qbid_amount shares; when the floor is the only deduction the unit gets $400 and every person gets $0. Needs handling + a test.
  3. The fixtures assert an unverified statutory conclusion. Cases where the 20%-of-taxable-income cap is $120 expect $400 — i.e., §199A(i) overriding §199A(a)(2)'s overall limit. That may be right, but it's load-bearing and uncited; please add the statutory basis. One fixture also sets qbid_amount: 2,000 against total QBI of $1,000, an impossible ordinary §199A relationship.
  4. No positive test reaches the floor through ordinary inputs — every passing case injects the new variable directly, which is what masks finding 1.

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