Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
f3006dc
Count income of ABD people who fail SSI's noncitizen test
hua7450 Oct 15, 2026
56dc11f
Fix issues from review: CA SSP and MD PAA for people SSI bars by alie…
hua7450 Oct 21, 2026
e126f9f
Pay California CAPI from the SSI/SSP standard per person, with deeming
hua7450 Oct 21, 2026
5674887
Merge upstream/main into ca-capi-ssi-ssp-standard
hua7450 Oct 26, 2026
9898b7c
Merge upstream/main into medicaid-abd-noncitizen-countable-income
hua7450 Oct 26, 2026
9e39da3
Fix issues from review: CAPI equals SSI/SSP since June 2019, mixed co…
hua7450 Oct 27, 2026
a30c3f7
Merge upstream/main into ca-capi-ssi-ssp-standard
hua7450 Oct 27, 2026
c0a0017
Merge ca-capi-ssi-ssp-standard (#10379) into medicaid-abd-noncitizen-…
hua7450 Oct 27, 2026
771f1d8
Fix issues from review round 2: MD PAA receipt gate, CA mixed-couple …
hua7450 Oct 27, 2026
3f32b93
Merge upstream/main into medicaid-abd-noncitizen-countable-income
hua7450 Oct 27, 2026
a7def30
Keep Maryland PAA free of spouse deeming for SSI reporters barred by …
hua7450 Oct 27, 2026
31fb952
Follow WIC 12200(e) for the blind-couple food allowance; mark the pre…
hua7450 Oct 27, 2026
b5dea77
Merge upstream/main into ca-capi-ssi-ssp-standard
hua7450 Oct 27, 2026
c4145b0
Merge ca-capi-ssi-ssp-standard (#10379) and impute what SSA pays for …
hua7450 Oct 27, 2026
a13747e
Record the ruling on us-ca:capi-payment-standard-offset: statute
hua7450 Oct 27, 2026
0e105df
Merge upstream/main into ca-capi-ssi-ssp-standard
hua7450 Oct 27, 2026
7555f0f
Merge ca-capi-ssi-ssp-standard (#10379) into medicaid-abd-noncitizen-…
hua7450 Oct 27, 2026
f1bed69
Merge upstream/main into ca-capi-ssi-ssp-standard
hua7450 Oct 27, 2026
77a9e5c
Merge PR 10379 head f1bed699be (with upstream/main) into medicaid-abd…
hua7450 Oct 27, 2026
2b9d5f7
Apply Pavel's review: mixed couple only with a paid spouse, child SSP…
hua7450 Oct 29, 2026
3ec0ddf
Merge upstream/main into ca-capi-ssi-ssp-standard
hua7450 Oct 29, 2026
3a3e353
Merge ca-capi-ssi-ssp-standard (#10379) into medicaid-abd-noncitizen-…
hua7450 Oct 29, 2026
91898a0
Apply Pavel's review: MD PAA one-third reduction on the couple rate, …
hua7450 Oct 29, 2026
7df48bb
Compute a CAPI couple with one spouse in a Title XIX facility as two …
hua7450 Oct 29, 2026
27d605f
Merge upstream/main into ca-capi-ssi-ssp-standard
hua7450 Oct 29, 2026
3e87f5a
Merge ca-capi-ssi-ssp-standard (#10379) into medicaid-abd-noncitizen-…
hua7450 Oct 29, 2026
59a97d8
Count a mixed couple citizen's own income in the CA supplement; keep …
hua7450 Oct 29, 2026
c454211
Count a mixed-couple citizen's own income only when the spouse receiv…
hua7450 Oct 29, 2026
f4e10a9
Read is_tax_unit_head_or_spouse for the year in the CA supplement
hua7450 Oct 29, 2026
5add59c
Merge upstream/main into medicaid-abd-noncitizen-countable-income
hua7450 Oct 29, 2026
c065a35
Simplify the CA supplement's mixed-couple income to the lesser-of tot…
hua7450 Oct 29, 2026
e3b765b
Merge upstream/main into medicaid-abd-noncitizen-countable-income
hua7450 Oct 29, 2026
5ef420b
Count each spouse's own income when only the California facility inpu…
hua7450 Oct 29, 2026
3b9dd3b
Merge remote-tracking branch 'upstream/main' into ca-capi-ssi-ssp-sta…
hua7450 Oct 29, 2026
36cb52f
Merge ca-capi-ssi-ssp-standard (3b9dd3b34b) into medicaid-abd-nonciti…
hua7450 Oct 29, 2026
2467454
Add the role-swapped mixed-couple cases and the above-threshold deemi…
hua7450 Oct 29, 2026
0b909d0
Merge remote-tracking branch 'upstream/main' into medicaid-abd-noncit…
hua7450 Oct 30, 2026
df7b398
Key the CA supplement's mixed-couple branch on the spouse's CAPI elig…
hua7450 Oct 30, 2026
c1602d4
Merge remote-tracking branch 'upstream/main' into medicaid-abd-noncit…
hua7450 Oct 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Count the own income of aged, blind, or disabled people who fail SSI's noncitizen test in SSI-methodology countable income, so Medicaid's optional aged, blind, and disabled and medically needy income tests, CAPI, and other programs no longer treat it as zero; the California state supplement no longer counts the income of a member who fails SSI's noncitizen test unless that member is in an SSI couple computation, and Maryland PAA no longer deems spouse income to people SSI bars by alien status and imputes to them only the SSI that SSA pays when they report SSI receipt, with the one-third reduction on the couple rate under deeming.
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@
# Emergency Medicaid covers noncitizens who meet the state plan's requirements
# other than the receipt of SSI (42 U.S.C. 1396b(v)(2)(B); 42 CFR 435.406(b)).
# In Alabama that leaves SSI's income test. Wages of $800 a month ($9,600 a
# year) are under the SSI rate ($11,928) before any disregard. Until #10240
# merges, the pathway counts no income for this person; Cases 7 and 8 test it.
# year) are under the SSI rate ($11,928) before any disregard; the pathway
# counts that income (at most 4,290 a year after exclusions). Cases 7 and 8
# test the income limit.
- name: Case 6, undocumented aged Alabaman keeps the pathway, unlike the citizen in Case 3, and qualifies for emergency Medicaid.
period: 2026
input:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -332,3 +332,79 @@
# 12,000 - 6,000 = 6,000 <= 6,264; resources 1,000 <= 2,000.
is_in_medicaid_medically_needy_category: true
is_medically_needy_for_medicaid: true

- name: Case 11, aged permanent resident without 40 SSI quarters has pension counted.
period: 2026
input:
age: 70
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 60_000
is_in_medicaid_medically_needy_category: true
is_adult_for_medicaid: false
is_optional_senior_or_disabled_for_medicaid: false
medicaid_medically_needy_medical_expenses: 6_000
ssi_countable_resources: 1_000
state_code: MA
output:
# 60,000 - 20 x 12 = 59,760; 59,760 - 6,000 = 53,760 > 522 x 12 = 6,264.
is_medically_needy_for_medicaid: false

- name: Case 12, aged permanent resident without 40 SSI quarters qualifies after medical spenddown.
period: 2026
input:
age: 70
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 18_000
is_in_medicaid_medically_needy_category: true
is_adult_for_medicaid: false
is_optional_senior_or_disabled_for_medicaid: false
medicaid_medically_needy_medical_expenses: 12_000
ssi_countable_resources: 1_000
state_code: MA
output:
# 18,000 - 20 x 12 = 17,760; 17,760 - 12,000 = 5,760 <= 522 x 12 = 6,264.
is_medically_needy_for_medicaid: true

- name: Case 13, an aged noncitizen dependent parent's pension does not count against the head.
period: 2026
input:
people:
head:
age: 70
immigration_status: CITIZEN
pension_income: 20_000
medicaid_medically_needy_medical_expenses: 15_000
ssi_countable_resources: 1_000
is_in_medicaid_medically_needy_category: true
is_optional_senior_or_disabled_for_medicaid: false
parent:
age: 90
is_tax_unit_dependent: true
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 30_000
ssi_countable_resources: 0
tax_units:
tax_unit:
members: [head, parent]
marital_units:
head_unit:
members: [head]
parent_unit:
members: [parent]
households:
household:
members: [head, parent]
state_code: MA
output:
# The parent's 30,000 - 240 = 29,760 now counts (this PR), but a parent's
# income is never deemed to an adult child aged 70 (42 CFR
# 435.602(a)(2)(i)). The head: 20,000 - 240 - 15,000 = 4,760 <= 522 x 12
# = 6,264.
ssi_countable_income: [19_760, 29_760]
is_medically_needy_for_medicaid: [true, false]
Original file line number Diff line number Diff line change
Expand Up @@ -439,3 +439,48 @@
output:
is_pregnant_for_medicaid: true
is_medicaid_eligible: true

- name: Case 21, aged permanent resident without 40 SSI quarters is over the Massachusetts income limit.
period: 2025
input:
age: 70
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 60_000
state_code: MA
output:
# The optional aged, blind, and disabled pathway counts 59,760 of
# income, above 100% of the poverty guideline, even though the person
# fails SSI's 40-quarter test.
is_medicaid_immigration_status_eligible: true
is_optional_senior_or_disabled_for_medicaid: false
is_medicaid_eligible: false

- name: Case 22, aged permanent resident without 40 SSI quarters with a small pension is eligible.
period: 2025
input:
age: 70
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 12_000
state_code: MA
output:
# 12,000 - 20 x 12 = 11,760, under 100% of the poverty guideline.
is_optional_senior_or_disabled_for_medicaid: true
is_medicaid_eligible: true

- name: Case 23, aged undocumented resident of the District of Columbia is over the income limit.
period: 2025
input:
age: 70
immigration_status: UNDOCUMENTED
pension_income: 60_000
state_code: DC
output:
# The District covers undocumented residents, but the optional aged,
# blind, and disabled pathway still counts 59,760 of income.
is_medicaid_immigration_status_eligible: true
is_optional_senior_or_disabled_for_medicaid: false
is_medicaid_eligible: false
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,36 @@
# (17,004 - 20 * 12 - 65 * 12) / 2 = 7,992 deemed and countable.
medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse: [7_992, 0, 0]
medicaid_optional_senior_or_disabled_countable_income: [7_992, 0, 0]

- name: Spouse income is deemed to an aged permanent resident without 40 SSI quarters.
period: 2025
absolute_error_margin: 0.01
input:
people:
person1:
age: 70
is_tax_unit_head: true
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 6_000
person2:
age: 55
is_tax_unit_spouse: true
employment_income: 40_000
tax_units:
tax_unit:
members: [person1, person2]
marital_units:
marital_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: MA
output:
# SSI's noncitizen test does not stop deeming (42 CFR 435.601).
# Spouse wages 40,000 > (1,450 - 967) x 12 = 5,796.
# Couple: (500 - 20) x 12 + (40,000 - 65 x 12) / 2 = 25,370.
# Alone: (500 - 20) x 12 = 5,760. Deemed: 25,370 - 5,760 = 19,610.
medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse: [19_610, 0]
Original file line number Diff line number Diff line change
Expand Up @@ -727,3 +727,54 @@
# 21,480 is under the 2026 guideline for two (21,640). A 75-dollar
# disregard would leave 21,780, over the guideline.
is_optional_senior_or_disabled_income_eligible: [true, true]

- name: An aged permanent resident without 40 SSI quarters has their pension counted.
period: 2025
absolute_error_margin: 0.01
input:
age: 70
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 60_000
state_code: MA
output:
# Failing SSI's noncitizen test does not zero income under SSI
# methodology (42 CFR 435.601): 60,000 - 20 x 12 = 59,760.
medicaid_optional_senior_or_disabled_countable_income: 59_760
is_optional_senior_or_disabled_income_eligible: false

- name: Spouse income is deemed to an aged permanent resident without 40 SSI quarters.
period: 2025
absolute_error_margin: 0.01
input:
people:
person1:
age: 70
is_tax_unit_head: true
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 6_000
person2:
age: 55
is_tax_unit_spouse: true
employment_income: 40_000
tax_units:
tax_unit:
members: [person1, person2]
marital_units:
marital_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: MA
output:
# Own income: 6,000 - 20 x 12 = 5,760.
# Deemed from the spouse who is not aged, blind, or disabled:
# 40,000 > (1,450 - 967) x 12 = 5,796, so the couple total is
# 5,760 + (40,000 - 65 x 12) / 2 = 25,370, and 25,370 - 5,760 = 19,610.
# The spouse's own countable income stays 0 to avoid counting it twice.
medicaid_optional_senior_or_disabled_countable_income: [25_370, 0]
is_optional_senior_or_disabled_income_eligible: [false, false]
Original file line number Diff line number Diff line change
Expand Up @@ -427,3 +427,32 @@
# Rule 4.2(C)(5) withholds the exclusion only from income based on need:
# 12,000 / 12 - 50 = 950.
msp_countable_income: 950

- name: Case 20, spouse income is deemed to an aged permanent resident without 40 SSI quarters.
period: 2025-01
absolute_error_margin: 0.01
input:
people:
person1:
age: 70
is_tax_unit_head: true
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
ssi_unearned_income: 12_000
person2:
age: 55
is_tax_unit_spouse: true
ssi_earned_income: 20_000
tax_units:
tax_unit:
members: [person1, person2]
marital_units:
marital_unit:
members: [person1, person2]
output:
# SSI methodology deems the spouse's wages whether or not the person
# meets SSI's noncitizen test: 20,000 > (1,450 - 967) x 12 = 5,796.
# (1,000 - 20) + (1,666.67 - 65) / 2 = 980 + 800.83 = 1,780.83.
is_ssi_spousal_deeming_applies: [true, false]
msp_countable_income: [1_780.83, 790.83]
Original file line number Diff line number Diff line change
Expand Up @@ -316,8 +316,8 @@
# size-1 grant ($714) is paid through the top-level benefit, not the GA $578.
ca_sf_caap: 714

- name: Case 15, aged TPS member with a CAPI payment is excluded from the
budget unit along with her income.
- name: Case 15, aged TPS member whose pension rules out CAPI stays in the
budget unit with her income.
period: 2026-01
absolute_error_margin: 0.01
input:
Expand All @@ -339,22 +339,14 @@
spm_unit_cash_assets: 0
output:
# person2 is categorically CAPI-eligible (aged 68 + noncitizen + TPS is not
# an SSI-qualified status) and the model pays her unit CAPI, so the
# receipt-based bar (ca_capi > 0) drops her from the budget unit and her
# pension is masked out of countable income; the remaining member collects
# the size-1 grant.
# NOTE: in real life her 2,000/month pension is roughly double the CAPI
# payment standard, so she would receive no CAPI and would stay in the
# CAAP budget unit (size 2, max grant 1,036), where her income fails the
# strict income test: ca_sf_caap = 0. The model currently pays her CAPI
# regardless of income because ca_capi's income test reads
# ssi_countable_income, which is zeroed for anyone failing the SSI
# immigration test (CAPI's entire target population) -- an upstream CAPI
# limitation. When that is fixed upstream, this case's expectations flip
# to budget_unit_size 2, countable_income 2_000, ca_sf_caap 0.
ca_sf_caap_budget_unit_size: 1
ca_sf_caap_countable_income: 0
ca_sf_caap: 578
# an SSI-qualified status), but CAPI counts her pension: her countable
# pension (2,000 - 20 = 1,980/month) exceeds CAPI's payment standard, so
# ca_capi = 0. The receipt-based bar (ca_capi > 0) does not apply, and she
# stays in the CAAP budget unit (size 2, max grant 1,036), where her
# income fails the strict income test.
ca_sf_caap_budget_unit_size: 2
ca_sf_caap_countable_income: 2_000
ca_sf_caap: 0

- name: Case 16, one spouse receiving SSI and only one spouse applying yields
the full one-person grant against the applicant's own income.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,3 +224,33 @@
members: [person1, person2]
output:
ssi_income_deemed_from_ineligible_spouse: [0, 0]

- name: Spouse income is deemed to an aged permanent resident without 40 SSI quarters (2025)
period: 2025
absolute_error_margin: 0.01
input:
people:
person1:
age: 70
is_tax_unit_head: true
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 6_000
person2:
age: 55
is_tax_unit_spouse: true
employment_income: 40_000
tax_units:
tax_unit:
members: [person1, person2]
marital_units:
marital_unit:
members: [person1, person2]
output:
# Deeming turns on aged, blind, or disabled status, not on SSI's
# noncitizen test: spouse wages 40,000 > (1,450 - 967) x 12 = 5,796.
# Couple: (500 - 20) x 12 + (40,000 - 65 x 12) / 2 = 25,370.
# Alone: (500 - 20) x 12 = 5,760. Deemed: 25,370 - 5,760 = 19,610.
is_ssi_spousal_deeming_applies: [true, false]
ssi_income_deemed_from_ineligible_spouse: [19_610, 0]
Original file line number Diff line number Diff line change
Expand Up @@ -147,3 +147,47 @@
# No earned income, so earned exclusions don't apply
# Countable = 3_868
ssi_countable_income: 3_868

- name: An aged permanent resident without 40 SSI quarters has their pension counted.
period: 2025
absolute_error_margin: 0.01
input:
age: 70
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 60_000
output:
# The noncitizen test bars SSI itself but does not zero the income
# that Medicaid and state programs count: 60,000 - 20 x 12 = 59,760.
ssi_countable_income: 59_760
ssi: 0

- name: Spouse income is deemed to an aged permanent resident without 40 SSI quarters.
period: 2025
absolute_error_margin: 0.01
input:
people:
person1:
age: 70
is_tax_unit_head: true
immigration_status: LEGAL_PERMANENT_RESIDENT
years_since_us_entry: 10
ssi_qualifying_quarters_earnings: 20
pension_income: 6_000
person2:
age: 55
is_tax_unit_spouse: true
employment_income: 40_000
tax_units:
tax_unit:
members: [person1, person2]
marital_units:
marital_unit:
members: [person1, person2]
output:
# Own: (500 - 20) x 12 = 5,760. Deemed from the spouse who is not aged,
# blind, or disabled: 19,610 (20 CFR 416.1163). The spouse's own
# countable income stays 0.
ssi_countable_income: [25_370, 0]
ssi: [0, 0]
Loading
Loading