Skip to content

Add SC OBBBA non-conformity addition for 2025#7870

Open
PavelMakarchuk wants to merge 12 commits intomainfrom
fix-sc-obbba-addback
Open

Add SC OBBBA non-conformity addition for 2025#7870
PavelMakarchuk wants to merge 12 commits intomainfrom
fix-sc-obbba-addback

Conversation

@PavelMakarchuk
Copy link
Copy Markdown
Collaborator

Summary

SC starts from federal taxable income but does not conform to the One Big Beautiful Bill Act (OBBBA) provisions that reduce it. This PR adds the OBBBA non-conformity addition to SC1040 line 2e.

Closes #7854

What SC adds back

OBBBA Provision Add-back Amount Variable
Standard deduction increase $1,500 (MFJ), $750 (Single) Computed from pre-OBBBA vs federal std ded
Senior deduction (age 65+) $6,000 per eligible person additional_senior_deduction
Tip income deduction Varies tip_income_deduction
Overtime income deduction Varies overtime_income_deduction
Auto loan interest deduction Varies auto_loan_interest_deduction

Test case (from TaxAct)

MFJ, primary age 65, $100K pension, $10K gross SS, 2 dependents:

Item Before After TaxAct
SC OBBBA addback $0 $7,500 $7,500
SC taxable income $31,110 $38,610 $38,610
SC income tax ~$1,166 ~$1,675 $1,677

Note

This pattern will likely need to be replicated for other states that start from federal taxable income but don't conform to OBBBA.

Test plan

All 88 SC tax tests pass.

🤖 Generated with Claude Code

SC starts from federal taxable income but does not conform to OBBBA
provisions. SC1040 line 2e adds back OBBBA deductions:

1. Standard deduction increase ($1,500 MFJ, $750 SINGLE)
2. Senior deduction ($6,000 per eligible person 65+)
3. Tip/overtime/auto loan interest deductions (if applicable)

For the test case (MFJ, age 65, $100K pension):
  sc_obbba_addback = $7,500 (matching TaxAct)
  sc_taxable_income = $38,610 (matching TaxAct)

Closes #7854

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 25, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (623a65c) to head (6c8ba6b).
⚠️ Report is 136 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #7870    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files           12         2    -10     
  Lines          173        44   -129     
  Branches         4         0     -4     
==========================================
- Hits           173        44   -129     
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 Sentry.
📢 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.

PavelMakarchuk and others added 8 commits March 25, 2026 18:43
- Variable label: "SC federal non-conformity addition for the One Big Beautiful Bill Act"
- Add SC DOR IRC Conformity Update page as primary reference
- Fix SC1040 line reference: line 1e (not 2e)
- Fix parameter description to explain non-conformity purpose
- Update comments with official terminology and amounts

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…rence

- Fix "SC1040 line 1e" to "SC1040 line e" (actual form label)
- Fix #page=3 → #page=5 in 3 files (was pointing to TOC)
- Replace CBO secondary source with IRS Rev. Proc. 2024-40 Section 3.01
  (authoritative source for pre-OBBBA standard deduction values)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
This PR introduces new functionality (SC OBBBA non-conformity addition),
not a bug fix, so the correct changelog category is 'added' (minor bump).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Previously the parameter stored 2025-only dollar values ($15,000 /
$30,000 / $22,500) sourced from IRS Rev. Proc. 2024-40, which didn't
clearly tie to a statutory section and wouldn't extend into 2026+.

Now the parameter stores the TCJA statutory base values (IRC § 63(c)(7)
as enacted by Pub. L. 115-97 § 11021: $12k / $24k / $18k at 2018-01-01)
with explicit pre-2025 historical values (matching federal amounts since
OBBBA had no effect before then) and uprating via gov.irs.uprating for
2025+. Each stored value is tied to an explicit legal code section.

At 2025 the uprated pre-OBBBA values are $15,000 / $30,000 / $22,500,
and the delta vs. post-OBBBA matches the $750 / $1,500 / $1,125 addback
amounts that TaxAct and Drake Tax publish for SC line 1e.

All 306 SC tests pass unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
The SC OBBBA addback only activates from 2025 onward (sc_obbba_addback
is gated on additions.yaml 2025-01-01+), so the 2018–2024 historical
values in the parameter are never read. Keep only the 2018-01-01 TCJA
statutory base and let uprating produce 2025+ values. Same 2025 output
($750/$1,500/$1,125 delta), fewer redundant entries.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Replaces the multi-sentence narrative description with the standard
PolicyEngine single-sentence pattern:
  "[State] [verb] [category] [this X] under the [Program] program"

Also spells out "One Big Beautiful Bill Act" in the label (PE standard
avoids acronyms in user-facing fields).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@PavelMakarchuk PavelMakarchuk marked this pull request as ready for review April 22, 2026 17:35
@PavelMakarchuk PavelMakarchuk requested a review from hua7450 April 22, 2026 17:35
- Rev. Proc. 2024-40 cited as § 3.01 (Tax Rate Tables); standard
  deduction is § 3.15.
- TCJA Pub. L. 115-97 § 11021 (standard deduction) starts at file
  page 20, not page 24.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow-up: SALT $40K cap not modeled (pre-existing bug)

