Skip to content

Implement Connecticut State Supplementary Payment (SSP)#7881

Open
hua7450 wants to merge 5 commits intoPolicyEngine:mainfrom
hua7450:ct-ssp
Open

Implement Connecticut State Supplementary Payment (SSP)#7881
hua7450 wants to merge 5 commits intoPolicyEngine:mainfrom
hua7450:ct-ssp

Conversation

@hua7450
Copy link
Collaborator

@hua7450 hua7450 commented Mar 26, 2026

Summary

Implements Connecticut's State Supplementary Payment (SSP) -- budget-based supplement for aged, blind, and disabled SSI recipients per CGS 17b-600.

Closes #7880

Regulatory Authority

Program Overview

  • Administration: State-administered by CT Department of Social Services (DSS)
  • Funding: 100% state funds
  • Statutory basis: CGS 17b-600 (effective January 1, 1974)
  • Benefit formula: Budget-based (Need Standard - Countable Income)
  • Current caseload: ~10,348 recipients (January 2011 SSA report; most recent available)

Eligibility

Requirement Source How Modeled
Must be aged (65+), blind, or disabled per SSI standards CGS 17b-600 is_ssi_eligible via ct_ssp_categorically_eligible
Only blind children eligible (disabled children excluded) SSA 2011 Report Blind child check in ct_ssp_categorically_eligible
CT resource limits ($1,600 individual / $2,400 couple) UPM 4005.10 ct_ssp_resource_eligible with CT-specific parameters (lower than federal SSI $2,000/$3,000)
Income cap: gross income <= 300% SSI FBR ($2,982/mo) CGS 17b-600 ct_ssp_income_eligible multiplies income_cap_rate (3.0) by SSI FBR
Must reside in Connecticut State program defined_for = StateCode.CT

Benefit Amounts (DSS Standards Chart 3/1/2026)

Personal Needs Allowance (PNA)

Category Monthly Amount Source
Community individual $198.55 DSS Standards Chart (frozen per legislation)
Community married (per person) $197.35 DSS Standards Chart (frozen per legislation)
Boarding home $34.75 DSS Standards Chart (eff. 7/1/2024)
SNF / Medicaid facility $75.00 UPM 4520.20; DSS Standards Chart

Shelter Allowance

Category Monthly Maximum Source
Living alone $400 UPM 4520.10; SSA 2005/2011 footnote (a)
Shared living $200 UPM 4520.10; SSA 2005/2011 footnote (a)
Facility (boarding/SNF) $0 Shelter included in facility rate

Unearned Income Disregards (adjust annually with SSA COLA)

Living Arrangement Monthly Amount Source
Community / Roomer / SNF $562.00 UPM 5030.15; DSS Standards Chart
Boarding home $469.70 UPM 5030.15; DSS Standards Chart
Shared living (non-relative) $629.90 UPM 5030.15; DSS Standards Chart

Earned Income Disregards

Category Formula Source
Aged / Disabled $65 + 1/2 of remainder UPM 5030.10
Blind $85 + 1/2 of remainder UPM 5030.10

Special Needs

Item Monthly Amount Source
Therapeutic diet $36.20 DSS Standards Chart; SSA 2005/2011 reports

Couple treatment: Per-person PNA ($197.35 married vs $198.55 individual); uses ssi_claim_is_joint to determine.
COLA: PNA amounts frozen per state legislation; unearned disregards adjust annually with SSA COLA.

Benefit Calculation

Budget formula: Benefit = max(0, Total Need - Countable Income)

For Community Living (alone or shared):

  1. Shelter Allowance = min(actual shelter cost, max allowance for arrangement)
  2. PNA = $198.55 individual / $197.35 married
  3. Special Needs = therapeutic diet ($36.20 if applicable)
  4. Total Need = Shelter Allowance + PNA + Special Needs
  5. Unearned Disregard = arrangement-specific amount ($562 / $629.90)
  6. Earned Disregard = $65 + 1/2 remainder (aged/disabled) or $85 + 1/2 remainder (blind)
  7. Countable Income = max(0, unearned incl. SSI - unearned disregard) + max(0, earned - earned disregard)
  8. Benefit = max(0, Total Need - Countable Income)

For Boarding Home:

  • PNA = $34.75; Unearned Disregard = $469.70; no shelter allowance (included in facility rate)

