PolicyEngine / PolicyEngine/policyengine-us

TANF disability classification gates ignore benefit receipt (MT two-parent, VA TANF-UP, DC resource limit)

Open
#9,340 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

Three TANF-family classification/resource gates key on generic `is_disabled` where the state's rule keys on **benefit receipt** — so SSI/SSDI recipients not flagged `is_disabled` are misclassified.

## MT — two-parent classification ignores SSI receipt (CONFIRMED)

`policyengine_us/variables/gov/states/mt/dhs/tanf/work_requirement/mt_tanf_is_working.py:17`:

```python
able_parents = is_head_or_spouse & ~is_disabled
```

[ARM 37.78.103](https://www.law.cornell.edu/regulations/montana/Mont-Admin-r-37.78.103): a two-parent household "is considered a single-parent household for work participation hours if one or both of the parents **receives Supplemental Security Income (SSI)** benefits or is incapacitated"; SSI recipients are also excluded from work-eligible individuals.

Impact: a parent with `ssi > 0` not flagged `is_disabled` counts as able-bodied → the unit gets the flat two-parent 132-hour requirement instead of the single-parent age-scaled hours.

**Fix**: also exclude parents with `ssi > 0`.

**Related, SUSPECTED**: `mt_tanf_meets_work_requirements.py:18` fully exempts any `is_disabled` parent, but per TANF 705-1 incapacity only re-classifies hours, and only SSI recipients are excluded from work-eligible individuals. Verify whether a broader WoRC exemption list exists elsewhere in the DPHHS manual before changing.

## VA — TANF-UP "able-bodied" test misses SSDI/SSI receipt (CONFIRMED)

`policyengine_us/variables/gov/states/va/dss/tanf/eligibility/va_up_tanf_eligibility.py:15`:

```python
able_bodied_adult = head_or_spouse & ~is_disabled
```

VA TANF Manual [ch. 700 §701.3](https://www.dss.virginia.gov/media/vdss/benefit-programs/documents/tanfx2fview/tanf/Chapter-700---TANF-UP-Unemployed-Parent-Program.pdf#page=3) and [ch. 900 §901.2 E](https://www.dss.virginia.gov/media/vdss/benefit-programs/documents/tanfx2fview/view/Chapter-900---The-Virginia-Initiative-for-Education-and-Work-(VIEW)-Program.pdf#page=4): "Individuals who are incapacitated, **as determined by receipt of** Social Security Disability (SSDI) benefits or Supplemental Security Income (SSI) … the case is a TANF case rather than a TANF-UP case."

**Fix**: `is_disabled | (social_security_disability > 0) | (ssi > 0)`. Also unmodeled in the same test: the §901.2 F age-60+ exemption, which likewise converts the case to TANF.

## DC — resource limit should use SNAP's receipt-based disabled definition (CONFIRMED)

`policyengine_us/variables/gov/states/dc/dhs/tanf/eligibility/dc_tanf_resources_eligible.py:20`:

```python
has_disabled = spm_unit.any(person("is_disabled", period))
```

[DC TANF State Plan (Oct 2023), p. 40](https://dhs.dc.gov/sites/default/files/dc/sites/dhs/service_content/attachments/DC%20TANF%20State%20Plan_Oct-2023.pdf#page=40): "Countable Resources must be less than the SNAP Resource Limit", with the SNAP elderly/disabled table — SNAP's "disabled" is the federal receipt-based definition already modeled as `is_usda_disabled` (whose own receipt-semantics defect is tracked separately; the two fixes compose).

**Fix**: `spm_unit.any(person("is_usda_disabled", period.this_year))`.

Contributor guide

Open the contributing guide

Research direction

Read the three named variable files and compare their existing disability predicates with the linked Montana, Virginia, and DC rules. Verify the suspected Montana work-requirement behavior and the existing is_usda_disabled semantics before changing anything. Done means the TANF gates use the stated receipt-based definitions, including SSI/SSDI and the SNAP-aligned DC resource test.

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
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.