PolicyEngine / PolicyEngine/policyengine-us
MA EAEDC SSI-eligibility exclusion lacks the income test (is_ssi_eligible vs uncapped_ssi)
- Dominant language
- Python
- Stars
- 162
- Forks
- 212
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 97
Description
Part of #9330 (disconnected disability inputs audit).
## Summary
MA EAEDC excludes disabled heads/spouses who are "SSI eligible" using `is_ssi_eligible` — but that model variable deliberately has **no income test** (categorical + resource + immigration only). The regulation's bar is an SSA eligibility *determination*, which includes SSA's income test. A disabled head whose income disqualifies them from SSI is legally EAEDC-eligible (subject to EAEDC's own financial tests) but is wrongly excluded.
## Current code
`policyengine_us/variables/gov/states/ma/dta/tcap/eaedc/eligibility/non_financial/ma_eaedc_eligible_disabled_head_or_spouse.py:18`:
```python
ssi_eligible = person("is_ssi_eligible", period)
return spm_unit.any(is_disabled & head_or_spouse & ~ssi_eligible)
```
## Legal basis
- [106 CMR 702.710(B)](https://www.law.cornell.edu/regulations/massachusetts/106-CMR-702-710): a person "who is determined to be eligible for SSI or SSP … is ineligible for EAEDC" — an SSA determination, income test included.
- [106 CMR 703.191](https://www.law.cornell.edu/regulations/massachusetts/106-CMR-703-191): EAEDC's own disability standard is an impairment "expected to last 60 days or more" substantially reducing capacity for work; SSA notification of SSI/SSDI disability qualifies automatically.
## Impact
Incidence is narrowed by EAEDC's stricter financial tests, but the two programs' income-counting rules differ, so the wrongly-excluded set is not empty.
## Proposed fix
Replace `~ssi_eligible` with `~(person("uncapped_ssi", period) > 0)` — income-inclusive and takeup-independent, matching "determined to be eligible" in steady state.
Secondary (per 703.191's automatic-qualification rule): consider broadening the disability leg to `is_disabled | (social_security_disability > 0)`.
Context note: the sibling `ma_eaedc_eligible_disabled_dependent_present` correctly has no SSI carve-out (702.710 bars the SSI-eligible person from being the EAEDC grantee; a disabled dependent can be on SSI while the caretaker's category stands) — don't "harmonize" it.
Contributor guide
Research direction
Start with policyengine_us/variables/gov/states/ma/dta/tcap/eaedc/eligibility/non_financial/ma_eaedc_eligible_disabled_head_or_spouse.py and compare the sibling ma_eaedc_eligible_disabled_dependent_present variable. Verify how is_ssi_eligible, uncapped_ssi, is_disabled, and social_security_disability are used, then run the relevant EAEDC tests. Done means the SSI exclusion uses the income-inclusive eligibility measure and the 703.191 disability qualification question is resolved without changing the dependent-present rule.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 72/100