Add Montana Child Care Assistance Program (Best Beginnings Child Care Scholarship)#8662
Draft
hua7450 wants to merge 3 commits into
Draft
Add Montana Child Care Assistance Program (Best Beginnings Child Care Scholarship)#8662hua7450 wants to merge 3 commits into
hua7450 wants to merge 3 commits into
Conversation
Scaffolding commit for the Montana Child Care Assistance Program implementation. Adds changelog fragment. Issue: PolicyEngine#8661 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…olicyEngine#8661) 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 #8662 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 1 12 +11
Lines 23 188 +165
==========================================
+ Hits 23 188 +165
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:
|
Apply two-parent both-full-time-students activity waiver (CC 2-3); add 45 CFR 98.20 child-age citation; fix CC 2-6 page anchor; clean parameter descriptions; add two-parent FT-student regression test. 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 Montana's Child Care Assistance Program (Best Beginnings Child Care Scholarship) in PolicyEngine. The program is administered by Montana DPHHS, Early Childhood Services Bureau (ECSB), and is CCDF-funded. Subsidy = lesser of the provider's charge or the state maximum rate, minus the parent's sliding-scale copayment, floored at $0.
Closes #8661
Regulatory Authority
Eligibility
mt_ccap_income_eligible— countable income <= 200% FPG (graduated tier; standard tier runs to 185%); see Regulatory Notemt_ccap_income_eligible—countable_income <= hhs_smi * 0.85(paramincome/income_limit_smi_rate.yaml= 0.85)mt_ccap_activity_eligible— two-parent 120/mo combined; single-parent 60/mo or full-time school/trainingis_ccdf_asset_eligibleis_ccdf_immigration_eligible_childdefined_for = StateCode.MTonmt_ccap_eligible; SPM-unit grouping co-locates parent and childadd(spm_unit, period, ["mt_ccap_eligible_child"]) > 0mt_ccap_eligible_child— age < 13, or < 19 if special needs (paramseligibility/child_age_limit.yaml= 13,eligibility/special_needs_child_age_limit.yaml= 19)is_tanf_enrolledIncome Standards
income/fpg_limit.yaml= 2.hhs_smi * 0.85).Benefit Calculation
Subsidy =
min(provider charge, state maximum rate) - copay, floored at $0, summed across eligible children.max(GMI x FPG-bracket %, $10)for non-TANF families. TANF recipients (is_tanf_enrolled) pay a flat $10. The $10 minimum (paramcopayment/minimum.yaml) is both the non-TANF floor and the TANF flat amount.copayment/copay_rate.yaml, keyed on the % FPG ratio): 0.5% at entry / 90 / 95 / 100% FPG, stepping up by 5-point FPG brackets to 7.0% at 185-200% FPG (21 standard brackets + 3 graduated brackets at 190/195/200%).rates/provider_rates.yaml) is a 3-dimensional lookup: provider type (6) x age group (3) x half/full-time (2). Half-time = 5 or fewer hours/day; full-time = more than 5 up to 12 hours/day (ARM 37.80.205).mt_ccap_care_timedefaults to FULL_TIME (we don't track per-day care hours at the moment). RCE / School-Age-Provider NA cells are encoded as 0 (not payable).Requirements Coverage
eligibility/child_age_limit.yaml,eligibility/special_needs_child_age_limit.yamlmt_ccap_eligible_child.pymt_ccap_eligible_child.yamlmt_ccap_eligible.py(defined_for=StateCode.MT)mt_ccap_eligible.yaml(Case 2 WY)mt_ccap_eligible.pymt_ccap_eligible.yaml(Case 3)eligibility/activity_hours/{two_parent,single_parent}.yamlmt_ccap_activity_eligible.pymt_ccap_activity_eligible.yamlmt_ccap_eligible_child.py(is_ccdf_immigration_eligible_child)mt_ccap_eligible_child.yaml(Case 6)mt_ccap_eligible.py(is_ccdf_asset_eligible)mt_ccap_eligible.yaml(Cases 6, 7)income/fpg_limit.yaml(= 2)mt_ccap_income_eligible.pymt_ccap_income_eligible.yamlincome/income_limit_smi_rate.yaml(= 0.85)mt_ccap_income_eligible.py(hhs_smi)mt_ccap_income_eligible.yaml(Case 4)income/countable_income/sources.yamlmt_ccap_countable_income.pymt_ccap_countable_income.yamlmt_ccap.pymt_ccap.yaml,integration.yamlrates/provider_rates.yamlmt_ccap_max_rate.pymt_ccap_max_rate.yaml(17 cases)rates/provider_rates.yamlmt_ccap_care_time.pymt_ccap_max_rate.yamlrates/provider_rates.yamlmt_ccap_max_rate.pymt_ccap_max_rate.yaml(Case 12)copayment/minimum.yaml(= 10)mt_ccap_copay.pymt_ccap_copay.yamlcopayment/copay_rate.yamlmt_ccap_copay.pymt_ccap_copay.yaml(boundary cases)copayment/minimum.yamlmt_ccap_copay.pymt_ccap_copay.yaml(Case 6),integration.yaml(Case 4)income/fpg_limit.yaml,copayment/copay_rate.yamlmt_ccap_income_eligible.pymt_ccap_income_eligible.yaml(Case 6)mt_ccap_income_eligible.py,mt_ccap_eligible.pymt_ccap_eligible.yaml(Case 8)All 18 in-scope requirements have parameter/variable/test coverage. (REQ-015's day-hour auto-classification is by design not modeled — see Documented Assumptions; the half/full-time rate distinction itself is covered.)
Not Modeled
These features are documented limitations — we don't track the underlying inputs at the moment:
care_timeis a bare input defaulting to FULL_TIMEThe body text of ARM 37.80.202 states the standard income limit is <= 150% FPG, with graduated eligibility from 150-185% FPG. However, the published Sliding Fee Scale (eff. 07-01-2025) runs the standard tier all the way to 185% FPG and the graduated tier to 200% FPG.
Per the user's decision, we encoded the operational Sliding Fee Scale values (standard 185% / graduated 200%), since the scale is the document caseworkers actually apply. Reviewers should confirm which source is authoritative and whether the ARM body text has been superseded by the published scale.
Documented Assumptions
mt_ccap_child_age_categorydocstring.care_timedefaults to FULL_TIME: there is no per-day-hours-in-care input, so half-time must be set explicitly.tanfexcluded from countable-income sources: avoids a childcare <-> TANF circular dependency. TANF families are instead handled via theis_tanf_enrolledcategorical pathway plus the flat $10 copay branch.Test plan
Files Added
Federal-registration edits (2 files):
policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml— addedmt_child_care_subsidiesto theaddslistpolicyengine_us/programs.yaml— added the MT Best Beginningsstate_implementationsentry under the federal CCDF program (variablemt_child_care_subsidies, parameter prefixgov.states.mt.dphhs.ccap)11 parameters, 12 variables, 11 tests.
🤖 Generated with Claude Code