PolicyEngine / PolicyEngine/policyengine-us
Implement pre-2022 New Mexico CCAP copayment formula (8.15.2.13.B NMAC)
- Dominant language
- Python
- Stars
- 162
- Forks
- 212
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 97
Description
## Summary
The New Mexico CCAP implementation (PR #8707, closes #8706) models the family copayment as **$0 for all periods**, because ECECD has waived all copayments since 2022-05-01. The **pre-2022 copayment formula (8.15.2.13.B NMAC)** was deferred and should be implemented in a future PR so that historical (pre-2022-05-01) analysis reflects real copays.
## Current state
- `nm_ccap_copay` returns `0` for all periods. The `copay/waived.yaml` toggle is `false` before 2022-05-01 and `true` after, but the formula has an inert branch (`if p.waived: return 0` / else `return 0`) because the pre-2022 formula is not modeled.
- This is locked in by `nm_ccap_copay.yaml` Case 3 (period `2021-01`), which asserts `$0` in the pre-waiver era.
## What to implement (pre-2022-05-01 periods)
Per 8.15.2.13 NMAC:
- **Base copay (first full-time child)** = (low end of the monthly income bracket on the copay schedule − 200% of annual FPL for the household size) × (low end of the monthly income bracket) × **1.1**.
- ⚠️ The middle "× (low end of bracket)" term is **dimensionally suspect** as written. The annually-published copay schedule (**8.15.2.24 NMAC**) is the operational source of truth — prefer transcribing that schedule over the raw formula.
- **Each additional child**: ½ of the previous child's copay, ranked by hours of care (first child = most hours).
- **Service-unit adjustment** (8.15.2.13.C): FT 100% / PT1 75% / PT2 50% / PT3 25% of the base copay.
- **Waivers**: Priority 5 (at-risk child care) and qualified grandparents / legal guardians pay $0.
## Recommended approach
1. Obtain a historical (pre-2022) published copay schedule under 8.15.2.24 rather than relying on the suspect formula.
2. Gate the formula on the existing `copay/waived.yaml` toggle: when `waived` is `false`, compute the copay; when `true`, return $0 (current behavior).
3. Subtract the copay in `nm_ccap` (the `min(rate, charge) − copay` term already exists; it's just always 0 today).
## Priority
**Low.** Copays are $0 from 2022-05-01 onward and remain $0 under Universal Child Care, so this only affects pre-2022 historical analysis.
## References
- 8.15.2.13.B / .C and 8.15.2.24 NMAC: https://www.srca.nm.gov/parts/title08/08.015.0002.html
- ECECD Co-payments Waived flyer (Effective May 1, 2022): https://www.nmececd.org/wp-content/uploads/2024/09/CCA-Co-payments-waived_rev1l.pdf#page=1
- Implemented in: #8707 (deferred item)
Contributor guide
Research direction
Start with nm_ccap_copay and the copay/waived.yaml toggle, then inspect nm_ccap_copay.yaml Case 3 and the existing nm_ccap subtraction path. Obtain a historical 8.15.2.24 copay schedule rather than relying on the suspect formula, and use the cited 8.15.2.13.B/.C rules to understand the required cases. Done means pre-2022 tests reflect the schedule while waived periods, specified waivers, and current post-2022 behavior remain $0.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100