Skip to content

Implement Kentucky State Supplementary Payment#8019

Open
hua7450 wants to merge 10 commits intoPolicyEngine:mainfrom
hua7450:ky-ssp
Open

Implement Kentucky State Supplementary Payment#8019
hua7450 wants to merge 10 commits intoPolicyEngine:mainfrom
hua7450:ky-ssp

Conversation

@hua7450
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 commented Apr 16, 2026

Summary

Implements Kentucky's State Supplementary Payment (SSP) — a state-administered, state-funded optional supplement to federal SSI covering Personal Care Home (PCH), Community Integration Supplementation (CIS), Family Care Home (FCH), and Caretaker Services categories.

Closes #8018

Regulatory Authority

Program Overview

  • Administration: State-administered (Kentucky Cabinet for Health and Family Services, Division of Family Support).
  • Funding: State funds.
  • Covered categories (921 KAR 2:015 §4(1)(c)): Personal Care Home, Family Care Home, Community Integration Supplementation, Caretaker Services in a private residence.
  • Excluded: Medicaid/Title XIX nursing home residents are NOT supplemented by this program.

Eligibility

Requirement Source How Modeled
SSI categorical eligibility (ABD + resources + immigration) §4(1)(a) / §3(3) is_ssi_eligible
Income below state standard of need §4(1)(b) ssi_countable_income < ky_ssp_payment_standard
Residence in a qualifying category §4(1)(c) ky_ssp_category != NONE
Age ≥ 18 §4(1)(c)1–4 age >= 18
Kentucky residence Program statute defined_for = StateCode.KY

SSI receipt NOT required — §4(1)(b) accepts applicants whose SSI categorical criteria are met but whose income is above the federal FBR yet below the state standard (Group 2 pathway).

Benefit Amounts (MS 1200 page 1, effective 1/1/2026)

Category Claim Type Monthly Standard Annual
Personal Care Home (PCH) Individual $1,610 $19,320
Community Integration Supplementation (CIS) Individual $1,514 $18,168
Family Care Home (FCH) Individual $1,166 $13,992
Caretaker Services Individual $1,056 $12,672
Caretaker Services Individual w/ Ineligible Spouse $1,056 $12,672
Caretaker Services Eligible Couple (one receives care) $1,552 total (stored as $776/person) $18,624 total
Caretaker Services Eligible Couple (both receive care) $1,606 total (stored as $803/person) $19,272 total

Personal Needs Allowance (§9(3)–(4); informational, not deducted from benefit):

  • PCH residents: $60/mo
  • FCH residents: $40/mo

Couple treatment:

  • PCH / CIS / FCH: each spouse receives the individual standard (no reduced couple rate in §9(1)(a),(b),(d)).
  • Caretaker: couple rates stored per-person (= couple total / 2). Under SSI's joint couple equal-split, the per-person formula reproduces the §9(2)(b) "one-half of the deficit to each" outcome.

COLA: Standards updated by CHFS MS 1200 annually.

Not Modeled (by design)

What Source Why Excluded
Medicaid/Title XIX nursing home residents §4(1)(c) KY SSP explicitly limited to PCH, FCH, CIS, and Caretaker Services; nursing homes receive SSI $30 PNA federally, not a state supplement
"Private Residence with SMI" distinct from CIS §9(1)(d) Modeled as the CIS category (KY uses CIS as the administrative name for this standard)
Per-spouse distribution of Caretaker "Eligible Couple, One Receives Care" benefit OMVOLV example #6 Regulation pays full supplement to the care receiver only; model distributes equally across both eligible spouses. Household total matches regulation exactly.
Historical values prior to 2026-01-01 N/A Parameters explicitly zeroed before 2026 start date; can be backdated when historical CHFS manuals are located

Files

policyengine_us/parameters/gov/states/ky/dcbs/ssp/
├── payment_standard.yaml
└── personal_needs_allowance/
    ├── pch.yaml
    └── fch.yaml
policyengine_us/variables/gov/states/ky/dcbs/ssp/
├── ky_ssp.py
├── ky_ssp_care_receivers.py
├── ky_ssp_category.py
├── ky_ssp_claim_type.py
├── ky_ssp_eligible.py
├── ky_ssp_payment_standard.py
└── ky_ssp_personal_needs_allowance.py
policyengine_us/tests/policy/baseline/gov/states/ky/dcbs/ssp/
├── integration.yaml
├── ky_ssp.yaml
├── ky_ssp_claim_type.yaml
├── ky_ssp_eligible.yaml
├── ky_ssp_payment_standard.yaml
└── ky_ssp_personal_needs_allowance.yaml
policyengine_us/variables/household/income/spm_unit/spm_unit_benefits.py    # + ky_ssp in BENEFITS list
policyengine_us/parameters/gov/household/household_state_benefits.yaml      # + ky_ssp in 2023 and 2024 sections
policyengine_us/programs.yaml                                                # + KY entry under ssi_state_supplement

