Repository navigation
Conversation
9 CCR 2503-5 3.546(E) sets a $13 AND-CS payment floor from January 1, 2026, and 3.549(B), (H) raise a grant below it with a state supplementary payment. Under 3.520.781(A) a client whose total countable income equals or exceeds the grant standard is not eligible, so the floor tops up only positive grants. co_state_supplement_countable_income now applies 3.549 to every client, not only SSI couples: own income under 3.549(A), plus income deemed from a spouse (3.549(C)-(D)) or from a child's parents (3.549(E)), except from a spouse or parent on SSI, Old Age Pension or Medicaid with income within the SSI limit (3.549(F), dated March 1, 2020). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 12, 2026
test_co_and_cs_invariants.py checks, over Hypothesis-drawn single and married clients in one simulation per example: the payment rule and its bounds, that 3.549(A) never counts less than SSI for a single client (and the same where SSI's and Colorado's disregards coincide), that the 3.549(F) Medicaid exemption only lowers countable income, monotonicity in a non-exempt spouse's earnings, and invariance to tax-unit roles. AND-CS now reads medicaid_enrolled_for_ssi_state_supplement for the 3.549(F) exemption, so Colorado joins the SSP/SNAP/Medicaid calculation order test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Stacked follow-up: #10183 (draft) does this PR's 'Colorado ISM for clients in another person's household' follow-up, based on head 🤖 Generated with Claude Code |
…oat floor - 3.549(F) Medicaid prong: read co_state_supplement_medicaid_enrolled, computed in a private branch with January's AND-CS set to zero. It keeps the SNAP route to Medicaid's community engagement exemption (SNAP counts AND-CS as income) and gives the same answer whatever is calculated first. medicaid_enrolled_for_ssi_state_supplement drops that route and answers from the cache when Medicaid was calculated first. - 3.549(E): deem from the parents the child's parent ids name, whatever their age; without ids, the tax unit's unlinked parents other than the child. A grandparent named only as the mother's parent no longer counts, and a 17-year-old parent now does. - Before March 2020, 3.545(F) excluded only the benefit income itself, so no spouse or parent is exempt from deeming, SSI recipients included. - The payment floor tests eligibility on the grant in cents: a single client whose 3.549(A) income equals SSI's sits exactly at the standard, and single precision left a grant of $0.00006 that the floor raised to $13 (found by the property test; YAML Case 32). - Property tests compare countable income only for clients who receive SSI, as 3.546 requires; regression test for the review's examples. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
co_state_supplement_medicaid_enrolled now computes medicaid_enrolled in a branch where it is itself false for everyone, rather than one where January's AND-CS is zero. AND-CS in the branch deems every Medicaid spouse's or parent's income, so it is no higher than its final value and SNAP is no lower: one step from the final fixed point, from the conservative side. The parent never holds this variable before computing it, so get_override_branch always shares the parent's cache. This matches co_oap_medicaid_enrolled in #10176, so the two can merge into one Adult Financial variable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.520.79(B)(6) charges an AND-CS client the ISM SSA charges, and SSA's presumed maximum value halves once spousal deeming starts. Spousal earnings that cross SSI's deeming threshold therefore lower the client's ISM by about as much as the deemed earnings rise, and countable income can fall by cents. Found by Hypothesis in the ISM session (#10183); pinned by test_ism_basis_switch_at_ssi_deeming_threshold. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 13, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #10145 (base
ssi-supplement-couple-spouse-eligibility). This retargets tomainonce #10145 merges. Review only the commits after3d1da21317.Summary
Colorado AND-CS (
co_state_supplement) gets two changes under 9 CCR 2503-5 (ruleVersionId 12428):ssi_countable_income. Now:The payment floor
History. I extracted 3.546 from all 51 versions of 9 CCR 2503-5 on the SOS site (2012-09-15 through 2026-03-02). The floor first appears in the January 1, 2026 emergency rule (ruleVersionId 12318). Before then, 3.546(C) allowed only discretionary "MOE" lump sums, and SSA's 2002 and 2011 Colorado reports give the pass-along method as "maintaining total expenditures". So
payment_floor.yamlis $0 until 2026 and $13 from 2026-01-01.Who gets it. CDHS's rulemaking packet (2025-00596) gives the AND-CS caseload as "approximately 250 individuals" and the "Estimated amount to meet payment floor" as $285. If the floor paid every disabled SSI recipient under 60 with a $0 grant, it would cost thousands of times that. The 3.520.781(A) reading matches.
3.546's "but are not receiving the full SSI benefit standard". 3.510 defines the SSI benefit standard as the maximum federal SSI amount (20 CFR 416.405-415). Since 2012 the AND-CS grant standard has equaled the individual rate ($994 in 2026). A single client receiving the full individual rate therefore already has total countable income of at least $994, which 3.520.781(A) excludes. So the PR adds no separate gate. A member of an SSI couple (each $745.50) is not on the full individual standard and stays a client, as #10145 and SSA's 2011 Colorado table (couple standard $1,398 = 2 × $699) have it. Axiom's
and_cs_client_qualifies_for_programtakes this as a leaf input,client_receives_full_ssi_benefit_standard_under_section_3_510.3.549 outside SSI couples
ssi_countable_income(before)Dating (F). The current (F) took effect March 1, 2020 (ruleVersionId 8577). The 2014–2020 rule (3.545(F), effective 3/2/14) read: "If a spouse or parent is receiving assistance under another category of public assistance, SSI benefits, or medical assistance, the income from those benefits shall not be considered as available to the client". That excludes only the benefit income, which the deemed sources here never include, so
income/deeming/assistance_exemption_applies.yamlis false before 2020-03-01 and no one is exempt. Two consequences:Medicaid enrollment for (F). From 2027 the Medicaid community engagement requirement can be met by belonging to a household that receives SNAP (42 CFR 435.554(c)(7)). SNAP counts AND-CS as income, so a spouse's Medicaid enrollment can depend on the client's supplement.
co_state_supplement_medicaid_enrolledcomputesmedicaid_enrolledin a private branch where the variable itself is false for everyone. Before work requirements apply, it ismedicaid_enrolled. In the branch, AND-CS deems every Medicaid spouse's or parent's income, so it is no higher than its final value and SNAP is no lower: one step toward the fixed point, from the conservative side. The branch keeps the SNAP route to enrollment, which matters for spouses: PE's caretaker exemption covers disabled dependents, not a disabled spouse. The parent never holds the variable before computing it, so the branch always shares the parent's cache, and the answer is the same whatever is calculated first. #10176 uses the same design for OAP (co_oap_medicaid_enrolled). Whichever PR lands second merges the two into one Adult Financial variable.medicaid_enrolled_for_ssi_state_supplement, used by IN and KS, would drop the SNAP route, and it answers from the cache when Medicaid was calculated first.The disregard amounts ($65, one half, $20) are Colorado parameters (
income/disregards/), not SSI's. A reform to SSI's exclusions no longer changes AND-CS.Worked cases (all in YAML)
2026, monthly unless noted. "Before" is #10145's head.
Clients with a positive grant are mostly members of SSI couples (#10145), people in another person's household, and clients whose spouse is exempt under (F) while SSI deems the spouse's income. A single client in their own household has no positive grant: 3.549(A) never counts less than SSI does, and the standard equals the SSI rate. The property tests check this. Eligibility is tested on the grant in cents: in single precision such a client could otherwise be left a grant of $0.00006, which the floor would raise to $13. The property test found this; YAML Case 32 pins it.
Invariants
policyengine_us/tests/core/test_co_and_cs_invariants.pychecks these on Hypothesis-drawn single and married clients (15 examples of up to 8 households, one simulation each). Each married household appears four ways: spouse on Medicaid, spouse not, more spousal earnings, roles swapped.#10145's six couple invariants (
test_ssi_state_supplement_couple_invariants.py) still pass. A mutation check confirmed both files and the YAML fail when the floor is paid on $0 grants or the (F) exemption is dropped.Tests
YAML:
co_state_supplement.yamlCases 20-32, plus Cases 1-13 now feedingco_state_supplement_countable_income(they fedssi_countable_income, which the variable no longer reads). New files:co_state_supplement_own_countable_income.yaml(7),co_state_supplement_deemed_income.yaml(10),co_state_supplement_deeming_exempt.yaml(10).co_state_supplement_countable_income.yamlCase 1 is rewritten and Case 4 added. Every expectation is computed from the rule in the case's comment. All 74 CO AND-CS cases pass, as do all CO YAML (6 batches) and 314 cases in 16 files elsewhere with CO households.test_ssi_state_supplement_medicaid_dependency.py: AND-CS now reads Medicaid for (F), so CO joins the SSP/SNAP/Medicaid calculation-order test (2027, 2030, 2035). Newtest_co_and_cs_spouse_medicaid_through_snapchecks a 2030 couple both ways, with SNAP computed and SNAP supplied: a spouse on Medicaid through SNAP receipt is exempt, and the results do not depend on calculation order. The all-states poverty test there already covers CO. Measured locally on macOS:test_co_and_cs_invariants.py: about 20-30 s, 1.3 GB peak RSS, nearly all of it model import.Both files run in the Rest/core group. Linux CI times are not measured.
Partner fixtures: all CO fixtures and
my_friend_ben/2025.yamlpass exceptco_state_supplement_disabled_ssi_couple_positive. That case is Pay CO, TX and NM SSI supplements to both members of an SSI couple #10145's change, already put to @hua7450 there. This PR changes no other partner output.Readings to check
Not modeled
ssi_parental_deemors, which could replace the local selection once it merges.Impact
No microsimulation yet. The hub's impact queue compares merge-base(main) with the head, so it runs at the final head after #10145 merges (
co_state_supplement).Axiom
axiom: us-co:regulations/9-ccr-2503-5/3.549 (A), (C)-(D), (F) encoded-correct for the cases both encode (companion tests
client_income_disregards_and_grant,ssi_only_client_has_no_unearned_disregard,married_client_standard_spouse_deeming,spouse_assistance_exception_blocks_standard_deeming) | TheAxiomFoundation/rulespec-us#1716 queued (3.546/3.549 floor must require 3.520.781(A)) | TheAxiomFoundation/rulespec-us#1717 queued (3.549(E) parental deeming, (H) total, combined $20, effective dates)Review
Round 1 (GPT-6.1 Sol,
96f5c6e2d4): REQUEST_CHANGES. It confirmed the floor gate (total $994 gives $0; $993.50 gives $13). Five findings, all addressed in87281e2751:medicaid_enrolled_for_ssi_state_supplementdropped the SNAP route and answered from the cache, so a spouse's exemption depended on calculation order. Fixed withco_state_supplement_medicaid_enrolled, plus a regression test.Round 2: pending.
🤖 Generated with Claude Code