Skip to content

Turn off the Medicaid optional aged/disabled pathway in 14 states that cover only SSI recipients - #10361

Open
hua7450 wants to merge 13 commits into
PolicyEngine:mainfrom
hua7450:medicaid-abd-ssi-only-states
Open

hua7450 wants to merge 13 commits into
PolicyEngine:mainfrom
hua7450:medicaid-abd-ssi-only-states

Conversation

@hua7450

@hua7450 hua7450 commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Part of #9734 (step 1, the states that cover only SSI recipients). #9735 fixed the seven states whose standard is the SSI rate.

What changes

is_optional_senior_or_disabled_for_medicaid covers aged, blind and disabled people who don't receive SSI, up to the state's senior_or_disabled.income.limit. That limit is 0.75 of the poverty guideline in 14 states whose rules have no such group. They cover aged, blind and disabled people as categorically needy only if they receive SSI (or a state supplement): Alabama, Delaware, Georgia, Kansas, Kentucky, Maryland, Mississippi, Nevada, New Mexico, North Dakota, South Dakota, Tennessee, Texas and Wyoming.

  • New parameter gov.hhs.medicaid.eligibility.categories.senior_or_disabled.covers_non_ssi_recipients, by state. It is false for the 14 states and true elsewhere.
    • Mississippi is false from 2006-01-01. Its poverty-level aged and disabled group ended on December 31, 2005.
    • Mississippi is true before that. The earliest source found that shows the group in force is the Division of Medicaid's fiscal year 1997 annual report, so the true entry is dated 1996-07-01, when that fiscal year began. The group's start date is not sourced. The model starts in 2015, so this entry changes no modeled result.
    • The other entries start on 2018-01-01, like the other senior_or_disabled parameters.
    • The file sits outside income/ and assets/.
  • is_optional_senior_or_disabled_for_medicaid now requires the flag for people who pass the Medicaid immigration test.
    • Everyone who fails that test keeps the pathway. That includes people the model treats as meeting SSI's noncitizen rules: permanent residents in the five-year bar with 40 quarters, one-year parolees and conditional entrants in the bar, and refugees from 2027 (the October 2026 change to Medicaid's statuses, read on January 1).
    • medicaid_category ignores immigration status, and emergency Medicaid (is_emergency_medicaid_eligible) needs a category. Without this exception, undocumented aged or disabled people in the 14 states would lose emergency Medicaid.
    • Federal law waives the SSI receipt requirement for them. Emergency Medicaid pays for an alien who "otherwise meets the eligibility requirements for medical assistance under the State plan approved under this subchapter (other than the requirement of the receipt of aid or assistance under subchapter IV, supplemental security income benefits under subchapter XVI, or a State supplementary payment)" (42 U.S.C. 1396b(v)(2)(B)). 42 CFR 435.406(b) says the same ("except for receipt of AFDC, SSI, or State Supplementary payments"), and 42 CFR 440.255(c) defines the services.
    • Texas applies it: "Certain aliens with an emergency medical condition who meet all SSI criteria, except citizenship, may be eligible for Medicaid coverage for the medical emergency" (MEPD Handbook A-2200).
    • In the 14 states they are tested against the SSI federal benefit rate for an individual or a couple, at or below it, since only SSI receipt is waived (Texas: "meet all SSI criteria, except citizenship"; SSI covers income "at a rate of not more than" the rate, 42 U.S.C. 1382(a)(1)(A)). medicaid_optional_senior_or_disabled_income_limit uses the SSI rate wherever covers_non_ssi_recipients is false, and requires_income_below_limit stays false.
    • The limit binds now for noncitizens who meet SSI's noncitizen rules. For those who fail them, medicaid_optional_senior_or_disabled_countable_income counts no income until Count income of aged, blind, or disabled people who fail SSI's noncitizen test #10240 merges, so they qualify at any income until then, as on main.
  • North Dakota's 209(b) SSI recipients. is_209b_ssi_recipient_income_eligible_for_medicaid reads the same limit, so theirs becomes the SSI rate too. That is North Dakota's level (N.D.A.C. 75-02-02.1-40(1)(a)(2), page 89), the change Use the SSI rate as the Medicaid aged/disabled income limit in West Virginia and North Dakota #10373 makes. In 2026 their individual limit falls from $11,970 to $11,928 and their couple limit rises from $16,230 to $17,892, so eligibility moves both ways (for example, a couple with $17,000 now qualifies; a single person with $11,950 no longer does).

This removes Medicaid from SSI-eligible people who don't take up SSI in these 14 states, so microsimulation results change. Noncitizens there who pass Medicaid's immigration test but fail SSI's (for example, a permanent resident past the five-year bar without 40 quarters) lose the pathway the same way. It also closes the band between the SSI rate and 0.75 of the guideline ($42 a year in 2026). For the people the pathway still reaches in these states (noncitizens kept for emergency Medicaid, and North Dakota's 209(b) recipients), the couple limit rises by $1,662, from $16,230 to $17,892. People in that band can get Medicaid only through medically needy coverage, where the state has it and they spend down to its limit.

Unchanged:

  • The 209(b) SSI-recipient gate. North Dakota is a 209(b) state. Its SSI recipients are tested by is_209b_ssi_recipient_income_eligible_for_medicaid, which reads is_optional_senior_or_disabled_income_eligible, not the gated variable, so the flag doesn't gate them (their limit changes; see above). None of the other 13 states is a 209(b) state.
  • SSI recipients. is_ssi_recipient_for_medicaid (ssi > 0 or receives_ssi) still covers them.
  • Everything else. Every other state, and the pathway's countable income, disregards and asset limits. The income limit changes only in the 14 states.

West Virginia is not included

Issue 9734 lists West Virginia as covering only SSI recipients, but its current Income Maintenance Manual has the group:

  • § 23.9 lists "SSI Related/Non-Cash Assistance" among the optional aged, blind and disabled groups.
  • § 23.11.4 covers people who meet the SSI definition of aged, blind or disabled when "Countable income must be under the SSI Maximum Payment level", with assets up to $2,000 for an individual and $3,000 for a couple.
  • The archived § 16.7.H (revision 10/13) has the same group.

