Skip to content

Apply SSI's spouse rules to Medicare Savings Programs when only one spouse is on Medicare - #10633

Merged
hua7450 merged 8 commits into
PolicyEngine:mainfrom
hua7450:msp-abd-spouse-income
Nov 12, 2026
Merged

hua7450 merged 8 commits into
PolicyEngine:mainfrom
hua7450:msp-abd-spouse-income

Conversation

@hua7450

@hua7450 hua7450 commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #10628

Changes since review, round 2 (2026-11-12)

  • Wages of a spouse who is eligible for SSI are not deemed, and a case now pins it: msp_countable_income.yaml Case 38. A has $300 a month of unearned income, and a disabled spouse who is eligible for SSI and not on Medicare has $1,200 of wages. Nothing is deemed, so A has $280 on the one-person guideline and QMB. Without the guard on wages, A would have $847.50 on the two-person guideline, by hand trace.
  • Texas's own deeming amounts are recorded as an open candidate, us-tx:msp-spouse-deeming-allowance, and Case 35's comment names it. The model keeps SSI's $497 pending the project lead's ruling. The Texas limit added on 2026-11-11 is now the fourth item under Source conflicts.
  • Candidate housekeeping. us:msp-couple-standard-one-spouse-on-medicare now lists 20 CFR 416.1160(d), which its note relies on, among its sources. The example in us:msp-eligible-spouse-ssi-definition gives the statute's reading as it stood when ruled and as it stands since the 2026-11-10 ruling.
  • Description updated. The facility-stay limit now gives numbers and names the open fix, and the omitted-marital-units limit gives figures measured at 64c82efc1f. Commit 51ea1b4616 changes no variable or parameter, so those figures hold at the head.

Changes since review, 2026-11-11

  • A spouse's income can no longer raise the tier (20 CFR 416.1163(e)(2)). It is deemed only when that is the stricter test: msp_countable_income.yaml Cases 32 and 34 to 36.
  • Spouses are tested as a couple only when both are on Medicare, and nothing is deemed from a spouse who is eligible for SSI. Ruled by the project lead, 2026-11-10 (us:msp-couple-standard-one-spouse-on-medicare): Cases 26 and 33.
  • Allocations taken from a spouse's wages are pinned: Case 37.
  • Merged with main at 23a7c9a8f4. msp_fpg.yaml Case 4 now ends its facility stay before December; the last limit below says why.
  • Description corrected after a law check, 2026-11-11, with no code change. The limit on Texas's thresholds below is new.

What and why

On main, msp_countable_income combines spouses' income only when both are on Medicare, and deems income only from a spouse who is not aged, blind or disabled (ABD). An ABD spouse not yet on Medicare fits neither branch, so none of their income counts, while msp_fpg still returns the two-person guideline.

42 USC 1396d(p)(1)(B) measures income "as determined under section 1382a of this title for purposes of the supplemental security income program". This PR applies SSI's spouse rules when only one spouse is on Medicare. The new variable msp_tests_as_couple (Person, month) decides whether a person tests as a couple, and msp_countable_income and msp_fpg both read it. The new helper module _msp_spouse_income.py holds their shared spouse calculations. msp_fpg is now MONTH-defined and returns the monthly amount, because a facility stay can change the guideline within a year. The PR adds no parameters.

The first matching row applies, separately for each person, whether or not that person is on Medicare or ABD:

Situation Income counted Poverty guideline
Both spouses are on Medicare Combined Two people
A facility separates a joint claim (20 CFR 416.414(b)(3)): ssi_claim_is_joint without ssi_couple_computation_applies Own One person
The spouse is eligible for SSI, uncapped_ssi > 0, so is not an ineligible spouse (20 CFR 416.1160(d)) Own One person
The spouse's income after allocations for ineligible children is above the rate difference, $1,491 - $994 = $497 a month in 2026 (20 CFR 416.1163(d)(2)), and counting it is the stricter test (416.1163(e)(2)) Own plus the spouse's remainder Two people
Any other spouse (416.1163(d)(1)), or no spouse Own One person

The stricter test is the one with the higher income relative to its guideline: own income against the one-person guideline, or income with the spouse's remainder against the two-person guideline. Each tier is a share of the guideline, so this gives the less generous of the two tiers.

Spouse A is 68 and on Medicare in Texas in 2026. Amounts are monthly. QMB, SLMB and QI limits are $1,803.33, $2,164 and $2,434.50 for two people, and $1,330, $1,596 and $1,795.50 for one. On main, each of these couples uses the two-person guideline.

A's income Spouse B A's countable income before After Guideline after A's tier before After
$1,000 62, SSI disability criteria, not on Medicare, $1,500 of Social Security $980 $2,480 Two people QMB None
$1,000 66, on Medicare, $1,500 of Social Security $2,480 $2,480 Two people None None
$1,000 62, disability criteria, $1,500, two ineligible children $980 $1,486 Two people QMB QMB
$1,700 62, disability criteria, $450 $1,680 $1,680 One person QMB QI
$1,680 50, not disabled, $450 $1,660 $1,660 One person QMB QI
$1,400 62, disability criteria, no income $1,380 $1,380 One person QMB SLMB

The "before" values in the first two rows come from the run on main in #10628, and the others from reading main's code.

Some couples now test on one person's income and guideline, which lowers their limits, as in rows 4, 5 and 6. Row 6 is an eligible SSI couple with one spouse on Medicare: each is tested alone, so A's $1,380 is above the one-person $1,330 and SLMB.

A dollar of spouse income cannot raise the tier. With A at $1,680, a spouse at $497 gives $1,660 on one-person limits (QI). A spouse at $498 would give $2,158 on two-person limits (SLMB), because the income rises by $498 and the 120% limit rises by $568. A's own income is the stricter test there, so A stays at $1,660 and QI. With A at $1,340, the same dollar moves A from $1,320 and QMB to $1,818 and SLMB, because there the deemed test is the stricter one.

A spouse in a facility stays separate unless both spouses are on Medicare. In that case the model still tests them together, against 20 CFR 416.414(b)(3): $2,480 and the two-person guideline for spouses with $1,000 and $1,500.

The spouse now comes from _ssi_spouse_index. Couples on Medicare with declared marital units keep their results. When a situation omits marital units, a child's wages no longer join a couple's combined income: spouses on Medicare with $1,000 and $500 and a teen with wages get $1,480, the two-person guideline and QMB.

Source conflicts:

  • Eligible spouse (us:msp-eligible-spouse-ssi-definition). 42 USC 1382c(b) defines an eligible spouse as "an aged, blind, or disabled individual who is the husband or wife of another aged, blind, or disabled individual", and (f)(1) deems income from a spouse who "is not an eligible spouse". 20 CFR 416.1801(c) defines an eligible spouse as a person "Who is eligible for SSI", 20 CFR 416.1160(d) defines an ineligible spouse as someone who "is not eligible for SSI benefits", and POMS SI 00501.154 A.1 applies couple computation rules if "each is eligible for benefits". The model follows the regulations for these programs. When this was ruled, the statute's reading gave $2,480 and no tier in row 3, and $2,130 and SLMB in row 4. Since the ruling of 2026-11-10 below, spouses with only one on Medicare are not tested together, so that reading would now leave A alone in both rows: $980 and QMB in row 3, $1,680 and QI in row 4. Ruled by the project lead, 2026-11-02.
  • Couple test with one spouse on Medicare (us:msp-couple-standard-one-spouse-on-medicare). 42 USC 1396d(p)(2)(A) sets the limit by the poverty line "applicable to a family of the size involved" and does not say who is in the family, and under 20 CFR 416.1801(c) two spouses who are each eligible for SSI are a couple whether or not both are on Medicare. The HCFA memorandum of October 2, 1997 describes the federal default: "those eligible under the various SSI-related poverty level groups were treated as individuals or, if both members of a couple were eligible, as a couple". Texas MEPD Appendix IX: "Use the individual income range to test eligibility for each spouse separately if both are not eligible." The model follows the memorandum and the Texas handbook: spouses are tested as a couple only when both are on Medicare, and nothing is deemed from a spouse who is eligible for SSI. Tested together, row 6 would be QMB. Ruled by the project lead, 2026-11-10.
  • Illinois's $25 (us-il:msp-exemption-applicant-without-income). PM 15-04-03-a says: "If the person applying for or receiving AABD Medical has no income other than SSI or contributions, and another person included in the standard has income, deduct one $25 exemption". 89 Ill. Adm. Code 120.335(a)(1) exempts "the first $25.00 of a client's earned or unearned income other than SSI income, or contributions from a spouse or other individual" and is silent on a spouse's income. PM 06-12-01-c says: "A client is eligible for no more than one income exemption for their own income". The model follows PM 15-04-03-a: one $25 when only one spouse is on Medicare, including a spouse with no income of their own, and one $25 each, capped at each spouse's income, when both are. A 68-year-old with no income and a disabled spouse with $1,825 counts $1,800 and gets QMB, where the SSI $20 would leave $1,805 and SLMB. Ruled by the project lead, 2026-11-02.
  • Texas deeming allowance (us-tx:msp-spouse-deeming-allowance, state: open). 20 CFR 416.1163(b)(1) sets each ineligible child's allocation at "the difference between the Federal benefit rate for an eligible couple and the Federal benefit rate for an eligible individual", and (d) uses the same difference as the deeming threshold: $497 a month in 2026, for every program. Texas uses its own amounts in its deeming test for these programs. Its "Program-Specific Living Allowance Allocation" is $474 for QMB, $568 for SLMB and $639 for QI-1 (MEPD Appendix XXIX), for the deeming threshold and for each ineligible child's allowance. The model follows the regulation in every state, pending the project lead's ruling. A Texas spouse with more than $474 and up to $497 a month is deemed there for QMB and not in the model; one with more than $497 and up to $568 is deemed in the model when that is the stricter test, and not there for SLMB. With no ineligible children, only the first band changes a tier: when the applicant's own income is within the one-person QMB limit and the deemed income is above the QMB couple limit. With ineligible children the allocations differ in both directions, and Cases 24 and 37 keep their tiers either way. Case 35's household, with $1,340 and a spouse with $497, is QMB in the model. By Appendix XXIX's steps the spouse's income would be deemed for QMB, the $1,817 would miss the two-person limit, and the applicant would be re-budgeted to SLMB.

