Skip to content

Implement Alabama Child Care Subsidy Program (CCSP)#8322

Draft
hua7450 wants to merge 5 commits into
PolicyEngine:mainfrom
hua7450:al-ccap
Draft

Implement Alabama Child Care Subsidy Program (CCSP)#8322
hua7450 wants to merge 5 commits into
PolicyEngine:mainfrom
hua7450:al-ccap

Conversation

@hua7450
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 commented May 15, 2026

Summary

Implements Alabama Child Care Subsidy Program (CCSP) in PolicyEngine.

Closes #8321

Regulatory Authority

Program Overview

  • Official name: Alabama Child Care Subsidy Program (CCSP). Informally "CCAP".
  • Agency: AL DHR / Child Care Services Division / Office of Child Care Subsidy
  • Operational delivery: 4 regional Child Care Management Agencies (CMAs) covering 9 service regions
  • Funding: CCDF (federal block grant) + state matching
  • Effective date for parameters: 2024-01-01

Eligibility

Requirement Source How Modeled
Child under 13 (or 19 if disabled) State Plan §2.2.1 (p. 20) al_ccsp_eligible_child
Initial income ≤ 180% FPL State Plan §2.2.4 (p. 24) al_ccsp_income_eligible with al_ccsp_enrolled = False
Continuing income ≤ 200% FPL State Plan §2.2.4 (p. 39) al_ccsp_income_eligible with al_ccsp_enrolled = True
Hard cap ≤ 85% SMI 45 CFR 98.20 + State Plan §2.5.2 (pp. 24, 35-39) al_ccsp_income_eligible
Asset limit ≤ $1,000,000 State Plan §2.2.6 (p. 27) is_ccdf_asset_eligible (federal CCDF helper, reused)
Activity ≥ 15 hrs/week State Plan §2.2.2 (pp. 21-23) al_ccsp_activity_eligible
Immigration 45 CFR 98 is_ccdf_immigration_eligible_child (federal CCDF helper, reused)
Protective services waiver (income & activity) State Plan §2.2.2(f) (p. 23) al_ccsp_protective_services via is_in_foster_care, is_homeless
Alabama residency State Plan §2.2 (p. 20) defined_for = StateCode.AL

