Skip to content

Implement Washington State Child Care Assistance Program#8208

Draft
hua7450 wants to merge 5 commits intoPolicyEngine:mainfrom
hua7450:wa-ccap
Draft

Implement Washington State Child Care Assistance Program#8208
hua7450 wants to merge 5 commits intoPolicyEngine:mainfrom
hua7450:wa-ccap

Conversation

@hua7450
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 commented Apr 30, 2026

Summary

Implements Washington State Working Connections Child Care (WCCC) — the state's CCDF/CCDBG-funded child care subsidy program administered by DCYF (intake by DSHS Child Care Subsidy Contact Center).

Closes #8207

Regulatory Authority

Program Overview

  • Administration: DCYF Early Learning Division (rules + payments); DSHS Child Care Subsidy Contact Center (intake)
  • Funding: Federal CCDF/CCDBG + state match
  • Authorization period: 12 months (WAC 110-15-0082)

Eligibility

Requirement Source How Modeled
Income at or below 60% SMI (applicants) / 65% SMI (recipients) WAC 110-15-0005(1)(f)(i) wa_wccc_smi_rate selects via is_wccc_enrolled
85% SMI for HGP (homeless) WAC 110-15-0023(2)(b) is_homeless triggers higher SMI rate
85% SMI for parents in HS (no age cap) RCW 43.216.814(1); WAC 110-15-0005(2) head/spouse is_in_k12_school
SNAP recipients auto-income-eligible RCW 43.216.802(5); WAC 110-15-0075(3) wa_wccc_income_eligible checks is_snap_eligible | (snap_reported > 0)
Asset limit $1,000,000 WAC 110-15-0005(1)(d); CCDBG Act of 2014 Federal is_ccdf_asset_eligible (replaces state-specific check)
Child under 13 WAC 110-15-0005(3)(b)(i) wa_wccc_eligible_child (age < 13)
Child under 19 with verified special need WAC 110-15-0005(3)(b)(ii); WAC 110-15-0220(1)(b) wa_wccc_eligible_child extends to age 19 when is_disabled
Child must be a dependent of parent in unit WAC 110-15-0005(1)(a) is_tax_unit_dependent
WA residency WAC 110-15-0005(3)(a) defined_for = StateCode.WA
Approved-activity test (work, school, K-12, disabled) WAC 110-15-0005(1)(f), 0040, 0045 wa_wccc_activity_eligible (simplified — we don't track approved-activity hours at the moment)
Both parents must individually pass activity test WAC 110-15-0020 Sum of head/spouse not individually-eligible == 0
Neither parent nor child citizenship considered RCW 43.216.802(7) No immigration check in formula

Family Share / Copay

Income Tier (% SMI) Monthly Copay
At or below 20% $0 (waived)
Above 20%, at or below 36% $65
Above 36%, at or below 50% $90
Above 50%, at or below 60% $165
Above 60%, at or below 65% (recipients only) $215

Source: WAC 110-15-0075(2). Copay is not prorated for partial-month use (WAC 110-15-0075(4)).

Copay waived for:

  • HGP recipients (homeless) — WAC 110-15-0075(5)(c)(i)
  • Parents in HS — WAC 110-15-0075(5)(a)

Benefit Calculation

benefit = min(
    max(actual_childcare_expenses - copay, 0),
    sum_per_child(max_monthly_reimbursement)
)

Provider rates (WAC 110-15-0200/0205/0240, effective 7/1/2023 for centers and family home; in-home/relative $4.00/hr from 7/1/2024):

  • Center: 7-region × 4-age × FULL_DAY/HALF_DAY matrix. Region overrides for centers only: Clark→R3; Benton/Walla Walla/Whitman→R6.
  • Family home: 7-region × 5-age (incl. ENHANCED_TODDLER 12–17 mo) × FULL_DAY/HALF_DAY/PARTIAL_DAY matrix.
  • In-home/relative: $4.00/hr/child (was $3.85/hr before 7/1/2024).
  • Day type per WAC 110-15-0190(7): FULL_DAY = ≥5 hr/day, HALF_DAY = <5 hr/day, PARTIAL_DAY = <5 hr/day with before-and-after-school care.
  • Monthly billing units: 23 days (center), 22 days (family home), 230 hours (in-home).

Architecture

  • Federal CCDF reuse: asset eligibility uses the federal is_ccdf_asset_eligible variable (matching the $1M CCDBG ceiling), not a state-specific check.
  • Compact payment/ folder: 7 variables total, with single-use rate lookups inlined into wa_wccc_max_monthly_reimbursement. Day-type indirection (FULL_TIME/PART_TIME → FULL_DAY/HALF_DAY) was removed in favor of a single wa_wccc_day_type input that directly encodes WAC 110-15-0190(7)'s per-day care-hour distinction.

Requirements Coverage

35 in-scope requirements implemented (REQ-001/002/005/006/007/008/009/010/011/012/014/017/018/019/020/021/022/024/027/028/029/030/031/032/033/038/040/041/042/043/044/045/046). One in-scope item (REQ-034 16-hr/day cap) is non-binding under simplified billing standards (16 × 30 = 480 > 230 monthly hour cap) and is documented in the Not Modeled section.

Not Modeled

What Source Reason
Apprenticeship 75% SMI (12 mo) WAC 110-15-0005(1)(f)(ii); RCW 43.216.802(3) No PolicyEngine apprenticeship input
ECE workforce 85% SMI WAC 110-15-0005(1)(f)(iii) No PolicyEngine ECE-workforce input
HSE-certificate path (age 21 cap) RCW 43.216.814(2) Only HS path is modeled — no PolicyEngine HSE input
Court-supervision child eligibility (under 19) RCW 43.216.802(2)(a)(ii) No PolicyEngine court-supervision input
Activity hours (110 hr/mo full-time threshold) WAC 110-15-0190(1) We don't track approved-activity hours at the moment
CPS/CWS/family-assessment categorical WAC 110-15-0024(1)(a) No PolicyEngine CPS/CWS-involvement input
Specialty/therapeutic court categorical WAC 110-15-0024(1)(b) No PolicyEngine input
Copay waiver for ECE workforce WAC 110-15-0075(5)(b) Parent eligibility excluded above
Copay waiver for non-HGP categorical (CPS/CWS) WAC 110-15-0075(5)(c)(ii) CPS/CWS excluded above
Mid-period copay no-increase rule WAC 110-15-0085(4) Temporal eligibility-period logic not modeled
Tiered reimbursement bonuses (Early Achievers) WAC 110-15-0210 Defer to v2 (requires quality-rating input)
Infant enhanced rate $300/mo WAC 110-15-0215 Defer to v2
Special needs / registration / field-trip / nonstandard-hours fees WAC 110-15-0215+ Defer to v2
16-hr/day cap (per child per day) WAC 110-15-0190(9) Non-binding given simplified 230-hour/month billing standard (16 × 30 = 480 > 230)
"Unmarried parents with no mutual children = separate households" rule WAC 110-15-0015 SPMUnit aggregation may put them together
Per-day care-hours / before-and-after-school flag for day-type derivation WAC 110-15-0190(7) wa_wccc_day_type defaults to FULL_DAY; user override accepted

Historical Notes

  • 2021 Fair Start for Kids Act (ESHB 1213): planned expansion of income limits from 60% SMI → 75% SMI (2025) → 85% SMI (2027).
  • 2025 c 412 (ESSB 5752) delayed the 75% SMI expansion to 7/1/2029 and the 85% SMI expansion to 7/1/2031. WAC 110-15-0005 still reflects the 60%/65% SMI rule.
  • Copay table (WAC 110-15-0075) updates annually each Oct 1. Current dollar amounts effective 10/1/2025.
  • SNAP automatic income eligibility (RCW 43.216.802(5)) effective 11/1/2024.

Key Implementation Notes

  • Reference implementation: Maine CCAP (policyengine_us/{variables,parameters}/gov/states/me/dhhs/ccap/).
  • Provider rates: 7/1/2023 baseline used per scope decision (the 7/1/2025 center rate table referenced in the F7 budget package was not located as a published PDF; current WAC 110-15-0200 still shows 7/1/2023 rates).
  • Income source list at parameters/.../wccc/sources.yaml; wa_wccc_countable_income.py uses adds = "..." (not inline). TANF excluded from sources to prevent a benefit cycle.
  • Registered in programs.yaml, spm_unit_benefits.py, and household_state_benefits.yaml per CO CCAP precedent.

Files

parameters/gov/states/wa/dcyf/wccc/    (~30 parameters)
variables/gov/states/wa/dcyf/wccc/     (~24 variables across copay/, eligibility/, income/, payment/)
tests/policy/baseline/gov/states/wa/dcyf/wccc/  (18 test files)

Verification TODO

  • CI passes
  • Verify amounts in parameters/.../wccc/copay/amount.yaml against WAC 110-15-0075(2)
  • Verify provider rate cells in rates/center.yaml and rates/family_home.yaml against WAC 110-15-0200(1) and 110-15-0205(2)
  • Verify region county lists against DCYF EPS_0004 regional map
  • Verify SNAP categorical-eligibility effective date (11/1/2024) handled correctly per RCW 43.216.802(5)

Test plan

  • 121 tests pass (policyengine-core test policyengine_us/tests/policy/baseline/gov/states/wa/dcyf/wccc/ -c policyengine_us)
  • CI passes

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 30, 2026

Codecov Report

❌ Patch coverage is 98.78788% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 97.09%. Comparing base (d55cd4f) to head (2d7fb23).
⚠️ Report is 56 commits behind head on main.

Files with missing lines Patch % Lines
.../states/wa/dcyf/wccc/copay/wa_wccc_smi_fraction.py 90.00% 1 Missing and 1 partial ⚠️
...ates/wa/dcyf/wccc/eligibility/wa_wccc_smi_limit.py 90.47% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##              main    #8208      +/-   ##
===========================================
- Coverage   100.00%   97.09%   -2.91%     
===========================================
  Files            2       21      +19     
  Lines           35      344     +309     
  Branches         0        4       +4     
===========================================
+ Hits            35      334     +299     
- Misses           0        8       +8     
- Partials         0        2       +2     
Flag Coverage Δ
unittests 97.09% <98.78%> (-2.91%) ⬇️

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 3 commits April 30, 2026 15:08
- HGP "under 85% SMI" boundary: use strict less-than
- HGP path bypasses both asset cap and income tier per WAC 110-15-0023(2)(a)
- Drop teen-parent age cap on K-12 path per RCW 43.216.814
- Rename wa_wccc_categorical_eligible to wa_wccc_hgp_eligible
- SNAP categorical: include is_snap_eligible per RCW 43.216.802(5)
- Backdate eligibility/copay/sources parameters to align with rate parameters
- Fix homeless.yaml effective date to 2023-12-14 (WSR 23-23-082)
- Fix center_full_days.yaml subsection cite to WAC 110-15-0190(3)(b)
- Add wa_wccc, wa_wccc_center_time_category, wa_wccc_family_home_time_category unit tests
- Document copay waivers (5)(b) ECE-workforce and (5)(c)(ii) categorical as unmodeled
- Drop wa_wccc_time_category constant formula (now bare input with default FULL_TIME)
- Subtract child_support_expense from countable income per WAC 110-15-0065

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Reduce payment/ from 12 to 7 variables by consolidating the time category
indirection layer and inlining single-use rate lookups. The deleted
intermediate variables matched the wrapper-variable anti-pattern: each
was used in exactly one place.

Replace wa_wccc_time_category (FULL_TIME/PART_TIME parent activity proxy),
wa_wccc_center_time_category, and wa_wccc_family_home_time_category with a
single wa_wccc_day_type input enum (FULL_DAY / HALF_DAY / PARTIAL_DAY).
The new enum reflects WAC 110-15-0190(7), which defines day types by
per-day care hours — not parent activity hours, which the previous
indirection conflated. PARTIAL_DAY is now reachable for family home
providers (it was unreachable in the old code).

Inline wa_wccc_center_daily_rate, wa_wccc_family_home_daily_rate, and
wa_wccc_in_home_relative_hourly_rate into wa_wccc_max_monthly_reimbursement.
Update center.yaml and family_home.yaml rate parameter breakdowns to use
wa_wccc_day_type. Center rates have no PARTIAL_DAY tier per WAC
110-15-0200; PARTIAL_DAY entries mirror HALF_DAY for centers.

Tests: 121 pass after refactor. Six unit-test files for the deleted
wrapper variables removed alongside them. Two new cases added to
wa_wccc_max_monthly_reimbursement.yaml exercising PARTIAL_DAY for family
home and the HALF_DAY fallback for centers.

Co-Authored-By: Claude Opus 4.7 (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 Washington State Child Care Assistance Program (Working Connections Child Care)

1 participant