Skip to content

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

Open
hua7450 wants to merge 4 commits into
PolicyEngine:mainfrom
hua7450:msp-abd-spouse-income
Open

hua7450 wants to merge 4 commits into
PolicyEngine:mainfrom
hua7450:msp-abd-spouse-income

Conversation

@hua7450

@hua7450 hua7450 commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #10628

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
Eligible SSI couple (20 CFR 416.412): ssi_couple_computation_applies, and uncapped_ssi > 0 for both spouses 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'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)) Own plus the spouse's remainder Two people
Any other spouse (416.1163(d)(1)), or no spouse Own One person

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 Two people QMB QMB

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 and 5. At the rate difference, a dollar of spouse income can also raise the tier. With A at $1,680, a spouse at $497 gives $1,660 on one-person limits (QI), and a spouse at $498 gives $2,158 on two-person limits (SLMB), because the income rises by $498 and the 120% limit rises by $568.

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. The statute's reading would give $2,480 and no tier in row 3, and $2,130 and SLMB in row 4. Ruled by the project lead, 2026-11-02.
  • 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.

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 this head with that PR's head passed all 62 values in msp_countable_income.yaml.
  • 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, so a change there can change the eligible-couple and facility rows.

Limits:

  • Four situations that omit marital units give wrong results. Declaring the units gives the right answer in each, and Preserve supplied marital units and infer missing explicit couples #10000, still open, would remove all four:
    • A 70-year-old with $1,700 and a 16-year-old with $10,000 of wages in their own tax unit: $2,064.17, two-person guideline, SLMB. Declared units give $1,680, one-person, QI.
    • Any axes run on that household gives the same $2,064.17 and two-person guideline, because _ssi_spouse_index rules out a parent and claimed child only when the simulation has one marital unit. On main, by code trace, this household and the one above give $1,680 and one-person.
    • An eligible couple with $1,400 and no income, and a 16-year-old with wages: $1,380, one-person, SLMB. Declared units give $1,380, two-person, QMB. SSI's ssi_marital_earned_income sums the whole marital unit, so uncapped_ssi counts the child.
    • 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 and two-person, against $1,680 and one-person with declared units. 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.
  • By code trace, a couple who are tax dependents can't reach the eligible-couple or facility rows, because ssi_claim_is_joint needs a head or spouse. The deeming row has no such check, so a spouse's income above the rate difference counts.
  • An Illinois eligible couple with one spouse on Medicare and only alimony as income gets the $25 ($475 on $500), though Illinois gives it only on income other than contributions. No tier can change, because such a couple's income is below the $1,491 couple rate and so below the $1,803.33 QMB limit.
  • _ssi_spouse_index now runs for each month in msp_countable_income and msp_tests_as_couple. Microsimulation time was not measured.

Test plan

  • For policy changes: 15 new cases, msp_countable_income.yaml Cases 21-33 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, both sides of the $497 rate difference, Illinois's exemption on the deemed and eligible-couple paths, 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; msp_fpg follows it one to one, so those assertions pin it.
  • 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: two rulings, stated above. Both candidates are in source_conflicts/candidates.yaml with state: ruled. 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/

Test suites were not run locally; CI validates. Values were checked by hand and in one process per case.

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 Preserve supplied marital units and infer missing explicit couples #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.

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.

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

2 participants