Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
732b821
Integrate modeled state unemployment insurance into income flows
DTrim99 Sep 21, 2026
02fec91
Route parameter-driven UI consumers through total unemployment compen…
DTrim99 Sep 23, 2026
3d57cdd
Year-gate the modeled state unemployment insurance programs
DTrim99 Sep 24, 2026
6ff0b44
Merge remote-tracking branch 'PolicyEngine/main' into state-ui-income…
DTrim99 Sep 29, 2026
7e47d92
Address review: pin the modeled-UI year gate and pass negative report…
DTrim99 Sep 29, 2026
b46b91f
Count gross unemployment and Social Security in South Carolina TANF
DTrim99 Sep 29, 2026
7dfb161
Merge PolicyEngine/main: keep modeled state UI in the new dependent a…
DTrim99 Oct 5, 2026
cb9dbde
Merge PolicyEngine/main: keep modeled state UI in the new dependent a…
DTrim99 Oct 5, 2026
7132530
Update modeled-UI SNAP tests for main's months-of-receipt UI exemption
DTrim99 Oct 5, 2026
c0fcb2f
Update modeled-UI SNAP tests for main's months-of-receipt UI exemption
DTrim99 Oct 5, 2026
25d2e83
Merge PolicyEngine/main into sc-tanf-gross-ui-ss
DTrim99 Oct 12, 2026
6130bc3
Merge PolicyEngine/main into state-ui-income-flow-integration
DTrim99 Oct 12, 2026
aef5707
Merge #9558 (state-ui-income-flow-integration) into sc-tanf-gross-ui-ss
DTrim99 Oct 12, 2026
36192aa
List total_unemployment_compensation in the AR line-comment check
DTrim99 Oct 13, 2026
d8ce819
Merge #9558 (state-ui-income-flow-integration) into sc-tanf-gross-ui-ss
DTrim99 Oct 13, 2026
d79f740
Route the remaining unemployment compensation readers through the total
DTrim99 Oct 13, 2026
ea2f8c4
Merge #9558 (state-ui-income-flow-integration) into sc-tanf-gross-ui-ss
DTrim99 Oct 13, 2026
0cb0955
Merge PolicyEngine/main into state-ui-income-flow-integration
DTrim99 Oct 13, 2026
10a1cb8
Merge #9558 (state-ui-income-flow-integration) into sc-tanf-gross-ui-ss
DTrim99 Oct 13, 2026
360c432
Merge PolicyEngine/main into sc-tanf-gross-ui-ss
DTrim99 Oct 13, 2026
38de11d
Merge PolicyEngine/main into sc-tanf-gross-ui-ss
DTrim99 Oct 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/sc-tanf-gross-ui-ss.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
South Carolina TANF now counts gross unemployment compensation and gross Social Security as unearned income, instead of only the federally taxable amounts.
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@ values:
- debt_relief
# Decedent income
# Estate interest income
- taxable_unemployment_compensation
- taxable_social_security
# Section 7.7 counts unemployment compensation and SSA benefits in
# full (gross), with no carve-out for the federally taxable share.
- total_unemployment_compensation
- social_security
- illicit_income
- taxable_retirement_distributions
- miscellaneous_income
Expand All @@ -26,3 +28,7 @@ metadata:
reference:
- title: SC DSS TANF Policy Manual Section 7.1
href: https://dss.sc.gov/media/ojqddxsk/tanf-policy-manual-volume-65.pdf#page=101
- title: SC DSS TANF Policy Manual Section 7.7, SSA benefits
href: https://dss.sc.gov/media/ojqddxsk/tanf-policy-manual-volume-65.pdf#page=115
- title: SC DSS TANF Policy Manual Section 7.7, Unemployment compensation benefits (UCB)
href: https://dss.sc.gov/media/ojqddxsk/tanf-policy-manual-volume-65.pdf#page=117
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
person1:
age: 35
employment_income_before_lsr: 0
taxable_social_security: 3_600
social_security: 3_600
person2:
age: 8
is_child_dependent: true
Expand All @@ -129,7 +129,7 @@
state_code: SC
output:
sc_tanf: 223.20
# monthly unearned = 3,600/12 = 300
# monthly unearned = 3,600/12 = 300 (gross Social Security counts)
# tanf_fpg for size 2 = 1703.33
# need_standard = 1703.33 * 0.5 = 851.67
# countable_income = 0 (earned) + 300 (unearned) = 300
Expand Down Expand Up @@ -222,3 +222,182 @@
sc_tanf: 0
# Both members are undocumented, so no one qualifies as
# citizen or legal immigrant -> ineligible

- name: Case 9, 2020 unemployment compensation below the federal exclusion counts in full.
period: 2020-01
absolute_error_margin: 0.01
input:
people:
person1:
age: 35
unemployment_compensation: 6_000
person2:
age: 8
is_child_dependent: true
spm_units:
spm_unit:
members: [person1, person2]
spm_unit_cash_assets: 500
households:
household:
members: [person1, person2]
state_code: SC
output:
# 2020 federal exclusion: first 10,200 of UC is tax-exempt,
# so taxable UC = max(6,000 - 10,200, 0) = 0.
taxable_unemployment_compensation: [0, 0]
# Section 7.7 counts gross UC: 6,000 / 12 = 500 per month.
total_unemployment_compensation: [500, 0]
sc_tanf_gross_unearned_income: [500, 0]
sc_tanf_countable_income: 500
# tanf_fpg for size 2 (2020-01, uses 2019 FPG) = 16,910 / 12 = 1,409.17
# need_standard = 1,409.17 * 0.5 = 704.58
# 500 < 704.58 -> countable income eligible
sc_tanf_income_eligible: true
# excess = 704.58 - 500 = 204.58
# benefit = 204.58 * 0.3372 = 68.99
# (Counting taxable UC instead gave 704.58 * 0.3372 = 237.59.)
sc_tanf: 68.99