So West Virginia stays true and keeps today's 0.75 limit here. #10373 sets West Virginia's limit to the SSI rate with an at-or-below test (42 U.S.C. 1382(a)(1)(A); IMM § 4.14.3 Step 5), recording § 23.11.4's "under" as a source-conflict candidate.

Sources

Each was read on 2026-10-21.

State Source Text
Alabama Ala. Admin. Code r. 560-X-25-.03(1) "(a) Aged, blind or disabled persons who receive Supplemental Security Income (SSI) under Title XVI"; the other groups are institutional, waiver, people who lost SSI, and Medicare Savings Programs
Delaware DSSM 17100 "receiving a benefit through the Supplemental Security Income program, is automatically eligible for Medicaid in Delaware"
Georgia PAMMS 2111, 2101 "Georgia SSI recipients are automatically eligible for Medicaid for any month in which they receive a check"; 2101 lists no poverty-level or 435.210 class
Kansas SPA KS-25-0019, effective 2025-07-01 "Individuals Eligible for but Not Receiving Cash Assistance" and "Age and Disability-Related Poverty Level" are not checked as covered
Kentucky 907 KAR 20:005 §§ 1(1), 9(3) "An individual who would be eligible for SSI benefits but who has not made application shall not be eligible for Medicaid."
Maryland Coverage Groups guide (April 2025), S02 and S98 S02 covers "all SSI recipients"; S98 covers aged, blind or disabled people "within the MA community medically needy income and resource standards"
Mississippi Miss. Code § 43-13-115(11) (as reprinted in 2024 HB 464); manual Appendix A-4-c; FY 1997 annual report "Until the end of the day on December 31, 2005 ... After December 31, 2005, only those individuals covered under the 1115(c) Healthier Mississippi waiver will be covered under this category"; PLAD categories 041-043 list an ending date of 12/31/2005. The FY 1997 report (July 1996 to June 1997) lists "Persons who are age 65 or over or disabled whose income is below 100 percent of the federal poverty level whose resources are at SSI levels" (read 2026-10-26)
Nevada Medical Assistance Manual B-300 (March 2025) B-315 "Verified SSI recipients"; B-320 "Countable net income (after disregards) must be less than the applicable SSI payment amounts"; B-340 Prior Medical covers past months only
New Mexico 8.200.400.10(C)(1) NMAC "Medicaid for individuals who are eligible for SSI. Eligibility for SSI is determined by the social security administration (SSA)."
North Dakota N.D. Admin. Code 75-02-02.1-05 (1)(n), (2) and (3)(e) The categorically needy group covers aged, blind or disabled people "who are receiving supplemental security income payments" (plus zero-pay and suspended cases). The optional categorically needy groups in (2) include no non-SSI aged or disabled group, and (3)(e) makes aged, blind or disabled people "who are not in receipt of supplemental security income" medically needy. The February 2017 edition has the same text.
South Dakota ARSD 67:46:01:02(2) "A person who is a recipient of a money payment under the supplemental security income program"
Tennessee Tenn. Comp. R. & Regs. 1200-13-20-.08(1) "Aged, blind or disabled individuals who are determined eligible for SSI payments by the SSA are eligible for TennCare Medicaid." Medically needy covers only children and pregnant women
Texas MEPD Handbook A-2000, A-3000 Mandatory groups are SSI, emergency Medicaid for aliens, and the RSDI COLA increase. A-3000: "HHSC only provides benefits to a person who is a member of one of the following optional coverage groups"; none covers SSI non-recipients in the community
Wyoming Wyo. Admin. Rules 048.0037.18 § 8(a) (effective 2025-05-23); Eligibility Online Manual M1005 "Entitled to or receiving SSI, or SSI-related programs". M1005's SSI-related list covers DAC, E01 (institutions only), Goldberg-Kelly, Pickle, 1619, "SSI Eligible" (SSA current-pay status), widows and widowers, and presumptive disability

The parameter also cites 42 CFR 435.210, 42 U.S.C. 1396a(m), KFF's June 2024 report (Appendix Tables 5 and 6: the poverty-level column is No for all 14 states and West Virginia, and Table 6 gives their SSI-level limits), and KFF's 2019 survey of 2018 data (Appendix Table 1), which also says No and supports the years before the state sources' current editions.

Readers checked

Reader Effect
medicaid_category People who leave the pathway fall to the next category, usually MEDICALLY_NEEDY or NONE.
is_medically_needy_for_medicaid Its not_in_other_pathway sums the covered categories, so the pathway no longer blocks medically needy coverage. The effect differs by state:
• GA, KS, KY and MD have finite medically needy limits for aged and disabled people in the model, so people there can now spend down to them.
• ND's medically needy group is switched off in the model today. #10374 switches it on (83% of the guideline, then 90% from 2024-01-01), so until then North Dakotans who leave the pathway get no category.
• NV and NM have the medically needy flags on but -inf limits, so nobody qualifies.
• AL, DE, MS, SD, TN, TX and WY have no aged or disabled medically needy group.
Medically needy parameters are unchanged; the KS limit is being fixed under #10357 and #10358.
medicaid_group People who move to MEDICALLY_NEEDY stay AGED_DISABLED.
ms_hmw_other_coverage_ineligible (Healthier Mississippi Waiver) Mississippi's pathway is now always false, so it no longer excludes anyone from the waiver. The waiver's own income, resource and Medicare tests still apply.
is_209b_ssi_recipient_for_medicaid Reads the asset and income variables directly. Unchanged.
Medicare Savings Programs is_qi_eligible reads is_medicaid_eligible, but QI starts at 120% of the guideline, above everyone affected. No other MSP variable reads the pathway.
ACA, Lifeline, CHIP, Pell, DART and other is_medicaid_eligible / medicaid_enrolled readers Follow Medicaid eligibility. A person who loses Medicaid can become eligible for the premium tax credit if their income is at least 100% of the guideline (see the partner test below).

