Skip to content

Implement Missouri State Supplementary Payment (SSP)#8231

Draft
hua7450 wants to merge 5 commits intoPolicyEngine:mainfrom
hua7450:mo-ssp
Draft

Implement Missouri State Supplementary Payment (SSP)#8231
hua7450 wants to merge 5 commits intoPolicyEngine:mainfrom
hua7450:mo-ssp

Conversation

@hua7450
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 commented May 5, 2026

Summary

Implements Missouri's State Supplementary Payment (SSP) — Supplemental Aid to the Blind (SAB) and Supplemental Nursing Care (SNC) cash supplements paid by DSS Family Support Division to SSI recipients in Missouri.

Closes #8230

Regulatory Authority

Program Overview

  • Administration: State-administered (DSS Family Support Division)
  • Funding: State funds
  • Current caseload: ~12,000 SAB + ~3,500 SNC recipients (Missouri DSS, FY2024 — approximate, from secondary sources)

Eligibility

Requirement Source How Modeled
Must actually receive SSI RSMo § 208.030.5 ssi > 0 (per CLAUDE.md rule #2 — already implies categorical/resource/income/takeup)
Must reside in Missouri State program defined_for = StateCode.MO
Age 18+ for SAB / 21+ for SNC RSMo § 208.030.5 mo_ssp_age_eligible checks living arrangement and applies appropriate threshold
Living arrangement matches a covered category RSMo § 208.030.4-5 mo_ssp_living_arrangement enum input + mo_ssp_category_eligible
Title XIX (Medicaid-paid) facility residents excluded RSMo § 208.030.5 Implicit: no enum value for Medicaid facility — those residents map to NONE
SAB non-SSI income ≤ $1,073/month (eff 2026-01-01) MO DSS Appendix J mo_ssp_eligible reads sab.income_limit, applies only when SAB pathway
Closed 1973 hold-harmless cohort RSMo § 208.030.1-3 Not modeled (closed cohort — no new entrants)
SNC physician medical-need determination 13 CSR 40-2.130(6) Not modeled (no PolicyEngine input variable)

Benefit Amounts (MO DSS MHABD Appendix J 04/2026)

SAB (Supplemental Aid to the Blind)

SAB grant formula = min( max(0, BP_rate − federal_SSI), max_grant_cap )

Fiscal Year BP rate (consolidated standard) Max grant cap (appropriations) Source
FY2024 (eff. 2023-07-01) $789/mo $654/mo MO DSS Appendix J + FY2024 appropriations
FY2025 (eff. 2024-07-01) $828/mo $698/mo MO DSS Appendix J + FY2025 appropriations
FY2026 (eff. 2025-07-01) $917/mo $762/mo MO DSS Appendix J + FY2026 appropriations

SNC (Supplemental Nursing Care) — frozen since 2000-07-01

Facility Type Max Monthly Grant Source
Residential Care Facility I (RCF I) $156 RSMo § 208.030.5; MO DSS Appendix J
Residential Care Facility II / Assisted Living Facility (RCF II / ALF) $292 RSMo § 208.030.5; MO DSS Appendix J
Skilled Nursing/Intermediate Care non-Medicaid (SNF/ICF) $390 RSMo § 208.030.5; MO DSS Appendix J

Personal Needs Allowance (effective 2015-01-01)

  • $50/month additional for SNF/ICF non-Medicaid residents

Couple treatment: Each spouse's SAB/SNC is computed independently based on their own SSI and living arrangement (per-person calculation). A couple where both spouses are eligible for the same SNC facility tier receives 2× the individual rate at the SPMUnit level.

COLA: SAB adjusts annually via state appropriations. SNC frozen since 2000-07-01. PNA frozen since 2015-01-01.

Not Modeled (by design)

What Source Why Excluded
Closed 1973 hold-harmless cohort RSMo § 208.030.1-3 Closed cohort — post-1973 entrants ineligible; no new recipients
EIL-based "most beneficial of two methods" SAB calc DSS Manual 0715.010.10 Only relevant for closed 1973 cohort already excluded
SAB $1 minimum payment when remainder < $0.50 13 CSR 40-2.130(2)(C) Near-zero population impact
PNA exclusion when recipient receives PNA from another program RSMo § 208.030.5; 13 CSR 40-2.130(8) No PolicyEngine input variable for "receives PNA from another program"
SNC physician determination of medical need 13 CSR 40-2.130(6) No PolicyEngine input for medical-need determination
Separate blind resource limits ($2,000 indiv / $4,000 couple) SSA 2011 report ssi > 0 already enforces stricter federal SSI resource limits

Files

policyengine_us/parameters/gov/states/mo/dss/ssp/
├── age_threshold/{sab,snc}.yaml
├── sab/{consolidated_standard,max_grant_cap,income_limit}.yaml
└── snc/
    ├── max_grant/{rcf_level_i,rcf_level_ii_or_alf,snf_or_icf_non_medicaid}.yaml
    └── personal_needs_allowance.yaml

policyengine_us/variables/gov/states/mo/dss/ssp/
├── mo_ssp.py                          # Main benefit (Person, MONTH, USD)
├── mo_ssp_eligible.py                 # Eligibility
├── mo_ssp_living_arrangement.py       # Enum input
├── mo_ssp_personal_needs_allowance.py # PNA add-on
└── eligibility/{mo_ssp_age_eligible,mo_ssp_category_eligible}.py

policyengine_us/tests/policy/baseline/gov/states/mo/dss/ssp/
├── mo_ssp.yaml                        # 21 cases
├── mo_ssp_eligible.yaml               # 17 cases
├── mo_ssp_personal_needs_allowance.yaml  # 9 cases
└── integration.yaml                   # 8 scenarios (55 tests total)

Plus registry updates in:

  • policyengine_us/variables/household/income/spm_unit/spm_unit_benefits.py
  • policyengine_us/parameters/gov/household/household_state_benefits.yaml
  • policyengine_us/programs.yaml

Verification TODO

  • Verify SAB max_grant_cap ($654/$698/$762) against Missouri's FY2024-FY2026 appropriations bills (currently sourced from user-provided FSD/DMH guidance summary; primary appropriations URL not yet identified)
  • Verify SAB $1 minimum payment exclusion is acceptable (REQ-009 not modeled)
  • Verify pre-FY2024 historical SAB amounts for backdating (current implementation starts at 2023-07-01 with $0 sentinel before that; SSA 2011 report cited $510)
  • CI passes

Test plan

  • All 55 YAML tests pass locally
  • Coverage report: 23/23 in-scope requirements covered, 0 missing
  • No hardcoded values in formulas (all reference parameters)
  • No is_ssi_eligible & ssi > 0 redundancy (uses ssi > 0 only per CLAUDE.md rule Run black formatting on docs #2)
  • CI passes
  • Microsimulation test (in benefits aggregator chain)

hua7450 and others added 2 commits May 5, 2026 01:04
Implements Missouri's Optional State Supplementation under DSS Family Support
Division (closes PolicyEngine#8230):

- Supplemental Aid to the Blind (SAB) — RSMo § 209.040, with grant
  formula: min(max(0, BP_rate - federal_SSI), max_grant_cap)
- Supplemental Nursing Care (SNC) — RSMo § 208.030, four facility tiers
  (RCF I, RCF II/ALF, SNF non-Medicaid)
- $50 SNF Personal Needs Allowance (effective 2015-01-01)
- Three-FY parameter coverage (FY2024/FY2025/FY2026) sourced from MO DSS
  MHABD Appendix J + appropriations
- Registered in spm_unit_benefits, household_state_benefits, programs.yaml

55 YAML tests (4 files): unit tests + 8-scenario integration suite.

Closed-cohort logic (1973 hold-harmless, EIL-based "most beneficial of
two methods") is intentionally not modeled.

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

codecov Bot commented May 5, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.78%. Comparing base (623a65c) to head (42c6d24).
⚠️ Report is 113 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff             @@
##              main    #8231      +/-   ##
===========================================
- Coverage   100.00%   94.78%   -5.22%     
===========================================
  Files           12        7       -5     
  Lines          173      115      -58     
  Branches         4        2       -2     
===========================================
- Hits           173      109      -64     
- Misses           0        6       +6     
Flag Coverage Δ
unittests 94.78% <100.00%> (-5.22%) ⬇️

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 May 5, 2026 02:52
- Fix PDF page anchor for SAB params (#page=4 → #page=2)
- Fix wrong RSMo citation (209.040 is Blind Pension, not SAB; use 208.030(4))
- Add missing SNC tier INTERMEDIATE_OR_SKILLED_NO_LOC ($292, same as RCF II/ALF)
- Replace manually computed non_ssi_income with existing ssi_countable_income
- Fix invalid 0000-01-01 dates in age_threshold params (use 1900-01-01)
- Replace period: eternity with period: year per user preference
- Add test Case 22 for new SNC enum tier

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Fix PNA scope bug: $50 now applies to ALL SNC participants (not SNF only)
  per Appendix J page 4 "paid to all SNC participants"
- Fix consolidated_standard / max_grant_cap citation mismatch (values are
  not in Appendix J — cite RSMo 209.040, DSS Manual 0715.010.10, and FY
  appropriations bills instead)
- Fix age_threshold/sab.yaml RSMo cite (208.010 → 209.030 for "Every
  adult blind person, eighteen years of age or over...")
- Add subsection precision to all SNC param refs (208.030 → 208.030(5))
- Single-sentence PNA description per parameter-patterns skill
- Rename non_ssi_income to countable_income (now uses ssi_countable_income)
- Update affected tests for PNA scope expansion (RCF I/II/ALF/INT_NO_LOC
  all now include $50 PNA)
- Add 2 new PNA test cases for RCF II/ALF and INTERMEDIATE_OR_SKILLED_NO_LOC

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace inline TODO comment + dead URL with general HB 11 appropriations
list URL. The PR description tracks the per-FY appropriations citations
TODO for follow-up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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 Missouri State Supplementary Payment (SSP)

1 participant