Add Arizona Child Care Assistance Program#8373
Conversation
a2a08c2 to
5ce3ba2
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8373 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 15 19 +4
Lines 255 272 +17
=========================================
+ Hits 255 272 +17
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:
|
Critical fixes: - Correct copay daily rates at fee levels 2/3/4/6 to match CCA-0229AFY26 - Add categorical income-test bypass for foster/DCS/TANF families (R6-5-4914(A)) via new az_ccap_categorically_eligible - Remove capital_gains from countable income (excluded by R6-5-4914(G)(3)) - Add is_ccdf_immigration_eligible_child to eligible-child (45 CFR 98.20) - Correct regulation page anchors in parameters and variables Should-address: - Exclude minor-student earnings (R6-5-4914(G)(13)) and deduct child support paid (R6-5-4914(H)) from countable income - Register Arizona in programs.yaml CCDF coverage and state_implementations - Strip #page=1 anchors from the single-page CCA-1227A; improve citations - Document special-needs rate gate, CDA tier (not modeled), age<13 limit, TCC copay rule (not modeled), and activity pathways - Add test coverage: provider types, age groups, fee levels, direct unit tests, categorical bypass, and roll-up (21 -> 72 passing cases) Remove working_references.md transcription. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…into az-ccap # Conflicts: # policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml # policyengine_us/programs.yaml
- Count SSI, railroad retirement, and general assistance as countable income (R6-5-4914(F)(5),(8)) - Round countable income down to the whole dollar (R6-5-4914(I)) - Exclude all of a minor student's earnings, including SSTB and farm self-employment, not just wages (R6-5-4914(G)(13)) - Restrict the without-regard-to-income / fee-exempt categorical treatment for Cash Assistance families to those employed (R6-5-4914(A)(2)) - Require adults using education as their activity to work >=20 hours/week; education alone qualifies only teen parents under 20 (R6-5-4912(A)(3)-(4)) - Move the changelog fragment to a top-level path (changelog.d/8370.added.md) - Add tests: SSI counted, farm-earnings exclusion, whole-dollar floor, teen-parent activity, corrected adult-student activity Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Count recurring cash gifts (financial_assistance) and gambling proceeds as countable income (R6-5-4914(F)(16)-(17)) - Restrict the no-work education activity exception to teen parents in secondary school (is_in_secondary_school and is_parent), not any full-time student (R6-5-4912(A)(4)) - Parameterize the teen-parent age limit (gov.states.az.hhs.ccap.eligibility .teen_parent_age_limit = 20) citing R6-5-4912(A)(4)(a) - Remove trailing blank-line-at-EOF whitespace across the AZ CCAP YAML files - Add tests: cash gifts/gambling counted, teen-parent secondary-school eligibility, and adult-college-student ineligibility Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Group reimbursement-related parameters and variables under reimbursement/ (AZ's own term, per CCA-1227A "Maximum Reimbursement Rates" / R6-5-4925) and copay variables under copay/, mirroring the Maine CCAP layout: - variables/.../ccap/reimbursement/: daily_rate, max_reimbursement, age_group, provider_type, quality_enhanced_provider, special_needs_child - variables/.../ccap/copay/: copay, copay_exempt - parameters/.../ccap/reimbursement/: rates/, age_group/, school_age_summer/ - tests moved to mirror Update the provider-type import and parameter paths (ccap.rates -> ccap.reimbursement.rates, ccap.age_group/school_age_summer -> ccap.reimbursement.*) accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… tests - Fix az_ccap_copay vectorization: project SPMUnit fee rate to persons before multiplying by person-level arrays (avoids microsim broadcast error). - Let CPS-referred / CPS-or-DDD foster cases satisfy the activity-or-need test without employment (R6-5-4912(A)(9)). - Use weekly_hours_worked_before_lsr for the activity/categorical employment checks so labor-supply responses don't feed back into eligibility. - Correct child_age_limit reference anchor (#page=25 -> #page=26). - Add dedicated unit tests for az_ccap_eligible and az_ccap_special_needs_child, a whole-year summer reimbursement test, and edge cases (age/fee boundaries, daily-rate fallback branches, multi-child copay). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…into az-ccap # Conflicts: # policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml # policyengine_us/programs.yaml
|
Holding this one back from the current CCAP merge batch (KS/IA/IN/HI/FL/ID/KY are all merged) pending a source check on a single value. In Could you confirm against CCA-1227A (page 1) whether a standalone special-needs rate row actually exists? If $89.81 is really the infant quality rate, the special-needs branch should select the age-appropriate quality rate rather than apply a flat override. Everything else verified cleanly against the cited sources — happy to merge as soon as this is confirmed or adjusted. |
Include children with an Individualized Education Program (IEP) and children with a documented developmental delay, in addition to the generic is_disabled flag, per CCA-1210B item 14 (IFSP/IEP/ISP/504 pathways). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…into az-ccap # Conflicts: # policyengine_us/programs.yaml
|
Thanks for catching this and holding it back — good instinct to double-check the value. I verified against CCA-1227A, and there is a standalone Special Needs Rates row at the bottom of the rate table:
So $89.81 is a genuine published flat rate for special-needs children of any age (birth–12), not the infant-center quality cell. The match to the infant quality rate ($64.15 × 1.4 = $89.81) is coincidental — on the prior Aug 1, 2024 sheet the Special Needs Rate was $96.23, which likewise equals that sheet's infant quality rate (×1.5, before AZ dropped the multiplier to 1.4). Both sheets list it as its own all-ages row. Per CCA-1210B item 14, the special-needs enhanced rate applies at providers with a 3–5 star Quality First rating or national accreditation — exactly the Source: https://des.az.gov/sites/default/files/dl/CCA-1227A.pdf#page=1 (Special Needs Rates section, bottom of the table) Separately, I broadened the Let me know if you'd like anything else before merging. |
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Program Review — Arizona Child Care Assistance Program (CCAP)
Automated multi-agent review (regulatory, references, code patterns, test coverage, and source-value audits of income/copay + the provider-rate matrix).
Strong, well-structured implementation — 100 CCAP + 11 param/system tests pass, microsim runs clean, mechanisms (the +40% quality multiplier, flat special-needs rate, enrolled-vs-applicant two-tier, categorical bypass) all correctly reflect AZ CCA rules, and all 84 income-threshold cells + copays + base rates match CCA-0229A FFY2026. Requesting changes on a few items below — none are value errors.
✅ Cleared (not errors) — flagging so they aren't re-litigated
quality_multiplier = 1.4 and special_needs = $89.81 are correct for FFY2026. AZ reduced the Quality First enhancement to 40% effective 2025-11-01 ($64.15 × 1.4 = $89.81). The 50% / $96.23 figures are from the prior FFY2025 (08/24) sheet — the live FFY2026 rates confirm the PR's values.
Should address
- Hard-coded
age < 18inpolicyengine_us/variables/gov/states/az/hhs/ccap/income/az_ccap_countable_income.py(~line 30) — this is a policy threshold (minor-student earnings exclusion, R6-5-4914(G)(13)); move it to a parameter. It's the only genuine hard-coded value in the PR. - Reimbursement-rate citations point to the stale Aug-2024 edition. The 11
reimbursement/params are dated2025-11-01and their values are the FFY2026 rates, but thereferencehrefs cite the "08/24" CCA-1227A. Re-cite to the FFY2026 edition so the source matches the effective date (values are correct; only the cited edition is wrong). - Test coverage pins: add the level-7 fee-level upper boundary (
== threshold → 7,+1 → 0); a level-2 ($1/day) copay case + a multi-child case with differing attendance days; amax_family_sizeclamp case; and at least one non-center provider summer-rate case. - Confirm the special-needs
& qualitygate. The flat $89.81 special-needs rate is applied only when the provider is quality-enhanced; CCA-1227A lists Special Needs as a flat all-districts rate without an explicit star precondition — please confirm the gate is intended.
Suggestions
- Rename the changelog fragment
changelog.d/8370.added.md→8373.added.md(oraz-ccap.added.md) — it's named for the issue, not this PR. - The +35% CDA-credentialed certified-family tier isn't modeled (a CDA-only provider without a star rating is under-reimbursed) — worth a documented note.
az_ccap_enrolleddefaultsFalse, so the level-7 (85% SMI) continued-eligibility tier is unreachable population-wide in microsim — document or impute as future work.- Cosmetic:
48.70→48.7inreimbursement/rates/center.yaml; tighten theteen_parent_age_limit.yamldescription; thecountable_income/sources.yamlexcluded-income anchor is p.32 (not p.31).
Cleared / verified
All income/copay/eligibility values match source; no 7% copay cap needed (AZ's fixed daily-fee schedule is its 45 CFR 98.45 sliding scale); enums complete (no dead lookups); reuses the shared federal is_ccdf_asset_eligible / is_ccdf_immigration_eligible_child; no shared CCDF code modified.
🤖 Multi-agent review via /review-program
…child, citation cleanup - Restrict special-needs enhanced rate to licensed centers and certified group homes per CCA-1210B item 14 (provider type + quality + documented disability) - Replace hard-coded age < 18 with is_child in az_ccap_countable_income - Collapse duplicate same-PDF references to a single link across 5 files - Cosmetic: center toddler rate 48.70 -> 48.7 - Rename changelog fragment 8370.added.md -> az-ccap.added.md - Add daily-rate tests: certified-family special-needs (excluded) and group-home special-needs (included) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…into az-ccap # Conflicts: # policyengine_us/programs.yaml
…into az-ccap # Conflicts: # policyengine_us/programs.yaml
Summary
Fixes #8370.
Adds Arizona's Child Care Assistance Program (CCAP), including:
az_ccap_enrolledto apply ongoing/redetermination eligibility through 85% SMI.max(0, min(pre-subsidy childcare expenses, state maximum reimbursement) - copay).Regulatory Authority
Income Eligibility Tests
az_ccap_enrolledand may qualify through fee level L7, corresponding to the ongoing 85% SMI limit.Eligible Activity
teen_parent_age_limit(20) attending secondary school (R6-5-4912(A)(4)).is_disabled) qualifies.weekly_hours_worked_before_lsr) so a reform's behavioral hours change does not feed back into eligibility.Income Deductions And Exemptions
Standards And Benefit Calculation
az_ccap_categorically_eligible(used for both the income-test bypass and the copay exemption) is formula-based fromis_tanf_enrolledcombined with an employed head/spouse,receives_or_needs_protective_services, andis_in_foster_care.az_ccap_special_needs_childis formula-based from eligible child status andis_disabled; the enhanced special-needs rate additionally requires a quality-enhanced (3-5 star / accredited) provider per CCA-1210B.Requirements Coverage
Modeling Limitations And Future Work
Files
Parameters and variables are organized into
reimbursement/(rates, age groups, school-age season),copay/,eligibility/, andincome/subfolders.policyengine_us/parameters/gov/states/az/hhs/ccap/{reimbursement,copay,eligibility,income}/...policyengine_us/variables/gov/states/az/hhs/ccap/{az_ccap.py, az_ccap_enrolled.py, reimbursement/, copay/, eligibility/, income/}policyengine_us/variables/gov/states/az/hhs/az_child_care_subsidies.pypolicyengine_us/tests/policy/baseline/gov/states/az/hhs/ccap/...policyengine_us/programs.yaml(CCDF state implementation registration)changelog.d/8370.added.mdValidation
policyengine-core test policyengine_us/tests/policy/baseline/gov/states/az/hhs/ccap -c policyengine_usmake formatKnown failing tests: none.