Tests

  • is_optional_senior_or_disabled_for_medicaid.yaml
    • Case 3: an Alabaman aged 70 with $900 a month of Social Security who doesn't take up SSI. Income-eligible ($10,560 countable, under the $11,928 SSI rate) but not covered; medicaid_category is NONE.
    • Case 4: the same person in Pennsylvania, which keeps the group, is SENIOR_OR_DISABLED.
    • Case 5: a disabled North Dakotan aged 50 with $900 a month of SSDI who doesn't take up SSI is income-eligible but not covered.
    • Case 6: an undocumented Alabaman aged 70 with $800 a month of wages keeps the pathway, unlike the citizen in Case 3. medicaid_category is SENIOR_OR_DISABLED, is_medicaid_eligible is false and is_emergency_medicaid_eligible is true. The wages are under the $11,928 limit before any disregard, so the case holds after Count income of aged, blind, or disabled people who fail SSI's noncitizen test #10240 too.
    • Case 7: a permanent resident in Alabama two years after entry (five-year bar), aged 70, with $1,015 a month of Social Security ($11,940 of countable income, $12 over the $11,928 SSI rate, so SSI pays nothing): income-ineligible, so no pathway, category NONE and no emergency Medicaid despite an emergency condition.
    • Case 8: a couple of such permanent residents with $755.50 a month of Social Security each ($8,946 of countable income each, exactly the $17,892 SSI couple rate, 12 x $1,491, so SSI pays nothing): both keep the pathway (SENIOR_OR_DISABLED); emergency Medicaid only for the spouse with an emergency condition.
    • Case 9: a permanent resident ten years after entry (past the five-year bar) with no qualifying quarters and $900 a month of Social Security. They pass the Medicaid immigration test but fail SSI's noncitizen test (8 U.S.C. 1612(a)(2)(B)), so get no SSI and lose the pathway: category NONE, no emergency Medicaid. This separates "fails the Medicaid immigration test" from "any noncitizen".
  • tests/unit/test_medicaid_abd_ssi_rate_standard_properties.py: test_ssi_only_states_match_their_rules pins the 14 false flags (and so West Virginia's true one) for 2018 to 2026, and test_ssi_only_states_use_the_ssi_rate pins their SSI-rate limit, including North Dakota's, for an individual and a couple. The SSI-rate property tests also read covers_non_ssi_recipients. test_no_medicaid_without_ssi_above_the_ssi_rate expects the pathway only where the state covers the group, and test_unflagged_states_keep_their_share_of_the_poverty_guideline skips the 14 states, which now use the SSI rate.
  • medicaid_category.yaml
    • Case 13: the same Alabaman taking up SSI gets $1,368 a year and is SSI_RECIPIENT.
    • Case 14: the same person in Maryland, not taking up SSI, with $7,200 of other medical expenses, is MEDICALLY_NEEDY (limit $350 a month).
  • ms/dom/hmw/integration.yaml, Case 7: renamed. The old name said the person was "eligible under standard optional ABD Medicaid", which Mississippi no longer has in the model. The person receives SSI, so the case now also asserts is_ssi_recipient_for_medicaid: true; its other expected values are unchanged.
  • Other tests in the 14 states: I checked every YAML case with an aged, blind or disabled person and an output that depends on Medicaid. Each person receives SSI, overrides the pathway as an input, or fails it on income or assets, except the partner case below.
  • Local runs at 707e042, one process at a time. Nothing added since then has been run locally. CI ran at b078376: every check passed except Household API Partners (the partner case below).
    • gov/hhs/medicaid (batched): all passed. This includes emergency_medicaid/integration.yaml Case 20, an undocumented disabled Texan with an emergency, which failed before the immigration exception.
    • MS HMW, KS SSPP, TX CEAP and TX Lifeline: 96 passed.
    • tests/unit/test_medicaid_abd_ssi_rate_standard_properties.py, tests/core/test_ssi_state_supplement_medicaid_dependency.py, test_parameter_files.py and tests/code_health: 537 passed, 1 skipped (run before the immigration exception).
    • Partner cash/ssi/federal.yaml: 13 passed, plus the expected failure below (medicaid@2026 0.0 vs 13,708.5).

Partner test impact

partners/analytics_coverage/edge_cases/federal/cash/ssi/federal.yaml, case ssi_earned_income_at_breakeven_ineligible (federal), changes. It is a 65-year-old citizen in Dallas County, Texas, with $24,876 of wages. SSI countable income equals the SSI rate ($11,928), so ssi is 0. Its comment attributes the Medicaid to "TX's optional senior-or-disabled pathway", the $42 band above. Texas covers only SSI recipients (MEPD A-2000), and its optional groups are institutional, waiver and buy-in groups (MEPD A-3000), so the person has no Medicaid after this PR.

Partner-facing change, approved. This changes what the API returns to a partner. @hua7450 approved the edit through the partner-test gate in CLAUDE.md on 2026-10-27: yes to editing the file, a team member has been told, and the API partner has been told (recorded in a PR comment). b5e2f0256c updates the case's five changed pins and its comments.

Before the edit, CI failed on this case with medicaid@2026: 0.0 differs from 13708.5; the runner stops at a case's first mismatch, so it showed only medicaid. The five pins that change (a reviewer's run reproduced them, and a run at 4f631a56a6 gave the same values):

Output Before After this PR
medicaid 13,708.50 0
is_medicaid_eligible true false
is_aca_ptc_eligible false true
aca_ptc 0 18,344.29
premium_tax_credit 0 18,344.29