- name: Case 10, 2020 unemployment compensation above the federal exclusion counts in full.
period: 2020-01
absolute_error_margin: 0.01
input:
people:
person1:
age: 35
unemployment_compensation: 12_000
person2:
age: 8
is_child_dependent: true
person3:
age: 7
is_child_dependent: true
person4:
age: 6
is_child_dependent: true
spm_units:
spm_unit:
members: [person1, person2, person3, person4]
spm_unit_cash_assets: 500
households:
household:
members: [person1, person2, person3, person4]
state_code: SC
output:
# taxable UC = 12,000 - 10,200 = 1,800 per year = 150 per month.
taxable_unemployment_compensation: [150, 0, 0, 0]
# Gross UC counts: 12,000 / 12 = 1,000 per month.
total_unemployment_compensation: [1_000, 0, 0, 0]
sc_tanf_gross_unearned_income: [1_000, 0, 0, 0]
sc_tanf_countable_income: 1_000
# tanf_fpg for size 4 (2020-01, uses 2019 FPG) = 25,750 / 12 = 2,145.83
# need_standard = 2,145.83 * 0.5 = 1,072.92
# 1,000 < 1,072.92 -> countable income eligible
sc_tanf_income_eligible: true
# excess = 1,072.92 - 1,000 = 72.92
# benefit = 72.92 * 0.3372 = 24.59
# (Counting taxable UC instead gave (1,072.92 - 150) * 0.3372 = 311.21.)
sc_tanf: 24.59

- name: Case 11, gross Social Security counts when none of it is federally taxable.
period: 2025-01
absolute_error_margin: 0.01
input:
people:
person1:
age: 35
social_security_disability: 6_000
person2:
age: 8
is_child_dependent: true
spm_units:
spm_unit:
members: [person1, person2]
spm_unit_cash_assets: 500
households:
household:
members: [person1, person2]
state_code: SC
output:
# Provisional income = 6,000 * 0.5 = 3,000, below the 25,000 base
# amount, so taxable Social Security = 0.
taxable_social_security: [0, 0]
# Section 7.7 counts the gross SSA benefit: 6,000 / 12 = 500 per month.
social_security: [500, 0]
sc_tanf_gross_unearned_income: [500, 0]
sc_tanf_countable_income: 500
# tanf_fpg for size 2 (2025-01) = 1,703.33
# need_standard = 1,703.33 * 0.5 = 851.67
# 500 < 851.67 -> countable income eligible
sc_tanf_income_eligible: true
# excess = 851.67 - 500 = 351.67
# benefit = 351.67 * 0.4046 = 142.28
# (Counting taxable Social Security instead gave 851.67 * 0.4046 = 344.58.)
sc_tanf: 142.28

- name: Case 12, gross Social Security above the need standard makes the family ineligible.
period: 2025-01
input:
people:
person1:
age: 35
social_security_disability: 12_000
person2:
age: 8
is_child_dependent: true
spm_units:
spm_unit:
members: [person1, person2]
spm_unit_cash_assets: 500
households:
household:
members: [person1, person2]
state_code: SC
output:
# Provisional income = 12,000 * 0.5 = 6,000 < 25,000 -> taxable SS = 0.
taxable_social_security: [0, 0]
# Gross SSA benefit counts: 12,000 / 12 = 1,000 per month.
sc_tanf_countable_income: 1_000
# need_standard = 851.67; 1,000 >= 851.67 -> not income eligible
sc_tanf_income_eligible: false
# (Counting taxable Social Security instead paid 344.58.)
sc_tanf: 0

- name: Case 13, gross Social Security and unemployment compensation both count once.
period: 2025-01
absolute_error_margin: 0.01
input:
people:
person1:
age: 35
social_security_disability: 3_600
unemployment_compensation: 2_400
person2:
age: 10
is_child_dependent: true
person3:
age: 8
is_child_dependent: true
spm_units:
spm_unit:
members: [person1, person2, person3]
spm_unit_cash_assets: 500
households:
household:
members: [person1, person2, person3]
state_code: SC
output:
# SS = 3,600 / 12 = 300 per month; taxable SS = 0.
# UC = 2,400 / 12 = 200 per month (fully taxable after 2020).
taxable_social_security: [0, 0, 0]
taxable_unemployment_compensation: [200, 0, 0]
# gross unearned = 300 + 200 = 500
sc_tanf_gross_unearned_income: [500, 0, 0]
sc_tanf_countable_income: 500
# tanf_fpg for size 3 (2025-01) = 2,151.67
# need_standard = 2,151.67 * 0.5 = 1,075.83
# excess = 1,075.83 - 500 = 575.83
# benefit = 575.83 * 0.4046 = 232.98
# (Counting taxable SS instead gave (1,075.83 - 200) * 0.4046 = 354.36.)
sc_tanf: 232.98
Loading