Repository navigation
Conversation
The Colorado AND-CS, Texas Medicaid-facility and New Mexico adult residential care supplements gated on is_ssi_eligible_individual, which is false for the tax-unit-spouse member of an SSI couple. Each state's rule pays every SSI recipient on their own (9 CCR 2503-5 3.546-3.548; HHSC MEPD H-1500 and H-6000; 8.106.400.10(C) and 8.106.500.10 NMAC), so gate on SSI receipt instead, the repo's convention for SSI-recipient programs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One vectorized simulation of 48 married couples checks that eligibility is SSI receipt, that the result does not depend on which spouse is the tax-unit head, that two citizen spouses are treated alike, and that a spouse failing the SSI citizenship condition is never eligible. main fails the first three; the is_ssi_eligible_individual | is_ssi_eligible_spouse alternative fails the fourth. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review round 1 (GPT-6.1 Sol): - Colorado: 9 CCR 2503-5 3.549(A) counts each AND-CS client's own income, with the $20 disregard split between spouses and no deeming between SSI-recipient spouses (3.549(F)). The model used ssi_countable_income, which halves a joint claim's pooled income. New co_state_supplement_countable_income does the per-client count where SSI's couple computation applies and keeps the federal amount elsewhere. - Texas: H-6000 keeps a facility resident eligible for SSI when countable income "does not exceed" the $30 reduced standard, and 42 USC 1382(a)(1)(A) agrees, so gate on SSI eligibility within the limit (a $0 payment included) plus take-up, or reported receipt. - One reference per document for the CO rule PDF. Also reverts the partner fixture edit: partner API contract tests change only after Ziming Hua approves (CLAUDE.md). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@hua7450, this PR changes the result of one partner API contract test. Per CLAUDE.md I have not edited the partner file. It is unchanged on this branch, so that case fails in CI until you decide. Changed case:
No other output in this file, or in the other CO partner fixtures, changes. Model change. Law.
Both spouses in this case are disabled, aged 50 and 52, with no income. Each receives 1,491 / 2 = 745.50/month of SSI, so each is owed (994 − 745.50) × 12 = 2,982. The fixture's own comment already says the spouse's 0 reflects the model ("the current model pays them no AND-CS supplement"). SSA's January 2011 Colorado table pays couples the same way: combined standard 1,398 (2 × 699), state supplement 387. Proposed edit, once you agree: set
The three questions from CLAUDE.md:
I'll make the edit only after you answer yes to all three. |
…ients 3.549(A)(2)(f) applies "the difference between the gross unearned income and the $20.00 deduction" to earnings only when the client's unearned income is under $20, and (A)(2)(a) counts unearned income "from all sources", SSI included. So an AND-CS client, who always receives SSI, gets no share of the disregard on earnings unless their gross unearned income is under $20. This matches Axiom's encoding of 3.549 (us-co:regulations/9-ccr-2503-5/3.549). co_state_supplement_countable_income becomes MONTH so it can read that month's SSI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n CO Review round 2 (GPT-6.1 Sol): - Texas: testing uncapped_ssi admitted an SSI-abolished resident and a resident on the own-household rate whose income equalled it. Test H-6000's condition directly: countable income not over the $30 reduced standard, with SSI not abolished. - Colorado: a joint couple's in-kind support and maintenance is one presumed maximum value (ssi_pmv_amount), which SSI splits between the spouses; count half of it for each spouse, not all of it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A note for this PR's Texas eligibility gate, from the primary-source work in #10148, which touches no file here. Both merge cleanly together: 38 Texas YAML cases and both invariants files pass on the merged tree.
|
hua7450
left a comment
There was a problem hiding this comment.
Review: policy verified; partner pin approved; one known interaction
The policy checks out in all three states:
- CO: AND-CS grants are calculated "on an individual basis with just one client per case" (9 CCR 2503-5 §3.548(A)).
- TX: a facility resident stays SSI-eligible while countable income doesn't exceed the $30 reduced standard, or $60 for a couple (MEPD H-1500, H-6000).
- NM: two SSI recipients in residential care are "two separate benefit groups" (8.106.400.10(C) NMAC).
Partner case. The CO spouse's $2,982 is correct: ($994 − $1,491 / 2) × 12. Yes to the three partner-test questions. Please update the pin, and I'll approve once that's in.
Known interaction (not blocking). The new TX $30 income test reads ssi_countable_income, which still pools a couple's income unless SSI's own facility inputs are set. If a caller sets only is_in_medicaid_facility, a resident with no income whose spouse at home has a $100 pension counts ($100 − $20) / 2 = $40, so the resident loses the $45. Under 20 CFR 416.414(b)(3) and H-6000, SSA separates the payments and counts each spouse's own income. main already mispays this household, since SSI treats it as an at-home couple. The root cause is that is_in_medicaid_facility and the SSI facility inputs aren't linked. I'll file a separate issue for that fix, so no change is needed here.
Suggestions
co_state_supplement_countable_incomehas nodefined_for = StateCode.CO.- §3.549(A)(2)(f) supports two readings of how a married client's unused $10 disregard share carries to earnings. The difference is at most $5 to $10 a month. A comment noting the reading you chose would help.
- TX Scenario 6's comment cites both H-6000's $60 couple standard and SSA's 2011 "treated as two individuals" note; cite just the rule the model applies.
hua7450
left a comment
There was a problem hiding this comment.
Requesting changes only until the partner value is updated (my earlier review); I'll approve on that head.
Summary
Three state SSI supplements decided eligibility from
is_ssi_eligible_individualalone:co_state_supplement_eligible)tx_ssi_state_supplement_eligible)nm_ssi_state_supplement_eligible)is_ssi_eligible_individualis false for the member of an SSI couple who holds the tax-unit spouse role; that member carriesis_ssi_eligible_spouseinstead. So when both spouses were SSI-eligible, only the tax-unit head could get these supplements. #10141's "Known limitations" section notes this.Each state's rule pays every SSI recipient on their own. This PR:
(ssi > 0) | receives_ssi. That is each rule's own condition and the convention the KS, GA, MI, IN, NE, ID, WA and FL supplements already use;ssi_countable_income <= gov.ssa.ssi.amount.institutional.individual, SSI not abolished), or reported receipt. H-6000 keeps such a resident eligible for SSI when countable income "does not exceed" $30, including a $0 federal payment, and the test does not depend on the SSI living-arrangement inputs;co_state_supplement_countable_income, so each spouse of an SSI couple counts their own income for AND-CS (9 CCR 2503-5 3.549(A)) rather than half the couple's pooled federal countable income.Each program's other conditions are unchanged.
What each state's rule says
None of the three limits the supplement to one spouse, so all three needed the change.
Why not
is_ssi_eligible_individual | is_ssi_eligible_spouseOn current main,
is_ssi_eligible_spouseis the tax-unit spouse of a marital unit whose two members are both aged, blind or disabled. It has no citizenship test. With the label OR, an undocumented aged, blind or disabled tax-unit spouse, who cannot receive SSI, would have become eligible for these supplements. (#10141 adds the citizenship condition throughssi_claim_is_joint.) The invariants test below shows it: with the label OR in place, the citizenship invariant fails. The gates in this PR do not depend on tax roles before or after #10141.The new gates also stop paying people who are aged, blind or disabled but get no SSI: those above the resource limit, those whose income exceeds the limit, and those who do not take up SSI. All three rules require SSI, so this is intended. For Colorado it is the fix proposed in #9338.
Worked cases
is_in_medicaid_facility(SSI on the $943 own-household rate), $963/month pensionEvery row is a YAML case built from real inputs (marital unit, tax-unit roles, disability, income, facility living arrangement), not label inputs. In the Colorado couple rows with only unearned income, the two grants always sum to $497/month, as SSA's couple column implies; only the split between spouses follows 3.549. With earnings the total differs, because 3.549(A)(1) deducts $65 for each client where SSI deducts $65 once for the couple, and an SSI recipient's unused share of the $20 does not reach earnings.
co_state_supplement_countable_incomefollows 3.549(A) as Axiom encodes it (us-co:regulations/9-ccr-2503-5/3.549):ssi_pmv_amount), so each spouse counts half of it.The variable applies only where SSI's couple computation applies. Elsewhere it returns
ssi_countable_incomeas before; the follow-up chip for 3.549 covers single clients and spousal deeming.Tests
co_state_supplement.yamlCases 14-19,co_state_supplement_eligible.yamlCases 8-11, and a newco_state_supplement_countable_income.yaml.integration.yamlScenarios 6 and 9-13, andtx_ssi_state_supplement_eligible.yamlCases 1-9 (rewritten for the new gate, including the $30 boundary, take-up and theabolish_ssireform).integration.yamlCases 3, 8 and 9, andnm_ssi_state_supplement_eligible.yamlCase 8.is_ssi_eligible_individualas an input now set the inputs each gate reads. Integration cases that set the label now compute SSI from age, disability and the facility living arrangement. Existing TX Scenario 6 and NM Case 3 set the label to true for both spouses, which hid the bug; they are now real married couples.grant_standard.yaml: the 9 CCR 2503-5 link for ruleVersionId=12428 pointed at#page=99, which is 3.550; 3.546 is on page 91.my_friend_ben/2025.yaml(30 cases), only the one below fails.Partner test (waiting on @hua7450)
partners/analytics_coverage/edge_cases/state/co/state_supplement.yaml, caseco_state_supplement_disabled_ssi_couple_positive, pins the bug: its spouse expects $0 and its comment says "the current model pays them no AND-CS supplement". On this PR the spouse gets $2,982. Under CLAUDE.md's partner-contract rule the file is not edited here. The three questions are in the comment below, and that one case fails in CI until Ziming answers. The edit will be made, and this PR merged, only after he approves.Invariants
policyengine_us/tests/core/test_ssi_state_supplement_couple_invariants.pyruns one vectorized simulation of 72 married couples (144 people). The grid crosses five axes:The tests check:
On main, 1-3 fail. With the label OR in place of the gates, 1, 2 and 4 fail. On this head all six pass. Measured locally on macOS: 0.7-3.7 s of test time depending on host load, and 17.6 s wall and 1.0 GB peak RSS for the whole process, nearly all of it importing the model. The file runs in the Rest/core Python group. YAML can state each case but not compare a person across role assignments in one run, which is what invariants 2, 3 and 5 need.
ssireads none of the three supplements (they feed SNAP unearned income and household benefit totals only), so the gates add no dependency cycle.Review
Round 1 (GPT-6.1 Sol,
9524da0f): REQUEST_CHANGES on two blocking findings:Plus one note: duplicate references. All three are addressed in
f2d650669e.66ddf925cathen aligns the Colorado earned-income disregard with 3.549(A)(2)(f) and Axiom's encoding.Round 2 (
f2d650669e): REQUEST_CHANGES.abolish_ssi, and residents on the own-household rate.66ddf925ca.3d1da21317addresses the rest.Round 3 is running on
3d1da21317.Impact
No microsimulation yet. It will run at the final head through the US hub's impact queue (
co_state_supplement,tx_ssi_state_supplement,nm_ssi_state_supplement).Axiom
axiom: us-co:regulations/9-ccr-2503-5/3.546#and_cs_client_qualifies_for_program and 3.549#and_cs_total_countable_client_income encoded-correct (Person-level, no spouse-role input, married split of the $20 disregard; companion tests
and_cs_qualified_client_below_floor_receives_state_supplement,ssi_only_client_has_no_unearned_disregard) | TheAxiomFoundation/rulespec-us#1709 queued (TX HR 32.024(w), MEPD H-1500/H-6000) | TheAxiomFoundation/rulespec-us#1708 queued (NM 8.106.500.10, 8.106.400.10(C) NMAC)Fixes #9338.
🤖 Generated with Claude Code