Implement Mississippi Child Care Payment Program (CCPP/CCAP)#8648
Draft
hua7450 wants to merge 7 commits into
Draft
Implement Mississippi Child Care Payment Program (CCPP/CCAP)#8648hua7450 wants to merge 7 commits into
hua7450 wants to merge 7 commits into
Conversation
Placeholder changelog fragment to start the ms-ccap branch. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8648 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 1 14 +13
Lines 23 242 +219
==========================================
+ Hits 23 242 +219
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…eferences Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-document) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ly-2023 schedule Center and family-home full-time rates now carry a second effective-dated entry from the FY2025-2027 CCDF State Plan (most-populous region = metro, lowest region = non-metro). Part-time and special-needs retain the prior-era values (the State Plan publishes full-time base rates only). Integration tests split into era-1 (2024-01) and era-2 (2025-01) cases. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Fee Scale Table 2 The up-to-50%-SMI per-size copay rates (5.5/5/4.5/4/3.5%) are published directly in the Copay Fee Scale 'Table 2: Family Co-Pay Rates', not merely derived from the 5.5% cap. Co-Authored-By: Claude Opus 4.8 (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 Mississippi's Child Care Payment Program (CCPP) — the state's CCDF-funded child care subsidy, administered by the Mississippi Department of Human Services (MDHS) through the Division of Early Childhood Care and Development (DECCD). The program reimburses providers for the cost of care for eligible low-income working families, net of a sliding-scale family co-payment.
Closes #8647
Regulatory Authority
Program Overview
Eligibility
ms_ccpp_eligible_child:where(is_disabled, age < 19, age < 13); paramseligibility/child_age_limit.yaml(13),eligibility/special_needs_child_age_limit.yaml(19)ms_ccpp_income_eligible:countable_income <= hhs_smi * 0.85; paramincome/smi_rate.yaml(0.85). Uses the federalhhs_smi% ratio, not transcribed SMI dollarsdefined_for = StateCode.MSchain onms_ccpp_eligiblems_ccpp_activity_eligible:weekly_hours_worked_before_lsr >= 25 | is_full_time_student; parameligibility/activity_hours.yaml(25)ms_ccpp_activity_eligibleadds| is_ssi_disabledfor head/spouseis_ccdf_asset_eligible(reused; no state asset parameter)is_ccdf_immigration_eligible_child(reused)ms_ccpp_categorically_eligible:is_tanf_enrolled | is_homeless | receives_or_needs_protective_services(eligible-child and asset tests still apply)Income
Gross-income tested with no deductions (Manual Rule 5.9).
ms_ccpp_countable_income(SPMUnit, MONTH) sums a positive list of 15 sources inincome/countable_income/sources.yaml:employment_income,self_employment_income,sstb_self_employment_income,farm_operations_income,social_security(parent and child),ssi(parent and child — listed separately from thesocial_securityumbrella),unemployment_compensation,workers_compensation,alimony_income,veterans_benefits,pension_income,rental_income,dividend_income,interest_income,capital_gains.social_security_disabilityis deliberately not listed (thesocial_securityumbrella already adds it). Unemployment compensation is counted only at redetermination in the manual; modeled as always-countable, with the simplification documented in the parameter.Co-payment (sliding fee)
ms_ccpp_copay(SPMUnit, MONTH) computes the family co-payment as a percentage of gross income by family size × SMI band (Copay Fee Scale, effective 2021-11-01), paramscopay/rate/very_low_income.yamlandcopay/rate/low_income.yaml:income/very_low_income_smi_rate.yaml= 0.50); family size caps at the "6 or more" row (copay/max_family_size.yaml= 6).copay/fpg_exempt_rate.yaml= 1), TANF recipients, and homeless families with no countable income. This is a genuine $0, not a sentinel floor row.copay/minimum_fee_categories_cap.yaml) for minimum-fee categories with income above the FPL. Of the manual's six categories, only the three that PolicyEngine can track fire: protective-services children (receives_or_needs_protective_services), SSI-disabled parents (is_ssi_disabledhead/spouse), and special-needs children (is_disabled).max_(countable_income, 0)) so negative self-employment income cannot distort the co-payment.Provider rates (two effective-dated eras)
This is the most nuanced part of the implementation, so the provenance is spelled out explicitly. Rates are weekly, by provider type (center / family-home) × 4 age bands × full-time/part-time × metro/non-metro, plus a flat Special Needs (all ages) rate per provider type. All values vision-verified against the source PDFs.
The full-time base rates carry two consecutive effective-dated eras (sequential, not conflicting — a 2024 calculation uses the first, a late-2024-onward calculation uses the second):
2023-07-01— "Current CCPP Rates" from the 2024 Market Rate Survey Table 1 (licensed center, p.9) and Table 2 (registered family-home, p.10) — the operative paid rates of that era (not the survey's 75th-percentile recommendation tables).2024-10-01— FY2025-2027 CCDF State Plan adopted full-time base rates (§4.3.2, pp.59-60; effective date §4.3.1(b) p.57). The State Plan reports rates by "most populous region" (→ metro slot, = the statewide 75th-percentile) and "lowest region" (→ non-metro slot).The FY2025-2027 State Plan publishes full-time base rates only, so part-time and special-needs retain the era-1 values for the 2024-10 era (the adopted part-time/special-needs dollars are not public — only the copay fee scale is).
Licensed center (
rates/center.yaml) — weekly, metro / non-metro:Registered family-home (
rates/family_home.yaml) — weekly, metro / non-metro:The center and family-home special-needs rate sets live in
rates/special_needs_center.yamlandrates/special_needs_home.yaml.ms_ccpp_age_group): 4 bands from the manual definitions — Infant (<1 yr, Add "personal_income" as a layer to parameters/tax/ #49), Toddler (12–35 months, Add ItemDed #87), Preschool (3 yr to kindergarten, Integrate data package #66), School-age (≥5 yr, Shelter deduction SNAP parameter #74). The survey's separate 2-year-old band collapses into the manual's single Toddler band.ms_ccpp_time_category): part-time = care for fewer than 6 hours of a 24-hour day; full-time = ≥6 hr/day (manual def. OpenFisca conventions #44/Developer meeting agenda 2021-08-28 #65). Under the operative schedule PT < FT in every cell, so no part-time cap is needed.ms_ccpp_facility_location): the schedule varies by facility location, which PolicyEngine does not track, so the household's county is used as a proxy. The 17 metro counties (geography/metro_counties.yaml) are the Mississippi counties in an OMB February-2013 MSA (Jackson, Gulfport-Biloxi-Pascagoula, Hattiesburg, and the Mississippi portion of Memphis), matching the 2013 NCHS Urban-Rural scheme the survey uses.Benefit
ms_ccpp(SPMUnit, MONTH): per child, the subsidy ismin(provider charge, applicable maximum weekly rate × 52/12) − family copay, floored at $0. Per-child weekly maximum rates (ms_ccpp_maximum_weekly_rate) are summed across children, converted to monthly viaWEEKS_IN_YEAR / MONTHS_IN_YEAR, capped at the provider charge (spm_unit_pre_subsidy_childcare_expenses), and reduced by the family co-payment. A child not actually in care (childcare_hours_per_week≤ 0) draws no rate. The SPMUnit-levelms_child_care_subsidies(YEAR) aggregatesms_ccppand feeds the federalchild_care_subsidies.Requirements coverage
32 of 32 in-scope requirements are implemented; 5 are excluded by design (see below). Selected coverage:
eligibility/variables + paramsms_ccpp_categorically_eligiblems_ccpp_countable_income,sources.yamlms_ccpp_copay,copay/paramsms_ccpp_maximum_weekly_rate,rates/paramsms_ccppprograms.yamlNot modeled (by design)
Verification TODO
Test plan
policyengine-core test policyengine_us/tests/policy/baseline/gov/states/ms/dhs/ccpp/ -c policyengine_us)Files
New program files under
gov/states/ms/dhs/ccpp/(18 parameters, 14 variables, 13 test files) plus 2 registry edits:Registry edits:
policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml— addsms_child_care_subsidiesto the 2021-01-01 listpolicyengine_us/programs.yaml— adds the MS CCDFstate_implementationsentry and MS to the CCDF coverage lineChangelog:
changelog.d/ms-ccap.added.md