Implement Maryland Child Care Scholarship (CCS)#7889
Conversation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds eligibility, income calculation, copayment, and provider reimbursement rate parameters for Maryland's CCS program (COMAR 13A.14.06). Includes formal rates (7 regions) and informal rates (24 counties), enum-keyed parameter lookups, and 78 test cases. Closes PolicyEngine#7888 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7889 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 1 15 +14
Lines 19 259 +240
Branches 0 1 +1
==========================================
+ Hits 19 259 +240
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 (1M context) <noreply@anthropic.com>
- Add region_w_counties.yaml and update md_ccs_region.py - Add MD CCS to programs.yaml registry - Add #page=XX to 5 session law PDF references - Fix continuation.yaml to cite state source as primary - Document frozen SMI limitation with TODO Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace all broken dsd.maryland.gov URLs with regs.maryland.gov - Fix continuation.yaml: .03(B) → .03(H) (Income Eligibility Scale) - Fix self_employment_deduction_rate.yaml: (F)(6) → (F)(8)(a)(i) - Fix sources.yaml: (F)(3)-(8) → .02 (Gross income definition) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Program Review — PR #7889: Maryland Child Care Scholarship (CCS)
Author: hua7450
Diff: 3,807 lines (new state program)
CI: All functional checks pass; codecov/patch soft fail (expected for new program)
Posting mode: LOCAL ONLY
Source Documents
Eight authoritative sources consulted:
- COMAR 13A.14.06 (Child Care Scholarship Program regulations) — HTML extract; defines eligibility, gross income (.02B(28)), countable income sources (.03F(8)), copay matrix (.12), unit-rate derivation (.11)
- Chapter 525 of 2022 (HB 995) — child-support pursuit prohibition; effective July 1, 2022; does NOT exclude child support from income
- Chapter 717 of 2024 (SB 362) — §9.5-111(d) statutory copay cap anchored to Jan 1, 2024 operational levels
- February 2026 W&M Committee Briefing — slide 21 (SMI base-year freeze pattern), slide 22 (75% SMI initial threshold administrative origin)
- MSDE Rate page (current) — operational rate workbooks
- MSDE Rate page (Wayback Machine, historical) — pre-2024 rate snapshots
- January 2025 OCC Info Session — MSDE program operations
- 45 CFR 98.21(b), 98.45(l)(3) — federal CCDF continuation eligibility (85% SMI) and 7% co-payment cap
Critical (Must Fix Before Merge)
1. Child support exclusion regulatorily unsupported
Finding: income/countable_income/sources.yaml omits child_support_received and cites Chapter 525 of 2022 as authority for excluding it. This citation is incorrect:
- Chapter 525 of 2022 (HB 995) only prohibits MSDE from requiring child-support pursuit as a condition of eligibility. It does NOT exclude child support from gross income.
- COMAR 13A.14.06.02B(28)(b)(x) explicitly INCLUDES "Alimony and child support" in gross income.
- COMAR 13A.14.06.03F(8)(c) instructs contractors to count child support actually received.
Fix options:
- Add
child_support_receivedto countable income sources list, OR - Locate authoritative MSDE policy memo (not Chapter 525) supporting the exclusion and update citation accordingly.
Without one of these, Maryland CCS income test under-counts gross income and over-grants eligibility/under-charges copay.
2. md_child_care_subsidies aggregator missing from household-level wiring
Finding: md_child_care_subsidies aggregator variable is not included in:
policyengine_us/variables/household/income/household/household_benefits/household_state_benefits.yamlpolicyengine_us/variables/household/income/spm_unit/spm_unit_benefits.py
Impact: Silent under-counting of household and SPM unit benefits in microsimulation. The federal child_care_subsidy_programs aggregator picks it up, but downstream household income computations omit it.
Precedent: Same asymmetry was flagged in the WA WCCC review and fixed in the AL CCSP review. Peer state CCDF programs (DE/CO/CA/NE/SC/VA) all appear in household_state_benefits.yaml. Confirmed by both the code-validator pass and the rates audit pass.
Fix: Add md_child_care_subsidies to both files, matching the peer-state pattern.
Should Address
-
Changelog filename typo.
changelog.d/md-ccap.added.mdshould bechangelog.d/md-ccs.added.md(same pattern observed in AL CCSP / AR SRA reviews). -
receives_snapnaming convention. Breaks the project conventionis_X_enrolled(cf.is_tanf_enrolled,is_wccc_enrolled,chip_enrolled). Rename tois_snap_enrolledand add areferencefield. Cycle-avoidance justification is real and well-documented and should be preserved as an inline comment. -
Hard-coded
/3divisor.md_ccs_payment_rate.py:3676divides by literal 3 to convert UNIT_3 to UNIT_1. Derive fromp.unit_count["UNIT_3"]for parameter-driven correctness. -
PR body's "HHS SMI starts 2021" claim is wrong. Actual HHS SMI dataset begins 2017-10-01. The deferred-backfill issue (#8355) may be moot. Update PR body. Reconsider whether
smi_frozen_year2018 is needed if the backfill isn't necessary. -
45 CFR citation typo. Code comment cites
98.45(k), but the 7% copay cap is actually at98.45(l)(3). Fix the code comment. -
Chapter 525 effective date mismatch.
sources.yamluses2022-05-01as start date, but Ch 525 effective date is July 1, 2022. Either use2022-07-01or document the rationale. -
75% SMI threshold not actually in Chapter 525. This value came from MSDE administrative action documented in the February 2026 W&M briefing slide 22.
initial.yamlcitation to Ch 525 is misleading. Fix citation to slide 22 plus MSDE memo. -
Multi-sentence parameter descriptions (skill requires single sentence) in:
smi_freeze_in_effect.yamlweekly_amount.yamllicensed_center.yamllicensed_family.yamlunit_count.yaml
-
Missing tests — coverage gaps:
- Region V formal rates entirely untested (only 5 of 7 regions have rate-lookup tests)
- UNIT_1 formal derivation untested (only informal hourly tested)
- SMI freeze critically under-tested: only FY2024 path; missing FY2019-2022 (2018 SMI) and explicit FY2025+ unfrozen assertions
- Historical SMI rate transitions (50% / 65% / 75%) — zero coverage at periods 2016 / 2019 / 2020 / 2022
- No exact-at-threshold tests for 75% / 85% SMI
- Only 2 of 14 income sources tested (employment, self-employment)
- No federal-aggregator integration test (md_ccs → md_child_care_subsidies → child_care_subsidy_programs)
-
Test count discrepancy. PR body says 53 tests; actual count is 81 across 14 YAML files. Update PR body.
-
md_ccs_regiondefault discrepancy. Code default isREGION_W, but tests document "default = Region Z (Allegany)". Reconcile. -
Reference precision:
- 11 payment files cite the MSDE rates landing page (navigation-only); replace with direct workbook links.
copay/unit_hours.yaml3-hr / 6-hr boundaries are not in COMAR .11; cite the operational MSDE source.income/countable_income/sources.yamlcitesCOMAR .02B(28)but the operational source list is at.03F; add.03Fcite.- Verify the
#page=19anchor inCH_717_sb0362E.pdfactually lands on the copay freeze section.
-
Copay description overreach. "Frozen at Jan 1, 2024 levels by Chapter 717" overstates Ch 717's scope. Chapter 717 is a one-directional cap with a legislative-notification escape valve. Rewrite YAML description accordingly.
-
Rank-aware copay logic. COMAR .12A(3)(a)-(c) assigns the highest copay to the youngest child; PR code ignores birth-order assignment. Defensible under the current flat $1/$2/$3 schedule but breaks if the regional matrix is restored. Document the assumption explicitly in code comments.
-
unit_hours.yamlboundary.3.0001epsilon is brittle; consider inclusive/exclusive boundary semantics or document the convention. -
Copay citation chain. Ch 717 + MSDE operational schedule should be presented as a coherent chain, not a single citation that overreaches.
-
Receipt-tracking variable scope.
receives_snapis currently MD-specific; consider whether a genericis_snap_enrolledwould benefit other state programs.
Suggestions
- Add reconciliation comments cross-referencing parameter YAML headers in
md_ccs_payment_rate.py. - Add inline comment in
receives_snap.pydocumenting the cycle anti-pattern rationale and why direct dependency onsnapis avoided. integration.yamlCase 3: clarify that the TCA waiver path isn't actually exercised in the test scenario.- Section 8 Housing Choice Voucher and Guaranteed Access Grant copay waivers from Chapter 525 are properly deferred — open a follow-up issue tracking Phase-2 work.
smi_frozen_year.yaml— clarify base-year tag semantics in description.federal_cap_rate.yamleffective date — consider2024-08-01(CCDF Final Rule binding date) instead of2022-05-01.
Investigated and Cleared
$1 / $2 / $3 copay schedule — DEFENSIBLE
COMAR formally codifies a different regional × age × birth-order matrix ranging $2.42–$90.46. However:
- Chapter 717 of 2024 §9.5-111(d) anchors the flat operational schedule statutorily.
- MSDE operational practice has used flat $1/$2/$3 (1st/2nd/3rd child) since Jan 1, 2024.
- Code-path verifier confirmed values reflect operational practice with statutory anchor.
Action retained as a SHOULD-address: clarify citation chain (Ch 717 is a one-directional cap, not full statutory replacement of COMAR matrix) and rewrite copay description.
7% cap uses countable income (not literal gross) — DEFENSIBLE
Code uses md_ccs_countable_income, which IS COMAR's "gross income for CCS" per .03F(3) + .02B(28) + .03F(8)(a)(i). 45 CFR is silent on which income base applies to the 7% cap. No regulatory mismatch.
Only nit retained: code comment citation typo (98.45(k) → 98.45(l)(3)).
PDF Audit Summary
| Category | Count |
|---|---|
| Confirmed correct data points | ~80 across 15 categories |
| Mismatches | 1 (child support exclusion) |
| Investigated and cleared | 2 ($1/$2/$3 copay; 7% cap base) |
Confirmed-correct items:
- All 56 UNIT_3 formal rate cells (7 regions × 2 provider types × 2 ages × 2 schedules) match PR-body transcription exactly
- UNIT_2 / UNIT_1 derivation (× 2/3, × 1/3) per COMAR .11.B(3) / .C(2) / .D
- 24 jurisdictions (23 counties + Baltimore City) allocated exactly once across 7 region files
- Informal 24-county × 2 age structure plausible (operational post-2020 schedule)
- Age 13 / 19 cutoffs match COMAR .02.B(11) verbatim
- 30% self-employment deduction per COMAR .03F(8)(a)(i)
- 85% SMI continuation per 45 CFR 98.21(b)
- 75% SMI initial threshold value correct (citation needs fix)
- SMI base-year freeze pattern (
smi_freeze_in_effect+smi_frozen_year) correctly aligns with W&M slide 21 - TCA / SSI categorical exemption from income test
- 3-children copay cap
- 7% federal cap
- Benefit formula order
- Federal aggregator wiring (
child_care_subsidy_programs.yaml+programs.yaml) - Citizenship via federal
is_ccdf_immigration_eligible_childreuse receives_snapcycle reality
Validation Summary
| Check | Result |
|---|---|
| Regulatory Accuracy | 1 critical + 2 should |
| Reference Quality | 0 critical + 6 should + 5 suggestions |
| Code Patterns | 2 critical + 8 should |
| Test Coverage | 0 critical + 7 should-add |
| PDF Value Audit | 1 mismatch / ~80 data points confirmed |
| CI Status | All functional PASS; codecov/patch soft fail (expected) |
Review Severity: REQUEST_CHANGES
Two critical findings block merge:
-
Child support exclusion lacks regulatory support. Chapter 525 of 2022 doesn't actually exclude child support from income; COMAR explicitly includes it. Either add
child_support_receivedto countable income, or find authoritative MSDE policy citation supporting the exclusion. -
md_child_care_subsidiesaggregator missing fromhousehold_state_benefits.yamlcauses silent under-counting in microsim. Same pattern WA WCCC review flagged; AL CCSP fixed it.
Both fixes are localized. Otherwise this is a high-quality Phase-1 implementation:
- 56 rate cells verified exact against COMAR-derived workbooks
- Full federal CCDF helper reuse (
is_ccdf_immigration_eligible_child) - Correct SMI base-year freeze pattern aligned with W&M slide 21
- Correct benefit formula order
- Sensible deferrals (Section 8 / GAG waivers) for Phase 2
Next Steps
Run /fix-pr 7889 to apply the two critical fixes and the should-address items.
… fix citations Critical: - Count child_support_received in MD CCS countable income per COMAR 13A.14.06.02B(28)(b)(x) and .03F(8)(c); Chapter 525 does not exclude it - Add md_child_care_subsidies to household_state_benefits.yaml (both brackets) so the benefit flows into household net income Should-address: - 45 CFR 98.45(k) -> (l)(3) for the 7% copayment cap - Single-sentence parameter descriptions (5 files); drop Chapter 717 freeze overreach - Add slide 22 citation for the 75% SMI initial threshold - Rename changelog fragment md-ccap -> md-ccs Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Thanks for the thorough review, @PavelMakarchuk — addressed in Critical1. Child support exclusion — fixed ✅
2.
Should-address (done)
Clarifications / pushbacks
Deferred to follow-up
PR description updated to match all of the above. |
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Program Review — PR #7889 (MD Child Care Scholarship)
Source Documents
- PDFs (5): Feb 2026 W&M briefing (slides 21, 22), Jan 2025 OCC info session (p.7), Ch 717 of 2024 / SB 362 (p.19), Ch 525 of 2022 / HB 995 (pp.3-4), MSDE Scholarship brochure
- HTML: COMAR 13A.14.06.02/.03/.11/.12, MSDE Scholarship Rates page (current 2026-03-01 schedule + Wayback 2022-06-16 historical snapshot), MSDE informal-rates XLSX, eCFR 45 CFR 98.21(b) and 45 CFR 98.45(l)(3)
- Scope: full PR review (new MD state program — 24 parameters, 14 state variables + 1 new federal variable
receives_snap, 13 YAML test files / 81 cases, programs.yaml registry entry, federal aggregator wiring)
🔴 Critical (Must Fix)
-
Hard-coded divisor
/ 3—policyengine_us/variables/gov/states/md/msde/ccs/payment/md_ccs_payment_rate.py:26unit_share = p.unit_count[service_unit] / 3
The literal
3is the UNIT_3 base count and is already parameterized asp.unit_count["UNIT_3"] = 3. Replace withp.unit_count["UNIT_3"](or introduce abase_unit_countparameter). Magic number couples the formula to current schema; a future schema change would silently desynchronize. -
receives_snaplacks metadata —policyengine_us/variables/gov/usda/snap/receives_snap.py:1-9
Nolabel, noreference, nodefault_value. Silently defaults toFalse(microsim consequence: zero MD households are SNAP-exempt from copay). Also consider whether the standard PE-US cycle-break pattern usingspm_unit_pre_subsidy_childcare_expenses+snap > 0(already used atmd_ccs.py:21) would avoid introducing a new undocumented API input. At minimum, addlabel,reference, anddefault_value = False. -
Boolean naming convention violation —
policyengine_us/variables/gov/states/md/msde/ccs/eligibility/md_ccs_enrolled.py:4
Convention isis_*for enrollment booleans (cf.is_tanf_enrolled,is_snap_enrolled). Rename tois_md_ccs_enrolled. Update the consumer atmd_ccs_income_eligible.py:31. -
Changelog filename / branch name mismatch —
changelog.d/md-ccs.added.md
Branch ismd-ccap. CLAUDE.md requires<branch-name>.<type>.md. Rename tomd-ccap.added.md. Content is fine. -
Page-anchor error —
income/smi_rate/initial.yamlcites Feb 2026 W&M briefing#page=22for the "75% SMI initial threshold administrative origin." PDF 1 p.22 is the Market Rate Survey slide; the 75% origin narrative is on p.20 ("Income eligibility thresholds at initial application are set at 75% of SMI"), and the FY threshold table (already cited) is on p.21. Change#page=22to#page=20or drop the third reference. -
Page-anchor / authority mismatch —
copay/weekly_amount.yamlcites Ch 717 of 2024#page=19, but p.19 contains the cap text ("not increase copayment levels of the program in effect as of January 1, 2024"), not the $1/$2/$3 schedule values. The values themselves come from the MSDE Tuesday Tidbits bulletin (May 23, 2022, govdelivery URL — link-rot risk) and COMAR 13A.14.06.12. Either revise the reference title to clarify "Ch 717 = cap authority, not schedule values" or restructure so the schedule cites COMAR and the cap cites Ch 717 separately.
🟡 Should Address
Regulatory / scope
- Countable-income over-inclusion (
income/countable_income/sources.yaml) —capital_gainsandfarm_incomeare included as countable. COMAR 13A.14.06.02B(28) defines countable family income and does not list these as explicit categories; in source-documented audit they appear to exceed the COMAR enumeration. Either justify inclusion (e.g., as components of self-employment / business income under .02B(28)) in the PR description, or drop them. - HCV (Section 8) copayment waiver omitted but statutorily required — Ch 525 § 9.5-113(C)(D)(1)(III) (PDF 4 #page=3) explicitly lists "(III) Federal Housing Act Housing Choice Voucher Program" as a waiver category alongside TCA/SSI/WIC/SNAP.
md_ccs_weekly_copay.py:23-32implements only 4 of the 5 statutory waivers. If deferred for data-availability reasons, explicitly note the limitation in the PR description and add a TODO/comment inmd_ccs_weekly_copay.py.
References / citations
copay/weekly_amount.yamlcites Ch 717 of 2024 (session law) only. Add codified citation Md. Code Educ. Art. § 9.5-113 (the codified location, per Ch 525 of 2022 PDF 4 lines 30-35).- govdelivery URL on
copay/weekly_amount.yamlis link-rot prone; add aweb.archive.orgsnapshot of the May 23, 2022 Tuesday Tidbits bulletin. payment/region_*_counties.yaml(7 files) cite only the live MSDE rates page;payment/formal/licensed_center.yamlandlicensed_family.yamlalready pair the live page with a 2022-06-16 Wayback snapshot — add the same Wayback URL to the region-county files for date durability.copay/max_children_with_copay.yamlcites COMAR 13A.14.06.12 generically; the 3-child cap isn't in COMAR .12 plain text — add a more specific subsection or an MSDE policy-manual anchor.payment/infant_age_threshold.yaml(24 months) cites the live MSDE rates page only — the cutoff isn't explicit there. Add COMAR 13A.14.06.11 or the MSDE provider manual.payment/informal/rates.yamldescription claims "70th percentile of the March 2021 Market Rate Survey" but cites no MRS — add the MRS reference or trim the claim.copay/unit_hours.yamlcites COMAR 13A.14.06.11 generically — match the granular.11.B(3)/.11.C(2)/.11.Danchors already used bypayment/unit_count.yaml.
Code patterns
md_child_care_subsidiesYEAR aggregator semantics —md_child_care_subsidies.py:9isdefinition_period = YEARwithadds = ["md_ccs"](MONTH). Core auto-sums 12 monthly values, andmd_ccs.py:33divides byMONTHS_IN_YEAR, so the YEAR aggregator nets to the annual benefit. This works but is inconsistent with sibling state CCDF aggregators (nh_ccap,sc_ccap,vt_ccfapcompute monthly inside the formula). Verify intent matches precedent or document the divergence.- Useless rename at
md_ccs.py:27—weekly_to_annual = WEEKS_IN_YEARis a single-use alias; inline per code-style skill ("Eliminate unnecessary intermediate variables"). - Verbose divide-by-zero guard at
md_ccs_weekly_copay.py:50-54—where(eligible_child_count > 0, capped_count/eligible_child_count, 0)could simplify tocapped_count / max_(eligible_child_count, 1)(zero numerator yields zero anyway).
Parameter period metadata corrections
copay/unit_hours.yaml:7—period: yearfor a daily-hours threshold → should beeternity(orday).copay/federal_cap_rate.yaml:7—period: yearfor a structural/1ratio →eternity.copay/max_children_with_copay.yaml:7—period: yearfor a structural count →eternity.payment/unit_count.yaml:6—period: yearfor unit-count integers →eternity.
Parameter description verb / placeholder violations
payment/infant_age_threshold.yaml:1uses "defines" (not in allowed verb list).copay/unit_hours.yaml:1uses "determines" (not allowed).income/countable_income/sources.yaml:1uses "counts" (not allowed).payment/region_w_counties.yaml:1and siblings —setsis allowed but missing the "this X" placeholder.payment/unit_count.yaml:1— missing "this X" placeholder.
Test coverage gaps (highest priority)
- SMI exact-boundary tests —
md_ccs_income_eligible.yamljumps from $100k to $120k. Add cases at exactly 75% SMI (new applicant → eligible=true), 75% + $1 (eligible=false), and 85% SMI for an enrolled family (eligible=true at boundary). - SMI freeze unfreeze contrast — only one freeze case (FY2024 frozen FY2021 SMI = $124,807). Add an FY2023 case (still frozen, same value) and an FY2025 post-unfreeze case (current SMI = $149,249) to lock in the transition.
receives_snapcycle-safety benefit value test — current copay Case 6 verifies copay=0 underreceives_snap: truebut never computesmd_ccs. Add a case withreceives_snap: true+spm_unit_pre_subsidy_childcare_expenses: 8_000assertingmd_ccs > 0(correct value) andmd_ccs_weekly_copay: 0— proves no infinite loop and correct value.MDCCSProviderType.NONErate=0 branch —select(...)NONE arm not exercised inmd_ccs_payment_rate.yaml.- Same household pre/post 2026-03-01 schedule contrast — existing post-schedule test (Region W, 2027-01 = $262) lacks a paired pre-schedule equivalent at the same county/age/unit, so the schedule transition is not isolated.
- Lower-priority gaps: Region V (Caroline) payment-rate sanity case; default-vs-true
receives_snapcontrast in same file; 4th-child-free per-person assertion (Case 19 verifies the cap arithmetically only); activity-failing household flowing intomd_ccs_eligible: false; mixed-age expenses-driven integration case whereexpenses < max_reimbursement; pre-2018 SMI-data-fallback graceful behavior.
🟢 Suggestions
- Add a 2026-03-01 changelog note in
weekly_amount.yamldocumenting that the Ch 717 statutory freeze applies to the flat $1/$2/$3 schedule (current values were already at Jan-1-2024 levels, so no period change is needed — but a metadata note would aid future maintainers). - Microsim visibility note (not blocking): three bare inputs (
md_ccs_provider_type,md_ccs_enrolled,receives_snap) lack formulas and CPS imputation; in microsim every MD person defaults toprovider_type = NONE → rate = 0 → md_ccs = 0. Aggregate impact analysis will show $0. Flag in PR description. md_ccs_age_group.py:21float→int comparison (age * MONTHS_IN_YEARagainstinfant_age_threshold= 24) is fine; consider an inline comment for the next reader.
PDF Audit Summary
| Category | Count |
|---|---|
| Confirmed correct (provider rates 104, SMI values 8, copay values 4) | 116 |
| Real value mismatches | 0 |
| Missing-feature gaps (HCV waiver statutorily required) | 1 |
| Page-anchor reference errors | 2 |
Validation Summary
| Check | Result |
|---|---|
| Regulatory accuracy | 2 should-fix (capital_gains/farm_income inclusion; HCV waiver omission) |
| Reference quality | 2 critical (smi_rate/initial #page=22 wrong; copay/weekly_amount Ch 717 p.19 cites cap not values), 1 should (add codified Md. Code Educ. Art. § 9.5-113) + 6 polish items |
| Code patterns | 4 critical (hard-coded /3, receives_snap metadata, is_ prefix, changelog filename) + ~6 should-fix (md_child_care_subsidies YEAR semantics, useless rename, 4 period metadata, 4 description verbs) |
| Test coverage | 10 gaps prioritized (5 high — boundary SMI, freeze/unfreeze contrast, cycle-safety value test, NONE rate=0, pre/post-2026-03-01 schedule contrast) |
| PDF value audit | 0 mismatches: 104/104 rates within $1, 8/8 SMI values match, 4/4 copay values match |
| CI | 26/26 PASS |
Review Severity: COMMENT
Has critical fixes but is not a regulatory blocker — the issues are code-pattern (hard-coded /3, missing metadata, naming convention, changelog filename), reference-anchor (two wrong #page=NN citations), and one statutory-waiver gap (HCV) to discuss. All 116 audited PDF values are correct.
Note: REQUEST_CHANGES could also be justified given the hard-coded /3 and the statutorily-required HCV waiver omission. Use COMMENT to keep the conversation open and let the author respond to the HCV-scope question; use REQUEST_CHANGES to block merge until the critical-list items are addressed.
…ferral, fix SMI citation - Replace hard-coded /3 with p.unit_count["UNIT_3"] in md_ccs_payment_rate - Document deferral of the Housing Choice Voucher copay waiver and the housing_assistance dependency cycle that blocks reading it directly - Correct W&M briefing page anchor for the 75% SMI origin (slide 22 -> 20) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
@PavelMakarchuk thanks for the review — pushed fixes for the hard-coded On the HCV (Section 8) copay waiver — you're right that Ch 525 of 2022 §9.5-113(C)(D)(1)(III) lists it as a fifth statutory waiver category, and we currently implement only TCA/SSI/SNAP/WIC. We're deferring it for now because of a dependency cycle: the only signal for HCV receipt is the computed ( I've documented the omission and the cycle in a code comment in For the |
Summary
Implements Maryland's Child Care Scholarship (CCS) program in PolicyEngine, including eligibility, income calculation with SMI base-year freeze, copayment, provider reimbursement rates (with historical 5/23/22 schedule + current 3/1/26 schedule), and benefit computation.
Closes #7888
Regulatory Authority
Program Overview
Eligibility
defined_for = StateCode.MDage < p.age_threshold.child(param = 13)age < p.age_threshold.disabled_child(param = 19)is_ccdf_immigration_eligible_childis_tanf_enrolledssi > 0countable_income <= md_smi * 0.75countable_income <= md_smi * 0.85(viamd_ccs_enrolled)Income Calculation
Per COMAR 13A.14.06.03F(8), countable income includes annual gross income from 15 sources:
Income Thresholds + SMI Base-Year Freeze
MD freezes the SMI base year for CCS eligibility on a fiscal-year schedule (FY starts July 1). Implemented via
smi_freeze_in_effect(bool) +smi_frozen_yearparameters — when the freeze is in effect the formula pins SMI tosmi_frozen_year, otherwise it uses the current-year SMI. Verified against Feb 2026 W&M briefing slide 21.Note: HHS SMI data in this repo now covers FFY2018 (2017-10-01) onward following the #8356 backfill, so the base-year freeze resolves to real 2018 and 2021 SMI values.
Historical initial-eligibility SMI rate (independent of base-year freeze), as implemented in
smi_rate/initial.yaml:Copayment Structure
Current flat copayments (effective since 2022 legislation, capped per Ch 717 of 2024):
Categorical exemptions (copayment = $0):
is_tanf_enrolledssi > 0receives_snap(bare-input bool, NEW)receives_wic(existing)receives_snapis a new federal-level bare-input variable to avoid a cycle throughsnap_dependent_care_deduction → childcare_expenses → md_ccsif we used the computedsnapvalue. The § 9.5-113 waiver is also conditioned on employment/education, which is implicitly satisfied for any family that already passesmd_ccs_activity_eligible.Federal cap: Copayment cannot exceed 7% of family gross income (45 CFR 98.45(l)(3)).
Copayment assessed for up to 3 children per COMAR 13A.14.06.12; 4th+ child is free.
Provider Reimbursement Rates
payment/formal/): 7 market regions (U/V/W/X/Y/Z/BC) × 2 provider types (licensed center, licensed family) × 2 age groups (infant, regular). Only UNIT_3 (full-time) base rates are stored; UNIT_2 and UNIT_1 are derived inmd_ccs_payment_rate.pyviaunit_count / 3(i.e., × 2/3 and × 1/3) per COMAR 13A.14.06.11.payment/informal/rates.yaml): 24 counties × 2 age groups. UNIT_3 rates only; UNIT_2/UNIT_1 derived in the same way.UNIT_3 formal rates, current schedule (effective 2026-03-01):
UNIT_3 formal rates, historical schedule (effective 2022-05-23 through 2026-02-28):
Benefit Formula
Where:
expenses=spm_unit_pre_subsidy_childcare_expenses(annual)copay= weekly copayment × 52 (annualized), summed across up to 3 eligible childrenmax_reimbursement= provider reimbursement rate × 52, summed across eligible children — based on region, provider type, child age, and service unit at the period's effective rate scheduleThe benefit flows into household and SPM-unit income via
md_child_care_subsidies, which is registered in bothchild_care_subsidy_programs.yaml(federal aggregator) andhousehold_state_benefits.yaml(household net income).Not Modeled (by design)
Deferred to Follow-up PR
receives_housing_voucherbare-input in the codebaseFiles Added
Totals: 24 parameter files, 15 variable files (14 MD + 1 federal
receives_snap), 13 test files (81 test cases)Also modified:
policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml— registermd_child_care_subsidiespolicyengine_us/parameters/gov/household/household_state_benefits.yaml— includemd_child_care_subsidiesso the benefit flows into household net incomepolicyengine_us/programs.yaml— add CCS to program registryTest plan