Related PRs and issues:

  • Merge this PR before Apply immigration tests to Medicare and Medicare Savings Programs #10632, which takes a spouse barred by immigration status off Medicare. Without this PR, a citizen with a barred aged spouse would then count only their own income: $980 and QMB by code trace, in the household of msp_countable_income.yaml Case 28. With this PR that household gives $2,480 and no tier, whether or not that PR has merged. A combined check of the two earlier heads (8aa0182c18 here, 2127c66dac there) passed all 62 values in msp_countable_income.yaml. It has not been rerun on the current heads.
  • Medicare Savings Programs: test a person as a couple only when they are married, not when their SPM unit is #10514 stays open, and this PR does not close it. Its income half is done here: msp_fpg no longer reads spm_unit_is_married, so an unmarried person with declared marital units in a married couple's SPM unit gets the one-person guideline. Its asset half remains: msp_asset_eligible still reads that flag, so a person tested alone on income still faces the couple's combined resources and couple limit.
  • Fix SSI spousal deeming for in-kind support and for aged, blind or disabled spouses who are not eligible #10243 needs reconciling with the eligible-spouse ruling. SSI's own is_ssi_ineligible_spouse and ssi_couple_computation_applies still classify by ABD status, and that issue names non-takeup and immigration bars but not income above the couple rate. msp_tests_as_couple reads ssi_couple_computation_applies and ssi_claim_is_joint, and _msp_spouse_income.py reads uncapped_ssi, so a change there can change the facility row and the row for a spouse who is eligible for SSI.

Limits:

  • Situations that omit marital units can pair people who are not spouses. Declaring the units gives the right answer, and Build omitted household marital units from explicit couples and the tax-role fallback #10000, still open, would end the pairing. Paired figures come from the review's run at 64c82efc1f and unpaired figures from Case 30, unless marked as a code trace:
    • A 70-year-old with $1,700 and a 16-year-old with $10,000 of wages in their own tax unit are still paired. The 70-year-old gets $1,680, the one-person guideline and QI, the same as with declared units, because their own income is now the stricter test. The teen gets $2,064.17 on the two-person guideline. Declared units give the teen $374.17 on the one-person guideline, the figure Case 30 gives when the two are not paired. The teen is not on Medicare, so no tier changes.
    • Any axes run on that household pairs them the same way, because _ssi_spouse_index rules out a parent and claimed child only when the simulation has one marital unit. By code trace it gives the same figures. On main, by code trace, this household and the one above give the 70-year-old $1,680 and the one-person guideline.
    • Unmarried adults: _ssi_spouse_index accepts the head and spouse that tax roles infer, and those roles treat the next-oldest adult as the spouse. A parent, 70, with $1,700 and an adult child, 40, with $30,000 of wages gets $2,897.50 on the two-person guideline and no tier. With declared units the parent gets $1,680 on the one-person guideline and QI, as in Case 30. A widow, 92, living with a couple, 50 and 48, pairs with the 50-year-old. Two unrelated people on Medicare combine. On main, by code trace, these adults pair too.
  • A spouse who is not ABD with a facility resident has no joint claim, so the deeming row applies.
  • At the earlier head, a couple who are tax dependents could not reach the facility row, because ssi_claim_is_joint needed a head or spouse. Main now finds the couple through the spouse test (Apply 416.1163(e)(2) to deemed SSI and identify SSI couples by marriage, not tax roles #10141), so with declared marital units they should reach it. By code reading, not run.
  • _ssi_spouse_index now runs for each month in msp_countable_income and msp_tests_as_couple, and msp_tests_as_couple computes the countable amounts that msp_countable_income computes again. Microsimulation time was not measured.
  • In the months before a facility stay that lasts through December, SSI does not pool the couple's income (SSI pools a married couple's income by December's facility status, so a part-year facility stay gives wrong SSI in the other months #10818). uncapped_ssi can then be above zero for spouses whose combined income rules SSI out, and the model deems nothing between them. In the household of msp_fpg.yaml Case 4, the spouse on Medicare has $1,000 a month and the disabled spouse, who is not on Medicare, has $1,500. With a stay through December, the months before the stay give the spouse on Medicare $980, the one-person guideline and QMB (the review's run at 64c82efc1f). The law gives $2,480, the two-person guideline and no tier. By code trace, main gives $980 and QMB as well. msp_fpg.yaml Case 4 ends its stay before December for this reason, and a NOTE in _msp_spouse_income.py records it. Combine an SSI couple's income by each month's facility status #10820, open, fixes the cause. Once it is on main, Case 4's stay goes back to running through December and the NOTE is deleted: in this PR if that PR merges first, and in a follow-up otherwise.

Test plan

  • For policy changes: 20 new cases, msp_countable_income.yaml Cases 21-38 and msp_fpg.yaml Cases 3-4, with expected values worked by hand from the sources above. They cover each row of the first table; allocations for ineligible children, from unearned income and then from wages (Cases 24 and 37); both sides of the $497 rate difference in each direction of the 416.1163(e)(2) comparison (Cases 31, 32, 35 and 36); a spouse's deemed wages (Case 34); an eligible SSI couple with one spouse on Medicare (Case 26); the wages of a spouse who is eligible for SSI (Case 38); Illinois's exemption on the deemed path and beside a spouse who is eligible for SSI (Cases 22, 29 and 33); a spouse entering a facility mid-year; a mixed-status couple (Case 28); and a parent and minor with omitted marital units (Case 30). msp_tests_as_couple has no test file of its own: several cases assert it directly, and msp_fpg follows it one to one.
  • Changed existing cases:
    • msp_countable_income.yaml Case 15 person2 goes from $1,205 to $1,792.50, and Case 20 person2 from $790.83 to $1,780.83. Each now has the other spouse's income deemed. Neither is on Medicare, so no tier changes.
    • msp_fpg.yaml Case 2 now has two people on Medicare in a marital unit, because msp_fpg no longer reads spm_unit_is_married.
    • integration.yaml changes comments only.
  • If this PR takes a reading where sources disagree: three rulings and one open candidate, stated above. The three ruled candidates are in source_conflicts/candidates.yaml with state: ruled, and the Texas deeming allowance is there as us-tx:msp-spouse-deeming-allowance with state: open. The # Source conflict markers wait for the register entries on rulespec-us main.
  • make format (ruff format on the changed variables)
  • Changelog fragment in changelog.d/

At head 51ea1b4616, msp_countable_income.yaml and msp_fpg.yaml pass locally (42 cases), and so does test_source_conflicts.py (103 tests). integration.yaml, unchanged since, last ran locally on the merge with main at 23a7c9a8f4, when the PR's three test files passed 50 cases, one process at a time. Other suites were not run locally; CI validates.

axiom: TheAxiomFoundation/rulespec-us#2010 queued

🤖 Generated with Claude Code

hua7450 and others added 2 commits November 2, 2026 22:18
A spouse who is aged, blind or disabled but not eligible for SSI is an
ineligible spouse (20 CFR 416.1801(c), 416.1160(d)), so child allocations and
the rate difference in 416.1163 decide whether their income counts. A person
tested alone now gets the one-person guideline, month by month. Illinois gives
one $25 when only one spouse is on Medicare (PM 15-04-03-a).

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

DTrim99 commented Nov 5, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Apply SSI's spouse rules to Medicare Savings Programs when only one spouse is on Medicare

Summary

The PR replaces the marital-unit sums in msp_countable_income with SSI's spouse rules: it combines income for spouses who are both on Medicare or are an eligible SSI couple, deems an ineligible spouse's income above the $497 rate difference (20 CFR 416.1163(d)) after child allocations, and splits a joint claim that a facility separates. The new msp_tests_as_couple then picks the one-person or two-person guideline for msp_fpg. On main, every married person uses the two-person guideline, and an aged, blind or disabled spouse who isn't on Medicare counts for nothing. The PR fixes both, it reuses the existing SSI helpers, and its 15 new cases check out by hand. It also fixes the #10632 merge-order problem: I ran a tree that combines both PR heads, and a Texas citizen with an undocumented spouse now gets $2,480, the two-person guideline and no tier, with the spouse off Medicare.

One rule is missing. SSI deeming can never leave a person better off than their own income would (20 CFR 416.1163(e)(2)). With the new one-person guideline, deeming now raises tiers: from QI to SLMB in the PR's own Case 32, and from no tier to QI for a person with up to about $2,218 of countable income and a spouse who earns just over $497. Mutation runs also show that three new terms are unpinned. One question about the eligible-couple row needs to be recorded and ruled on.