Verification TODO

Review-feedback fixes (latest push)

  • Changed ky_ssp_category and ky_ssp_care_receivers from entity = Household to entity = Person (a person lives in a facility, not a household).
  • Fixed PCH/FCH/CIS couple-standard calculation — removed erroneous / 2 that was halving couple benefits for categories with no reduced couple rate.
  • Stored CARETAKER couple rates per-person in the parameter file so the formula is uniform across all categories; removed marital_unit.sum / 2 branching in ky_ssp.py.
  • Added docstring and comments citing §4(1)(b) (Group 2 pathway), §4(1)(c) (covered categories; Medicaid facility exclusion), and §9(2) (couple treatment).
  • Cleaned up PNA parameter descriptions to follow standard template ("provides this amount...").
  • Rewrote integration tests to use real income sources (social_security, employment_income) rather than injected SSI intermediates, so the federal SSI → state SSP chain is exercised end-to-end.

Test plan

  • 13 unit-variable tests (claim_type, eligible, payment_standard, personal_needs_allowance, ky_ssp)
  • 12 integration tests with real income sources
  • CI passes

hua7450 added 2 commits April 16, 2026 14:04
Closes PolicyEngine#8018

Adds Kentucky's state-administered SSP under KRS 205.245 / 921 KAR 2:015:
- Four benefit categories: Personal Care Home (PCH $1,610), Community
  Integration Supplementation (CIS $1,514), Family Care Home (FCH $1,166),
  and Caretaker Services (individual $1,056, couple-one-care $1,552,
  couple-both-care $1,606)
- Formula: max(0, standard - income_excess) where income_excess derives
  from uncapped_ssi, matching Alaska SSP pattern
- 2026 rates only; historical backdating deferred to follow-up PR
- Reuses federal meets_ssi_resource_test ($2K/$3K limits match KY exactly)
- Personal Needs Allowance ($60 PCH / $40 FCH) stored as informational
  parameter; not deducted from gross SSP
- 58 YAML tests covering all categories, claim types, care_receivers, and
  edge cases (income boundaries, non-KY residents, asymmetric couples)

Registered in spm_unit_benefits and household_state_benefits.
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.45%. Comparing base (20705b0) to head (1e28272).
⚠️ Report is 15 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff             @@
##             main    #8019       +/-   ##
===========================================
+ Coverage   85.36%   95.45%   +10.08%     
===========================================
  Files           3        8        +5     
  Lines          41      132       +91     
  Branches        2        2               
===========================================
+ Hits           35      126       +91     
  Misses          6        6               
Flag Coverage Δ
unittests 95.45% <100.00%> (+10.08%) ⬆️

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 5 commits April 17, 2026 16:51
- Income formula now subtracts total countable income per 921 KAR 2:015 §8(2),
  not just income above the federal SSI FBR.
- Add age ≥ 18 requirement per §4(1)(c) to ky_ssp_eligible.
- Replace income-gate via uncapped_ssi>0 with §4(1)(b) check against the KY
  standard of need (federal FBR is below KY standards so the old gate
  wrongly excluded recipients with income between FBR and SOH).
- Fix KRS 205.245 URL (id=46358 returned KRS 18A.420; correct is id=7671).
- Fix 921 KAR section cites: "Section 7" → "Section 9", "9(3)", "9(4)".
- Fix CHFS Vol V page anchors: MS 1800 page 24→23, MS 2400 page 43→41.
- Add 2000-01-01: 0 sentinels to payment_standard and PNA parameters so
  microsimulation evaluates cleanly pre-2026 (fixes the
  "no field of name ONE" error in the full test suite).
- Update YAML tests: ky_ssp.yaml rewritten around ssi_countable_income;
  ky_ssp_eligible.yaml Cases 4, 8, 10 updated for new age and income
  semantics; integration.yaml Case 2 benefit corrected to $12,408.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ssi_claim_is_joint is true whenever both spouses are aged/blind/disabled
even if one fails the SSI resource or immigration test, so the previous
implementation:

- classified one-eligible/one-ABD-but-resource-ineligible couples as
  COUPLE_BOTH_ELIGIBLE, driving ky_ssp_payment_standard to the lower
  joint rate; and
- applied the §9(2)(b) "half the deficit to each" split, underpaying
  the eligible spouse and paying a positive benefit to the ineligible
  spouse.

921 KAR 2:015 §9(1)(c) reserves the couple rates for an "eligible
couple, both aged, blind, or having a disability" — i.e. both actually
SSI-eligible. §9(2)(a) likewise conditions the combined-income
treatment on "if both are eligible". Gate both the claim-type and the
couple-split on marital_unit.sum(is_ssi_eligible) == 2 so couples
collapse to the individual path unless both spouses are actually
SSI-eligible.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…into ky-ssp

