diff --git a/changelog.d/snap-abawd-foster-youth-indian-exemptions.added.md b/changelog.d/snap-abawd-foster-youth-indian-exemptions.added.md new file mode 100644 index 00000000000..881fd468d2f --- /dev/null +++ b/changelog.d/snap-abawd-foster-youth-indian-exemptions.added.md @@ -0,0 +1 @@ +SNAP ABAWD former foster youth exemption (7 CFR 273.24(c)(9), pre-HR1 only) with tests, and documentation plus test coverage notes for the post-HR1 IHCIA Indian exemption input. diff --git a/policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/former_foster_care.yaml b/policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/former_foster_care.yaml new file mode 100644 index 00000000000..6ce87f7dbbc --- /dev/null +++ b/policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/former_foster_care.yaml @@ -0,0 +1,15 @@ +description: The Department of Agriculture exempts individuals at or below this age who were in foster care under State responsibility on their 18th birthday from the Able-Bodied Adult Without Dependents (ABAWD) work requirements under the Supplemental Nutrition Assistance Program, before Public Law 119-21 removed this exception effective 2025-07-04. +values: + 2023-09-01: 24 + +metadata: + unit: year + period: year + label: USDA SNAP ABAWD former foster youth age threshold + reference: + - title: 7 CFR § 273.24 - Time limit for able-bodied adults (c)(9) + href: https://www.law.cornell.edu/cfr/text/7/273.24#c_9 + - title: Fiscal Responsibility Act of 2023, Section 311 - SNAP provisions + href: https://www.fns.usda.gov/snap/provisions-fiscal-responsibility-act-2023 + - title: FNS ABAWD Exceptions Implementation Memorandum (October 3, 2025) + href: https://www.fns.usda.gov/snap/obbb-abawd-exemptions-implementation diff --git a/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.yaml b/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.yaml index 039629c0ffa..51766ca0fcf 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.yaml @@ -500,3 +500,59 @@ is_snap_abawd_discretionary_exempt: true output: meets_snap_abawd_work_requirements: true + +# 273.24(c)(9): Former foster youth aged 24 or younger +# (pre-HR1 only — added by FRA 2023, removed by +# P.L. 119-21 effective 2025-07-04) +# ===================================================== + +- name: Case 36, pre-HR1 former foster youth aged 24 exempt. + period: 2025-05 + absolute_error_margin: 0.1 + input: + age: + 2025: 24 + weekly_hours_worked_before_lsr: + 2025: 1 + is_disabled: + 2025: false + was_in_foster_care: + 2025: true + state_code: + 2025: TX + output: + meets_snap_abawd_work_requirements: true + +- name: Case 37, pre-HR1 former foster youth aged 25 NOT exempt. + period: 2025-05 + absolute_error_margin: 0.1 + input: + age: + 2025: 25 + weekly_hours_worked_before_lsr: + 2025: 1 + is_disabled: + 2025: false + was_in_foster_care: + 2025: true + state_code: + 2025: TX + output: + meets_snap_abawd_work_requirements: false + +- name: Case 38, post-HR1 former foster youth aged 24 NOT exempt. + period: 2025-08 + absolute_error_margin: 0.1 + input: + age: + 2025: 24 + weekly_hours_worked_before_lsr: + 2025: 1 + is_disabled: + 2025: false + was_in_foster_care: + 2025: true + state_code: + 2025: TX + output: + meets_snap_abawd_work_requirements: false diff --git a/policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/is_snap_abawd_indian_exempt.py b/policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/is_snap_abawd_indian_exempt.py index 25a2b0e50e6..ca08051db27 100644 --- a/policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/is_snap_abawd_indian_exempt.py +++ b/policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/is_snap_abawd_indian_exempt.py @@ -5,6 +5,7 @@ class is_snap_abawd_indian_exempt(Variable): value_type = bool entity = Person label = "Exempt from SNAP ABAWD work requirements due to Indian, Urban Indian, or California Indian status" + documentation = "Indian or Urban Indian as defined in paragraphs (13) and (28) of section 4 of the Indian Health Care Improvement Act (25 U.S.C. 1603), or California Indian described in section 809(a) of that Act (25 U.S.C. 1679(a)), exempt under 7 U.S.C. 2015(o)(3)(F)-(G) as added by P.L. 119-21. Input variable defaulting to false: survey data do not identify IHCIA status, so this is populated at the data layer (populace) or set explicitly in household simulations." definition_period = YEAR reference = ( "https://www.congress.gov/119/plaws/publ21/PLAW-119publ21.pdf#page=11", diff --git a/policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.py b/policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.py index 023cc58aaab..1f55cd62da6 100644 --- a/policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.py +++ b/policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.py @@ -59,11 +59,20 @@ def formula(person, period, parameters): | is_pregnant | is_discretionary_exempt ) - # Pre-HR1 exemptions: homeless, veteran + # Pre-HR1 exemptions: homeless, veteran, former foster youth is_homeless = person.household("is_homeless", period) is_veteran = person("is_veteran", period) + # 7 CFR 273.24(c)(9): aged 24 or younger and in foster care under + # State responsibility on their 18th birthday (added by the Fiscal + # Responsibility Act of 2023, removed by P.L. 119-21). + was_in_foster_care = person("was_in_foster_care", period) + former_foster_youth = was_in_foster_care & ( + age <= p_pre.age_threshold.former_foster_care + ) post_hr1_conditions = base_conditions | is_indian_exempt - pre_hr1_conditions = base_conditions | is_homeless | is_veteran + pre_hr1_conditions = ( + base_conditions | is_homeless | is_veteran | former_foster_youth + ) return where( hr1_in_effect, post_hr1_conditions,