Critical (must fix)

1. Deeming a spouse's income can raise the person's tier, which SSI methodology forbids (msp_tests_as_couple.py formula; msp_countable_income.py, deemed_countable branch; msp_countable_income.yaml Case 32)

20 CFR 416.1163(e)(2) (eCFR): "Your SSI benefit under the deeming rules cannot be higher than it would be if deeming did not apply. Therefore, your benefit is the lesser of the amount computed under the rules in paragraph (d)(2) of this section or the amount remaining after we subtract only your own countable income from an individual's Federal benefit rate." POMS SI 01320.400 (link) says the same: the couple-computation payment "is compared to the amount the individual is due based on their own income in the budget month; the lesser amount is the payment due." 42 U.S.C. 1396d(p)(1)(B) brings that methodology into the MSPs. Texas, the state in the PR's examples, builds it into its MSP spouse-to-spouse test as a pretest (MEPD Handbook Appendix XXIX, Rev. 26-2): "Person must first be eligible based on their own income in the pretest." It continues: "If eligible on individual pretest for QMB but not eligible for QMB in the special deeming eligibility test, re-budget for SLMB or QI-1 if applicable. The minimum income requirement for SLMB or QI-1 does not apply when the applicant is ineligible due to deeming."

The PR tests a deemed person only on the combined income against the two-person guideline, and never against their own income and the one-person guideline. Before this PR every married person used the two-person guideline, so the cliff couldn't arise. Now it can, and the PR body says so ("a dollar of spouse income can also raise the tier"):

  • Case 32 (TX, 2026-01): A's own countable income is $1,680 - $20 = $1,660, which passes only the one-person QI band ($1,596 to $1,795.50). The PR deems the spouse's $498 and gives $2,158 against the two-person SLMB ceiling of $2,164, so SLMB. The own-income test caps A at QI. Case 31, with the spouse at $497, gives QI.
  • No tier to QI (I ran this on the PR head, TX, 2026-01): A, 68, has $25,200 of unearned income and a spouse of 50 earns $6,000 ($500 a month). Alone, A has $2,100 - $20 = $2,080, above the one-person QI ceiling of $1,795.50, so no tier (confirmed with the spouse earning nothing). With the $500 deemed: $2,080 + ($500 - $65) / 2 = $2,297.50. That is at or above $2,164 and below $2,434.50, so the head returns QI. The rule gives no tier. Because the spouse's earnings get the $65-plus-half exclusion, the band runs from $1,795.51 up to about $2,434.50 - ($498 - $65) / 2 = $2,218 of the person's own countable income.

Fix: when the spouse's income is deemed (the deeming row, not a combined couple), make the person's tier the less generous of two results. The first is the tier from their own countable income against the one-person limits, which personal_countable_income already computes. The second is the tier from the deemed income against the two-person limits, with no lower bound on SLMB or QI, as Texas does. Apply the same cap to msp_income_eligible, which msp_part_b_premium_coverage reads. Then change Case 32 to QI and add the earned-income case above, which should give no tier. TheAxiomFoundation/rulespec-us#2010 encodes the same step (companion case 14 and interpretation 6), so update it to the new head and add 416.1163(e)(2) to its verbatim law.

Should address

1. Two new guards in the eligible-couple test are unpinned (_msp_spouse_income.py, msp_spouses_combine_income)

I ran mutations against msp_countable_income.yaml, msp_fpg.yaml, integration.yaml and msp_category.yaml at the head, and all 53 cases still passed with each guard removed:

  • Without & msp_spouse_value(eligible_for_ssi, spouse): this guard decides mixed-status couples. In Texas in 2026, take A, 68, with $16,800 of unearned income and B, 62, who meets the disability criteria, is undocumented and has no income. B is not on Medicare, even without Apply immigration tests to Medicare and Medicare Savings Programs #10632. The head gives A $1,380, the one-person guideline and SLMB (I ran this case and it passes). Without the guard, msp_tests_as_couple flips to true for A (the run failed on exactly that output) and A moves to the two-person guideline and QMB. Add this case.
  • Without person("ssi_couple_computation_applies", period) (replaced by True): every facility case in the PR has income too high for uncapped_ssi > 0, so nothing tests an eligible couple that a facility separates. Add one with low income, for example A at home with $500 and the spouse in a facility with no income. That should give A $480 and the one-person guideline, where without the guard they would combine.

2. Child allocations from the spouse's earned income are unpinned (_msp_spouse_income.py, earned_left)

20 CFR 416.1163(b)(3): "We first deduct the allocations from your ineligible spouse's unearned income. If your ineligible spouse does not have enough unearned income to cover the allocations we deduct the balance from your ineligible spouse's earned income." Replacing earned_left with the spouse's whole earned income still passes all 53 cases, because Case 24, the only allocation case, gives the spouse unearned income alone. Add a case where the spouse has wages and ineligible children, so that the allocation comes partly or wholly off earnings and changes both the $497 test and the countable amount.

3. The eligible-couple row for a couple with only one spouse on Medicare reads sources that disagree, and this reading isn't recorded (msp_spouses_combine_income; msp_countable_income.yaml Case 26; source_conflicts/candidates.yaml)

The PR combines an eligible SSI couple's income, and uses the two-person guideline, even when only one spouse is on Medicare. It reads "eligible" in 20 CFR 416.1801(c) as eligible for SSI. Two sources read the couple standard differently:

  • CMS's governing guidance on "family of the size involved" (HCFA/CMSO memorandum, October 2, 1997, link), which the CMS Manual for State Payment of Medicare Premiums ch. 1, § 1.6.2.1 still cites. It describes the federal default as: "those eligible under the various SSI-related poverty level groups were treated as individuals or, if both members of a couple were eligible, as a couple ... additional family members were accounted for only through the SSI deeming process." On that reading, both spouses must be eligible for the MSP group.
  • Texas MEPD Appendix IX: "Use the couple income range when both spouses are applying for the same program. Use the individual income range to test eligibility for each spouse separately if both are not eligible." E-7200 adds that a spouse's income isn't deemed if the spouse "is eligible for SSI".

Under either reading, Case 26 (TX) tests A alone: $1,380 against the one-person guideline, so SLMB. The PR gives QMB on the two-person guideline, and its own comment in that case says so. The ruled candidate us:msp-eligible-spouse-ssi-definition asks a different question: whether an aged, blind or disabled spouse who isn't eligible for SSI is an eligible or an ineligible spouse. It cites neither the CMS memo nor a state manual. Record this question under CONTRIBUTING.md#source-conflicts, either by adding these sources and the Case 26 numbers to that candidate or as a new candidate, and get a ruling. If the ruling goes the other way, the fix is to require both spouses on Medicare for couple treatment and to leave an SSI-eligible spouse's income out of the deeming row.

Suggestions

  1. Facility gaps the PR documents but doesn't close (msp_spouses_combine_income, msp_tests_as_couple). Main has both of these too. First, spouses who are both on Medicare still combine when one is in a facility, against 416.414(b)(3); applying split_by_facility to the both-on-Medicare term would close that. Second, a person on Medicare in a facility at the $30 rate still has a non-ABD spouse's income deemed, though 416.1163(f)(5) says: "we do not deem your ineligible spouse's income to you ... beginning with the first month for which the $30 Federal benefit rate applies." Fix these here or open a follow-up issue.
  2. Texas uses program-specific allowances. Appendix XXIX uses "QMB $474, SLMB $568, QI-1 $639" as the deeming threshold and child allocation for MSPs, where the PR uses the SSI $497. The PR's TX cases keep their tiers under either set of figures (Case 24's countable income would be $1,532 rather than $1,486). A note in the limits or a candidate entry would help, since the model applies the SSI figure in every state.
  3. Cite the family-size authority in msp_fpg. The one-or-two-person rule comes from the 1997 CMS memo above. 42 CFR 435.601(e), the Part D LIS family-size definition that counts the co-resident spouse and dependents and was due April 1, 2026, is barred from implementation or enforcement through September 30, 2034 by Pub. L. 119-21 § 71101 (CRS R48633). A sentence in the documentation would explain why the one-person guideline applies, and why states that adopted the LIS definition by state plan amendment differ.
  4. Performance. _ssi_spouse_index is a plain helper. It now runs once per month in both msp_countable_income and msp_tests_as_couple, so 24 household-position loops a year, and msp_spouses_combine_income also runs twice. The PR body says microsimulation time was not measured. A cached Person-year variable for the spouse index would avoid the repeat work. Otherwise, report the timing.
  5. Omitted marital units. The PR body lists, and links to Build omitted household marital units from explicit couples and the tax-role fallback #10000, a new result for a parent with a 16-year-old in the teen's own tax unit: $2,064.17 and two people, where main gives $1,680 and one person. That's acceptable as a documented limit. Consider a comment at the _ssi_spouse_index call so the next reader sees it.

