PolicyEngine / PolicyEngine/policyengine-us
Child-care subsidy returns $0 for eligible households in CA, MA, MD, NE (default enum/attendance inputs)
- Dominant language
- Python
- Stars
- 162
- Forks
- 212
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 97
Description
**Observed** (API, 2026, policyengine-us 1.764.6 per `/us/metadata`): several states return `child_care_subsidies` = 0 for a household that plainly qualifies — a working parent, a preschooler, `spm_unit_pre_subsidy_childcare_expenses` set, at $0 of earnings where the family is unambiguously eligible.
| state | one child aged 3 | children 1, 4, 9 | cause |
|---|---|---|---|
| CA | $0 | $0 | `ca_calworks_child_care_time_coefficient` reads `ca_calworks_child_care_weeks_per_month` / `_days_per_month`, month-period inputs that default to 0, so the payment standard is multiplied by zero. Supplying them gives $9,600. `main` appears already refactored onto the shared `childcare_days_per_week` / `childcare_attending_days_per_month`. |
| MA | $0 | $12,674 | `ma_ccfa_care_provider_type` defaults to `CENTER_BASED_CARE_SCHOOL_AGE`, a zero rate for a preschooler, although `ma_ccfa_child_age_category` derives the age category correctly from `age`. Setting `CENTER_BASED_CARE_EARLY_EDUCATION` gives $9,600. A household with an infant is paid because the infant's rate is nonzero. |
| MD | $0 | $0 | not chased; issue #9405's own comment reports a provider type defaulting to `NONE`. |
| NE | $0 | $0 | not chased. |
**Expected**: a default that yields a benefit for an eligible household, or a documented required input. The common shape is that an enum or attendance input defaults to a value that zeroes the award, while every other input needed for eligibility is present and correct.
**Why it matters downstream**: in a 51-state comparison these states show no child-care cliff at all, which reads as kinder rules rather than a missing calculation. Combined with the 13 states whose subsidy variable is not in the deployed release, 23 of 51 states are affected for at least one household shape.
**Repro**: one adult age 30 with `employment_income` 0 and `weekly_hours_worked_before_lsr` 40, one child age 3, SPM unit with `spm_unit_pre_subsidy_childcare_expenses: 9600`, `childcare_expenses: null`, `child_care_subsidies: null`; `state_name` each of CA / MA / MD / NE.
Found while validating HotGap, a benefits-cliff calculator on this API. Evidence, request and response pairs: https://github.com/mikewolfd/hotgap/tree/main/docs/upstream/evidence
Contributor guide
Research direction
Start by rerunning the API reproduction for CA, MA, MD, and NE and inspect `/us/metadata` alongside the definitions of the named attendance and provider-type variables. Trace the defaults for `ca_calworks_child_care_weeks_per_month`, `ca_calworks_child_care_days_per_month`, `ma_ccfa_care_provider_type`, and the unresolved MD and NE inputs; done means eligible households receive the expected subsidy or the required inputs are documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100