For SNF:

  • PNA = $75.00 (vs Medicaid's $60; AABD adds $15); Unearned Disregard = $562.00

Key rule: SSI payments count as unearned income subject to the disregard. This is the core mechanism that creates the state supplement on top of SSI.

Living Arrangements

4 categories modeled via CtSspLivingArrangement enum:

  • COMMUNITY_ALONE -- own home/apartment, full housing cost
  • COMMUNITY_SHARED -- living with others, not in facility
  • BOARDING_HOME -- licensed boarding home / residential care home
  • SNF -- skilled nursing facility / Medicaid facility

Not Modeled (by design)

What Source Why Excluded
24-month transfer penalty CGS 17b-600; UPM 3025 Requires tracking asset transfers over time
Life care contract exception CGS 17b-602 Extremely rare edge case
Mental institution exclusion UPM 3015.05 Institutional status requires case-level data
No retroactive benefits UPM 1560.05 Application timing not modeled
New Horizons facility CGS 19a-507 Single specific facility
PASS deductions SSA 2011 Report Separate SSA program, requires individual plan data
IRWE deductions SSA 2011 Report Requires individual expense data
Emergency housing special need SSA 2011 Report Nonrecurring, max 60 days/year
Meals on Wheels / restaurant meals SSA 2011 Report Nonrecurring allowance
Nonrecurring special needs (moving, clothing) SSA 2011 Report One-time expenses
Spousal asset deeming UPM 4025.55 Complex deeming rules; uses SSI resource test as proxy
Liens and estate recovery UPM 7510.10 Post-death administrative process
LLR contribution (12%) UPM 7520.05 Relative income data not available
Rental diversion ($650/$400) DSS Standards Chart Payment routing mechanism, not benefit calculation
Blind work expenses (itemized) SSA 2011 Report Simplified; $85+1/2 disregard provides enhanced blind treatment
Income exclusions (Holocaust reparations, irregular gifts) UPM 5015.10.F Uncommon income types; SSI income sources already exclude most

Files

parameters/gov/states/ct/dss/ssp/          (11 files)
  eligibility/
    income_cap_rate.yaml              # 300% SSI FBR
    asset_limit/
      individual.yaml                 # $1,600
      couple.yaml                     # $2,400
  personal_needs_allowance.yaml       # By living arrangement (enum breakdown)
  personal_needs_allowance_married.yaml  # Community married override
  shelter_allowance.yaml              # By living arrangement (enum breakdown)
  disregard/
    unearned.yaml                     # By living arrangement (enum breakdown)
    earned/
      aged_disabled_initial.yaml      # $65
      blind_initial.yaml              # $85
      rate.yaml                       # 0.5 (half of remainder)
  special_needs/
    therapeutic_diet.yaml             # $36.20

variables/gov/states/ct/dss/ssp/          (16 files)
  ct_ssp.py                          # SPMUnit: sums person-level benefits
  ct_ssp_person.py                   # Person: max(0, need - countable_income)
  ct_ssp_living_arrangement.py       # Enum input variable
  ct_ssp_has_therapeutic_diet.py     # Bool input variable
  eligibility/
    ct_ssp_eligible_person.py        # Categorical + financial + income cap
    ct_ssp_categorically_eligible.py # SSI-eligible + blind child logic
    ct_ssp_income_eligible.py        # Gross income <= 300% SSI FBR
    ct_ssp_resource_eligible.py      # CT-specific asset limits
  income/
    ct_ssp_gross_income.py           # Earned + unearned (for income cap)
    ct_ssp_countable_income.py       # After disregards
    ct_ssp_unearned_income_disregard.py  # By living arrangement
    ct_ssp_earned_income_disregard.py    # $65+1/2 or $85+1/2
  payment/
    ct_ssp_need_standard.py          # Shelter + PNA + special needs
    ct_ssp_shelter_allowance.py      # $400/$200/$0 by arrangement
    ct_ssp_personal_needs_allowance.py   # By arrangement + marital status
    ct_ssp_special_needs.py          # Therapeutic diet

tests/policy/baseline/gov/states/ct/dss/ssp/  (12 files, 91 tests)
  ct_ssp_person.yaml                 # 6 person-level benefit tests
  integration.yaml                   # 13 end-to-end integration tests
  eligibility/
    ct_ssp_eligible_person.yaml      # 8 eligibility tests
    ct_ssp_income_eligible.yaml      # 6 income cap tests
    ct_ssp_resource_eligible.yaml    # 9 resource limit tests
  income/
    ct_ssp_countable_income.yaml     # 8 income calculation tests
    ct_ssp_earned_income_disregard.yaml  # 12 earned disregard tests
    ct_ssp_unearned_income_disregard.yaml # 4 unearned disregard tests
  payment/
    ct_ssp_need_standard.yaml        # 7 need standard tests
    ct_ssp_personal_needs_allowance.yaml # 7 PNA tests
    ct_ssp_shelter_allowance.yaml    # 9 shelter allowance tests
    ct_ssp_special_needs.yaml        # 2 special needs tests

Verification TODO

  • Verify payment amounts against DSS Program Standards Chart (3/1/2026)
  • Verify eligibility logic against CGS 17b-600 and UPM sections 3030, 4005
  • Verify amounts current as of 2022-2026
  • CI passes

Test plan

  • 91 tests pass (12 test files: eligibility, income, payment, person, integration)
  • CI passes

Known Issues / Follow-up Work

  • Historical parameter backdating (pre-2022 values) deferred to follow-up PR -- SSA 2005/2011 anchor data preserved in working_references.md
  • Boarding home benefit is simplified (PNA + disregard structure only; facility rate is individually determined per UPM 4520.10.C)

Generated with Claude Code

hua7450 and others added 2 commits March 25, 2026 22:41
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements Connecticut's State Supplement to the Aged, Blind or Disabled
(AABD) program per CGS 17b-600, administered by CT DSS.

Budget-based formula: Benefit = max(0, Total Need - Countable Income)
- 4 living arrangements (community alone/shared, boarding home, SNF)
- Income disregards vary by living arrangement and disability category
- CT-specific asset limits ($1,600/$2,400, lower than federal SSI)
- Historical parameter coverage from 2005-2026

Closes PolicyEngine#7880

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@codecov
Copy link

codecov bot commented Mar 26, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (ac35815) to head (455c493).
⚠️ Report is 23 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #7881    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            2        16    +14     
  Lines           32       219   +187     
==========================================
+ Hits            32       219   +187     
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.

hua7450 and others added 3 commits March 26, 2026 00:12
…ve #page=1 from single-page PDFs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Consolidate 17 parameter files → 11 using enum breakdowns by living arrangement
- Replace boolean breakdowns (caused warnings) with separate files + where() in variables
- Fix invalid portal.ct.gov/dss/common-elements URL in 4 variable files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@hua7450 hua7450 marked this pull request as ready for review March 26, 2026 21:32
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.

Implement Connecticut State Supplementary Payment (SSP)

1 participant