Verified correct

  • Law research.
    • 42 U.S.C. 1396d(p)(1)(B) measures income under SSI methodology, and (p)(2)(A) sets the limit by the poverty line "applicable to a family of the size involved".
    • CMS has let states define that phrase since 1997. The default it describes is one or two people, with other members counted only through SSI deeming, and the LIS-based definition in 435.601(e) is under the § 71101 moratorium. So the PR's structure is the current federal default: one person, and two people when the couple combines or a spouse's income is deemed (416.1163(d)(2) "treat[s] you and your ineligible spouse as an eligible couple").
    • 416.1163(a)-(d) match the code: one allocation per ineligible child, equal to the rate difference less the child's income, taken from unearned income first, and deeming only of a remainder above $1,491 - $994 = $497 (2026), or $1,450 - $967 = $483 (2025, Case 20).
  • Resources. Under 416.1202(a) and 416.1205, an individual living with an ineligible spouse is tested on both spouses' resources against the couple limit. So msp_asset_eligible's combined-resources and couple-limit treatment of co-resident spouses is right whether or not their income is deemed. The remaining part of Medicare Savings Programs: test a person as a couple only when they are married, not when their SPM unit is #10514 concerns unmarried people only.
  • Apply immigration tests to Medicare and Medicare Savings Programs #10632 prerequisite. The two heads merge cleanly. On the combined tree, TX, 2026-01, a citizen of 70 with $12,000 and an undocumented spouse of 70 with $18,000: is_medicare_eligible [true, false], msp_tests_as_couple [true, true], msp_countable_income [$2,480, $2,480], msp_fpg [$1,803.33, $1,803.33] and msp_category [NONE, NONE]. That matches main's NONE at $2,480 and replaces the QMB that Apply immigration tests to Medicare and Medicare Savings Programs #10632 alone gives. The combined tree also passed all 33 msp_countable_income.yaml cases and all 4 msp_fpg.yaml cases.
  • Every MSP reader. msp_fpg moves from YEAR to MONTH. Its only readers, is_qmb_eligible, is_slmb_eligible, is_qi_eligible and msp_income_eligible, call it with a month, so the values equal the old annual-to-monthly conversion. Downstream, msp_category feeds msp_eligible, msp, msp_benefit_value, msp_federal_cost and qmb_cost_sharing, and the premium-coverage variables read the tier variables. All are monthly. The ia_ssa_smme_spousal_deeming_applies comment that mentions msp_countable_income is still accurate.
  • Partner tests. 29 files under the partner test folder reference MSP outputs, but the PR edits none and CI is green at the head, so no partner expectation moved and the partner gate doesn't apply. Main changed no MSP partner file since the merge base.
  • No reinvention. The PR reuses _ssi_spouse_index, ssi_ineligible_child_allocation, ssi_couple_computation_applies, ssi_claim_is_joint, uncapped_ssi and _apply_ssi_exclusions.
  • Hand checks (monthly, 2026 unless noted; one-person guideline $15,960 / 12 = $1,330, two-person $21,640 / 12 = $1,803.33):
    1. Case 21: $1,000 + $1,500 - $20 = $2,480, above 1.35 x $1,803.33 = $2,434.50, so NONE. Not an eligible couple, since $2,480 is above the $1,491 couple rate. B gets A's $1,000 deemed for the same $2,480. ✓
    2. Case 22 (IL): $2,500 - $25 = $2,475 for each spouse. ✓
    3. Case 23 (facility): $1,000 - $20 = $980 and $1,500 - $20 = $1,480. ✓
    4. Case 24: allocations are 2 x $497 = $994. A: $1,500 - $994 = $506 > $497, so $1,000 + $506 - $20 = $1,486, at or below $1,803.33, so QMB. B: $1,000 - $994 = $6, so $1,500 - $20 = $1,480 on one person. ✓
    5. Case 25: $1,700 - $20 = $1,680, between $1,596 and $1,795.50, so QI on one person. B: $450 + $1,700 - $20 = $2,130. ✓
    6. Case 26: $1,400 - $20 = $1,380 < $1,491, and ($1,491 - $1,380) / 2 = $55.50 each, so $1,380 on two people, QMB. ✓ (but see Should 3)
    7. Case 29 (IL): $1,825 - $25 = $1,800, at or below $1,803.33, so QMB. B alone: $1,825 - $25 = $1,800 on one person. ✓
    8. Case 30: $1,700 - $20 = $1,680, so QI. Teen: ($10,000 / 12 - $20 - $65) / 2 = $374.17. ✓
    9. Case 31: $497 is not above $497, so $1,660, QI. B: $497 + $1,680 - $20 = $2,157. ✓
    10. Case 33 (IL): $100 + $1,300 - $20 = $1,380 < $1,491, so an eligible couple. With one applicant, $1,400 - $25 = $1,375, QMB. ✓
    11. Case 15 (IL, changed): B gets $600 unearned deemed: ($600 - $25) + ($2,500 - $65) / 2 = $575 + $1,217.50 = $1,792.50. ✓
    12. Case 20 (2025, changed): B gets A's $1,000 deemed, above $483: ($1,000 - $20) + ($1,666.67 - $65) / 2 = $1,780.83. ✓
    13. msp_fpg Case 2 (2024): $20,440 / 12 = $1,703.33. Case 4 July: $980 against $1,330, so QMB. ✓
  • Code health.
    • Vectorization and entity/period use are sound: month variables read the year values with period.this_year and the month values with period.
    • No new state-gated integer or enum key, so the NH Add New Hampshire state supplementation for 2026 #10156 pattern doesn't apply.
    • The four Python files gain no comment that the source-conflict ratchet pattern matches.
    • The two candidate entries have every required field and are unique and unregistered in the tree merged with main.
    • The changelog fragment is a top-level .fixed.md.
    • The PR adds no Python tests.

Axiom line assessment

axiom: TheAxiomFoundation/rulespec-us#2010 queued is valid for this head. The issue is open and labelled pe-parity, and it names head 8aa0182c18. It is dispatch-ready: module paths, corpus citations with ingest status, verbatim law, required outputs, 18 hand-derived companion cases and the two rulings. The blocker it gives is real: 416.412 and 416.1160 are missing from the bundles, and billed runs are unapproved. After the Critical fix, update companion case 14 (QI, not SLMB) and interpretation 6, add 416.1163(e)(2) to the verbatim law, and repin to the new head. Should 3, if ruled the other way, would change companion case 11.

CI status

All 34 checks pass at head 8aa0182c18 (gh pr checks 10633, re-checked at the end of this review). None is pending or failing.

Branch status

The branch is 87 commits behind main and 4 ahead, two of them merges. git merge-tree --write-tree PolicyEngine/main 8aa0182c18 is clean. Since the merge base, main has changed none of the PR's MSP variable or test files. It did change source_conflicts/candidates.yaml and test_source_conflicts.py, but the merge is clean and the PR's entries still validate. Sibling #10632 also merges cleanly with this head, and the combined tree passes, as reported above. Merge this PR first.

Verdict: REQUEST_CHANGES

@DTrim99 DTrim99 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.

Requesting changes: 1 critical (deeming a spouse's income can raise a person's MSP tier, which 20 CFR 416.1163(e)(2), POMS SI 01320.400 and the Texas MEPD pretest forbid; e.g. own income $2,080 alone gives no tier but a spouse earning $500 gives QI; take the less generous of the own-income one-person tier and the deemed two-person tier), 3 should (two eligible-couple guards and the child allocation are unpinned; an unrecorded source conflict on combining income when only one spouse is on Medicare). The #10632 prerequisite holds. Full report in the comment above.

hua7450 and others added 3 commits November 11, 2026 19:35
…es on Medicare

Deeming a spouse's income could raise a person's Medicare Savings Program
tier. 20 CFR 416.1163(e)(2) says the result under the deeming rules cannot be
better than the person's own income gives, so the deeming row now applies only
when it is the stricter test, measured as income against its guideline.

Following the project lead's ruling of 2026-11-10, spouses are tested as a
couple only when both are on Medicare (HCFA memorandum of October 2, 1997;
Texas MEPD Appendix IX), and nothing is deemed from a spouse who is eligible
for SSI, who is not an ineligible spouse (20 CFR 416.1160(d)).

Tests: Case 32 now expects QI; Cases 26 and 33 are tested alone; new cases
pin the cap, the $497 boundary and the allocation taken from a spouse's wages.
The ruling is recorded in source_conflicts/candidates.yaml.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…into msp-abd-spouse-income

# Conflicts:
#	source_conflicts/candidates.yaml
Since main's PR 10141, SSI combines a couple's income by the December
facility status. Case 4 of msp_fpg.yaml had the spouse in a facility from
July through December, so June showed both spouses with uncapped_ssi above
zero, and the Medicare Savings Program rule for a spouse who is eligible
for SSI tested each of them alone. The stay now ends before December.
Every expected value is unchanged.

Note the limit in _msp_spouse_income.py: when a stay lasts through
December, the months before it still read the spouses as eligible for SSI.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@hua7450

hua7450 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

Ruling by the project lead, 2026-11-10. A Medicare Savings Program applicant is tested as a couple only when both spouses are on Medicare, following the HCFA memorandum of October 2, 1997 and the Texas MEPD Handbook. A spouse who is eligible for SSI is not an ineligible spouse, so nothing is deemed from that spouse.

@hua7450

hua7450 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

Ready for another look. Your change requests of 5 November are covered under "Changes since review, 2026-11-11" at the top of the description:

  • A spouse's income can no longer raise the tier (20 CFR 416.1163(e)(2)).
  • Spouses are tested as a couple only when both are on Medicare, as ruled in the comment above.
  • Allocations taken from a spouse's wages are pinned.
  • The branch is merged with main at 23a7c9a8f4, and all 36 checks pass. msp_fpg.yaml Case 4 now ends its facility stay before December; Combine an SSI couple's income by each month's facility status #10820 fixes the cause.

