PolicyEngine / PolicyEngine/policyengine-us

MA EAEDC SSI-eligibility exclusion lacks the income test (is_ssi_eligible vs uncapped_ssi)

Open
#9,339 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.