Implement Kentucky Child Care Assistance Program (CCAP)#8620
Open
hua7450 wants to merge 9 commits into
Open
Conversation
Add changelog fragment for the Kentucky Child Care Assistance Program (CCAP). Closes PolicyEngine#8619. Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8620 +/- ##
============================================
+ Coverage 77.77% 100.00% +22.22%
============================================
Files 1 14 +13
Lines 9 265 +256
============================================
+ Hits 7 265 +258
+ Misses 2 0 -2
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:
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Protection and Permanency pathway (922 KAR 2:160 Section 5) covers children receiving child protective or preventive services, not only foster placements. Combine the existing receives_or_needs_protective_services input with is_in_foster_care, matching the federal CCDF reason-for-care check and the PA/NJ/DE/SC/AL/VT child care implementations. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Covers approved activities not modeled individually (SNAP E&T, education/ job training, job search, incapacitated parent, teen-parent education), matching the fallback pattern in AK/AL/PA/NJ/DE/VT/VA/AR child care programs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tucky concept DCC-300 lists per-county rates with no region structure; the 120 county rows take only 10 distinct rate signatures, which PolicyEngine groups as rate regions. The previous descriptions wrongly attributed the grouping to Kentucky. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
922 KAR 2:160 Section 8(5)(a) deducts actual, legally obligated child support paid to a party outside the residence; the self-employment operating-cost deduction in Section 8(5)(b) is inherent in self_employment_income. Follows the AK CCAP pattern. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The implementation previously encoded the superseded 5-31-2019 edition. Changes effective 2024-11-18 (2019 values retained for earlier periods): - Copay restructured to the CCAP Daily Co-Payment Chart: income band x household size (household-of-2 fee, -$1 per additional member with a $0 floor, +$1 per full $300 over $8,199.99), via a dated formula - Mandatory P&P copay waiver (Section 5(3): "shall waive", was "may") - Special-care supplement $1 -> $5 (Section 10(3)) - Documented as not modeled: Section 4(4) child-care-worker income exclusion, Section 9(6) six-month transitional period - Pre-2024 tests re-dated to 2024-01; new 2025 cases cover the new chart, escalation, size floor, and the P&P waiver Intermediate editions (12-15-2021, 11-15-2022) were not diffed, so some changes may have earlier true effective dates. Co-Authored-By: Claude Fable 5 <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 Child Care Assistance Program (CCAP) — the state's subsidy that helps low-income working families, families involved with child protective services, and families in approved workforce-training pay for child care. The implementation covers eligibility, the 85% State Median Income (SMI) income test, county-region provider rates from the DCC-300 chart, the per-day family copay schedule, and the net subsidy that flows into the federal
child_care_subsidiestotal.Closes #8619
Regulatory Authority
Administering agency: Cabinet for Health and Family Services (CHFS) → Department for Community Based Services (DCBS) → Division of Child Care (DCC). Repo agency directory is
dcbs, matching the existinggov/states/ky/dcbs/ssp/.Eligibility Tests
A household qualifies when its child passes the technical-eligibility tests and the family satisfies at least one activity/need pathway and (unless exempt) the income test.
defined_for = StateCode.KYchained throughky_ccap_eligibleis_ccdf_immigration_eligible_childky_ccap_eligible_child:age < child_age_limit(13), or< special_needs_child_age_limit(19) when the childis_disabled/has_developmental_delayky_ccap_activity_eligible: single parent ≥20 hrs/wk, or two adults combined ≥40 hrs/wk with the lesser worker ≥5 hrs/wk, usingweekly_hours_worked_before_lsris_tanf_enrolledbypass (also breaks the CCAP↔TANF circular dependency)ky_ccap_income_eligibleexempts the family from the income test when a child in the unitis_in_foster_careorreceives_or_needs_protective_servicesThe activity test reads
weekly_hours_worked_before_lsr(notweekly_hours_worked) to avoid a labor-supply-response circular dependency. There is no asset/resource test in 922 KAR 2:160, so none is applied.Income Eligibility
The operative income test is gross monthly income ≤ 85% of Kentucky SMI, by family size (§9(5), citing 42 U.S.C. 9858c(c)(2)(N); confirmed by DCC-113 effective 2023-10-01). The dollar table is transcribed directly from DCC-113:
We transcribed Kentucky's own table rather than computing
hhs_smi × 0.85because PolicyEngine's federalhhs_smifor Kentucky is stale (its last entry is FFY2020), whereas DCC-113 uses a newer SMI publication; the federal-derived figure is off by roughly $250–$470/month. The boundary is inclusive (income at or below 85% SMI qualifies). Protection & Permanency families are exempt from this test (§8(3)).Income Deductions & Exemptions
Countable income is the gross income of the applicant and responsible adult (§8(2)), assembled as a positive
sourceslist inincome/countable_income/sources.yaml(employment, self-employment, farm, Social Security, unemployment and workers' compensation, pensions, alimony, child support received, dividends, interest, rent, veterans' benefits, military retirement). The two §8(5) deductions — legally-obligated child support paid out, and self-employment operating costs — are already netted by the underlying PolicyEngine income variables (self_employment_incomeis net of expenses; child support paid is captured in PE's support variables), so no separate subtraction list is needed.The 38 excluded income categories in §8(4)(a)–(ll) — including SNAP, housing subsidies, LIHEAP, EITC, foster-care payments, K-TAP child-only payments, educational grants/scholarships, and a child's SSI (§8(4)(ll)) — are handled by omission: they simply are not in the positive sources list.
tanfis deliberately omitted as well, both because it is excluded under §8(4) and to keep the CCAP↔TANF cycle broken (categorical eligibility comes fromis_tanf_enrolled).Benefit Calculation
The subsidy is computed per child, per day, then converted to a monthly amount by the child's days in care.
ky_ccap_daily_ratelooks up the maximum daily rate keyed by rate region × provider type × age group × day length. Kentucky's 120 counties collapse to 10 distinct rate regions (the DCC-300 chart shows only 10 unique 24-value rate vectors);ky_ccap_rate_regionmapscounty_strto a region vianp.isin. There are four provider types (Licensed Type I, Licensed Type II, Certified, Registered), three age groups (Infant/Toddler under 3, Preschool 3–<6, School-age ≥6, derived from age viaage_group/months.yaml), and two day lengths (full day ≥5 hrs, part day <5 hrs, derived viarates/full_day_min_hours.yaml).+$1/dayfor a child with a special need, added inky_ccap_daily_benefit.min(provider charge, DCC-300 max + add-ons), where the per-day charge derives frompre_subsidy_childcare_expenses.ky_ccap_copayis a per-day family fee with a dated formula per regulation edition:copay/base.yaml, $4 at $1,600/month rising $1 per $300 band to $25 at $7,900) minus $1 per additional member with a $0 floor, plus $1 per full $300 of income over $8,199.99 (copay/escalation/). The chart's "over age 6" extension note is applied by household size alone, matching the chart's printed unconditional household-of-7 column. The Section 5(3) copay waiver for Protection & Permanency families is mandatory in this edition and is modeled (copay = $0).copay/max_daily.yaml).max(min(charge, rate + add-ons) − copay, 0), summed across children in care and multiplied by each child's days of care per month.ky_ccap(SPMUnit, MONTH) is the household total;ky_child_care_subsidies(YEAR) aggregates it and feeds the federalchild_care_subsidies.Requirements Coverage
All 19 in-scope requirements are implemented; the remaining items are documented as not-modeled (see below).
ky_ccap_eligibleeligibility/ky_ccap_eligible.yamlky_ccap_eligible_childeligibility/ky_ccap_eligible_child.yamleligibility/child_age_limit,special_needs_child_age_limitky_ccap_eligible_childeligibility/ky_ccap_eligible_child.yamleligibility/single_parent_activity_hours,couple_activity_hours,min_secondary_worker_hoursky_ccap_activity_eligibleeligibility/ky_ccap_activity_eligible.yamlky_ccap_income_eligibleeligibility/ky_ccap_income_eligible.yamlky_ccap_activity_eligibleeligibility/ky_ccap_activity_eligible.yamlincome/smi_limit/main,additionalky_ccap_income_eligibleeligibility/ky_ccap_income_eligible.yamlincome/countable_income/sourcesky_ccap_countable_incomeky_ccap_countable_income.yamlky_ccap_countable_incomeky_ccap_countable_income.yamlky_ccap_countable_incomeky_ccap_countable_income.yamlcopay/size_2,size_3_one_child,size_3_two_or_more,size_4_one_child,size_4_two_or_more,size_5_plus_one_child,size_5_plus_two_or_moreky_ccap_copayky_ccap_copay.yamlcopay/max_dailyky_ccap_copayky_ccap_copay.yamlrates/licensed_type_i,licensed_type_ii,certified,registered,full_day_min_hours,regions/region_1–region_10,age_group/monthsky_ccap_daily_rate,ky_ccap_rate_region,ky_ccap_child_age_category,ky_ccap_day_length,ky_ccap_provider_typeky_ccap_daily_rate.yaml,ky_ccap_rate_region.yaml,ky_ccap_child_age_category.yaml,ky_ccap_day_length.yamlsupplements/special_careky_ccap_daily_benefitky_ccap_daily_benefit.yamlky_ccap_daily_benefitky_ccap_daily_benefit.yamlky_ccapky_ccap.yaml,integration.yamlky_child_care_subsidiesky_child_care_subsidies.yamlgov/hhs/ccdf/child_care_subsidy_programs.yamlprograms.yamlentryprograms.yaml(CCDFstate_implementations)Not Modeled
These provisions are excluded by design and documented in the relevant variable docstrings using "we don't track X at the moment" framing.
Microsimulation Note
On the CPS-based dataset the statewide
ky_ccaptotal is $0, and this is a dataset characteristic rather than an implementation defect. All 542 Kentucky households in the CPS carry a single county value (ADAIR_COUNTY_KY, whichky_ccap_rate_regioncorrectly maps to Region 2), and the 40 Kentucky households that have child care expenses fail an eligibility gate (income above 85% SMI, no qualifying activity, or child age ≥13) on this synthetic data. The variable computes cleanly over the full population with no NaN or crash. The positive-benefit pipeline is exercised end to end by the unit and integration tests (rate lookup, copay, and net subsidy), e.g. a Jefferson County (Region 4) test household produces a non-zeroky_ccap_daily_benefit.Historical Notes
Parameters start at recent dates because they reflect the current published policy:
Files Added
Modified registry files:
policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml— addsky_child_care_subsidiesto the federal CCDFaddslist.policyengine_us/programs.yaml— adds the KYstate_implementationsentry under the federal CCDF program.Test plan
🤖 Generated with Claude Code