# Conflicts:
#	policyengine_us/parameters/gov/household/household_state_benefits.yaml
#	policyengine_us/variables/household/income/spm_unit/spm_unit_benefits.py
…pathway

Entity level fixes (checklist item 2):
- Changed ky_ssp_category and ky_ssp_care_receivers from Household to
  Person entity. Updated all readers (payment_standard, personal_needs_
  allowance, eligible) to use person(...) instead of person.household(...).
  Migrated all test inputs from households: to people:.

Payment standard / couple rate bug fix:
- CARETAKER couple totals ($1,552 one-care, $1,606 both-care per §9(1)(c))
  are now stored per-person ($776, $803) in payment_standard.yaml so every
  category follows one uniform formula.
- Removed the divide-by-2 in ky_ssp_payment_standard.py that was halving
  PCH/FCH/CIS couple benefits (those categories have no reduced couple
  rate per §9(1)(a),(b),(d)).
- Removed the marital_unit.sum / 2 branching in ky_ssp.py; under SSI's
  joint couple equal-split (ssi_marital_earned_income /
  ssi_marital_unearned_income), per-person supplements naturally
  reproduce the §9(2)(b) "one-half of the deficit to each" outcome.

Documentation improvements:
- Added docstring to ky_ssp clarifying covered vs excluded living
  arrangements (Title XIX nursing homes excluded per §4(1)(c)) and the
  Group 2 pathway (§4(1)(b) allows income-eligible non-SSI recipients).
- Documented the per-person approximation for the Caretaker "Eligible
  Couple, One Receives Care" case (household total matches OMVOLV
  example #6; per-spouse distribution is equal rather than all-to-one).
- Added comment in ky_ssp_eligible explaining why no ssi > 0 check is
  needed (§4(1)(b) — Group 2 pathway).

Parameter descriptions:
- PCH/FCH personal needs allowance descriptions now follow the standard
  "Kentucky provides this amount..." template; removed redundant
  "monthly" (already in period: month metadata).

Integration tests rewritten with real income sources:
- Replaced direct is_ssi_eligible / ssi_countable_income injection with
  real inputs (social_security, employment_income).
- New cases verify the full federal SSI -> state SSP chain end-to-end:
  SSI recipient with SS income, Group 2 non-SSI recipient, earnings
  with $65 + 50% exclusion, asymmetric couple, Caretaker couple both
  care, Caretaker couple one care, minor ineligibility, non-KY resident,
  NONE category.

programs.yaml:
- Added Kentucky SSP stub under ssi_state_supplement state_implementations.

All values verified against CHFS MS 1200 (R. 3/9/26, OMTL-690) page 1
and 921 KAR 2:015 §4, §8, §9.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ky_ssp_claim_type: §9(1)(c) couple rates apply to an "eligible couple"
— both spouses must qualify for SSP itself (SSI + age ≥ 18 + qualifying
living arrangement), not merely for SSI. Previously, a CARETAKER spouse
with an SSI-eligible NONE-category spouse was treated as a COUPLE_BOTH_
ELIGIBLE caretaker couple and received the reduced per-person rate.

ky_ssp_personal_needs_allowance: §9(3)/(4) define the PNA as an amount
retained out of the SSP payment to the facility. If no SSP is paid
(e.g., ineligible minor PCH resident), there is nothing to retain — zero
out the PNA when ky_ssp_eligible is false.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hua7450 hua7450 marked this pull request as ready for review April 22, 2026 17:41
@hua7450 hua7450 requested a review from PavelMakarchuk April 23, 2026 01:44
hua7450 and others added 3 commits April 23, 2026 00:10
All seven KY SSP variables (ky_ssp, ky_ssp_eligible, ky_ssp_payment_standard,
ky_ssp_personal_needs_allowance, ky_ssp_claim_type, ky_ssp_category,
ky_ssp_care_receivers) move from YEAR to MONTH period, aligning with the
convention used in AL, CT, DC OSSP, DE, GA, HI, ID AABD, IL AABD, and IN SSP.
This matches the regulation's natural units (monthly payment standards, monthly
SSI income) and removes the need for `* MONTHS_IN_YEAR` multiplication when
reading federal SSI MONTH variables.

Also replaces `person("age", period) >= 18` with the existing `is_adult`
variable in ky_ssp_claim_type and ky_ssp_eligible.

Tests updated to `period: 2026-01` with monthly expected values. YEAR-period
input variables (ssi_countable_income) stay as annual inputs; MONTH-period
inputs (ky_ssp_payment_standard, ky_ssp_eligible) use monthly values.

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 Kentucky State Supplementary Payment (SSP)

1 participant