Implement Washington State Child Care Assistance Program#8208
Implement Washington State Child Care Assistance Program#8208hua7450 wants to merge 7 commits intoPolicyEngine:mainfrom
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #8208 +/- ##
===========================================
- Coverage 100.00% 97.17% -2.83%
===========================================
Files 2 22 +20
Lines 35 354 +319
Branches 0 4 +4
===========================================
+ Hits 35 344 +309
- Misses 0 8 +8
- Partials 0 2 +2
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:
|
- 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>
Fixes from /review-program audit: Critical: - Gate SNAP categorical income eligibility on a date-bounded parameter (RCW 43.216.802(5) effective 2024-11-01). Use snap_reported instead of is_snap_eligible to avoid a circular dependency through SNAP's dependent-care deduction. - Wire wa_child_care_subsidies aggregator into spm_unit_benefits and household_state_benefits (matches VA/SC/CA/CO/NE/DE precedent), and register it in the federal child_care_subsidy_programs aggregator. Should: - Add DCYF Licensed Family Home base rate update effective 2025-07-01 (105 cells across 7 regions x 5 age groups x 3 day types). - Add EPS_0004 Regional Map reference to all 7 region county-list files. - Add DCYF Copay Calculation Table reference to copay/amount.yaml. - Tighten wa_wccc_provider_type defined_for to wa_wccc_eligible_child. - Make applicant branch explicit in wa_wccc_smi_rate select. - Citation precision: teen_parent.yaml -> RCW 43.216.814(3)(a)(ii); family_home_full_days.yaml -> WAC 110-15-0190(4)(a); in_home_relative_full_hours.yaml -> WAC 110-15-0190(8)(a). - Drop redundant is_in_k12_school from activity test (already covered by is_full_time_student). - Document medical incapacity activity waiver per WAC 110-15-0020(2)(b) in wa_wccc_activity_eligible. Tests: - Add 7 cases to wa_wccc_max_monthly_reimbursement covering HALF_DAY override (center + family home), additional regions (REGION_4 King, REGION_6, SPOKANE), additional age groups (TODDLER, ENHANCED_TODDLER, SCHOOL_AGE, PRESCHOOL), and the 2025-07-01 family-home rate layer. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Three review agents flagged the missing period metadata field on the new in_effect.yaml parameter. Adds period: month per the parameter-patterns convention. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Program Review — PR #8208: Washington Working Connections Child Care (WCCC)
Round 2 verification. Round-1 fixes applied per commit (described in PR body). Code is sound; documents verified against DCYF PDFs.
Source Documents
- Chapter 110-15 WAC (91 pp PDF) — administrative rules
- DCYF Copay Calculation Table effective 10/1/2025 (PDF, 2 pp)
- DCYF Licensed Family Home (LFH) Base Rates effective 7/1/2025 (PDF, 1 p)
- DCYF Regional Map EPS_0004 (PDF, 2 pp)
- RCW 43.216.802, .808, .814, .828, .135 (statutory authority)
Critical (Must Fix)
None.
Should Address
-
Missing 75% mid-period exit threshold. DCYF Copay Table footnote 2 indicates 75% SMI is the mid-eligibility-period case-termination threshold, distinct from the 65% reapplication ceiling already modeled. No variable currently enforces this mid-period check. Real modeling gap — recommend follow-up issue. Not a blocker for this PR.
-
Activity test missing K-12 parent path.
is_in_k12_schoolis used in SMI-rate logic but is absent fromwa_wccc_activity_eligible.py'sindividually_eligibledisjunction. A teen K-12 parent without earnings, full-time-student status, or disability would fail the activity test even though K-12 attendance qualifies under WAC 110-15-0040 for HS-path parents (RCW 43.216.814(1)). -
Activity test self-employment edge case.
has_earnings = earned_income > 0would fail a parent with negative net self-employment income. Consider(employment_income > 0) | (self_employment_income != 0)to recognize SE activity regardless of profitability. -
Reference anchors. DCYF multi-page PDFs (Copay Table 2 pp, EPS_0004 2 pp) lack
#page=Nanchors in variable references — minor reference-quality nit. -
Test gaps (9 minor):
- SNAP categorical 2024-11-01 effective-date transition boundary
- In-home rate $3.85 → $4.00 transition (only post-rate is covered)
wa_wccc_day_typedefault-branch behaviorwa_child_care_subsidiesaggregator integration test- 65 / 75 / 85% SMI copay tier boundary cases
- Center max-reimbursement matrix for REGION_2, REGION_5, REGION_7
- Asset limit exactly at $1M boundary (only $1.5M tested)
- Out-of-state end-to-end (defined_for = WA confirmation)
- Fractional age boundaries 12.99 / 13.01
Suggestions
- Copay tier epsilon. Use of
0.2001creates a sub-percentile gap between tiers — document the choice or switch to strict>semantics for cleaner boundaries. is_wccc_enrolled.defined_for = StateCode.WAfor consistency with sibling WA-scoped variables.copay/amount.yamldescription could be tightened to the standard PolicyEngine parameter description template.- CI codecov soft fails are non-blocking; likely flake/threshold noise.
PDF Audit Summary
| Document | Match |
|---|---|
| EPS_0004 Regions | 39/39 counties + 3 center overrides ✓ |
| LFH 7/1/2025 Rates | 105/105 cells (both age layers intact) ✓ |
| DCYF Copay Table | All values match; 1 false-positive flag rejected |
The single copay PDF mismatch flagged by the audit agent (claimed 75% factor) was rejected via code-path verification: the agent conflated WAC subsections. The 0.65 factor in the code is correct per WAC 110-15-0005(1)(f)(i)(B); the 75% figure applies only to the apprenticeship-program subsection.
Validation Summary
| Check | Result |
|---|---|
| Regulatory Accuracy | APPROVE (5 should-consider) |
| Reference Quality | APPROVE (1 minor) |
| Code Patterns | APPROVE |
| Test Coverage | APPROVE (9 should-consider) |
| PDF Audit | All 3 PDFs match repo |
| CI | 2 codecov soft fails; remaining 13 Full Suite checks running |
Review Severity: COMMENT (close to APPROVE)
Rationale: All correctness items verified. Round-1 fixes landed correctly. Remaining items are minor code-quality refinements (activity-test semantics) and test-coverage gaps. The largest substantive finding is the missing 75% mid-period exit threshold (separate variable needed); this is a real but non-blocking modeling gap suitable for a follow-up issue.
Next Steps
Optional follow-ups:
- Address activity-test K-12 / SE-income concerns in a small follow-up commit.
- Fill the 9 enumerated test gaps.
- Open a separate issue for the 75% mid-period exit threshold variable.
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
Recent Updates (Review Fixes)
Addresses feedback from
/review-program:Critical
is_snap_eligiblewithsnap_reported > 0to break a circular dependency through SNAP's dependent-care deduction.wa_child_care_subsidiesaggregator intospm_unit_benefitsandhousehold_state_benefits(matches VA/SC/CA/CO/NE/DE precedent), and register it in the federalchild_care_subsidy_programsaggregator.wa_wccc_activity_eligible.Should
copay/amount.yaml.wa_wccc_provider_typedefined_fortowa_wccc_eligible_child.wa_wccc_smi_rateselect(nodefault=for a known category).teen_parent.yaml→ RCW 43.216.814(3)(a)(ii);family_home_full_days.yaml→ WAC 110-15-0190(4)(a);in_home_relative_full_hours.yaml→ WAC 110-15-0190(8)(a).Tests
wa_wccc_max_monthly_reimbursementcovering HALF_DAY override (center + family home), additional regions (REGION_4 King, REGION_6, SPOKANE), additional age groups (TODDLER, ENHANCED_TODDLER, SCHOOL_AGE, PRESCHOOL), and the 2025-07-01 family-home rate layer.Regulatory Authority
Program Overview
Eligibility
wa_wccc_smi_rateselects viais_wccc_enrolledis_homelesstriggers higher SMI rateis_in_k12_schoolwa_wccc_income_eligiblecheckssnap_reported > 0gated by date-boundedsnap_categorical/in_effectparameteris_ccdf_asset_eligible(replaces state-specific check)wa_wccc_eligible_child(age < 13)wa_wccc_eligible_childextends to age 19 whenis_disabledis_tax_unit_dependentdefined_for = StateCode.WAwa_wccc_activity_eligible(per-person OR; disability is a waiver per WAC 110-15-0020(2)(b))Family Share / Copay
Sources: WAC 110-15-0075(2); DCYF Copay Calculation Table. Copay is not prorated for partial-month use (WAC 110-15-0075(4)).
Copay waived for:
Benefit Calculation
Provider rates:
Architecture
is_ccdf_asset_eligiblevariable (matching the $1M CCDBG ceiling), not a state-specific check.wa_child_care_subsidiesaggregateswa_wccc(matches VA/SC/CA/CO/NE/DE precedent) and is registered in both the state benefit list and the federalchild_care_subsidy_programsaggregator.payment/folder: 7 variables total, with single-use rate lookups inlined intowa_wccc_max_monthly_reimbursement. Day-type indirection (FULL_TIME/PART_TIME → FULL_DAY/HALF_DAY) was removed in favor of a singlewa_wccc_day_typeinput 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
wa_wccc_day_typedefaults to FULL_DAY; user override acceptedsnap_reported > 0only — includingis_snap_eligiblewould create a circular dependency through SNAP's dependent-care deductionHistorical Notes
Key Implementation Notes
policyengine_us/{variables,parameters}/gov/states/me/dhhs/ccap/).parameters/.../wccc/sources.yaml;wa_wccc_countable_income.pyusesadds = "..."(not inline). TANF excluded from sources to prevent a benefit cycle.programs.yaml,spm_unit_benefits.py, andhousehold_state_benefits.yaml(via thewa_child_care_subsidiesaggregator) per cross-state precedent.Files
Verification TODO
parameters/.../wccc/copay/amount.yamlverified against WAC 110-15-0075(2) and DCYF Copay Calculation Tablerates/center.yaml(56 cells) andrates/family_home.yaml(105 cells × 2 layers) verified against WAC 110-15-0200(1), 110-15-0205(2), and the DCYF 7/1/2025 LFH rate sheetsnap_categorical/in_effect.yamlper RCW 43.216.802(5)Test plan
policyengine-core test policyengine_us/tests/policy/baseline/gov/states/wa/dcyf/wccc/ -c policyengine_us)