A law check on 11 November added one limit, on Texas's own deeming amounts, with no code change. This PR should merge before #10632.

@hua7450
hua7450 requested a review from DTrim99 November 12, 2026 16:15
@DTrim99

DTrim99 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator

PR Review (round 2): Apply SSI's spouse rules to Medicare Savings Programs when only one spouse is on Medicare

Summary

Head 64c82efc1f fixes the round-1 critical and all three should-address findings. A spouse's deemed income can no longer raise the tier: msp_tests_as_couple now deems only when the deemed income against the two-person guideline is the stricter test, which is what 20 CFR 416.1163(e)(2) requires, and Cases 32 and 34 fail without it. The code follows the project lead's ruling of 2026-11-10 exactly: spouses combine only when both are on Medicare, and nothing is deemed from a spouse who is eligible for SSI (Cases 26 and 33). The ruling is recorded as us:msp-couple-standard-one-spouse-on-medicare, state: ruled. Case 37 pins allocations taken from a spouse's wages. The merge with main is clean, its one hand-resolved block is right, and all 36 checks pass.

Two new should-address items remain, both small and neither needing a formula change. The new "spouse eligible for SSI" guard zeroes the spouse's earned and unearned income, and only the unearned half is pinned. And the PR's new Case 35 asserts QMB for a Texas household that the Texas handbook's own deeming test would make SLMB, as the PR body now says, but that disagreement between 20 CFR 416.1163 and Texas MEPD Appendix XXIX is recorded only in the PR body, not as a candidate.

The change to msp_fpg.yaml Case 4 is a legitimate workaround, not a hidden wrong result. Details are under Verified.

Prior findings

Finding Status Evidence
Critical 1: deeming a spouse's income can raise the tier (416.1163(e)(2)) Fixed msp_tests_as_couple adds deemed_test_is_stricter (deemed_countable * individual_fpg > own_countable * couple_fpg) to the deeming row. msp_countable_income and msp_fpg both read msp_tests_as_couple, so every tier variable and msp_income_eligible get the cap. The tiers are contiguous bands of income over guideline (QMB at or below 100%, SLMB above 100% and below 120%, QI from 120% to below 135%), so taking the higher ratio gives the less generous of the two tiers. Without the term, Case 32 returns $2,158, two-person, SLMB (expects $1,660, one-person, QI) and Case 34 returns $2,297.50, two-person, QI (expects $2,080, one-person, no tier). Mutation reasoning is by hand trace.
Should 1: two guards in the eligible-couple test unpinned Fixed (branch removed) The eligible-couple branch of msp_spouses_combine_income, with both guards, is gone under the ruling; the function is now "both on Medicare". Case 26 fails if the branch comes back ($1,380, two-person, QMB). The guard that replaces it is half pinned: see new Should 1.
Should 2: child allocations from the spouse's earned income unpinned Fixed Case 37. With earned_left replaced by the spouse's whole wages, person1 is 580 + (2,000 - 65) / 2 = $1,547.50, not $1,200.50. Taking the whole $994 from wages, ignoring unearned-first, gives 580 + (1,006 - 65) / 2 = $1,050.50. Both fail the case.
Should 3: the eligible-couple reading not recorded or ruled Fixed Ruled by the project lead, 2026-11-10 (PR comment of 2026-11-12). Candidate us:msp-couple-standard-one-spouse-on-medicare has id, program, question, years, five sources (42 U.S.C. 1396d(p), 20 CFR 416.1801(c), the HCFA memorandum of October 2, 1997, Texas MEPD Appendix IX and E-7200), both readings, an example that matches Case 26, pe_us (follows: gap-fill, two tracked code paths, the PR), state: ruled, and a note with the ruling date and the two cases. The code and Cases 26 and 33 follow the ruling.
Suggestion 1: facility gaps (both on Medicare; $30-rate resident with a non-ABD spouse) Open Unchanged. Both are stated in the PR body and the variable documentation. No follow-up issue is linked.
Suggestion 2: Texas program-specific allowances Limit added; now new Should 2 The body's new limit is accurate (checked against Appendix XXIX, Rev. 26-2). It also shows that the PR's own Case 35 gets a different tier under the handbook, so a body note is no longer enough.
Suggestion 3: cite the family-size authority in msp_fpg Partly done The 1997 memorandum is now a reference and is described in msp_countable_income and msp_tests_as_couple. msp_fpg is unchanged, and nothing mentions 42 CFR 435.601(e).
Suggestion 4: performance Open More repeated work than before: msp_countable_amounts runs in both msp_tests_as_couple and msp_countable_income, msp_spouse_income runs twice inside msp_tests_as_couple, and uncapped_ssi is now read for every person each month. The body still says time was not measured. The microsimulation job passed in 54m39s.
Suggestion 5: comment on omitted marital units at the _ssi_spouse_index call Open No comment added. The limits stay in the PR body; see new Suggestion 2 for one that is stale.

New findings

Critical (must fix)

None.

Should address

1. The earned-income half of the "spouse eligible for SSI" guard is unpinned (_msp_spouse_income.py, msp_spouse_income: spouse_earned = where(spouse_eligible_for_ssi, 0, ...))

The ruling's second sentence, that nothing is deemed from a spouse who is eligible for SSI, is one guard applied to two amounts. Case 33 pins the unearned one: without it person1 is 100 + 1,300 - 25 = $1,375 on the two-person guideline. Nothing pins the earned one. No case in the Medicare Savings Program test folder gives wages to a spouse who is eligible for SSI and not on Medicare (the only disabled spouses are in msp_countable_income.yaml and msp_fpg.yaml, and each has unearned income or none), so replacing that where with the spouse's wages fails none of them. This is the same gap as round-1 Should 2.

Add a case. Texas, 2026-01: A is 68, tax-unit head, ssi_unearned_income: 3_600; B is 62, spouse, meets_ssi_disability_criteria: true, ssi_earned_income: 14_400. SSI countable income is (300 - 20) + (1,200 - 65) / 2 = $847.50, below $1,491, so each is eligible: (1,491 - 847.50) / 2 = $321.75. I ran this at the head: uncapped_ssi [321.75, 321.75], msp_tests_as_couple [false, false], msp_countable_income [280, 557.50], msp_fpg [1,330, 1,330], msp_category [QMB, NONE]. Without the guard on wages, B's $1,200 is above $497 and A would be 280 + 567.50 = $847.50 on the two-person guideline, with msp_tests_as_couple true (hand trace).

2. Texas's own deeming amounts disagree with 20 CFR 416.1163 for a household the PR now tests, and the conflict is recorded only in the PR body (msp_countable_income.yaml Case 35; source_conflicts/candidates.yaml)

Texas MEPD Handbook Appendix XXIX (Rev. 26-2) uses a "program-specific living allowance" of $474 for QMB, $568 for SLMB and $639 for QI-1, where SSI uses $497, both as the threshold in steps 4a and 4b and as each ineligible child's allowance in step 3. Those three amounts are the gaps between Texas's couple and individual limits for each program ($1,804 - $1,330, $2,164 - $1,596, $2,435 - $1,796). 20 CFR 416.1163(b)(1) and (d) use "the difference between the Federal benefit rate for an eligible couple and the Federal benefit rate for an eligible individual", and the model applies that $497 in every state.

