Skip to content

Implement Virginia Child Care Subsidy Program (CCSP)#7933

Open
hua7450 wants to merge 10 commits intoPolicyEngine:mainfrom
hua7450:va-ccap
Open

Implement Virginia Child Care Subsidy Program (CCSP)#7933
hua7450 wants to merge 10 commits intoPolicyEngine:mainfrom
hua7450:va-ccap

Conversation

@hua7450
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 commented Apr 6, 2026

Summary

Implements Virginia's Child Care Subsidy Program (CCSP) in PolicyEngine, including eligibility determination, locality-grouped income tests, copayment calculation (both current 2023 and new 2025-07-01 scales), maximum reimbursement rates (MRR) by provider type/region/age group, and benefit computation.

Closes #7932

Regulatory Authority

Program Overview

  • Official name: Child Care Subsidy Program (CCSP)
  • Oversight: Virginia Department of Education (VDOE)
  • Administration: Virginia Department of Social Services (VDSS) through local departments
  • Funding: Federal CCDBG/CCDF block grant + state funds

Eligibility

Requirement Source How Modeled
Child under 13 8VAC20-790-20(A) va_ccsp_child_eligible: age < p.child (13)
Extended age under 18 (disabled) 8VAC20-790-20(B) where(is_disabled, p.disabled_child, p.child)
Child citizenship/immigration 8VAC20-790-40(B)(1) Reuses is_ccdf_immigration_eligible_child
Virginia residency 8VAC20-790-40(A) defined_for = StateCode.VA
Asset test ($1M) 8VAC20-790-40(C)(4) Reuses is_ccdf_asset_eligible
Activity test 8VAC20-790-30 Work hours >= 8/wk, student, disabled, or meets_ccdf_activity_test fallback
12-month eligibility period 8VAC20-790-40(D) va_ccsp_enrolled input switches to SMI exit limit

Income Eligibility

Virginia uses a dual FPG/SMI income test with locality-based thresholds.

New applicants: income must not exceed FPG rate by locality group (derived from county via Appendix Z):

Locality Group FPG Rate Example Localities
Group I (81 localities) 150% FPG Accomack, Lynchburg, Roanoke
Group II (30 localities) 160% FPG Henrico, Norfolk, Chesapeake
Group III (16 localities) 185% FPG Arlington, Fairfax, Loudoun

Fairfax/Alexandria exception: 250% FPG capped at 85% SMI (Appendix Z footnote).

Young child exception: families with child age ≤ 5 qualify at max(FPG limit, 85% SMI).

Enrolled families: 85% SMI regardless of locality group.

Categorical waivers: TANF, Medicaid, and WIC recipients are automatically income-eligible.

Copayment

Current Scale (2023–June 2025)

Income as % FPG Per-Child Monthly
0–100% $0
101–200% $60
201–300% $120
301%+ $180

Max 3 children assessed · 7% income cap · TANF exempt

New Scale (July 2025+)

Income as % FPG Per-Child Monthly
$0 $0
>0–100% $5
101–150% $125
151–200% $175
201–250% $225
251–300% $275
301–350% $325
351%+ $375

Max 3 children assessed · 5% income cap · TANF exempt

Copay counts only children actually attending care (childcare_attending_days_per_month > 0), not all eligible siblings.

Maximum Reimbursement Rates (MRR)

Rates vary by 9 Ready Regions × provider type (center vs family day home) × 5 age groups (infant/toddler/2yr/preschool/school-age). Part-day = 70% of full-day.

Age group cutoffs use month-based thresholds: infant < 16mo, toddler 16–23mo, 2yr 24–35mo, preschool 36–59mo, school-age 60mo+.

Benefit formula: min(max(expenses - copay, 0), monthly_mrr)

Known Limitations

What Why
9 VA independent cities (e.g., Manassas, Covington) commented out Not in PolicyEngine's county_enum; fall through to defaults
September 30 kindergarten cutoff Requires birth month input; approximated with 60-month threshold
Locality group default for unlisted counties Falls through to Group I (most conservative)

Files

parameters/gov/states/va/dss/ccsp/
  activity/, age_threshold/, copay/, income/, localities/,
  maximum_reimbursement_rate/ (center, family_day_home, ready_region/)

