Skip to content

Add Nevada Child Care and Development Program (CCDP)#8665

Open
hua7450 wants to merge 10 commits into
PolicyEngine:mainfrom
hua7450:nv-ccap
Open

Add Nevada Child Care and Development Program (CCDP)#8665
hua7450 wants to merge 10 commits into
PolicyEngine:mainfrom
hua7450:nv-ccap

Conversation

@hua7450

@hua7450 hua7450 commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

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

  • CC PT 06-25 Annual Income Changes (eff. Oct 1, 2025) — current income chart and flat copay tiers. PDF (3 pages; intake chart p.2, renewal chart p.3)
  • Child Care Policy Manual (July 1, 2024, MTL 01/24) — care-level age brackets (MS 631) and the base reimbursement-rate table (MS 633.2 Licensed Provider Daily Rates, 1-Star, p.107), plus activity/Purpose of Care categories (MS 400), residency (MS 218), child citizenship (MS 214), age limits (MS 210/211), income types (MS 306), deductions (MS 302), copay waivers (MS 163/181), and the $1M asset limit (MS 320). PDF (156 pages)
  • FFY 2025-2027 CCDF State Plan (ACF-118) — two-tier SMI eligibility (§2.2.4 / §2.5.5) and the $1M asset limit; its per-day base-rate table (Tables 1-2, pp.54-56) corroborates the Manual MS 633.2 1-Star rates. PDF (296 pages)
  • 2022 Child Care Market Rate Survey (eff. Apr 1, 2022) — 75th-percentile provider rates by region, provider type, and age, the survey basis for the published rates. PDF (92 pages)

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_smi for 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:

  • Clark center school-age daily rate $48 → $46 — the Manual MS 633.2 1-Star value (p.107). This is the only cell where the State Plan ($48) and the Manual (1-Star $46) differ; all other 15 rates match both. The rate tables now cite the Manual MS 633.2.
  • Citation fixes: special-needs age now cites MS 210 (p.36, where "until age 19" appears); activity now cites MS 400 (p.76); asset limit cites Manual MS 320 (p.75); income-type codes corrected (tips are 306.48 not 306.43; disability insurance is 306.9; SSI is exempt in Nevada, 306.40).
  • Documented as deferred: the MS 302.1 Average Cost of Care deduction and the foster/CPS household-of-one income exclusion (see Not Modeled).

Eligibility