In round 1 this was a suggestion because every Texas case kept its tier under either figure. That is no longer true, and the PR body says so. Case 35 (TX, 2026-01): A has $1,340 and the spouse $497. The model does not deem ($497 is not above $497): $1,320, one-person, QMB. Under Appendix XXIX, A passes the QMB pretest on $1,320, the spouse's $497 is above $474 so it is deemed, 1,340 + 497 - 20 = $1,817 is above the $1,804 couple limit, and A is re-budgeted: $497 is not above $568, so nothing is deemed for SLMB and "the minimum income requirement for SLMB or QI-1 does not apply". Texas gives SLMB. By my reading, with no ineligible children this band (spouse's unearned income above $474 and up to $497, combined income above the QMB couple limit) is the only one where the tiers differ; with children the allocations differ in both directions (Case 24: $1,532 against the model's $1,486; Case 37: $1,223.50 against $1,200.50; same tiers).

The model's choice is defensible: the regulation is explicit, and for QMB the Texas amount is more restrictive than SSI methodology. But it is a choice between a regulation and the administering state's manual that changes a tier, and CONTRIBUTING.md#source-conflicts puts every such choice in source_conflicts/candidates.yaml, not only in a PR description. The test plan's line "three rulings ... All three candidates are in source_conflicts/candidates.yaml" leaves this fourth one out.

Fix: add a candidate (for example us-tx:msp-spouse-deeming-allowance) with 42 U.S.C. 1396d(p)(1)(B), 20 CFR 416.1163(b)(1) and (d), and Appendix XXIX as sources, Case 35's household as the example, pe_us.follows: statute, and state: open or, once the project lead decides, ruled. Name it in Case 35's comment. No code change is needed unless the ruling goes to the handbook, which would mean a state parameter like state_general_exclusion.

Suggestions

  1. Case 4 and Combine an SSI couple's income by each month's facility status #10820. The last limit in the PR body is accurate but gives no numbers. Add them: with a stay that lasts through December, the months before it give the Medicare spouse $980, the one-person guideline and QMB, where the law gives $2,480 and no tier (main gives $980 and QMB too). When Combine an SSI couple's income by each month's facility status #10820 is on main, restore Case 4's stay through December and delete the NOTE in _msp_spouse_income.py, in this PR if Combine an SSI couple's income by each month's facility status #10820 merges first and in a follow-up otherwise. Case 18 and interpretation 12 of rulespec-us#2010 change with it.
  2. One omitted-marital-units limit is stale. The body, and interpretation 9 of rulespec-us#2010, say a 70-year-old with $1,700 and a 16-year-old with $10,000 of wages in their own tax unit gets "$2,064.17, two-person guideline, SLMB", measured at the earlier head. I ran it at this head: the 70-year-old gets $1,680, the one-person guideline and QI, the right answer, because their own income is now the stricter test. The teen still pairs with the parent ($2,064.17, two-person, not on Medicare). The axes bullet repeats the same figure. The adult-child example still holds: $2,897.50 and two-person at this head. Update or drop the first two bullets.
  3. Candidate housekeeping. The new candidate's note rests the "nothing is deemed" half on 20 CFR 416.1160(d), which is not among its sources (it is in the sibling entry). The example in us:msp-eligible-spouse-ssi-definition still says the statute's reading gives "Combined income is $2,480 and no tier", while the PR body now says that reading leaves A alone at $980 and QMB since the second ruling.
  4. Carried over from round 1: open a follow-up issue for the two facility gaps; cite the 1997 memorandum in msp_fpg and note the 42 CFR 435.601(e) moratorium; measure microsimulation time or cache the repeated spouse work; add the one-line comment at the _ssi_spouse_index call.

Verified

  • The law, read again. 20 CFR 416.1163(d)(1): if the spouse's income after allocations "is not more than the difference" between the couple and individual rates, "there is no income to deem", and "we subtract only your own countable income from the Federal benefit rate for an individual". (d)(2): if it is more, "we treat you and your ineligible spouse as an eligible couple", combining incomes, applying the exclusions and "subtracting the couple's countable income from the Federal benefit rate for an eligible couple". (e)(2): "Your SSI benefit under the deeming rules cannot be higher than it would be if deeming did not apply. Therefore, your benefit is the lesser of the amount computed under the rules in paragraph (d)(2) of this section or the amount remaining after we subtract only your own countable income from an individual's Federal benefit rate." So a deemed person qualifies for a tier only if both tests allow it. The head's rule (deem only when deemed income over the two-person guideline exceeds own income over the one-person guideline; otherwise own income and the one-person guideline) gives exactly that, and matches Texas's pretest-then-deeming order.

  • The ruling. msp_spouses_combine_income is is_medicare_eligible for both spouses and nothing else. msp_spouse_income zeroes the income of a spouse whose uncapped_ssi is above zero, so that spouse contributes nothing to the $497 test or to the deemed amount. The deeming row for an ineligible spouse keeps the two-person guideline; that is 416.1163(d)(2), and Appendix XXIX step 8 ("Compare to the income limit for an eligible couple") does the same, so I don't read it as a departure from "tested as a couple only when both spouses are on Medicare". I found no place where the code departs from the ruling.

  • Hand checks of every new or changed expectation (TX and 2026-01 unless noted; one-person $1,330, 120% $1,596, 135% $1,795.50; two-person $1,803.33, 120% $2,164, 135% $2,434.50):

    1. Case 26: SSI 1,400 - 20 = 1,380 < 1,491, so (1,491 - 1,380) / 2 = $55.50 each. Not both on Medicare, and neither is an ineligible spouse: person1 $1,380 against $1,330 is SLMB; person2 $0. msp_tests_as_couple [false, false], guideline [1,330, 1,330]. ✓ Removing the SSI-eligible guard would deem person1's $1,400 to person2 and fail the case.
    2. Case 32: own 1,660 / 1,330 = 1.248; deemed 2,158 / 1,803.33 = 1.197. Own is stricter: $1,660, one-person, QI. person2: own 478 / 1,330 = 0.359 against 2,158 / 1,803.33, so deemed: $2,158, two-person. ✓ Fails under the round-1 formula.
    3. Case 33 (IL): SSI 100 + 1,300 - 20 = 1,380, $55.50 each. person1: 100 - 25 = $75, QMB. person2: 1,300 - 25 = $1,275. Both one-person. ✓
    4. Case 34: own 2,100 - 20 = 2,080 (ratio 1.564, above 135%); deemed 2,080 + (500 - 65) / 2 = 2,297.50 (ratio 1.274, QI). Own is stricter: $2,080, one-person, no tier. person2: own (500 - 20 - 65) / 2 = 207.50, deemed 2,297.50, two-person. ✓ Fails under the round-1 formula.
    5. Case 35: 5,964 / 12 = $497, not above $497: $1,320, one-person, QMB. person2: 497 + 1,340 - 20 = $1,817, two-person. ✓ This case passes under the round-1 formula too. What it pins is > at the rate difference where deeming would bind: with >=, person1 becomes $1,817 and SLMB. Case 31 no longer pins that, because its person1 is tested alone either way.
    6. Case 36: $498 is above $497. Deemed 1,818 / 1,803.33 = 1.008; own 1,320 / 1,330 = 0.992. Deemed is stricter: $1,818, two-person, SLMB. ✓ This also passes under the round-1 formula. It pins the direction of the new comparison: reversing it, or never deeming, fails it.
    7. Case 37: allocations 2 x 497 = 994 take the spouse's $300 and then $694 of wages, leaving $1,306, above $497. person1: (600 - 20) + (1,306 - 65) / 2 = $1,200.50; ratio 0.666 against own 580 / 1,330 = 0.436, so deemed, two-person, QMB. person2: person1's $600 is below $994, so alone: (300 - 20) + (2,000 - 65) / 2 = $1,247.50. ✓
    8. msp_fpg.yaml Case 4 (inputs changed, expectations unchanged): June 1,000 + 1,500 - 20 = $2,480, ratio 1.375 against 0.737, two-person, no tier; July split by the facility: [980, 1,480], one-person, QMB for person1. ✓ I ran the head's inputs: June, July and November match, and December returns to [2,480, 2,480].

    So of Cases 32 and 34 to 36, two (32 and 34) fail without the fix, and two (35 and 36) pin its boundary and its direction.

  • Case 4 with its original inputs, at this head (I ran it). June: ssi_couple_computation_applies [true, true], uncapped_ssi [255.50, 5.50], msp_tests_as_couple [false, false], msp_countable_income [980, 1,480], msp_fpg [1,330, 1,330], msp_category [QMB, NONE]. The case expects [2,480, 2,480], [1,803.33, 1,803.33] and [NONE, NONE]. July matches. Why: since Apply 416.1163(e)(2) to deemed SSI and identify SSI couples by marriage, not tax roles #10141 on main, the year-defined ssi_marital_unearned_income reads the month-defined boolean ssi_couple_computation_applies for the year, which takes December's value. A stay through December makes that false, so SSI pools nothing all year, yet in June the monthly couple computation still halves each spouse's own income against half the couple rate: 745.50 - 980 / 2 = 255.50 and 745.50 - 1,480 / 2 = 5.50. Both are above zero, so the new guard reads each as eligible for SSI and deems nothing. By law the pooled $2,480 is above $1,491, neither is eligible, and June is $2,480 and no tier.

    • It is not a regression: main gives that Medicare spouse $980 and QMB in June too, because main counts nothing from an aged, blind or disabled spouse who is not on Medicare. Only such couples are exposed. A spouse who is not aged, blind or disabled has uncapped_ssi of zero, and spouses both on Medicare combine before the guard is reached.
    • The reverse case (a stay that ends before December) over-pools SSI in the facility months, but the facility split keeps Medicare Savings Program results right there, as the run shows for July and November.
    • Case 4 still tests what it was written for, and its expected values did not move. The cause is on main (SSI pools a married couple's income by December's facility status, so a part-year facility stay gives wrong SSI in the other months #10818), the fix is open (Combine an SSI couple's income by each month's facility status #10820, which merges cleanly with this head), and the limit is stated in the PR body, the case's comment, a NOTE in the helper and interpretation 12 of rulespec-us#2010. The body's last limit describes it accurately.
  • The Texas limit added on 11 November. Checked against Appendix XXIX, Rev. 26-2: the allowances ($474, $568, $639), their use as both threshold and child allowance, the pretest, the couple limit in step 8, and the re-budgeting notes are as the body states, and its Case 35 walk-through is right. See new Should 2 for how it is recorded.

  • Period handling in the fix commits.

    • msp_spouse_income now takes the month: it reads uncapped_ssi (MONTH) for the month and ssi_earned_income, ssi_unearned_income and ssi_ineligible_child_allocation (YEAR) for the year.
    • msp_tests_as_couple compares annual incomes with the monthly rate difference times 12, reads ssi_claim_is_joint (YEAR) for the year and ssi_couple_computation_applies (MONTH) for the month.
    • The new comparison uses annual countable amounts and the same annual guideline parameters, read at the same month, as msp_fpg.
    • msp_countable_amounts is the old formula body moved unchanged, apart from passing the month to msp_spouse_income.
    • The one period problem I found is the upstream one above: a monthly uncapped_ssi built on SSI income that is pooled by December's status.
  • Merge resolution. The one hand-resolved block is in source_conflicts/candidates.yaml. It takes main's wording for the end of the Hawaii mortgage-interest note and keeps the PR's entries. Against the main parent, the merged file differs by 136 added lines and nothing else: the three Medicare Savings Program candidates, byte-identical to the pre-merge commit. The whole merge differs from its main parent in exactly the PR's nine files.

  • Guards. No comment in the four Python files matches the source-conflict ratchet's pattern, none of them is in KNOWN_UNMARKED, the three candidate ids are not in the pinned register, and the tree merged with current main has 432 unique candidate ids. The PR adds no income-source list entries, no Python tests, no partner-test changes and no program-registry change. The changelog fragment is updated and is still a top-level .fixed.md. The new references (POMS SI 01320.400 and the 1997 memorandum at #page=2) support the text that cites them.

  • Case count. 37 + 4 + 9 = 50 cases in the PR's three test files, as the body says.

Axiom

axiom: TheAxiomFoundation/rulespec-us#2010 queued is valid. The issue is open, labelled pe-parity, and was updated on 2026-11-12 for head 64c82efc1f. It now carries 416.1163(e)(2) in the verbatim law, the 2026-11-10 ruling as interpretation 11, the facility limit as interpretation 12, and 22 companion cases. I hand-checked the new or changed ones (2, 11, 14, 17 and 19 to 22) and they match the head: companion case 14 is now QI, and case 11 is now $1,380, one-person, SLMB. The blockers it gives are unchanged and real. Interpretation 9 repeats the stale $2,064.17 example (Suggestion 2), and a candidate for new Should 2 would add one interpretation.

CI

All 36 checks pass at head 64c82efc1f (gh pr checks 10633, re-checked at the end of this review). None is pending or failing.

Branch

The branch contains main at 23a7c9a8f4 and is 4 commits behind current main (ac1962ca4f). git merge-tree --write-tree PolicyEngine/main 64c82efc1f is clean. Those four commits touch none of the PR's variables, tests or guard tests; they add one candidate to source_conflicts/candidates.yaml and change one line of programs.yaml, and both merge cleanly.

Sibling #10632 (head 8fdbb08274) merges cleanly with this head. The author notes the combined check had not been rerun on the current heads, so I ran the combined tree: all 72 cases pass in msp_countable_income.yaml (37), msp_fpg.yaml (4), msp_category.yaml (15), msp_part_b_premium_coverage.yaml (7) and integration.yaml (9). Case 28 gives $2,480 and no tier with the undocumented spouse off Medicare, so merging this PR first is still the right order. #10820 (head 0ca225faa6) also merges cleanly with this head.

Verdict: REQUEST_CHANGES

@DTrim99 DTrim99 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.

Requesting two small changes; neither needs a formula change.

  1. The earned-income half of the "spouse eligible for SSI" guard is unpinned. Case 33 pins the unearned half; no case gives wages to a spouse who is eligible for SSI and not on Medicare, so dropping the guard on wages fails nothing. A worked case is in the report above (Should Address 1).
  2. The Texas deeming amounts are recorded only in the description. Appendix XXIX uses $474 for QMB where 20 CFR 416.1163 uses $497, and the new Case 35 asserts QMB for a household the handbook would make SLMB. That is a regulation-versus-manual choice that changes a tier, so it needs a candidate in source_conflicts/candidates.yaml (Should Address 2).

The round-1 critical and all three should-address findings are fixed: deeming applies only when it is the stricter test (Cases 32 and 34 fail without it), the code follows the 2026-11-10 ruling exactly, and Case 37 pins allocations from wages. The change to msp_fpg.yaml Case 4 is a legitimate workaround for the main-side problem #10820 fixes, not a hidden wrong result. CI is green at 64c82efc1f.

…owances

Add Case 38 to msp_countable_income.yaml: wages of a spouse who is
eligible for SSI and not on Medicare are not deemed. Add the open
candidate us-tx:msp-spouse-deeming-allowance for Texas MEPD Appendix
XXIX's program-specific living allowances against 20 CFR 416.1163's
rate difference, and name it in Case 35. Add 20 CFR 416.1160(d) to the
couple-standard candidate's sources and update the eligible-spouse
candidate's example for the 2026-11-10 ruling.

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

hua7450 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

Ready for another look at 51ea1b4616:

  • Should Address 1. Case 38 pins the wage half of the eligible-spouse guard.
  • Should Address 2. Texas's program-specific allowances are the open candidate us-tx:msp-spouse-deeming-allowance, named in Case 35 and now listed under Source conflicts. The model keeps SSI's $497 pending a ruling.
  • Suggestions 1 to 3. The Case 4 limit gives numbers and names Combine an SSI couple's income by each month's facility status #10820, the omitted-marital-units figures are updated, and the candidate housekeeping is done.

msp_countable_income.yaml, msp_fpg.yaml and the source-conflict guard pass locally.

@hua7450
hua7450 requested a review from DTrim99 November 12, 2026 19:33
@DTrim99

DTrim99 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator

PR Review (round 3): Apply SSI's spouse rules to Medicare Savings Programs when only one spouse is on Medicare

Summary

Head 51ea1b4616 fixes both round-2 should-address findings and takes suggestions 1 to 3. It is one commit on top of the round-2 head 64c82efc1f, with no merge, and it touches two files: msp_countable_income.yaml (Case 38 added, three comment lines added to Case 35) and source_conflicts/candidates.yaml. No variable, parameter or other file changed, so every formula is the one reviewed in round 2.

Case 38 pins the wage half of the "spouse eligible for SSI" guard: its expected values are right by hand, and three of its five outputs fail if the guard on the spouse's earned income is removed. Texas's program-specific deeming allowances are now the open candidate us-tx:msp-spouse-deeming-allowance, which is complete and accurate against the regulation and the handbook, is named in Case 35's comment and is listed in the PR body. All 37 checks pass at the head, and the branch merges cleanly with current main.

Nothing was run locally in this round. Each claim below says whether it rests on a hand trace, on reading the code or a source, or on CI.

Prior findings

Finding Status Evidence
Should 1: the earned-income half of the "spouse eligible for SSI" guard is unpinned Fixed Case 38 uses the household proposed in round 2. Its expected values are right (hand trace, below). With spouse_earned = where(spouse_eligible_for_ssi, 0, ...) replaced by the spouse's wages, person1 becomes msp_tests_as_couple true, $847.50 and the two-person $1,803.33, so the case fails on three outputs (hand trace). CI passes the file at the head.
Should 2: Texas's deeming amounts recorded only in the PR body Fixed Candidate us-tx:msp-spouse-deeming-allowance, state: open, has every field CONTRIBUTING.md#source-conflicts asks for (field-by-field check below; reading, with the sources fetched again). Case 35's comment names it. The PR body lists it as the fourth source conflict and the test plan now says "three rulings and one open candidate". The model keeps SSI's $497, which is the regulation's figure, pending a ruling. No formula changed, as round 2 expected.
Suggestion 1: give numbers for the msp_fpg.yaml Case 4 limit and name #10820 Taken The body's last limit now gives $980, one-person and QMB for the months before a stay through December, against the law's $2,480, two-person and no tier, says main gives $980 and QMB too, names #10818 as the cause and #10820 as the fix, and says when Case 4's stay and the NOTE are restored (reading). The figures match the round-2 run at 64c82efc1f; no formula has changed since.
Suggestion 2: stale omitted-marital-units figures Taken The body and interpretation 9 of rulespec-us#2010 now give the 70-year-old $1,680, one-person and QI, and the teen $2,064.17 on the two-person guideline against $374.17 with declared units. By hand: (10,000 / 12 - 20 - 65) / 2 = $374.17, which is Case 30's value, and 1,680 + (833.33 - 65) / 2 = $2,064.17. The paired figures are the round-2 run's, and the body says so.
Suggestion 3: candidate housekeeping Taken us:msp-couple-standard-one-spouse-on-medicare now lists 20 CFR 416.1160(d) among its sources. The example in us:msp-eligible-spouse-ssi-definition now gives the statute's reading both as it stood when ruled ($2,480, no tier) and since the 2026-11-10 ruling (A alone, $980, QMB), matching the PR body (reading).
Suggestion 4 (carried from round 1): follow-up issue for the two facility gaps; cite the 1997 memorandum and the 42 CFR 435.601(e) moratorium in msp_fpg; measure microsimulation time; a one-line comment at the _ssi_spouse_index call Open Not claimed by the author and unchanged. All four stay optional. The body still says microsimulation time was not measured; the microsimulation job passed in 51m11s at this head (CI).

New findings

Critical (must fix)

None.

Should address

None.

Suggestions

  1. The new candidate's start year. us-tx:msp-spouse-deeming-allowance has years.from: 2026, the year of the revision it cites. The archived Revision 25-2 of Appendix XXIX (effective June 1, 2025) has the same line with 2025 amounts: "Community MEPD $483, CAS $483, QMB $458, SLMB $550, QI-1 $619", against SSI's $1,450 - $967 = $483 for that year. The model's deeming is not year-gated, so the same disagreement applies to 2025 at least. Set from to the earliest year confirmed, or say in the note that 2026 is the year checked.
  2. Give the ruling the less-restrictive-methodology rule. 42 U.S.C. 1396a(r)(2)(A) says the methodology for people "under section 1396d(p) of this title may be less restrictive, and shall be no more restrictive, than the methodology" of SSI. The candidate's note already says the $474 deems more income than SSI's $497 for QMB and that the SLMB and QI-1 amounts deem less. Adding this source would tell the project lead which half a state may choose and which it may not. msp_countable_income already cites the same paragraph for the Illinois and Mississippi exclusions.
  3. Carried over from round 1 (Suggestion 4 in the table above).

Verified

  • What the fix commit touches (reading, git diff --stat 64c82efc1f 51ea1b4616). Two files, 101 insertions and 2 deletions: msp_countable_income.yaml (+43) and source_conflicts/candidates.yaml (+58, -2). There is no non-test, non-candidate file in the commit. _msp_spouse_income.py, msp_tests_as_couple.py, msp_countable_income.py, msp_fpg.py, the changelog fragment and the other two test files are byte-identical to round 2. The body's sentence "Commit 51ea1b4616 changes no variable or parameter" is true.

  • Case 38 by hand (Texas, 2026-01; SSI rates $994 and $1,491; one-person guideline $15,960 / 12 = $1,330; two-person $21,640 / 12 = $1,803.33). A is 68 with $3,600 a year of unearned income, $300 a month. B is 62, meets the disability criteria, and has $14,400 a year of wages, $1,200 a month.

    1. uncapped_ssi. Both are aged, blind or disabled, so the claim is joint and the couple computation applies. Countable income is (300 - 20) + (1,200 - 65) / 2 = 280 + 567.50 = $847.50, half each is $423.75, and each spouse's amount is 1,491 / 2 - 423.75 = 745.50 - 423.75 = $321.75. ✓
    2. msp_tests_as_couple. A is on Medicare by age. B is 62 with no disability benefit, so is not. They don't combine. uncapped_ssi is above zero for each, so each one's spouse counts as eligible for SSI, both spouse amounts are zeroed, and 0 is not above 497 x 12 = 5,964: [false, false]. ✓
    3. msp_countable_income. A: 300 - 20 = $280. B has no unearned income, so the $20 comes off wages before the $65: (1,200 - 20 - 65) / 2 = $557.50. ✓
    4. msp_fpg. Neither tests as a couple: [1,330, 1,330]. ✓
    5. msp_category. A's $280 is at or below $1,330: QMB. B is not on Medicare: NONE. ✓

    The round-2 review ran these inputs at 64c82efc1f and got the same five results. The case's comment gives the same arithmetic.

  • Mutation on the wage guard (hand trace on msp_spouse_income at the head). Replace spouse_earned = where(spouse_eligible_for_ssi, 0, ...) with the spouse's wages and leave the unearned guard. For A, the spouse's earned income is 14,400, there are no children so no allocation, and 14,400 is above 5,964, so the spouse's income is deemed. The claim is joint and the couple computation applies, so the facility row does not block it. Deemed countable income is 280 + (1,200 - 65) / 2 = $847.50; 847.50 / 1,803.33 = 0.470 is above 280 / 1,330 = 0.211, so the deemed test is the stricter one. A becomes msp_tests_as_couple true, $847.50 and $1,803.33. Case 38 then fails on msp_tests_as_couple, msp_countable_income and msp_fpg. msp_category stays QMB, so the tier output alone would not catch it; the other three do. B is unaffected, because A has no wages. Case 33 still pins the unearned half, and no other case in the folder gives wages to a spouse who is eligible for SSI and not on Medicare, so Case 38 is the only case that pins this guard.

  • The candidate, field by field against CONTRIBUTING.md#source-conflicts and the guard's rules (reading; sources fetched 2026-11-12):

    Field Value Check
    id us-tx:msp-spouse-deeming-allowance Well formed. Unique at the head (432 ids) and on the tree merged with main (438 ids, no duplicate). Not in the pinned register. Sorted with the other us-tx entries.
    program medicare-savings-programs Same as the three sibling candidates.
    years from: 2026, type: calendar Valid. See Suggestion 1.
    question Threshold and child allocation: Texas's $474 / $568 / $639 or SSI's $497 States both uses of the amount.
    sources 42 U.S.C. 1396d(p)(1)(B) (statute); 20 CFR 416.1163(b)(1) and (d) (regulation); Texas MEPD Handbook, Appendix XXIX, Rev. 26-2 (manual) Three sources, valid kinds, https links. The handbook link is the one named in round 2 and returns Revision 26-2, "effective March 1, 2026".
    readings.statute The statute's "as determined under section 1382a of this title for purposes of the supplemental security income program"; (b)(1)'s "the difference between the Federal benefit rate for an eligible couple and the Federal benefit rate for an eligible individual"; (d)'s "is not more than" All three quotes are verbatim. $1,491 - $994 = $497.
    readings.other "Program-Specific Living Allowance Allocation: Community MEPD $497,CAS $497, QMB $474,SLMB $568, QI-1 $639"; step 3's deduction for each ineligible child; step 4a's "is no more than the program- specific living allowance"; "re-budget for SLMB or QI-1 if applicable" Verbatim from the page. The allowance line goes on to "QDWI $947", which the quote stops before. The re-budget sentence is in the step 8 block, as the entry says.
    example 68, on Medicare, $1,340; spouse 50, $497 Case 35's household (16,080 / 12 and 5,964 / 12). Regulation: $497 is not more than $497, $1,320 is within $1,330, QMB. Handbook: $497 is above $474, 1,340 + 497 - 20 = $1,817 is above $1,804, re-budget; $497 is not above $568, so SLMB. ✓
    pe_us.follows statute Right: the model uses the regulation's $497, which the statute incorporates.
    pe_us.code msp_tests_as_couple.py, _msp_spouse_income.py Both exist at the head and on the merged tree. The first holds the threshold; the second reads ssi_ineligible_child_allocation.
    pe_us.prs This PR's URL Matches the guard's pattern.
    state open As the author says: no ruling yet.
    note Gaps $1,804 - $1,330, $2,164 - $1,596, $2,435 - $1,796; the one band where tiers differ; Cases 24 and 37 keep their tiers 474, 568 and 639 ✓. I re-derived the band claim for a spouse with unearned income and no children: at or below $474 neither deems; from $474 to $497 only Texas deems, and only for QMB, so the tier differs when the applicant's own income passes QMB and the deemed income is above the couple limit; from $497 to $568, from $568 to $639 and above $639 the two give the same tier in every own-income band, because each Texas amount is exactly the gap between that program's couple and individual limits. ✓

    The candidate file passes the guard's privacy scan by reading (no decision id, local path or email), and CI ran the guard at the head.

  • Case 35. Only its comment changed (three lines added); inputs and expectations are the round-2 ones. The added lines are accurate and name the candidate.

  • PR body. The new "round 2" section, the fourth Source conflicts bullet and the test plan agree with the head: 18 + 2 = 20 new cases; 38 + 4 = 42 cases in the two income files; three ruled candidates and one open. The count of 103 guard tests is the author's and was not re-run here.

  • Guards (reading). The fix commit touches no file under the folders the source-conflict ratchet scans. The PR's four Python files still have no comment matching the ratchet's pattern and are not in KNOWN_UNMARKED. No Python test, partner test, income-source list or program-registry change.

Axiom

axiom: TheAxiomFoundation/rulespec-us#2010 queued is valid. The issue is open, labelled pe-parity, and was updated on 2026-11-12 for this head. It names head 51ea1b4616, adds companion case 23 (Case 38's household: $280, one-person, QMB, with the same arithmetic), adds interpretation 13 for the open Texas candidate by id with Appendix XXIX quoted in the source text and listed as cite-only, and corrects interpretation 9 to the figures in Suggestion 2. Companion cases 20, 9 and 22 are Cases 35, 24 and 37, as interpretation 13 says. Its blockers are unchanged.

CI

All 37 checks pass at head 51ea1b4616 (gh pr checks 10633, re-checked at the end of this review; all 37 check runs on the commit concluded success). None is pending or failing. That includes the baseline shard that holds the Medicare Savings Program tests, the guard tests and the microsimulation job. No test was run locally in this round.

Branch

The branch contains main at 23a7c9a8f4 and is 18 commits behind current main (8873d31e28). git merge-tree --write-tree PolicyEngine/main 51ea1b4616 is clean. Main's 18 commits touch one of the PR's files, source_conflicts/candidates.yaml: the merged file is main's plus 192 added lines and nothing removed, and has 438 unique ids. They change no SSI, Medicare, poverty-guideline or Medicare Savings Program variable, add no caller of msp_fpg or msp_countable_income, and leave the source-conflict guard and its KNOWN_UNMARKED list as they were. The merged-tree check is by reading; it was not run.

Sibling notes:

Verdict: APPROVE

@DTrim99 DTrim99 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.

Approving. Both round-2 items are fixed: Case 38 pins the wage half of the eligible-spouse guard (right by hand, and three of its five outputs fail without the guard), and Texas's program-specific allowances are recorded as the open candidate us-tx:msp-spouse-deeming-allowance, named in Case 35 and listed in the description. Suggestions 1 to 3 are taken, and no formula changed since round 2.

Two optional suggestions on the new candidate are in the report above: its start year (the 2025 handbook revision has the same line with 2025 amounts) and adding 42 U.S.C. 1396a(r)(2)(A) for the ruling. CI is green at 51ea1b4616. This should merge before #10632.

@hua7450
hua7450 merged commit 96a9cea into PolicyEngine:main Nov 12, 2026
37 checks passed
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.

Medicare Savings Programs: count the income of an aged, blind or disabled spouse who is not on Medicare

2 participants