Implement Kentucky State Supplementary Payment#8019
Open
hua7450 wants to merge 10 commits intoPolicyEngine:mainfrom
Open
Implement Kentucky State Supplementary Payment#8019hua7450 wants to merge 10 commits intoPolicyEngine:mainfrom
hua7450 wants to merge 10 commits intoPolicyEngine:mainfrom
Conversation
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 Report✅ All modified and coverable lines are covered by tests. 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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
- 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>
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
Eligibility
is_ssi_eligiblessi_countable_income < ky_ssp_payment_standardky_ssp_category != NONEage >= 18defined_for = StateCode.KYSSI 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)
Personal Needs Allowance (§9(3)–(4); informational, not deducted from benefit):
Couple treatment:
COLA: Standards updated by CHFS MS 1200 annually.
Not Modeled (by design)
Files
Verification TODO
openfisca-data#7Review-feedback fixes (latest push)
ky_ssp_categoryandky_ssp_care_receiversfromentity = Householdtoentity = Person(a person lives in a facility, not a household)./ 2that was halving couple benefits for categories with no reduced couple rate.marital_unit.sum / 2branching inky_ssp.py.social_security,employment_income) rather than injected SSI intermediates, so the federal SSI → state SSP chain is exercised end-to-end.Test plan