Surfaced during review of this PR — flagging here because it's the largest unresolved item in SC Information Letter #26-4 Revised (Item 6), and shares scope with the OBBBA non-conformity work in this PR. Out of scope for this PR; recommended as a separate follow-up.

Issue. SC has not conformed to OBBBA's increase in the federal SALT cap from $10,000 to $40,000 (Letter Item 6). For SC itemizers, the SALT addback should still use the pre-OBBBA $10,000 / $5,000 (MFS) cap.

Where it manifests. policyengine_us/variables/gov/states/sc/tax/income/additions/sc_state_tax_addback.py reads the federal SALT cap directly:

cap = parameters(period).gov.irs.deductions.itemized.salt_and_real_estate.cap[filing_status]

That parameter steps up to $40,000 at 2025-01-01, so SC inherits the post-OBBBA cap and systematically understates the SC SALT addback (and therefore SC tax liability) for any SC itemizer with SALT > $10,000 — exactly the population the federal change targets.

Recommended follow-up (separate PR).

  1. Add policyengine_us/parameters/gov/states/sc/tax/income/additions/obbba/pre_obbba_salt_cap.yaml with $10,000 / $5,000 (MFS), referenced to SC Information Letter #26-4.
  2. Update sc_state_tax_addback.py to read this SC-frozen parameter instead of gov.irs.deductions.itemized.salt_and_real_estate.cap.
  3. Add tests covering MFJ / Single / MFS itemizers with SALT just below and well above $10,000.

Out of scope but noted. The remaining two SC Letter items (R&E §174A, §179 $2.5M expensing) are appropriately not modeled — PolicyEngine doesn't track per-taxpayer R&E expenditures or §179 elections.

@PavelMakarchuk
Copy link
Copy Markdown
Collaborator Author

Filed the SALT cap follow-up as #8240 — adds a SC-frozen $10K / $5K MFS state_tax_addback/salt_cap parameter and updates sc_state_tax_addback.py to read from it. Note: walking through the worksheet math, the current code actually overstates the SC SALT addback (a higher federal cap leaves more room for state-income-tax addback in line 5), not understates as described in the review — but either way the fix is the same per SC IL #26-4 Item 6. 10/10 SC SALT addback tests pass; 309/309 SC tax tests pass.

Could you dismiss the CHANGES_REQUESTED review on this PR (or mark it as out-of-scope) so it can move to merge once #8240 lands?

Address review feedback (#7870 review by hua7450). SC IL #26-4 Item 6
notes SC has not conformed to OBBBA's 2025 federal SALT cap increase
from $10,000 to $40,000 ($20,000 MFS). The SC1040 line 1d State Tax
Addback worksheet must continue to use the pre-OBBBA $10K / $5K MFS cap.

Previously sc_state_tax_addback.py read the federal SALT cap parameter
directly, which steps to $40K at 2025-01-01. Add a SC-frozen
pre_obbba_salt_cap.yaml under the existing additions/obbba/ folder
(alongside pre_obbba_standard_deduction.yaml) and update the formula
to read it.

Direction-of-bias note: a higher federal cap leaves more "room" for
state-income-tax addback in worksheet line 5 (cap - real_estate), so
the prior code overstated the SC addback (and SC tax liability) for
itemizers with SALT > $10K. Either way the corrective action is the
same — use the SC-frozen $10K / $5K MFS cap.

Tests: existing 6 pre-OBBBA cases pass unchanged; 4 new 2025 cases
covering MFJ at SALT just above $10K, MFJ high-SALT (full $10K cap
consumed by real estate, addback drops to $0), SINGLE, and MFS.

10/10 SC SALT addback tests pass; 310/310 SC tax tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@PavelMakarchuk
Copy link
Copy Markdown
Collaborator Author

Addressed the SALT cap non-conformity in commit `b0884b3` on this PR (rather than a separate one):

  • Added `policyengine_us/parameters/gov/states/sc/tax/income/additions/obbba/pre_obbba_salt_cap.yaml` ($10K / $5K MFS), alongside the existing `pre_obbba_standard_deduction.yaml`. References SC IL make a test for max snap benefit, add to existing tests #26-4 Item 6, SC1040 worksheet instructions, and TCJA § 11042.
  • Updated `sc_state_tax_addback.py` line 5 to read the SC-frozen cap instead of `gov.irs.deductions.itemized.salt_and_real_estate.cap`.
  • Added 4 new 2025 tests: MFJ just above $10K, MFJ high-SALT (full cap consumed by real estate, addback drops to $0), SINGLE, MFS. Existing 6 pre-OBBBA cases unchanged.
  • Updated changelog fragment to mention the SALT cap addition.

Direction-of-bias note: tracing the worksheet math, a higher federal cap leaves more "room" for state-income-tax addback in line 5 (`cap − real_estate_taxes`), so the previous code actually overstated the SC SALT addback (and SC tax liability) for itemizers with SALT > $10K, not understated. The fix is the same either way.

Verification: 10/10 `sc_state_tax_addback.yaml` tests pass; 310/310 SC tax tests pass; `make format` clean.

Could you re-review when you have a chance?

🤖 Generated with Claude Code

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.

SC missing OBBBA non-conformity additions for 2025

2 participants