Skip to content

Add SNAP immigration status eligibility#7315

Draft
hua7450 wants to merge 4 commits intoPolicyEngine:mainfrom
hua7450:hua7450/issue1475
Draft

Add SNAP immigration status eligibility#7315
hua7450 wants to merge 4 commits intoPolicyEngine:mainfrom
hua7450:hua7450/issue1475

Conversation

@hua7450
Copy link
Collaborator

@hua7450 hua7450 commented Feb 2, 2026

Summary

Closes #1475

Adds SNAP immigration status eligibility, reflecting changes from the One Big Beautiful Bill Act of 2025 (OBBBA). Excludes immigration-ineligible members from SNAP unit size for correct benefit calculation in mixed-status households. Implements California's delayed effective date (April 1, 2026) per ACL 25-92.

Regulatory Authority

Changes

Parameters

  • gov/usda/snap/eligibility/eligible_immigration_statuses.yaml
    • Pre-OBBBA (2018-01-01): CITIZEN, LPR, REFUGEE, ASYLEE, DEPORTATION_WITHHELD, CUBAN_HAITIAN_ENTRANT, CONDITIONAL_ENTRANT, PAROLED_ONE_YEAR
    • Post-OBBBA (2025-07-04): CITIZEN, LPR, CUBAN_HAITIAN_ENTRANT only
  • gov/states/ca/cdss/snap/eligibility/eligible_immigration_statuses.yaml
    • Same pre-OBBBA list, but restricted list effective 2026-04-01 (California delayed implementation per ACL 25-92)

Variables

  • is_snap_immigration_status_eligible - Person-level variable checking if immigration status is eligible; uses federal_eligible | ca_eligible to apply CA's delayed date
  • ca_snap_immigration_status_eligible - California-specific immigration eligibility with defined_for = StateCode.CA
  • Updated is_snap_eligible to require at least one household member with eligible immigration status
  • Updated snap_unit_size (renamed from snap_unit.py) to exclude immigration-ineligible members, using OR with ineligible students to prevent double-counting

Mixed-Status Households

  • is_snap_eligible: Uses spm_unit.any() — household is eligible if at least one member has qualifying status (7 CFR 273.11(c))
  • snap_unit_size: Subtracts ineligible members so allotment, standard deduction, and min allotment are based on eligible member count only
  • Income proration for ineligible aliens is not yet implemented (separate follow-up)

Known Limitations

  • COFA citizens: Eligible post-OBBBA per federal law, but COFA is not in the ImmigrationStatus enum. Needs to be added separately.
  • LPR 5-year waiting period: Cannot be modeled in PolicyEngine's single-period architecture.
  • Income proration: Per 7 CFR 273.11(c), ineligible aliens' income should be prorated. Not yet implemented.

Test Plan

  • is_snap_immigration_status_eligible - 10 tests covering federal and CA-specific behavior
  • ca_snap_immigration_status_eligible - 8 tests covering CA delayed implementation
  • snap_unit_size - 9 tests including mixed-status households and double-counting prevention
  • is_snap_eligible - 8 tests including undocumented ineligible student edge case
  • Existing SNAP eligibility tests pass

🤖 Generated with Claude Code

- Add eligible_immigration_statuses parameter with pre/post OBBBA values
- Add is_snap_immigration_status_eligible variable
- Update is_snap_eligible to check immigration status
- Add tests for immigration eligibility

Closes PolicyEngine#1475

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@hua7450 hua7450 marked this pull request as draft February 2, 2026 17:19
@codecov
Copy link

codecov bot commented Feb 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (901599b) to head (cd0f7df).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #7315   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            3         4    +1     
  Lines           54        58    +4     
  Branches         1         0    -1     
=========================================
+ Hits            54        58    +4     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

hua7450 and others added 3 commits February 6, 2026 10:25
- Exclude immigration-ineligible members from snap_unit_size (using OR to avoid double-counting with ineligible students)
- Add California-specific delayed effective date (April 1, 2026) per ACL 25-92
- Rename snap_unit.py to snap_unit_size.py to match variable name

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SNAP immigration-related rules

2 participants