Add Nevada Child Care and Development Program (CCDP)#8665
Open
hua7450 wants to merge 10 commits into
Open
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…yEngine#8664) 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 Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8665 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 3 15 +12
Lines 47 237 +190
Branches 0 1 +1
==========================================
+ Hits 47 237 +190
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 Opus 4.8 (1M context) <noreply@anthropic.com>
…ource URLs Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… protective-care pathway Critical: - age_group/months.yaml cutoffs 25/37/60 -> 12/36/72 months, per Nevada Child Care Policy Manual MS 631 (Care Level) / MS 633.1 rate-table age brackets (Infant 0-1yr, Toddler 1-3yr, Preschool 3-6yr, School-Age 6+). The State Plan lists only ACF-118 representative ages, not bracket boundaries. - copay $150 threshold 0.43 -> 0.4201, per the operational CC PT 06-25 renewal fee chart ($90 band tops at 42% SMI; $150 begins at 42.01%). The State Plan summary text's "43%" is superseded by the chart. Should-address: - nv_ccdp_activity_eligible: add protective-care (foster / receiving-or-needing protective services, restricted to an eligible child) as a reason-for-care disjunct, mirroring the copay waiver (State Plan 2.2). - monthly_billed_days: document 21.67 as a derived 52*5/12 proxy, not sourced. - nv_ccdp_region / nv_ccdp_provider_rate: document the 2-region, 1-Star-base simplification (MS 633.2 QRIS stars / 4 areas not tracked). - sources.yaml: correct tip-income subsection 306.48 -> 306.43; fix "Maybe" note. - tests: add copay+charge-cap, special-needs positive subsidy, child-support downstream, and SMI program-year (FY2026) cases; recompute the age-group cascade. 114 NV CCDP tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… copay-waiver scope - nv_ccdp_countable_income: add disability_benefits (MS 306 Disability Insurance Benefits, distinct from RSDI/social_security and workers' comp), gambling_winnings (306.15), and general_assistance (306.42) to the countable source list. General Assistance is not TANF, so it does not trigger the childcare circular dependency that excludes TANF. Corrects a comment that wrongly claimed gambling had no PE variable. +1 test asserting all three are summed. - nv_ccdp_copay: cite the operative Co-Payments section (Manual MS 180/181, not MS 163) for the TANF/foster/homeless waiver list, and document why the State Plan 3.3.1 disability / Head Start copay waivers are not modeled (broad-flexibility plan options not adopted by the operative Manual; the Head Start waiver is only the wraparound-collaboration category, not all enrollees). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…l verification Verified the implementation against the July 2024 Child Care Policy Manual (plus the FFY 2025-27 State Plan and CC PT 06-25): - Clark center school-age rate 48 -> 46 (Manual MS 633.2 1-Star, p.107); rate tables now cite the Manual instead of the State Plan - Fix MS 306 income citations (tips 306.48 not 306.43; disability 306.9) - Correct citation pages: special-needs age in MS 210 (p.36); activity MS 400 series (p.76); asset limit Manual MS 320 (p.75) - Document deferred MS 302.1 Average Cost of Care deduction - Document foster/CPS household-of-one income exclusion as not modeled - Update affected tests (rate 46; benefits 996.82, 846.82) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…into nv-ccap # Conflicts: # policyengine_us/programs.yaml
…r school-age rate - Correct Clark (MOST_POPULOUS) center school-age daily rate from $46 to $48 per Manual MS 633.2 p.107 and State Plan Table 1; the $46 was the family rate mis-placed into the center file. Update the 3 cascading test expectations (provider_rate 48, nv_ccdp 1040.16, integration 890.16). - Add nv_ccdp_provider_star_rating enum input (STAR_1-STAR_5, default STAR_1) and restructure center.yaml/fcc.yaml by region x age x Silver State Stars tier from Manual MS 633.2 p.107 (each star adds $1.00/day). Default STAR_1 keeps microsimulation on the base/floor rate; the household calculator can select higher tiers. 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 Nevada's Child Care and Development Program (CCDP) — the DWSS child care subsidy funded through the federal Child Care and Development Fund (CCDF). The subsidy pays a provider-day rate (by region, provider type, and child age) up to the state maximum, less a flat income-tier family copay, capped at actual childcare expenses. Eligibility uses a two-tier State Median Income (SMI) test, Nevada residency, child citizenship, a $1M asset limit, and a qualifying-activity (Purpose of Care) requirement.
Closes #8664.
Regulatory Authority
Source-precedence caveat: The July 2024 Policy Manual's copay (MS 170/180) and income-eligibility sections are outdated — they still describe the pre-October-2024 sliding-scale copay (0-7% of income) and a single 85% SMI eligibility test. CC PT 06-25 explicitly supersedes these ("Subsidy eligibility remains at or below 41% of SMI for initial intake … and at or below 49% of SMI for renewal"; "The CCDP Policy Manual will be updated to reflect this change with the next manual release"). The Oct 2024 flat-copay change and the two-tier 41%/49% SMI eligibility are therefore authoritative; the Manual is used for the rules it did not supersede (rates, ages, citizenship, residency, income types, POC, waivers).
Manual verification (2026-06-21)
Verified the implementation page-by-page against the 156-page July 2024 Manual, cross-checked against the State Plan and CC PT 06-25.
Confirmed exact: child age < 13 (MS 210), special-needs age < 19 and its definition (MS 210/211), child-only citizenship with parent status not required (MS 214), Nevada residency (MS 218), care-level brackets 0/12/36/72 months (MS 631, "care level changes on the child's birthday"), subsidy = min(charge, state max) − family copay (MS 163), copay waivers limited to TANF/NEON + CPS/Foster + homeless (MS 163/181), and the $1M asset limit (MS 320). All 16 daily rates match the Manual MS 633.2 1-Star table (Clark + Washoe) and the State Plan Tables 1-2.
Income engine confirmed: PolicyEngine's federal
hhs_smifor Nevada × 41%/49% reproduces the CC PT 06-25 income chart to the exact dollar for every household size (1-12); the copay bands break at 33% / 42% / 49% SMI.Corrections made in this round:
Eligibility
nv_ccdp_eligible_child:age < child_age_limit(13)nv_ccdp_eligible_child:where(has_developmental_delay | is_disabled, age < 19, age < 13)nv_ccdp_income_eligible: new applicants ≤41% SMI (smi_intake), enrolled families ≤49% SMI (smi_renewal), keyed offnv_ccdp_enrolleddefined_for = StateCode.NVon the eligibility and output variablesnv_ccdp_eligible_childreuses federalis_ccdf_immigration_eligible_childnv_ccdp_eligiblereuses federalis_ccdf_asset_eligible(gov.hhs.ccdf.asset_limit)nv_ccdp_activity_eligible:meets_ccdf_activity_test | is_tanf_enrolled | is_homeless | protective-care child(existing status hooks; no new POC enum input)Income & SMI tiers
Nevada uses State Median Income, not the federal poverty line.
nv_ccdp_smireturns monthly 100% SMI via the federalsmi()helper, pinned to the October-1 chart effective date (the chart updates annually on Oct 1; verified to reproduce the CC PT 06-25 thresholds to the dollar).nv_ccdp_income_eligiblethen applies the tier ratio to monthly SMI:income/smi_intake.yaml).income/smi_renewal.yaml). This is the renewal ceiling and matches the top of the published copay scale exactly.The federal CCDF rules also define an 85% SMI mid-certification-period protection (45 CFR 98.21(a)(1)(ii)): a state may not terminate a family mid-certification until income exceeds 85% SMI. PolicyEngine does not track certification periods at the moment, so this mid-period protection is not enforced. The operative enrolled income ceiling in the model is the 49% renewal tier; the 85% protection is documented as a limitation in
nv_ccdp_income_eligible, not modeled.Benefit Calculation
nv_ccdp_provider_ratelooks uprates/center.yamlorrates/fcc.yaml;nv_ccdp_regionderives the region from county;nv_ccdp_age_groupderives the age band from age in months. (QRIS star tiers 2-5 and the lower Carson/Douglas and Rural area rates are not separately modeled — a conservative simplification documented innv_ccdp_region.)nv_ccdp_copay, keyed by % SMI): $0 (≤32.99% SMI), $90 (33% up to 42% SMI), $150 (above 42% up to 49% SMI). The $90/$150 break is at 42% (encoded0.4201), confirmed from the CC PT 06-25 chart. Waived (set to $0) for TANF-NEON referrals (is_tanf_enrolled), CPS/foster placements (is_in_foster_care/receives_or_needs_protective_services), and homeless households (is_homeless).Not Modeled
nv_ccdp_countable_income.nv_ccdp_income_eligible, not implemented.Microsimulation note
nv_ccdpreturns $0 in microsimulation becausemeets_ccdf_activity_testis an unpopulated input flag in the CPS microdata (false for every unit), sonv_ccdp_activity_eligibleis false everywhere. This is the same data-input artifact that affects sibling CCDF state programs (e.g.wv_child_care_subsidiesis also $0 in microsim for the same reason). It is a known microdata input gap, not a formula bug. The full benefit pipeline — both regions, both provider types, all four age groups, all three copay tiers, both enrollment states, and the copay-waiver path — is verified through the unit and integration tests, which setmeets_ccdf_activity_test: true(oris_homeless: true) and produce the expected non-zero benefits.Verification TODO
Test plan
policyengine-core test policyengine_us/tests/policy/baseline/gov/states/nv/dwss/ccdp/ -c policyengine_us), including after merging upstreammain.Files
Registry edits (2):
policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml— addednv_child_care_subsidiesto the federalchild_care_subsidiesaggregator.policyengine_us/programs.yaml— added the NV CCDPstate_implementationsentry under the CCDF federal program andNVto the CCDF coverage list.