Requirement Source How Modeled
Child under age 13 Manual MS 210 nv_ccdp_eligible_child: age < child_age_limit (13)
Special-needs child under age 19 Manual MS 210/211 nv_ccdp_eligible_child: where(has_developmental_delay | is_disabled, age < 19, age < 13)
Two-tier SMI income test CCDF State Plan + CC PT 06-25 nv_ccdp_income_eligible: new applicants ≤41% SMI (smi_intake), enrolled families ≤49% SMI (smi_renewal), keyed off nv_ccdp_enrolled
Nevada residency Manual MS 218 defined_for = StateCode.NV on the eligibility and output variables
Child U.S. citizen or eligible non-citizen (parent citizenship not required) Manual MS 214 nv_ccdp_eligible_child reuses federal is_ccdf_immigration_eligible_child
$1,000,000 family asset limit Manual MS 320; 45 CFR 98.20 nv_ccdp_eligible reuses federal is_ccdf_asset_eligible (gov.hhs.ccdf.asset_limit)
Qualifying activity (Purpose of Care 410-470) Manual MS 400 series 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_smi returns monthly 100% SMI via the federal smi() 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_eligible then applies the tier ratio to monthly SMI:

  • New applicants (intake): countable income ≤ 41% SMI (income/smi_intake.yaml).
  • Enrolled families (renewal/redetermination): countable income ≤ 49% SMI (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

subsidy = max(min(provider charge, state max monthly rate) − flat family copay, 0)
          capped at actual childcare expenses
  • State max monthly rate = per-day rate × billed days. The per-day rate comes from the Manual MS 633.2 Licensed Provider 1-Star daily-rate table, keyed by 2 regions (Clark vs. all other counties, using the Washoe 1-Star rates as the lowest-percentile representative) × provider type (center / family child care) × age group (infant / toddler / preschool / school-age). nv_ccdp_provider_rate looks up rates/center.yaml or rates/fcc.yaml; nv_ccdp_region derives the region from county; nv_ccdp_age_group derives 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 in nv_ccdp_region.)
  • Flat family copay (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% (encoded 0.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).
  • Per-child reimbursement is summed over eligible children in care, the family copay is subtracted once at the family level, and the result is floored at 0.

Not Modeled

What Source Why
85% SMI mid-certification hard-exit protection CCDF State Plan; 45 CFR 98.21(a)(1)(ii) We don't track certification periods at the moment, so the mid-period protection is not simulatable; the operative enrolled ceiling modeled is 49% SMI.
Average Cost of Care deduction Manual MS 302.1 Deferred — narrow child-only Kinship-Care / child-only-TANF / SSI-children population ($425/$398/$358/$209 by care level) we don't track at the moment. Documented in nv_ccdp_countable_income.
Foster/CPS household-of-one income exclusion Manual MS 216.4.3.1 / 216.4.4.1 Nevada treats a foster/CPS child as a household of one with the traditional household's income not counted (served at 100% subsidy regardless of family income). It applies only to foster/CPS children, not all children. Their copay and need-for-care are already handled via the protective-care pathway; the income exclusion is documented as a limitation in nv_ccdp_income_eligible, not implemented.
Mid-certification continuity past age 13/19 Manual MS 210/211 No certification-period tracking at the moment.
Activity-hour verification and overlapping-schedule computation Manual MS 400 series We don't track activity-hour verification or per-parent schedules at the moment (administrative).
12-month certification period / continuity windows Manual; federal CCDF We don't track certification time windows at the moment.
Job-search 90-day/year limit + POC funding availability Manual MS 430 We don't track per-category funding availability or job-search day counts at the moment.
Part-day / fractional-day rate adjustments and per-child fee ordering Manual MS 641/654 We assume a full-time month; no part-day rule modeled.
Per-child copay waivers Manual MS 163 Waiver applied at the whole-family level instead.

Microsimulation note

nv_ccdp returns $0 in microsimulation because meets_ccdf_activity_test is an unpopulated input flag in the CPS microdata (false for every unit), so nv_ccdp_activity_eligible is false everywhere. This is the same data-input artifact that affects sibling CCDF state programs (e.g. wv_child_care_subsidies is 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 set meets_ccdf_activity_test: true (or is_homeless: true) and produce the expected non-zero benefits.

Verification TODO

  • Per-day rates verified against the Manual MS 633.2 1-Star table (p.107) and the State Plan Tables 1-2 (pp.54-56) — they match except Clark center school-age, where the Manual's $46 is now used.
  • Age-band month cutoffs confirmed against Manual MS 631 (Infant 0-1 / Toddler 1-3 / Preschool 3-6 / School-Age 6-13 → 12/36/72-month cutoffs).
  • Copay $0 floor confirmed at 33% SMI and the $90/$150 break at 42%; full MS 306 counted/exempt income list verified (SSI exempt in Nevada; tips fold into wages 306.48).
  • Confirm the daily→monthly billing convention (21.67-day full-time-month proxy — Nevada publishes no explicit daily-to-monthly factor; MS 311 uses a weekly ×4.3 income factor, implying ~21.5 days).
  • Optionally confirm rates against an operational rate sheet (The Children's Cabinet / Las Vegas Urban League), distinct from the Manual MS 633.2 table.
  • CI passes.

Test plan

  • 115 unit + integration tests pass locally (policyengine-core test policyengine_us/tests/policy/baseline/gov/states/nv/dwss/ccdp/ -c policyengine_us), including after merging upstream main.
  • CI passes.

Files

policyengine_us/parameters/gov/states/nv/dwss/ccdp/
  age_group/months.yaml
  billing/monthly_billed_days.yaml
  copay/amount.yaml
  eligibility/child_age_limit.yaml
  eligibility/special_needs_child_age_limit.yaml
  income/smi_intake.yaml
  income/smi_renewal.yaml
  income/countable_income/sources.yaml
  rates/center.yaml
  rates/fcc.yaml

policyengine_us/variables/gov/states/nv/dwss/ccdp/
  nv_ccdp.py
  nv_child_care_subsidies.py
  nv_ccdp_age_group.py
  nv_ccdp_enrolled.py
  nv_ccdp_provider_rate.py
  nv_ccdp_provider_type.py
  nv_ccdp_region.py
  nv_ccdp_smi.py
  copay/nv_ccdp_copay.py
  eligibility/nv_ccdp_activity_eligible.py
  eligibility/nv_ccdp_eligible.py
  eligibility/nv_ccdp_eligible_child.py
  eligibility/nv_ccdp_income_eligible.py
  income/nv_ccdp_countable_income.py

policyengine_us/tests/policy/baseline/gov/states/nv/dwss/ccdp/
  integration.yaml
  nv_ccdp.yaml
  nv_child_care_subsidies.yaml
  nv_ccdp_age_group.yaml
  nv_ccdp_enrolled.yaml
  nv_ccdp_provider_rate.yaml
  nv_ccdp_provider_type.yaml
  nv_ccdp_region.yaml
  nv_ccdp_smi.yaml
  copay/nv_ccdp_copay.yaml
  eligibility/nv_ccdp_activity_eligible.yaml
  eligibility/nv_ccdp_eligible.yaml
  eligibility/nv_ccdp_eligible_child.yaml
  eligibility/nv_ccdp_income_eligible.yaml
  income/nv_ccdp_countable_income.yaml

changelog.d/nv-ccap.added.md

Registry edits (2):

  • policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml — added nv_child_care_subsidies to the federal child_care_subsidies aggregator.
  • policyengine_us/programs.yaml — added the NV CCDP state_implementations entry under the CCDF federal program and NV to the CCDF coverage list.

hua7450 and others added 3 commits June 17, 2026 10:53
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>
@hua7450 hua7450 changed the title Add Nevada Child Care Assistance Program (CCAP) Add Nevada Child Care and Development Program (CCDP) Jun 17, 2026
@codecov

codecov Bot commented Jun 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (47cb26b) to head (df5cb0f).
⚠️ Report is 13 commits behind head on main.

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     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

hua7450 and others added 4 commits June 17, 2026 12:46
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>
@hua7450 hua7450 marked this pull request as ready for review June 21, 2026 23:31
hua7450 and others added 3 commits June 21, 2026 19:32
…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>
@hua7450 hua7450 requested a review from PavelMakarchuk June 22, 2026 01:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Nevada Child Care Assistance Program (CCAP)

1 participant