Add Connecticut CCAP (Care 4 Kids)#7778
Open
hua7450 wants to merge 9 commits intoPolicyEngine:mainfrom
Open
Conversation
Closes PolicyEngine#7777 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…yEngine#7777) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7778 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 3 13 +10
Lines 33 212 +179
==========================================
+ Hits 33 212 +179
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:
|
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Jan 2024 and Jul 2024 rate data to all 16 C4K payment rate parameter files (center, family, relative, recreational × 4 care levels). Fixes microsimulation crash for 2024 where rate parameter lookups failed with empty vectorial nodes. Remove lessons/agent-lessons.md which duplicates local memory. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Change all C4K variables to definition_period = MONTH (except aggregator) - Fix care_level bracket amounts to match Enum indices directly (remove - 1 hack) - Fix 2 swapped values in family/quarter_time.yaml (NC/NW School-Age 2024-07-01) - Remove spurious 2025-01-01 entries that were artifacts of the swap - Remove unnecessary index.yaml files - Add comment noting county approximation limitation for C4K regions (C4K uses towns, not counties; PolicyEngine lacks town-level geography) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ncome - Consolidate 16 rate files into 4 with care_level Enum breakdown - Simplify ct_c4k_payment_rate.py from 100+ lines to ~20 lines - Fix care_level bracket amounts to match Enum indices (remove -1 hack) - Fix 2 swapped values in family quarter-time (NC/NW School-Age Jul 2024) - Change all C4K variables to MONTH definition_period - Update ct_c4k.py formula for monthly computation - Cap ct_c4k_countable_income at 0 (child_support_expense can exceed income) - Add county approximation comment for C4K regions (towns vs counties) - Remove index.yaml files and sources/working_references.md - Update all test files for MONTH periods with correct monthly values - All 122 tests pass Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix is_disabled YEAR→MONTH period bug in ct_c4k_payment_rate.py - Add C4K-POL-24-02 reference for 2025 family fee schedule - Specify RCSA 17b-749-13 subsections: (d)(1) accreditation, (c)(11) special needs - Add 45 CFR 98.21(b) federal CCDF reference for 85% SMI continuing limit - Add Jul 2025 and pre-2025 rate period tests - Add pre-2025 family fee bracket test (4% at 25% SMI) - Add age group boundary tests (ages 3, 5, 6) - Remove redundant eligible_child test case Co-Authored-By: Claude Opus 4.6 (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 Connecticut Care 4 Kids (C4K) child care subsidy program in PolicyEngine.
Closes #7777
C4K is Connecticut's CCDF-funded child care assistance program, administered by the Office of Early Childhood (OEC). This implementation covers the complete benefit calculation pipeline: child eligibility, two-tier income eligibility (initial vs. continuing), countable income with exclusions and deductions, sliding-scale family fee, multi-dimensional payment rate lookup (5 regions x 4 provider types x 3 age groups x 4 care levels), special needs supplements, accreditation bonuses, and final subsidy computation. Two rate periods are modeled: Jan-Jun 2025 and Jul 2025-Jun 2026 (11% increase). Reuses existing federal CCDF infrastructure for asset eligibility, immigration eligibility, SMI standards, and enrollment status.
Regulatory Authority
Income Eligibility Tests
Initial Application: < 60% SMI
New applicants must have gross countable income below 60% of State Median Income for their family size.
is_enrolled_in_ccdfto distinguish new applicants from continuing recipientsContinuing Recipients: < 85% SMI
Active recipients at redetermination must have income below 85% of SMI.
SMI Standards
Uses federal
hhs_smivariable which computes State Median Income by state and family size from HHS-published figures.Income Deductions & Exemptions
Countable Income (RCSA 17b-749-05(b))
Gross earnings of all parents/adult family members + unearned income of ALL family members. Implemented via
sources.yamlparameter list with 11 income types:employment_income,self_employment_income,farm_incomesocial_security,pension_income,unemployment_compensation,workers_compensation,alimony_income,rental_income,veterans_benefits,disability_benefitsExcluded Income (RCSA 17b-749-05(b)(2))
22+ income types excluded by omission from the sources list:
Deductions (RCSA 17b-749-05(c))
self_employment_incomeis already net of IRS standard deductionschild_support_expensesubtracted viadeductions.yamlparameterIncome Standards
SMI-based thresholds by family size (FY 2024-2025, source: C4K-POL-24-01):
Benefit Calculation
Formula
Where:
Family Fee Sliding Scale
Pre-January 2025 (source: RCSA 17b-749-13(f)):
Effective January 1, 2025 (source: C4K-POL-24-02):
Rules: Families with only unearned income have no fee. Fee allocated to youngest child first.
Payment Rate Structure
5 regions x 4 provider types x 3 age groups x 4 care levels = 240 rate cells per period.
Care Levels: Full-Time Plus (51-65 hrs/wk), Full-Time (35-50), Half-Time (16-34), Quarter-Time (1-15)
Provider Types: Centers/Group Homes/School Programs, Licensed Family Child Care Homes, Unlicensed Relative Care, Recreational Programs (Summer)
Age Groups: Infant/Toddler, Pre-School, School-Age
Regions (county-to-region approximation): Eastern, North Central, Northwest, South Central, Southwest
Rate Periods:
Example weekly rates (Jul 2025, Centers, Full-Time Plus):
Supplements
Requirements Coverage
defined_for=StateCode.CTstate_code: CTage_threshold/child.yaml,special_needs_child.yamlct_c4k_eligible_childct_c4k_eligible_child.yaml(9 cases)ct_c4k_eligible_child(reusesis_ccdf_immigration_eligible_child)ct_c4k_eligible_child.yamlcases 1,7ct_c4k_eligible_child(reusesis_tax_unit_dependent)ct_c4k_eligible_child.yamlcase 6income/initial_limit_smi.yamlct_c4k_income_eligiblect_c4k_income_eligible.yamlcases 1-2,5income/continuing_limit_smi.yamlct_c4k_income_eligiblect_c4k_income_eligible.yamlcases 3-4,6income/sources.yaml(11 types)ct_c4k_countable_incomect_c4k_countable_income.yaml(5 cases)sources.yamlct_c4k_countable_incomect_c4k_countable_income.yamlcase 5sources.yamlincludesself_employment_income(net)ct_c4k_countable_incomect_c4k_countable_income.yamlcase 4income/deductions.yamlct_c4k_countable_incomect_c4k_countable_income.yamlcase 3hhs_smict_c4k_income_eligiblect_c4k_income_eligible.yamlcases 5-6family_fee/rate.yaml(2020-01-01 brackets)ct_c4k_family_feefamily_fee/rate.yaml(2025-01-01 brackets)ct_c4k_family_feect_c4k_family_fee.yaml(6 cases)ct_c4k_family_fee(has_earned_incomecheck)ct_c4k_family_fee.yamlcase 5rate/**/*.yaml(16 files)ct_c4k_payment_ratect_c4k_payment_rate.yaml(9 cases)ct_c4k_payment_ratect_c4k_payment_rate.yamlcases 1-2,5region/*.yaml(5 files)ct_c4k_regionct_c4k_region.yaml(8 cases, all 8 CT counties)WEEKS_IN_YEAR/12(52/12=4.33)ct_c4k_payment_ratecare_level.yamlct_c4k_care_levelct_c4k_care_level.yaml(8 cases)special_needs_supplement.yamlct_c4k_payment_ratect_c4k_payment_rate.yamlcases 6,8accreditation_bonus.yamlct_c4k_payment_rate+ct_c4k_provider_accreditedct_c4k_payment_rate.yamlcases 7-8ct_c4kct_c4k.yaml(3 cases) +integration.yaml(7 cases)ct_c4k_eligible(reusesis_ccdf_asset_eligible)ct_c4k_eligible.yamlcase 4ct_c4k_eligible(usesct_tfa_eligible)ct_c4k_eligible.yamlcase 6Coverage: 24/25 fully covered, 1/25 partial (REQ-022: weekly-to-monthly uses 52/12=4.333 vs. specified 4.3 -- ~0.8% discrepancy)
Not Modeled
meets_ccdf_activity_test)