The premium tax credit:

  • MAGI fraction: 24,876 / 15,650 (the 2025 guideline, one person) = 1.5895, floored to 1.58 (aca_magi_fraction). That is between 1.00 and 4.00, and the case sets is_medicare_eligible and is_aca_eshi_eligible false, so with Medicaid gone is_aca_ptc_eligible is true.
  • Applicable figure, 2026 bracket 1.50 to 2.00: 0.0419 + (1.58 - 1.50) / 0.50 x (0.066 - 0.0419) = 0.045756. Contribution: 24,876 x 0.045756 = 1,138.23.
  • SLCSP: Dallas County is rating area 8; the 2026 age-0 cost there is $414 a month, and the default age curve gives 3.9216 at 64 and over (Texas has no family tiers). 414 x 3.9216 x 12 = 19,482.51.
  • Credit: 19,482.51 - 1,138.23 = 18,344.28 by hand; the run gives 18,344.29 (unrounded intermediates), within the case's 0.1 margin. premium_tax_credit takes the same amount.
  • The credit follows from the case's inputs is_medicare_eligible: false and is_aca_eshi_eligible: false. A real 65-year-old with enough work quarters would have premium-free Part A and no credit.

Unchanged pins: ssi_countable_income 11,928, ssi 0, is_ssi_eligible true, is_ssi_aged true, msp 0, msp_eligible false and chip 0.

Merge order

Not changed here

axiom: TheAxiomFoundation/rulespec-us#1927 queued

🤖 Generated with Claude Code

hua7450 and others added 2 commits October 21, 2026 16:57
…SSI recipients

Add gov.hhs.medicaid.eligibility.categories.senior_or_disabled.covers_non_ssi_recipients,
false for AL, DE, GA, KS, KY, MD, MS, NV, NM, SD, TN, TX and WY, and require it in
is_optional_senior_or_disabled_for_medicaid. The 209(b) SSI-recipient path is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
N.D. Admin. Code 75-02-02.1-05 covers aged, blind and disabled people as
categorically needy only if they receive SSI; those who do not are medically
needy under (3)(e). The 209(b) SSI-recipient path does not read the gated
variable, so North Dakota's SSI recipients are unaffected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450 hua7450 changed the title Turn off the Medicaid optional aged/disabled pathway in 13 states that cover only SSI recipients Turn off the Medicaid optional aged/disabled pathway in 14 states that cover only SSI recipients Oct 22, 2026
…thway

Medicaid categories ignore immigration status, and emergency Medicaid needs
a category. In the states that cover only SSI recipients, noncitizens cannot
receive SSI, so the gate would have removed their emergency Medicaid. Texas
MEPD A-2200 covers aliens who meet all SSI criteria except citizenship.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hua7450 and others added 2 commits October 26, 2026 16:34
- Add a case for an undocumented aged Alabaman who keeps the pathway and
  qualifies for emergency Medicaid.
- Cite 42 U.S.C. 1396b(v)(2)(B) and 42 CFR 435.406(b) for the exception.
- Mississippi covered people who do not receive SSI before 2006; date the
  earlier true value from the fiscal year 1997 annual report.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add 42 U.S.C. 1396b(v) and 42 CFR 435.406(b) to the pathway variable's
references, since the immigration exception rests on them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In states that cover aged, blind or disabled people only if they receive
SSI, the pathway now reaches only noncitizens who fail the Medicaid
immigration test. 42 U.S.C. 1396b(v)(2)(B) waives SSI receipt alone, so
their income limit is the SSI federal benefit rate, at or below it.

- Add Case 7 (permanent resident in the five-year bar, $12 over the SSI
  rate) and Case 8 (a couple exactly at the SSI couple rate).
- Make the SSI-rate property tests aware of covers_non_ssi_recipients.
- Cite 1396b(v), 1382(a) and 42 CFR 440.255(c).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450
hua7450 marked this pull request as ready for review October 26, 2026 23:53
Cases 7 and 8 set only the pathway's countable income. With no SSI
income, the model paid the full SSI rate and classified the residents as
SSI recipients. Social Security that puts SSI countable income at or
above the SSI rate keeps them off SSI, as the cases intend.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@PavelMakarchuk PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Program Review

PR #10361, "Turn off the Medicaid optional aged/disabled pathway in 14 states that cover only SSI recipients" (hua7450). Round 1, full review.

IDs: C = critical, SA = should address, G = suggestion.

Paths: P = policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/covers_non_ssi_recipients.yaml, E = policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py, L = policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medicaid_optional_senior_or_disabled_income_limit.py, U = policyengine_us/tests/unit/test_medicaid_abd_ssi_rate_standard_properties.py, Y1 = policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.yaml, PF = policyengine_us/tests/policy/baseline/partners/analytics_coverage/edge_cases/federal/cash/ssi/federal.yaml. Line numbers refer to the reviewed head. PDF links use file page numbers.

Source Documents

  • Reviewed head SHA: b078376
  • Mode: full
  • Scope: 8 files, 386 insertions and 9 deletions against the merge base 9ee14cdb43.
  • Federal: 42 CFR 435.121(a)(1), 435.210, 435.230(c), 435.406(b), 440.255(c); 42 U.S.C. 1396a(m), 1396b(v)(2)(B), 1382(a)(1)(A); 8 U.S.C. 1612(a)(2)(B); POMS SI 02005.020 D.2 and SI 01715.010.
  • KFF: June 2024 report, Appendix Tables 1, 5, 6 and 7 (caption numbers read in each chart); 2019 survey (2018 data), Appendix Table 1. Links are in C2.
  • PDF: KS SPA KS-25-0019 (pages 22-23, 23 as image); N.D. Admin. Code 75-02-02.1 (pages 10, 11, 89 as images); MD coverage-group guide (pages 12, 14-15); Miss. Code 43-13-115(11) in 2024 HB 464 (page 5); MS Appendix A-4-c (page 3), Section 101.02 (pages 5, 11), FY 1997 report (page 8); NV MAM B-300 (pages 6-7, 14-15); Tenn. 1200-13-20 (pages 73-74); Wyo. ch. 18 (pages 7-8); WV IMM (page 1889).
  • Web: Ala. Admin. Code r. 560-X-25-.03; DE DSSM 17000; GA PAMMS 2101, 2111; 907 KAR 20:005; 8.200.400.10 NMAC; ARSD 67:46:01:02; TX MEPD A-2000, A-2100, A-2200, A-3000, D-8500; WY EOM M1005, M1005B, M1005F.
  • Repository: CLAUDE.md:170-181 (partner contract tests); the Household API Partners CI log at this head.
  • Year: target 2026. U covers 2018-2026.

