Skip to content

Implement Mississippi Child Care Payment Program (CCPP/CCAP)#8648

Draft
hua7450 wants to merge 7 commits into
PolicyEngine:mainfrom
hua7450:ms-ccap
Draft

Implement Mississippi Child Care Payment Program (CCPP/CCAP)#8648
hua7450 wants to merge 7 commits into
PolicyEngine:mainfrom
hua7450:ms-ccap

Conversation

@hua7450

@hua7450 hua7450 commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

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

  • Administration: State-administered (MDHS / DECCD), federally funded through the Child Care and Development Fund (CCDF), 45 CFR Part 98
  • Subsidy type: Provider-reimbursement voucher — pays the lesser of the provider's charge and a maximum weekly rate, net of the family co-payment
  • Legal authority: Miss. Code Ann. § 43-1-2(4), § 43-1-4; Mississippi Administrative Code Title 18, Part 17

Eligibility

Requirement Source How Modeled
Child under age 13 (under 19 if special-needs) Manual Rule 5.2 ms_ccpp_eligible_child: where(is_disabled, age < 19, age < 13); params eligibility/child_age_limit.yaml (13), eligibility/special_needs_child_age_limit.yaml (19)
Family income ≤ 85% SMI Manual Rule 5.2; Copay Fee Scale Table 3 ms_ccpp_income_eligible: countable_income <= hhs_smi * 0.85; param income/smi_rate.yaml (0.85). Uses the federal hhs_smi % ratio, not transcribed SMI dollars
Mississippi residency Manual Rule 5.2 #4 defined_for = StateCode.MS chain on ms_ccpp_eligible
Parent/caretaker activity ≥ 25 hr/wk work OR full-time school/training Manual Rule 5.9 ms_ccpp_activity_eligible: weekly_hours_worked_before_lsr >= 25 | is_full_time_student; param eligibility/activity_hours.yaml (25)
Activity requirement waived for SSI-disabled parent Manual Rule 5.11 ms_ccpp_activity_eligible adds | is_ssi_disabled for head/spouse
Assets ≤ $1,000,000 Manual Rule 5.2.B Federal is_ccdf_asset_eligible (reused; no state asset parameter)
Child citizen or qualified non-citizen (no parent citizenship bar) Manual; State Plan Federal is_ccdf_immigration_eligible_child (reused)
Categorical bypass of the income/activity tests Manual Rule 3.1 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 in income/countable_income/sources.yaml:

  • Countable: employment_income, self_employment_income, sstb_self_employment_income, farm_operations_income, social_security (parent and child), ssi (parent and child — listed separately from the social_security umbrella), unemployment_compensation, workers_compensation, alimony_income, veterans_benefits, pension_income, rental_income, dividend_income, interest_income, capital_gains.
  • Non-countable (omitted from the positive list, per the manual's ~21-item exclusion list): child support received, EITC, LIHEAP/energy assistance, Pell/student aid, earned income of students under 18, foster-care board payments, combat pay, and others.

social_security_disability is deliberately not listed (the social_security umbrella 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), params copay/rate/very_low_income.yaml and copay/rate/low_income.yaml:

SMI band Fam 2 Fam 3 Fam 4 Fam 5 Fam 6+
≤ 50% SMI 5.5% 5% 4.5% 4% 3.5%
50–85% SMI 6.5% 6% 5.5% 5% 4.5%
  • The band split is at 50% SMI (income/very_low_income_smi_rate.yaml = 0.50); family size caps at the "6 or more" row (copay/max_family_size.yaml = 6).
  • $0 co-payment for families at or below the federal poverty line (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.
  • $10 cap (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_disabled head/spouse), and special-needs children (is_disabled).
  • Income is floored at $0 before the percentage is applied (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:

Age band FT 2023-07 FT 2024-10 PT (both eras)
Infant $152 / $125 $167 / $140 $90 / $80
Toddler $145 / $120 $160 / $135 $90 / $75
Preschool $135 / $120 $150 / $125 $75 / $75
School-age $130 / $110 $130 / $120 $80 / $74
Special Needs (all ages) $145 / $145 carries era-1 $87 / $87

Registered family-home (rates/family_home.yaml) — weekly, metro / non-metro:

Age band FT 2023-07 FT 2024-10 PT (both eras)
Infant $115 / $94 $140 / $128 $68 / $60
Toddler $120 / $98 $131 / $125 $75 / $61
Preschool $120 / $106 $125 / $120 $60 / $60
School-age $95 / $79 $115 / $95 $58 / $53
Special Needs (all ages) $125 / $125 carries era-1 $63 / $63

The center and family-home special-needs rate sets live in rates/special_needs_center.yaml and rates/special_needs_home.yaml.

  • Age bands (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.
  • Full-time vs part-time (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.
  • In-home care: special-needs only (child's own home, Special Needs In-Home Certificate, ≤3 children, served to age 19). No distinct in-home rate table exists, so in-home children are paid the home-based special-needs rate.
  • Metro / non-metro (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 is min(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 via WEEKS_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-level ms_child_care_subsidies (YEAR) aggregates ms_ccpp and feeds the federal child_care_subsidies.

Requirements coverage

32 of 32 in-scope requirements are implemented; 5 are excluded by design (see below). Selected coverage:

Area Requirement Where
Eligibility Child age, income ≤85% SMI, residency, activity, assets, immigration eligibility/ variables + params
Categorical TANF / homeless / protective-services bypass ms_ccpp_categorically_eligible
Income Gross-income test, 15-source positive list ms_ccpp_countable_income, sources.yaml
Co-payment %-of-income sliding scale, $0 / $10 categories ms_ccpp_copay, copay/ params
Rates Provider × 4 ages × FT/PT × metro/non-metro + special-needs ms_ccpp_maximum_weekly_rate, rates/ params
Benefit min(charge, rate) − copay, floored at $0 ms_ccpp
Registry CCDF program list + programs.yaml 2 registry edits

Not modeled (by design)

What Source Why excluded
Post-July-2025 rate increase (3rd era) News reports The ~July-2025 increase (≈$185 metro infant) sits behind the eLedger/SECAC portal and its full grid is not public; to be added in a follow-up
FY2025-2027 part-time & special-needs rates FY2025-2027 State Plan The State Plan publishes full-time base rates only; the adopted part-time/special-needs dollars aren't public, so the 2024-10 era carries the July-2023 part-time/special-needs values forward
Child-support cooperation Manual (2023 & 2025) Confirmed removed from the manual — not an eligibility gate
$50 annual registration fee Manual Rule, working notes Paid by DECCD, not the family
Priority tiers / waitlist ordering MDHS eligibility page Affects waitlist ordering, not benefit amount (the 50% SMI threshold is still used for the copay band split)
TCC / Healthy Families MS / teen-parent categorical pathways Manual Rule 3.1 No corresponding PolicyEngine input — not tracked at the moment
Facility location for metro/non-metro split Manual Rule 8.1 PolicyEngine doesn't track the child care facility's location; the household's county is used as a proxy

Verification TODO

Test plan

  • 88 tests pass locally (policyengine-core test policyengine_us/tests/policy/baseline/gov/states/ms/dhs/ccpp/ -c policyengine_us)
  • CI passes

Files

New program files under gov/states/ms/dhs/ccpp/ (18 parameters, 14 variables, 13 test files) plus 2 registry edits:

policyengine_us/parameters/gov/states/ms/dhs/ccpp/
  age_group/age.yaml
  copay/fpg_exempt_rate.yaml
  copay/max_family_size.yaml
  copay/minimum_fee_categories_cap.yaml
  copay/rate/low_income.yaml
  copay/rate/very_low_income.yaml
  eligibility/activity_hours.yaml
  eligibility/child_age_limit.yaml
  eligibility/special_needs_child_age_limit.yaml
  geography/metro_counties.yaml
  income/countable_income/sources.yaml
  income/smi_rate.yaml
  income/very_low_income_smi_rate.yaml
  rates/center.yaml
  rates/family_home.yaml
  rates/special_needs_center.yaml
  rates/special_needs_home.yaml
  time_category/hours.yaml

policyengine_us/variables/gov/states/ms/dhs/ccpp/
  ms_child_care_subsidies.py
  ms_ccpp.py
  ms_ccpp_age_group.py
  ms_ccpp_countable_income.py
  ms_ccpp_facility_location.py
  ms_ccpp_maximum_weekly_rate.py
  ms_ccpp_provider_type.py
  ms_ccpp_time_category.py
  copay/ms_ccpp_copay.py
  eligibility/ms_ccpp_eligible.py
  eligibility/ms_ccpp_eligible_child.py
  eligibility/ms_ccpp_income_eligible.py
  eligibility/ms_ccpp_activity_eligible.py
  eligibility/ms_ccpp_categorically_eligible.py

policyengine_us/tests/policy/baseline/gov/states/ms/dhs/ccpp/
  integration.yaml
  ms_ccpp.yaml
  ms_ccpp_age_group.yaml
  ms_ccpp_countable_income.yaml
  ms_ccpp_facility_location.yaml
  ms_ccpp_maximum_weekly_rate.yaml
  ms_ccpp_time_category.yaml
  copay/ms_ccpp_copay.yaml
  eligibility/ms_ccpp_eligible.yaml
  eligibility/ms_ccpp_eligible_child.yaml
  eligibility/ms_ccpp_income_eligible.yaml
  eligibility/ms_ccpp_activity_eligible.yaml
  eligibility/ms_ccpp_categorically_eligible.yaml

Registry edits:

  • policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml — adds ms_child_care_subsidies to the 2021-01-01 list
  • policyengine_us/programs.yaml — adds the MS CCDF state_implementations entry and MS to the CCDF coverage line

Changelog: changelog.d/ms-ccap.added.md

hua7450 and others added 3 commits June 16, 2026 09:30
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

codecov Bot commented Jun 16, 2026

Copy link
Copy Markdown

Codecov Report

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

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     
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 Harness.
📢 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 4 commits June 16, 2026 13:13
…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>
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 Mississippi Child Care Payment Program (CCPP/CCAP)

1 participant