variables/gov/states/va/dss/ccsp/
  va_ccsp.py, va_ccsp_locality_group.py, va_child_care_subsidies.py
  eligibility/ (eligible, child_eligible, income_eligible, activity_eligible,
                income_test_waived, enrolled)
  income/ (countable_income)
  copay/ (copay)
  rates/ (daily_mrr, care_age_group, provider_type, is_full_day, ready_region)

tests/policy/baseline/gov/states/va/dss/ccsp/
  15 test files + 7 edge case files

Test Plan

  • 156 test assertions pass
  • Unit tests for all variables with logic
  • Edge cases: threshold boundaries, locality groups, Fairfax exception, TANF/Medicaid/WIC waivers, month-based age cutoffs, copay cap binding, disabled parent activity test
  • Integration tests: full pipeline from inputs through eligibility, copay, MRR, and benefit
  • Ready region coverage: all 9 regions tested
  • CI passes

🤖 Generated with Claude Code

hua7450 and others added 2 commits April 6, 2026 13:49
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 6, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (30cb6e5) to head (98a0c82).
⚠️ Report is 42 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #7933    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            1        17    +16     
  Lines           15       293   +278     
  Branches         1         0     -1     
==========================================
+ Hits            15       293   +278     
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 Sentry.
📢 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 7 commits April 6, 2026 16:04
- Activity min hours: 20 → 8 (Guidance Manual Section 1.1)
- Remove fabricated Medicaid/WIC income waiver (only TANF per 8VAC20-790)
- Young child age threshold: <= 5 → < 6 (fixes float comparison)
- Remove orphaned qualified_immigration_statuses.yaml
- Fix all #page= references (~30 pages off) and section format (dotted → letter)
- Add 2025-07-01 copay scale tests (period: 2026-01)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Activity proxy: is_in_k12_school → is_full_time_student (covers post-secondary)
- Fix 3 section/page references in parameter YAML
- Remove stale Medicaid/WIC test comment
- Changelog: CCAP → CCSP

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 9 Ready Regions with county-to-region mapping (133 localities)
- Center rates by region × age group (45 rate cells)
- Family Day Home rates by region (flat across ages, 9 rates)
- Part day = 70% of full day rate
- Benefit now capped at sum(daily_mrr × attending_days_per_month)
- New variables: ready_region (derived from county_str), provider_type,
  care_age_group (5 groups), is_full_day, daily_mrr
- 12 new MRR test cases, existing tests updated with attending days

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…waiver, month-based age cutoffs

- Derive locality group from county using Appendix Z mappings (was bare input defaulting to GROUP_III)
- Add Fairfax/Alexandria 250% FPG exception capped at 85% SMI
- Add Medicaid and WIC recipients to income test waiver (was TANF-only)
- Use month-based age cutoffs for care age groups (16/24/36/72 months vs whole-year)
- Update copay reference URL to correct PDF link
- Rename mrr/ to maximum_reimbursement_rate/
- Remove sources/working_references.md
- Add tests for locality group derivation, income waiver, and Fairfax exception

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…lback

- Change preschool-to-school-age threshold from 72 to 60 months (age 5)
- Add meets_ccdf_activity_test as fallback for unmodeled activities
  (job search, education/training, VIEW/SNAP E&T, CPS, temporary leave)
- Update federal meets_ccdf_activity_test documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…lder reorg

- Copay counts only children actually attending care (not all eligible siblings)
- Add missing references to va_ccsp_is_full_day, va_ccsp_provider_type, subtracts.yaml
- Comment out 9 VA independent cities not in county_enum
- Add Falls Church City to Group III localities
- Add disabled parent activity test case
- Add ready region test coverage (9 regions)
- Add childcare_attending_days_per_month to copay tests
- Reorganize variables into eligibility/, income/, copay/, rates/ subfolders

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@hua7450 hua7450 changed the title Implement Virginia Child Care Assistance Program (CCAP) Implement Virginia Child Care Subsidy Program (CCSP) Apr 8, 2026
@hua7450 hua7450 marked this pull request as ready for review April 8, 2026 05:41
Remove redundant va_ccsp_copay_2025_07.yaml and consolidate its
2026-01 new-scale tests into va_ccsp_copay_edge.yaml. Drop duplicate
old-scale-at-2025-01 tests already covered by main copay test file.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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 Virginia Child Care Assistance Program (CCAP)

1 participant