Branch Status

  • 9 ahead and 21 behind main; MERGEABLE. CI ran on the merge with main (976b409f), so the 21 commits change no finding.
  • Stacked #10386 (hua7450) already merged this branch, shares all 8 files and depends on this PR. Its review attributes the same Texas partner failure to this PR, so C1 is resolved here. After this PR is squash-merged, merge main into #10386 again and keep the immigration exception for every aged, blind or disabled person. T1 (SA1) stays valid there.
  • #10378 edits the same lines of L and U: keep both sides. #10373 shares U (G7). Draft #10394 edits L's reference tuple and is_couple (G6). #10240 and #10374 are ordering dependencies.

What the PR gets right

  • The 14 states are right. Each primary source covers aged, blind or disabled people in the community only if they receive SSI, plus narrow groups (Pickle, DAC, DWB, state supplement, institutional, waiver). KFF 2024 and KFF 2018 agree. Keeping West Virginia true is right (IMM 23.11.4).
  • The emergency exception is right in law (42 CFR 435.406(b); 42 U.S.C. 1396b(v)(2)(B); TX A-2200). It works per person: in a mixed-status Alabama couple, the citizen loses the pathway and the undocumented spouse keeps emergency Medicaid.
  • North Dakota's new limit is right: 75-02-02.1-40(1)(a)(2) sets the ABD level at SSI's (#page=89).
  • The code is clean: no hard-coded values, vectorized, ruff clean, no new cycle. P follows its siblings.
  • The body predicted the partner failure and all five changed pins, and the PR does not edit PF.

Critical (Must Fix)

C1. CI fails on a partner contract case. This is a partner-facing API change. The model change itself is correct.

  • Where: the Household API Partners check; PF:236-296, case ssi_earned_income_at_breakeven_ineligible (federal). The model change is P:148-149 (TX: 2018-01-01: false), read at E:28-30 and L:62-64.
  • Evidence: CI reads medicaid@2026: 0.0 differs from 13708.5. Locally, PF passes 14 of 14 at the merge base and fails this case at the head; with only Texas set back to true, it passes 14 of 14. It is not the Montana test, which passes at this head.
  • The household: a citizen aged 65 in Dallas County, Texas, with $24,876 of wages. SSI countable income equals the SSI rate, so ssi is 0. The case's comment (PF:285-288) credits Medicaid to "TX's optional senior-or-disabled pathway". At the head:
Output Contract pin Head
medicaid 13,708.50 0
is_medicaid_eligible true false
is_aca_ptc_eligible false true
aca_ptc, premium_tax_credit 0 18,344.29

CI stops at the first mismatch, so it shows only medicaid. The other seven pins do not change.

  • The new value is correct. TX MEPD A-2000 has no mandatory group for this person. A-3000 says HHSC "only provides benefits" to its listed optional groups, and none covers a community resident who does not receive SSI. POMS SI 02005.020 D.2 says "eligible but not payable" status "does not qualify automatically for Medicaid".
  • Why critical: CI fails because of this PR.
  • Fix (process, not code). No ready-to-paste edit of PF is given.
    1. Do not rewrite the expected values in PF just to make CI pass (CLAUDE.md:172).
    2. Before anyone edits PF, the author flags the partner-facing change for the team (@PavelMakarchuk and @MaxGhenis). A team member must be notified, and the API partner must be notified. The body describes the change but does not say that anyone has been told.
    3. Then the edit goes through the repo's partner-test gate (CLAUDE.md:174-181) on this PR.
    4. For the partner: the new credit follows from the case's inputs is_medicare_eligible: false and is_aca_eshi_eligible: false. A real 65-year-old with enough work quarters would have premium-free Part A and no credit. That is the case's input choice, not an effect of this PR.

C2. P cites KFF's June 2024 "Appendix Table 1", which is a different table.

  • Where: P:13-14, and the body's "Sources" paragraph.
  • Evidence: in the June 2024 report, Appendix Table 1 is "Selected Policies for Enrollment as of June 2024". The pathway table is Appendix Table 5: its 100% FPL column is "No" for all 14 states and WV. Table 6 gives their SSI-level limits. The order is the same in Wayback captures from 2024-07-19 and 2025-05-21. "Appendix Table 1" is the pathway table's number in KFF's 2019 survey (2018 data).
  • Why critical: an incorrect citation; Table 1 has nothing on pathways. The value is right.
  • Fix (loads on a package copy at the head; TX stays false, WV true). Replace P:13-14. The second entry is optional and closes G3:
    - title: KFF, Medicaid Eligibility and Enrollment Policies for Seniors and People with Disabilities (Non-MAGI) During the Unwinding (June 2024), Appendix Tables 5 and 6
      href: https://www.kff.org/report-section/medicaid-eligibility-and-enrollment-policies-for-seniors-and-people-with-disabilities-non-magi-during-the-unwinding-appendix/
    - title: "KFF, Medicaid Financial Eligibility for Seniors and People with Disabilities: Findings from a 50-State Survey (June 2019, 2018 data), Appendix Table 1"
      href: https://www.kff.org/report-section/medicaid-financial-eligibility-for-seniors-and-people-with-disabilities-findings-from-a-50-state-survey-appendix-tables/

Make the same change in the body.

Should Address

SA1. No test pins 11 of the 14 flags, West Virginia's flag or North Dakota's new limit.

  • Where: P:57-164. Only AL, MD, ND and PA have a case that reads the flag. U pins the two analogous lists but not this one.
  • Evidence: one mutant sets the 10 untested false states back to true, sets WV false, keeps MS true through 2026 and keeps 0.75 of the guideline for ND. It passes the 30 changed YAML cases, U (81), gov/hhs/medicaid (703) and 29 other baseline files with Medicaid-dependent outputs in these states (385). Only the partner case catches Texas.
  • Why should address: missing edge cases for variables that already have tests. ND's limit moves eligibility both ways (G1).
  • Fix (run at the head: U with T1, 108 passed; T1 fails on every flag and limit mutant). Append to U:
# States whose rules cover aged, blind, or disabled people as categorically
# needy only if they receive SSI (cited in covers_non_ssi_recipients.yaml).
SSI_ONLY_STATES = sorted(
    ["AL", "DE", "GA", "KS", "KY", "MD", "MS", "ND", "NM", "NV", "SD", "TN", "TX", "WY"]
)


@pytest.mark.parametrize("year", YEARS)
def test_ssi_only_states_match_their_rules(year):
    flags = SYSTEM.parameters(
        f"{year}-01-01"
    ).gov.hhs.medicaid.eligibility.categories.senior_or_disabled.covers_non_ssi_recipients
    assert sorted(state for state in STATES if not flags[state]) == SSI_ONLY_STATES


@pytest.mark.parametrize("couple", [False, True])
@pytest.mark.parametrize("year", YEARS)
def test_ssi_only_states_use_the_ssi_rate(year, couple):
    simulation = unit_simulation(year, SSI_ONLY_STATES, couple)
    limit = simulation.calculate(
        "medicaid_optional_senior_or_disabled_income_limit", year
    )
    individual, couple_rate = SSA_MONTHLY_RATES[year]
    np.testing.assert_array_equal(limit, 12 * (couple_rate if couple else individual))

SA2. No case tests what the emergency exception keys on.

  • Where: E:27-30. The exception keys on failing the Medicaid immigration test. Y1 Cases 6-8 all fail it, so no case separates it from "any noncitizen".
  • Evidence: a mutant that keeps the pathway for every noncitizen passes the 30 changed cases, emergency_medicaid (56), U and gov/hhs/medicaid.
  • Law: a permanent resident past the five-year bar without 40 quarters gets no SSI (8 U.S.C. 1612(a)(2)(B)) and is outside 42 CFR 435.406(b). The body says these people lose the pathway; no test shows it.
  • Why should address: a missing edge case.
  • Fix (run at the head: 1 passed; it fails on the mutant). Append to Y1 after line 151. It stays valid after #10240 (countable income $10,560):
# A permanent resident ten years after entry is past the five-year bar, so
# passes the Medicaid immigration test, but with no qualifying quarters fails
# SSI's noncitizen test (8 U.S.C. 1612(a)(2)(B)) and gets no SSI. Alabama has
# no group for aged people who do not receive SSI, and the emergency Medicaid
# exception does not reach someone who passes the Medicaid immigration test.
- name: Case 9, Alabaman permanent resident past the five-year bar without 40 quarters does not keep the pathway.
  period: 2026
  input:
    age: 70
    state_code: AL
    immigration_status: LEGAL_PERMANENT_RESIDENT
    years_since_us_entry: 10
    ssi_qualifying_quarters_earnings: 0
    social_security_retirement: 10_800
  output:
    is_medicaid_immigration_status_eligible: true
    ssi: 0
    is_optional_senior_or_disabled_income_eligible: true
    is_optional_senior_or_disabled_for_medicaid: false
    medicaid_category: NONE
    is_medicaid_eligible: false
    is_emergency_medicaid_eligible: false

Suggestions

G1. North Dakota's 209(b) recipients change in both directions, but the body lists them under "Unchanged".

  • Where: L:54-64 (the citation is only in the comment at L:58-59); the body's "Unchanged" and "$42 a year".
  • Evidence: a 2026 ND probe with receives_ssi true. A couple with $17,000 of pathway income: limit $16,230 to $17,892, is_ssi_recipient_for_medicaid false to true. A single person with $11,950: limit $11,970 to $11,928, true to false.
  • Why a suggestion: both directions follow 75-02-02.1-40(1)(a)(2); only the documentation is short.
  • Fix (a reference string; not run): add at the end of L's reference tuple (skip if #10373 merges first with this citation):
        "https://www.ndlegis.gov/information/acdata/pdf/75-02-02.1.pdf#page=89",

In the body, move these recipients to "What changes": "In 2026 their individual limit falls from $11,970 to $11,928 and their couple limit rises from $16,230 to $17,892." Next to "$42 a year", add that the couple limit rises by $1,662 for the people it still reaches.

G2. Two sibling descriptions are now stale.

  • Where: income/limit/individual.yaml:1 and income/limit/couple.yaml:1, in P's folder.
  • Evidence: both say SSI-rate states "are listed in uses_ssi_federal_benefit_rate and omitted here". The 14 states now use the SSI rate through covers_non_ssi_recipients, and their 0.75 entries apply only if a reform sets the flag to true.
  • Fix (text only), in individual.yaml; use "a couple" in couple.yaml:
description: Maximum countable income limit for an individual to qualify for Medicaid under the optional senior or disabled pathway, as percent of Federal Poverty Line. States whose limit is the SSI federal benefit rate are listed in uses_ssi_federal_benefit_rate and omitted here; states where covers_non_ssi_recipients is false also use that rate, and their values here apply only if that flag is true.

G3. Six states' early years rest on KFF only.

  • Where: P:78-79 (GA), P:90-91 (KS), P:98-99 (MD), P:128-129 (NV), P:148-149 (TX), P:163-164 (WY).
  • Evidence: the primary sources start later (KS 2025-07-01, GA 2023-11, MD 2025-04, NV 2025-03, TX 2022-09-01, WY chapter 18 2025-05-23). KFF 2018 and 2024 both say "No", so the value is not in doubt.
  • Fix: the optional second entry in C2. A KS source before 2025-07-01 would be better.

G4. P's description is broader than the law.

  • Where: P:1.
  • Evidence: all 14 states cover some non-recipients as categorically needy: Pickle, DAC, DWB, state-supplement-only (DE 17800 MAT, MD S01) and NM Cat. 074(b). "Under the ... pathway" limits the scope, so the text is not wrong.
  • Fix (text only):
description: The state covers the optional Medicaid group for aged, blind, or disabled people who meet SSI's income and resource requirements without receiving SSI (42 CFR 435.210), or the poverty-level aged and disabled group (42 U.S.C. 1396a(m)), if this is true.

G5. The West Virginia anchor will move.

  • Where: P:55-56, and the body's WV links.
  • Evidence: the URL serves the current IMM; 23.11.4 is on file page 1889 of the October 5, 2026 build.
  • Fix (text only):
    - title: West Virginia Income Maintenance Manual 23.11.4 - SSI-Related/Non-Cash Assistance (October 5, 2026 edition)
      href: https://bfa.wv.gov/media/40005/download?inline#page=1889

G6. The merge-order list omits draft #10394.

  • Evidence: #10394 adds a WV URL to L's reference tuple and a WV is_couple override above L:29.
  • Fix (body): "#10394 (draft) edits the reference tuple and the is_couple line of medicaid_optional_senior_or_disabled_income_limit.py. Keep both sides."

G7. The covers mask in U does nothing in this PR.

  • Where: U:197-204 and U:231-238. All seven grid states are true; the mask matters once #10373 adds ND.
  • Fix (comment only), replace U:197-198:
    # States without a group for people who do not receive SSI give the
    # pathway to nobody in this citizen grid. All seven states here have the
    # group; the mask matters once North Dakota joins the grid (#10373).

G8. The microsimulation effect is large and is not in the body.

  • Evidence: 2026, certified default dataset (populace_us_2024.h5), head against the pre-PR model. 699k people lose is_medicaid_eligible in the 14 states (TX 289k, TN 110k, AL 93k); 180k move to medically needy. Medicaid falls by $22.88bn; the ACA PTC rises by $0.52bn. 695k of the 699k do not take up SSI, and only 4.4k reported Medicaid at the CPS interview.
  • Why a suggestion: no biased default was found, and the change moves the model toward the reported data. The base is 158 records, so the state split is noisy.
  • Fix: replace "The microsimulation impact was not run" with these numbers and their dependence on SSI take-up.

G9. The Case 6 comment implies an income test that does not bind yet.

  • Where: Y1:63-64. At the head, the pathway counts no income for this person: $9,600 and $60,000 of wages give the same result.
  • Fix (comment only), replace Y1:63-64:
# 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.

G10. covers_group has two meanings.

  • Where: E:28-30 (flag or failed immigration test) and L:63 (the bare flag).
  • Fix (a rename; not run): rename it in E to in_covered_group (E:28, E:36). After make format, E:36 reads:
        return (
            in_covered_group & is_senior_or_disabled & income_eligible & asset_eligible
        )

Investigated and cleared

  • Body, "Unchanged". SSI recipients stay SSI_RECIPIENT and Medicaid-eligible (probe in AL, KS, NV, TX and MS, 2018, 2022, 2026). The flag is false in exactly the 14 states. Countable income, disregards and asset limits are not in the diff. Among SSI recipients, only ND's 209(b) recipients move (G1).
  • Body, "$42 a year". Correct for an individual in 2026. The couple limit moves the other way (G1).
  • Body, "CI hasn't run on this draft". Stale: the PR is no longer a draft, CI ran (1 fail, 32 pass), and the five pins "traced ... (not run)" now match a run.
  • Montana Hypothesis test. Not involved; all six Python shards pass.
  • KFF completeness. Of KFF 2024's 23 "No" states, the other 9 are covered by #9735, #10378 and #10373.
  • Dates. Values backfill to 2015, so MS: 1996-07-01: true is inert and no mid-year boundary needs a test.
  • Readers. medicaid_group keeps exception noncitizens at NONE. Opening the Healthier Mississippi Waiver agrees with 43-13-115(11). Medically needy effects match KFF 2024 Appendix Table 7.
  • Changelog. Top-level .fixed.md, named after the branch.
  • axiom: line (process note, not counted). rulespec-us#1927 is open, labeled pe-parity, and names this PR.

Out of scope / follow-up

  • Exception group assets. SSI's income test but the state's asset test (DE $4,000 before 2024, ND $3,000). Very small effect.
  • #10240. Until it merges, people who fail SSI's noncitizen test have pathway income 0.
  • #10374. Until it merges, about 2k North Dakotans who leave the pathway get no category.
  • Not modeled. DE MAT and NM Cat. 074(b) could join GA and NV under "Not changed here". NV and NM medically needy -inf limits are pre-existing.

Validation Summary

Check Result
CI 1 fail (Household API Partners, C1), 32 pass
Local tests Changed YAML 30/30; U 81/81; gov/hhs/medicaid 703; ruff clean
Partner tests None edited. PF 13 pass, 1 fail (C1). Healthcare and cash_health 78/78
References 26 checked; 1 does not corroborate (C2); WV anchor (G5)
Regulatory 14 states, WV, emergency exception, ND limit correct
Mutation 15 mutants: 8 killed; 7 survive, all killed by T1 or T2
Proposed tests U + T1 108/108; T2 1/1
Microsimulation 699k lose eligibility; −$22.88bn Medicaid (G8)
Branch 9 ahead / 21 behind; MERGEABLE; #10386 stacked
Other reviews None

Review Severity: REQUEST_CHANGES

C1, C2, SA1 and SA2 are open; under Pavel's criteria any open C or SA item means REQUEST_CHANGES.

Next Steps

To auto-fix issues: run the fix-pr workflow for this PR.

  1. C1 is not an auto-fix item. Do not edit PF. The author flags the change for @PavelMakarchuk and @MaxGhenis, a team member and the API partner are notified, and then the edit goes through the gate (CLAUDE.md:174-181).
  2. Retitle the KFF reference at P:13-14 and in the body (C2).
  3. Append T1 to U (SA1) and Case 9 to Y1 (SA2).
  4. Take the suggestions that you agree with.
  5. Run make format, then U, Y1 and gov/hhs/medicaid.
  6. Update the body: the CI sentence, ND (G1), #10394 (G6), microsimulation (G8).
  7. After this PR merges, merge main into #10386 again.

hua7450 and others added 2 commits October 27, 2026 14:53
- C2/G3: cite KFF June 2024 Appendix Tables 5 and 6 and the 2019
  survey's Appendix Table 1 instead of the 2024 Appendix Table 1.
- SA1: property tests pin the 14 states' flags (and so West Virginia's)
  and their SSI-rate limit, including North Dakota's.