Family unit ≈ SPMUnit (PE's SPMUnit may include unrelated cohabitants that AL excludes; documented as known approximation).

Income Calculation

  • Gross monthly income — no deductions ("Regulations allow for no deductions to gross income" — Fact Sheet)
  • Counted sources: see income/countable_income/sources.yaml (employment, self-employment, farm operations, SS, pensions, unemployment, workers' comp, TANF, SSI, state supplement, interest, dividends, alimony, veterans' benefits)
  • Excluded: child support received, spousal support received, room rent
  • Weekly→monthly multiplier: 4.333 (regulatory literal per Fact Sheet, NOT WEEKS_IN_YEAR/MONTHS_IN_YEAR — per CT C4K precedent)

Family Fee (Copay)

Weekly per-child fee, sliding scale by FPL band. Effective Jan 1, 2024.

Initial tier (9 bands, 0-180% FPL):

FPL band Fee/week/child
≤100% $0
101-110% $18
111-120% $21
121-130% $24
131-140% $27
141-150% $30
151-160% $33
161-170% $36
171-180% $39

Continuing tier (181-200% FPL):

FPL band Fee/week/child
181-190% $42
191-200% $45

Copay waivers (REQ-021/022/023/024):

  • ≤100% FPL (encoded in fee table $0 band)
  • Family with disabled child (§3.3.1(iv))
  • Head Start / EHS enrollment (§3.3.1(v))
  • Foster care / protective services (§3.3.1(vi))

NOT waived: homeless families (homelessness only waives the eligibility test via the protective-services pathway, not the copay — per §2.2.2(f) and §3.3.1(iii)).

Provider Rates

486-cell rate matrix transcribed verbatim from Provider Rate Chart:

  • Provider types: Center, GFDC (Group Family Day Care), FDC (Family Day Care), INFORMAL (flat $40/wk cap)
  • Regions: 9 (Huntsville, Tuscaloosa, Mobile, Ft Payne, Birmingham, Talladega, Montgomery, Dothan, Opelika)
  • Age categories: Infant/Toddler (<36mo), Preschool (36-60mo), School-Age (≥60mo)
  • Quality tiers: Base + STAR 1-5 (~2% over Base per STAR; transcribed cell-by-cell, NOT derived — published rates show rounding inconsistencies)
  • Part-time (≤25 hrs/wk): ½ × full-time rate
  • County → region lookup masked by state_code_str == "AL" (per WA-PTE lesson) to prevent non-AL households crashing on missing keys

Benefit Calculation

Per-child weekly subsidy = max(0, min(provider charge, max weekly rate) − per-child copay).

Per-child monthly subsidy = weekly subsidy × 4.333 × al_ccsp_eligible_child.

Family-level copay split equally across eligible children. SPMUnit benefit = sum of per-child monthly subsidies.

Files Added

policyengine_us/parameters/gov/states/al/dhr/ccsp/
  age_category/months.yaml
  copay/initial_fee_by_fpl.yaml
  copay/continuing_fee_by_fpl.yaml
  eligibility/{child_age_limit, disabled_child_age_limit, income_limit_fpl_initial,
               income_limit_fpl_continuing, income_limit_smi_cap, activity_hours_minimum}.yaml
  income/countable_income/sources.yaml
  income/weeks_to_months.yaml
  rates/{maximum_weekly_full_time, part_time_multiplier, full_time_hours_threshold,
         informal_weekly_cap}.yaml
  region/counties.yaml

policyengine_us/variables/gov/states/al/dhr/ccsp/
  al_ccsp.py
  al_ccsp_age_category.py
  al_ccsp_countable_income.py
  al_ccsp_enrolled.py
  al_ccsp_provider_type.py
  al_ccsp_quality_tier.py
  al_ccsp_region.py
  al_child_care_subsidies.py
  copay/{al_ccsp_copay, al_ccsp_weekly_copay_per_child}.py
  eligibility/{al_ccsp_activity_eligible, al_ccsp_eligible, al_ccsp_eligible_child,
               al_ccsp_income_eligible, al_ccsp_protective_services}.py
  payment/al_ccsp_maximum_weekly_rate.py

policyengine_us/tests/policy/baseline/gov/states/al/dhr/ccsp/
  (14 YAML files, 103 test cases)

Modified:
- policyengine_us/programs.yaml (registered AL CCSP under CCDF state_implementations)
- policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml (added al_child_care_subsidies)
- changelog.d/al-ccap.added.md

Coverage

28 in-scope requirements / 28 implemented (100%). 9 NOT-MODELED items documented as known limitations.

Not Modeled

  • 7% federal copay cap (45 CFR 98.45) — State Plan §3.1.1 acknowledges family total may exceed 7%; fee table is source of truth
  • EHS-CCP as distinct from Head Start (proxied via is_enrolled_in_head_start)
  • TANF-Other Relative and Special Needs protective-service eligibility categories
  • Granular job-training / GED / internship enrollment status
  • Irregular / temporary income exclusion (§2.2.5)
  • McKinney-Vento homelessness flag (uses is_homeless Household variable instead)
  • CMA discretion / outreach / intake operations (§2.4, §2.5.3)
  • Job-search-alone activity
  • Priority / waitlist categories (§2.3)
  • 12-month continuity / mid-period income changes (§2.5.2)
  • Kinship care EXCLUDED from protective services per §2.2.2(f) (informational, not a modeling gap — §3.3.1(vi)'s "kinship care" phrasing treated as descriptive of the federal CCDF list, not AL-specific inclusion)

Test plan

  • 103 tests pass locally
  • make format clean
  • CI passes
  • Regulatory reviewer verifies: disabled-parent activity exemption (not in §2.2.2 text but standard cross-state convention per SC/VA), 7% copay cap omission, protective-services member coverage

Verification TODO

  • Confirm Provider Rate Chart effective date (chart is undated on its face; defaulted to 2024-01-01)
  • Confirm Provider Rate Chart hosting on alacourt.gov is the current/canonical version

🤖 Generated with /encode-policy-v2

hua7450 and others added 3 commits May 14, 2026 22:33
Closes PolicyEngine#8321

- 16 parameter files including 486-cell rate matrix (provider × region × age × STAR tier)
- 16 variables covering eligibility (180% FPL initial / 200% FPL continuing / 85% SMI cap),
  triple-test income, dual-tier copay table, multi-dimensional rate lookup, and waiver paths
- 14 test YAML files (103 cases) covering unit + integration + edge cases
- Registered in programs.yaml and federal CCDF child_care_subsidy_programs.yaml

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hua7450 hua7450 changed the title Implement Alabama Child Care Assistance Program (CCAP) Implement Alabama Child Care Subsidy Program (CCSP) May 15, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 15, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (8cb60e7) to head (511d761).
⚠️ Report is 23 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #8322    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            3        16    +13     
  Lines           63       297   +234     
==========================================
+ Hits            63       297   +234     
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 2 commits May 15, 2026 00:03
- Correct §2.5.5(c)(iii) section label on income_limit_fpl_continuing.yaml
- Fix #page=26 on income_limit_fpl_initial.yaml (was 24)
- Add #page=1/2 anchors to 6 Provider Rate Chart references
- Add 4 direct unit tests for al_ccsp_weekly_copay_per_child
- Add exact-boundary tests at 180% FPL, 200% FPL, 85% SMI

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add #page= anchors to 5 variable .py files referencing Provider Rate Chart
- Fix al_ccsp_enrolled.py section label (§2.2.4 → §2.5.5(c)(iii))
- Add STAR_1/STAR_2/STAR_4 test cases to al_ccsp_maximum_weekly_rate.yaml

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 Alabama Child Care Assistance Program (CCAP)

1 participant