- SA2: Case 9, a permanent resident past the five-year bar without 40
  quarters, passes the Medicaid immigration test and loses the pathway.
- G1: cite N.D. Admin. Code 75-02-02.1-40 in the limit's references.
- G2, G4, G5, G7, G9: clarify descriptions, the WV edition and comments.
- G10: rename covers_group to in_covered_group.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450

hua7450 commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator Author

Thanks, @PavelMakarchuk. All items are addressed at 45d7868 except C1, which waits for @hua7450's partner-test decision. The branch also merges main. I didn't run tests locally; CI will run on this head.

Item Disposition
C1 partner TX breakeven case Waits for @hua7450's partner-test decision. The partner folder is not edited. The body now flags the change as partner-facing: the team and the API partner need to be told, and any edit goes through the CLAUDE.md gate. It also shows the five pins (aca_ptc 18,344.29, as in your run) and notes that the credit comes from the case's Medicare and ESHI inputs.
C2 KFF citation Fixed. covers_non_ssi_recipients.yaml now cites KFF June 2024 Appendix Tables 5 and 6, plus the 2019 survey's Appendix Table 1 (2018 data). The body's Sources paragraph matches.
SA1 untested flags Fixed. Your test_ssi_only_states_match_their_rules and test_ssi_only_states_use_the_ssi_rate are appended to the property test file. Together they pin all 14 flags, West Virginia's true flag, and the SSI-rate limit including North Dakota's, for 2018 to 2026, individual and couple.
SA2 exception key Fixed. Case 9 is your permanent resident past the five-year bar with no qualifying quarters: passes the Medicaid immigration test, gets no SSI, loses the pathway, no emergency Medicaid.
G1 ND 209(b) both ways Taken. N.D. Admin. Code 75-02-02.1-40 (page 89) is added to the limit's references. The body moves these recipients to "What changes" with the $11,970 to $11,928 and $16,230 to $17,892 figures, and notes the $1,662 couple rise next to the $42 band.
G2 stale sibling descriptions Taken, your wording, in income/limit/individual.yaml and couple.yaml.
G3 early years on KFF only Taken through C2's 2019 entry. I found no Kansas source before 2025-07-01.
G4 parameter description Taken, your wording.
G5 WV anchor Taken: the title names the October 5, 2026 edition.
G6 draft #10394 Taken: added to the merge order.
G7 covers mask comment Taken.
G8 microsimulation Taken. The body gives your numbers, attributed to your run (I didn't rerun it), with the SSI take-up caveat and the 158-record base.
G9 Case 6 comment Taken, your wording.
G10 covers_group Taken: renamed to in_covered_group in is_optional_senior_or_disabled_for_medicaid.py.
Stale CI sentence Fixed: the body now reports the CI result at b078376.

Noted as follow-ups, not in this PR:

Merge order is in the body:

TheAxiomFoundation/rulespec-us#1927 is updated to this head.

hua7450 and others added 2 commits October 27, 2026 15:57
Brings in main's CI fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
At the earned-income break-even the person gets $0 SSI, so is not an SSI
recipient. Texas has no optional Medicaid group for aged, blind or
disabled people who do not receive SSI (MEPD A-3000), so Medicaid is $0
and the premium tax credit applies at 158% FPL ($18,344.29).

Approved by Ziming Hua (@hua7450) through the partner-test gate on
2026-10-27.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450

hua7450 commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator Author

Partner-test gate: partners/analytics_coverage/edge_cases/federal/cash/ssi/federal.yaml, case ssi_earned_income_at_breakeven_ineligible (federal).

I answered the three questions from CLAUDE.md on 2026-10-27:

  1. Are you sure you want to edit this test file? Yes.
  2. Have you notified a team member about this change? Yes.
  3. Have you notified the API partner about this change? Yes.

This comment records my approval of the edit in b5e2f0256c. It also answers C1 of the review on this PR.

Output Before After
medicaid 13,708.50 0
is_medicaid_eligible true false
is_aca_ptc_eligible false true
aca_ptc 0 18,344.29
premium_tax_credit 0 18,344.29

The other pins are unchanged.

Model change and law

  • The person is 65, lives at home in Dallas County, is not disabled, and has $24,876 of wages. That puts SSI countable income at exactly the SSI rate, so SSI is $0 and the person is not an SSI recipient.
  • This PR turns off the optional aged, blind and disabled group for non-SSI recipients (42 CFR 435.210; 42 U.S.C. 1396a(m)) in states that don't cover it.
  • Texas covers people at home in this group only if they receive SSI (MEPD A-2000). Its optional groups are the institutional, waiver and buy-in groups (MEPD A-3000), so the person has no Medicaid.
  • Without Medicaid, Medicare or an employer offer, the premium tax credit applies at 158% of the poverty line. The benchmark plan costs $19,482.51 a year, minus a required contribution of 4.58% of $24,876 ($1,138.23).

This branch has not been deployed

No deployments
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.

2 participants