Repository navigation
Count Colorado's in-kind support and maintenance for AND-CS clients in another person's household - #10183
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>
…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>
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>
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>
…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>
9 CCR 2503-5 3.520.79 counts in-kind support and maintenance as unearned income of OAP and AND-CS clients. Since March 2, 2014 an SSI recipient whom SSA charges ISM is charged a matching ISM (3.520.79(B)(6), 3.520.71(E)). AND-CS counted only SSI's presumed maximum value, so a client on SSI's one-third reduction (20 CFR 416.1131) was paid the whole reduction back: $331.33/month in 2026 instead of $20. co_ssa_in_kind_support_and_maintenance matches SSA's ISM for SSI recipients (the one-third reduction or the presumed maximum value, halved for a couple), counts up to the published maximum for other clients (3.520.79(C)), and before 2014 caps shelter at the grant standard's shelter component and counts food supplied in full (3.250.22, 3.250.222). AND-CS reads it; OAP will once its income rewrite lands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… is worth 3.520.79(C) sets the amount from what the client pays: the maximum less the payment, the lesser of the fair share and the maximum less the payment, or the maximum for a client paying nothing. It never uses the value of the shelter. With no input for the payment, a client receiving shelter from others is taken to pay none and is counted the maximum; ssi_shelter_support_value no longer caps Colorado's own amount (it still feeds SSA's ISM, which SSI recipients match). Applies the GPT-6.1 Sol review of 9cb7d30. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…re invariant Applies the GPT-6.1 Sol review (round 2) of 0c4370a: - 3.520.786(B) (3.250.32 before 2014) exempts room and board furnished during medical confinement and paid by a third party, so a client in a medical treatment facility is counted no ISM. - The January 2004 AND/SSI-CS table prints a $513 maximum grant against a $601 grant standard, so the base of its 37% shelter and 20.5% food components is unsettled. The pre-2014 formula now starts with the 2007 table (36.6%, 20.5%); 2002-2006 are left for the standards audit. - The no-backfill invariant subtracts any state supplementary payment that raises a grant to the $13 floor; the review's counterexample (a couple earning $1,145 and $106 a month) is pinned as a Hypothesis example. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
09e2819 to
8e69c97
Compare
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>
|
Picking this up for the US hub. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
|
Handing this PR to the US + core hub at the hub's request. GPT-6.1 Sol's latest review requests changes at this head, so the fixes below come first.
Review findings
OAP#10176 merged, so OAP no longer waits on it. Main's The swap needs YAML cases computed from the rule, plus one for a spouse outside Colorado: |
|
Picking this up for the US hub. I'm continuing an earlier session's work on this brief; that session stopped before pushing anything here. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
…tests - Merge co_oap_medicaid_enrolled and co_state_supplement_medicaid_enrolled into co_adult_financial_medicaid_enrolled, keeping OAP's reported-coverage route (3.549(F) and 3.534(C) say "receiving ... Medicaid") so AND-CS and OAP share one private branch and never nest one inside the other. - 3.549(F): judge Old Age Pension receipt month by month on the spouse's own income, as co_oap_deeming_exempt does; apply the income limit to SSI recipients too, as OAP applies its limit; and compute Medicaid only for people near an AND-CS client who are not exempt otherwise. - 3.549(A)(2)(f): the spillover to earnings is from the client's own share of the $20 (half when married), as OAP's 3.533(A)(2)(f) reads, so no more than $20 applies to the couple. Deemed-income Case 8 changes accordingly. - Rebuild the deeming-exemption YAML around a real client and spouse, with year-keyed inputs for the 2020 cases, plus SSI-above-limit and reported-coverage cases. - Invariant 4 scopes only the countable-income check to clients without ISM. - Reference titles: one-page title, 3.545(F)'s 2014 date, packet page 1. - Drop #10145's changelog fragment, which main has released. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Picking this up for the US hub. I'm continuing earlier sessions' work on this brief; they stopped before pushing anything here. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
…heck - 2002-2006: co_ssa_in_kind_support_and_maintenance had no formula, so AND-CS lost the presumed maximum value #10161 counted (a 2004 renter with outside shelter support went from $37 to $225). formula_2002 keeps that count, halved for a couple, until the pre-2014 component base is audited. New co_state_supplement.yaml Case 38 pins $37. - OAP: co_oap_in_kind_support_and_maintenance reads Colorado's ISM, so OAP clients get SSA's one-third reduction matched (3.520.79(B)(6)) and Colorado's maximum without SSI (3.520.79(C)(3)). The ISM variable drops its Colorado-only restriction: OAP deems a spouse's ISM and the spouse may live elsewhere (3.534(C)). OAP own-income Case 10 now counts $351 - $20. - Invariant 3 takes the floor top-up from the rule, max(0, floor - grant) for a positive grant, not from the supplement under test. - The medical-confinement comment says an SSI recipient in a facility with outside shelter support is still charged SSA's ISM. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Ready for hub review Head: I continue earlier sessions' work on this brief. They pushed nothing here. I kept this PR's four earlier commits and merged #10161's new head ( The hub hand-off's review findings (GPT-6.1 Sol at
|
| Mutant | Killed by |
|---|---|
| 2002-2006 ISM returns 0 | co_state_supplement.yaml: 1 failure (Case 38) |
| OAP reads SSI's PMV ISM again | co_oap_in_kind_support_and_maintenance.yaml: 4 failures; co_oap_own_countable_income.yaml: 1 |
| ISM restricted to Colorado again | co_oap_in_kind_support_and_maintenance.yaml: 3 failures, including the Nevada case |
| AND-CS pays $300 over the floor whenever the floor applies (the review's $313-for-$13 grant) | test_co_ism_invariants.py: invariant 3 fails |
The earlier session's mutants for readings (b) and (c) are in the body. I didn't rerun them.
CI
Not run: the PR is a draft and CI skips drafts.
Judgment calls
- The ISM amount (d1446): reading (a), SSA's matching ISM. The hub now rules on single readings and logs them. 3.520.79(B)(6) "matching ISM" and 3.520.71(E) "identical ISM amount" address exactly this client, so the PR keeps (a). (b), Colorado's $351 maximum, is a one-line change in
_ssa_ism. This needs the hub's ruling before landing. - 2002-2006 keeps SSI's PMV ISM, as the review recommended, rather than a Colorado component. For the review's 2004 client it sits between the two candidate shelter components ($189.81 on a $513 base, $222.37 on $601). The pre-2014 standards audit is still owed.
- Colorado's ISM for a non-Colorado spouse. Dropping the Colorado restriction means a spouse elsewhere who isn't on SSI and receives shelter support is counted Colorado's (C)(3) maximum when OAP deems their income. That follows from 3.534(B)(1) counting the spouse's unearned income and (C) setting no residence condition. The alternative is to count only SSA's matching ISM for a spouse outside Colorado.
- OAP now counts Colorado's own ISM for clients without SSI ((C)(3)), the behavior main's comment listed as unmodeled. Clients receiving shelter from others are taken to pay none, as for AND-CS.
What I couldn't check
This session's network policy blocks www.sos.state.co.us and web.archive.org, so I couldn't fetch 9 CCR 2503-1/-2/-4/-5 or the CDHS packet. The rule quotes and table figures in the body come from the PR's earlier body and the hub's hand-off comment. My hand computations use those figures and SSA's published rates.
Proposed follow-up
- Audit Colorado's pre-2014 AND-CS grant standards and ISM components. The 2004 table prints a $513 maximum grant against PolicyEngine's $601. Settle the base, then replace
formula_2002's PMV stand-in with Colorado's 2002-2006 shelter and food components.
Generated by Claude Code
|
Hub review in progress The final review for head Generated by Claude Code |
|
Ready for hub review Independent review of this PR's own diff, FindingsP2. In 2002–2006 the one-third backfill remains, and neither the body nor the code comment says so
Witness: a single disabled 40-year-old in another person's household, receiving shelter and all meals, CO, January 2005. I ran it on main, on #10161's head and on this head with period-keyed inputs: That is 604 − 386 = $218, the full offset. The same client in 2007 or later gets $0 or $20. Behavior is unchanged from base, so this is a text fix, not a code fix. Replacement for the body's model-table row:
Add to the # SSI's presumed maximum value is $0 under the one-third reduction,
# so a client in another person's household is counted no ISM in
# these years and AND-CS still offsets that reduction in full.The pre-2014 audit follow-up the hand-off proposes should name this client. P2. No CI has run at this head, and none will until the base is
|
| Mutant | Result |
|---|---|
M1 formula_2002 returns 0 |
killed: co_state_supplement.yaml 1 failed (Case 38) |
| M2 OAP variable replaced with main's file | killed: co_oap_in_kind_support_and_maintenance.yaml 3 failed; co_oap_own_countable_income.yaml 1 failed |
M3 defined_for = StateCode.CO restored |
killed by co_oap_in_kind_support_and_maintenance.yaml (3 failed); survives co_oap_deemed_income.yaml (P3) |
| M4 AND-CS pays $300 over the floor | killed: test_co_ism_invariants.py::test_properties |
| M5 reading (b): $351 for the one-third reduction | killed: ISM file 3 failed; co_state_supplement.yaml 5 failed |
| M6 reading (c): no ISM for the one-third reduction | killed: ISM file 3 failed; co_state_supplement.yaml 5 failed |
| M7 (mine) the one-third ISM from paid SSI, not the rate | survives the ISM file; killed by co_state_supplement.yaml 1 failed (Case 33) |
| M8 (mine) the pre-2014 food component dropped | killed: ISM file 2 failed |
| M9 (mine) PMV not halved for a couple | killed: ISM file 1 failed |
- Partner tests.
- No file under
policyengine_us/tests/policy/baseline/partners/or.github/changes (git diff --stat 8707792d09 64a74c5bf7 -- partners .githubis empty). - Every partner fixture that reads Colorado's SSA programs passes unchanged on this head:
my_friend_ben/2025.yaml1/1. Underanalytics_coverage:edge_cases/state/co/state_supplement.yaml3/3,oap.yaml3/3,care_worker_credit.yaml4/4,family_affordability_credit.yaml4/4,eitc_ctc.yaml2/2,tax_credits_composition.yaml2/2, andsignatures/co.yaml6/6.
- No file under
- Body and docs. The
impact:andaxiom:lines are present. The per-file case counts match my runs.- The before/after table matches my main and base runs: 331.33, 322.33, $2,884, $232.67 and $37.
- The readings table matches the arithmetic. Under (b), 994 − 662.67 − 331 = 0.33, raised to $13; couple 994 − 497 − 341 = $156.
- The changelog fragment is top-level
changelog.d/co-adult-financial-ism.fixed.md.
- Baseline movement. The diff moves output only for people with
ssi_lives_in_another_persons_household,ssi_receives_shelter_from_others_in_household,ssi_others_pay_all_mealsorssi_receives_outside_shelter_supportset. Those are inputs defaulting to False; the PMV path for SSI recipients is unchanged. OAP's SSI test moves fromssi_paid(ssi) > 0tossi > 0, which differs only below half a cent. The population check: does the dataset set any of those four flags for Colorado records? If not, baseline impact is nil. If so, expect lower AND-CS and OAP for those records. - Overlap.
- Apply 416.1163(e)(2) to deemed SSI and identify SSI couples by marriage, not tax roles #10141 (open) refactors
ssi_amount_if_eligibleandssi_couple_computation_applies, which_ssa_ismreads. I read its patch. It moves the one-third and $30 facility logic intossi_living_arrangement_amountwith the same arithmetic, so the matching ISM shouldn't move. It shares no file with this diff. - Add Colorado LEAP regular heating assistance #10609 and Include farm and partnership earnings in SSI and correct loss netting #10532 match the search terms only in text; neither changes a file this PR touches.
- Apply Colorado's AND-CS payment floor and 3.549 income rules to every client #10161 is this PR's base.
- Apply 416.1163(e)(2) to deemed SSI and identify SSI couples by marriage, not tax roles #10141 (open) refactors
What I couldn't check
- Primary sources. This session's network policy refuses www.sos.state.co.us, www.ecfr.gov, www.govinfo.gov, uscode.house.gov, www.ssa.gov, web.archive.org, www.law.cornell.edu and cdhs.colorado.gov, for both curl and fetch. I couldn't read 9 CCR 2503-5 3.520.79 (A), (B)(6), (C)(3) or (E), 3.520.71(E), 3.520.786(B), 3.534, the 2503-1/-2/-4 tables, the CDHS 2025-00596 packet, or 20 CFR 416.1131 and 416.1140. I quote none of them. Web search snippets (not the text) agree that 416.1131 counts one-third of the FBR, and one-sixth of the couple rate to each spouse. The reading choice and the 2002–2006 base need a reviewer who can reach those sites.
- The deeming case under the one-third reduction. For an SSI recipient with an ineligible spouse whose income is deemed,
ssi_amount_if_eligibleuses the couple rate, so the matching ISM would be couple FBR / 3. My runs didn't trigger deeming, so I couldn't test whether SSA charges that amount. - Couples without SSI. Colorado charges each of them the full $351. I couldn't check whether the rule halves it for a couple.
- Data. I have no population data, and the hub measures impact. I couldn't check peak memory:
/usr/bin/timeisn't installed here.
Generated by Claude Code
|
Picking this up for the US hub. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
A spouse or parent who receives SSI now meets 3.549(F)'s income condition by receiving it, since SSI's own test already held their countable income within the limit SSI applies to them (the couple rate in an eligible couple), as 3.570.43 uses the phrase. Someone on Old Age Pension or Medicaid without SSI still faces the individual federal benefit rate on their own countable income. This removes a $746 cliff where a $1 pension rise ended an SSI couple head's grant; new co_state_supplement Cases 33-35 pin the payment at $1,014, $1,015 and $1,200 pensions. Also from review round 1: - the 3.549(A)(2)(f) comment now describes what the code does (own share less gross unearned income, SSI included), pinned by a case with $5 SSI; - cases for 3.549(E)'s under-18 gate (client 18 vs 17); - the property tests report a skip when hypothesis isn't installed; - a removed fragment for co_oap_medicaid_enrolled, which shipped in 2.52.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6GVxJNmuxpvgfooGjd
Brings in #10161's round 1 fixes. Both branches appended co_state_supplement cases from Case 33: #10161's three SSI-couple cases keep 33-35, and this branch's six ISM cases become 36-41. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6GVxJNmuxpvgfooGjd
Under the one-third reduction SSI counts no presumed maximum value, so in 2002-2006 AND-CS counts no ISM for a client in another person's household and still offsets the reduction in full. Behaviour is unchanged; the comment now says so. Also from review round 1: - co_oap_deemed_income Case 21 deems a Nevada spouse's Colorado ISM (1,000 + 351 - 1,032 = 319), so restoring defined_for = StateCode.CO now fails a deeming test, not only the ISM variable's own file; - invariant 2's upper bound applies only to twins on SSI, as its docstring says, instead of passing for non-SSI twins only because $351 <= $351.33. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6GVxJNmuxpvgfooGjd
|
Ready for hub review Head: Round 1 fixes (items 7 to 11). The branch was at the named head
The base is still Items
Tests at this head, one file per process (
|
| File | Result |
|---|---|
co_state_supplement.yaml |
41 passed |
co_state_supplement_deeming_exempt.yaml |
11 passed |
co_state_supplement_deemed_income.yaml |
12 passed |
co_state_supplement_own_countable_income.yaml |
8 passed |
co_oap_deemed_income.yaml |
21 passed |
co_oap_in_kind_support_and_maintenance.yaml |
5 passed |
co_ssa_in_kind_support_and_maintenance.yaml |
18 passed |
test_co_ism_invariants.py |
2 passed |
test_co_and_cs_invariants.py |
4 passed |
test_co_oap_invariants.py |
2 passed |
ruff format --check and ruff check are clean on the two Python files this round changed. The merge brought in #10161's files, which were already checked there.
Mutants
| Mutant | Result |
|---|---|
M3: defined_for = StateCode.CO restored on co_ssa_in_kind_support_and_maintenance |
killed by co_oap_deemed_income.yaml Case 21 (1 failed, 20 passed); restored with git checkout, git status clean |
CI
No run, as expected. pr.yaml runs only for PRs into main, and the base is co-and-cs-payment-floor-3549. CI starts when the hub moves the base.
Not checked
- I didn't fetch 9 CCR 2503-5. The quotes in the body are the hub's quoted text of 3.520.79(B)(6) and 3.520.71(E), each under 25 words.
- No microsimulation or population impact (per the brief).
- No partner or
.github/file changed.
Proposed follow-up
Audit Colorado's 2002-2006 AND-CS ISM base and the one-third-reduction offset. formula_2002 stands in SSI's PMV ISM, so an SSI recipient in another person's household still has the one-third reduction fully offset (January 2005: $218). This needs the pre-2014 grant-standard components settled first.
Generated by Claude Code
|
Hub review in progress The final round 2 review for head Generated by Claude Code |
|
Ready for hub review Round 2 delta review: the round 1 fixes from METHODOLOGY_CHOICE stays yes. The PR picks the matching reading, SSA's one-third ISM for an SSI recipient in another person's household ($331.33 in 2026), over Colorado's $351 maximum and over counting no ISM. It also keeps SSI's PMV as a stand-in for 2002–2006. Every round 1 item is done, the merge lost nothing, and every test I ran passes. My findings are an overlap the body doesn't name, a stale case number, and an untested exemption. FindingsP2. #10146 conflicts with this PR in two files, and its monthly ISM change also has to reach this PR's new variable. The body names neither.#10146 (open, base
This PR moves that read into Failure scenario. #10146 lands second, and its author resolves the conflict by keeping this PR's one-line OAP formula. Then Fix. Add an overlap bullet to the body:
#10141 merges with this head without conflict ( P3. A test docstring still cites the old case number, so the hand-off's "Nothing else in the branch cites those case numbers" is false
Replace P3. No test covers the homeless exemption in
|
| Mutant | Result |
|---|---|
M3: defined_for = StateCode.CO added to co_ssa_in_kind_support_and_maintenance |
killed: co_oap_deemed_income.yaml 1 failed, 20 passed; Case 21 [0. 0.] differs from [319. 0.] |
M10 (mine): homeless dropped from _ism_exempt |
survives the ISM file (18 passed); killed by the suggested Case 19 (P3 above) |
- Tests at the head, one file per process (
uv sync --extra dev):
| File | Result |
|---|---|
co_state_supplement.yaml |
41 passed |
co_oap_deemed_income.yaml |
21 passed |
co_ssa_in_kind_support_and_maintenance.yaml |
18 passed |
co_oap_in_kind_support_and_maintenance.yaml |
5 passed |
co_oap_own_countable_income.yaml |
15 passed |
co_state_supplement_deemed_income.yaml |
12 passed |
co_state_supplement_deeming_exempt.yaml |
11 passed |
co_state_supplement_own_countable_income.yaml |
8 passed |
co_oap.yaml |
36 passed |
test_co_ism_invariants.py |
2 passed |
test_co_and_cs_invariants.py |
4 passed |
test_co_oap_invariants.py |
2 passed |
ruff format --check and ruff check are clean on the four Python files in this PR's diff against its base.
- Readers.
co_ssa_in_kind_support_and_maintenanceis read by_and_cs_client_income(used byco_state_supplement_own_countable_incomeandco_state_supplement_deemed_income) and byco_oap_in_kind_support_and_maintenance. The latter is read byco_oap_own_countable_incomeandco_oap_deemed_income.- The
gov.states.co.ssa.ism.*parameters are read only by the new variable. - After the merge,
co_state_supplement_deemed_incomecallsand_cs_client_incomefor the client's own disregard use, so the client's own ISM uses up the client's share of the $20. The spouse's or parent's deemed income still usesssi_unearned_incomewithout ISM. Round 1 noted the same for AND-CS. - No reader made worse that I could find.
- Baseline. This round changes no formula: one comment, one YAML case and one test assertion. The PR as a whole still moves output only for people with one of the four SSI living-arrangement or shelter flags set, as round 1 found. The population check is unchanged: does the dataset set those flags for Colorado records?
- Body. The
impact:andaxiom:lines are present. The per-file counts (41, 21, 18, 5, 15) match my runs. The two test files named under "Python" exist. The "Before" values (331.33 for 2026, $218 for January 2005) match my main and base runs. - Scope.
git diff --stat 3371fc5573 c9cd35d0dd -- .github policyengine_us/tests/policy/baseline/partnersis empty. - CI. No run exists at this head:
actions/runs?head_sha=c9cd35d0dd…returns 0 runs andcheck-runsreturns 0..github/workflows/pr.yamltriggers onpull_requestwithbranches: [main], and the base isco-and-cs-payment-floor-3549, so this isn't a failure. The Pull request run at Apply Colorado's AND-CS payment floor and 3.549 income rules to every client #10161's head3371fc5573(41859948897) succeeded. This PR's own CI evidence comes only once the hub moves the base tomain, and the landing gate should wait for that run.
What I couldn't check
- Primary sources. From this VM,
curlgets a 403 from the proxy, andWebFetchcan't resolve the hosts, for www.sos.state.co.us, www.ecfr.gov, www.govinfo.gov, uscode.house.gov, www.ssa.gov, web.archive.org, www.law.cornell.edu, cdhs.colorado.gov and leg.colorado.gov. I checked the body's quotes only against the assignment's quoted text, not against 9 CCR 2503-5 itself. I quote no law from my own reading. That includes (C)(3), (B)(3) and 3.534, and 20 CFR 416.1131 and 416.1140. - Population impact and peak memory of
test_co_ism_invariants.py: I have no population data, and/usr/bin/timeisn't installed. - This PR's CI, until the base is
main.
Generated by Claude Code
…xemption No test covered an OAP spouse not on SSI whose own SSI countable income exceeds the individual rate while OAP is still paid, so dropping the limit (exempt = receives_ssi | receives_oap) passed every case. Case 12 covers that spouse and fails under that mutant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6K4hbmpvP2YevFmELw
|
Picking this up for the US hub. I'll post a hand-off comment here when it's ready. Generated by Claude Code |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6K4hbmpvP2YevFmELw
No test set is_homeless, so dropping homeless from _ism_exempt passed every CO SSA case; Case 19 pins it. The ISM invariants docstring cited co_state_supplement Case 34, which the merge of #10161 renumbered to 37. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6K4hbmpvP2YevFmELw
|
Ready for hub review Head: This round builds on Items
Tests at the head (one file per process)
Mutant
The value of 351 under the mutant is the 2026 Colorado maximum, which this client (no SSI, outside shelter support) would be counted without the exemption. Overlaps (
|
|
Hub review in progress Round 3 delta review of So far:
Generated by Claude Code |
|
Ready for hub review Round 3 delta review, from
METHODOLOGY_CHOICE stays yes, for the reasons round 2 gave: the matching ISM ($331.33 in 2026) over Colorado's $351 maximum or no ISM, and SSI's PMV as a stand-in for 2002–2006. This round changes no formula. Items 3–7 are done. The merge lost nothing, every test I ran passes, and each mutant is killed. One sentence in the body is stale. FindingsP3. The body's first line points reviewers at #10161's old headThe body's first line reads: "Review only the diff from #10161's head Failure scenario. A reviewer who diffs from Replacement: Checked and sound
These match the body's counts (19, 41, 5, 15, 21) and the hand-off's table.
What I couldn't check
Generated by Claude Code |
|
US + core hub merge audit, us#10183 at
🤖 Generated with Claude Code |
Summary
Colorado counts in-kind support and maintenance (ISM) as unearned income of Old Age Pension and AND-CS clients (9 CCR 2503-5 3.520.79). Since March 2, 2014, Colorado has charged an SSI recipient whom SSA charges ISM "a matching ISM" (3.520.79(B)(6), 3.520.71(E)).
On
main, both programs count only SSI's presumed maximum value (PMV) ISM. So an SSI recipient in another person's household gets SSA's one-third reduction back in full: $331.33/month of AND-CS in 2026. With the matching ISM, that client's AND-CS grant falls to $20/month.main's OAP counts no ISM for that client, and none for any client without SSI.co_ssa_in_kind_support_and_maintenance(Person, MONTH) holds the ISM Colorado counts. AND-CS (_and_cs_client_income.py) and OAP (co_oap_in_kind_support_and_maintenance, in cents) read it, and nothing else does.gov.states.co.ssa.ism:maximum: the published monthly maximum, 2014-2026;component_share.shelterandcomponent_share.food: the 2007-2013 caps.What the sources say
Colorado counts ISM for a client in another person's household. Every primary source says so, and has since at least 2003.
Only SSA's sentence supports a full offset. Colorado's rule text counted ISM in every year from 2003 through 2011, years that SSA's reports cover. The same reports call Colorado's income rules federal, which 3.549 and 3.250.22 contradict. The sentence reads as a description of the payment formula (standard − SSI − income): leave ISM out, and the payment grows by whatever SSI loses.
Reading of the ISM amount
This PR follows 3.520.79(B)(6), "The client shall be charged a matching ISM for Adult Financial programs, unless good cause is provided due to SSA backlog," and 3.520.71(E), quoted above. SSA charges an SSI recipient in another person's household one-third of the benefit rate ($331.33 in 2026). That client therefore carries a matching $331.33 ISM, and AND-CS pays the client $20 a month. The table compares the amounts that the rule's general computation and SSA's reports could suggest:
(B)(6) and 3.520.71(E) address this client, an SSI recipient whom SSA charges ISM, and speak to the amount; (C) gives the general computation. Under (a), Colorado's $20 unearned disregard (3.549(A)(2)(c)) applies to the matching ISM like any other unearned income, and that disregard becomes the $20 grant. The ISM and AND-CS YAML cases pin (a)'s amounts.
The model
maincounts it, because no source settles Colorado's component base for these years (see below). Under the one-third reduction SSI counts no PMV ISM, so AND-CS still offsets the reduction in full (January 2005: 604 − 386 = $218).main's count: for a single 2004 client, 564 / 3 + 20 = $208, between the two bases' shelter components ($189.81 and $222.37).Worked cases (YAML)
Monthly unless noted. "Before" shows
main(ba14b81f7b), where the PR's cases report these values.Of the AND-CS cases on
main, onlyco_state_supplement.yamlCase 28 (single, another's household, 2026) moves: from $3,976/yr to $240/yr, or 12 × (994 − 662.67 − 311.33). OAP'sco_oap_own_countable_income.yamlCase 10 (62, no SSI, outside shelter support) moves from $0 to $3,972/yr: 12 × (351 − 20).Invariants
policyengine_us/tests/core/test_co_ism_invariants.pychecks Hypothesis-drawn SSI clients (single or couple, SSDI and earnings, either arrangement, a drawn support value), each beside a twin with no support, plus non-SSI clients aged 62, in 2026:ssi_amount_if_eligible; otherwise it equals SSI's PMV ISM, or half of it for each member of a couple.Tests
co_ssa_in_kind_support_and_maintenance.yaml: 19 cases; Case 19 pins the homeless exemption.co_state_supplement.yaml: 41; Case 28 changes, and Cases 36-41 test this PR.co_oap_in_kind_support_and_maintenance.yaml: 5, three of them new.co_oap_own_countable_income.yaml: 15; Case 10 changes.co_oap_deemed_income.yaml: 21; Case 21 deems a Nevada spouse's Colorado ISM, 1,000 + 351 − 1,032 = 319.test_co_ism_invariants.py,test_co_and_cs_invariants.py,test_co_oap_invariants.py,test_ssi_state_supplement_couple_invariants.py,test_ssi_state_supplement_medicaid_dependency.py. The ISM invariants run in core. On a Mac they peak at about 1.2 GB and take about 19 s, import included.Not modeled
Overlap with open PRs
ssi_in_kind_support_and_maintenance_monthly, and editsco_oap_in_kind_support_and_maintenance.py, which this PR reduces to a read ofco_ssa_in_kind_support_and_maintenance. The two PRs conflict in that file and its YAML. Limit SSI spousal-deeming child allocations to the couple's co-resident children #10146 also conflicts withmain, including inco_state_supplement_countable_income.py, whichmaincomputes as a sum of own and deemed income. The PR that lands second switches_ssa_ismandformula_2002inco_ssa_in_kind_support_and_maintenance.pyto the monthly variable, and moves Limit SSI spousal-deeming child allocations to the couple's co-resident children #10146's new OAP case toco_ssa_in_kind_support_and_maintenance.yaml.co_oap_deemed_income.yaml, where this PR adds Case 21; that file merges cleanly.Microsimulation impact
We compared
mainat082cb2ea23with this head,66644f6504, on the default dataset for 2026. We estimate that no output changes: AND-CS pays $0 and OAP pays $348.64 million on both sides, and SNAP, taxes, benefits and household net income don't change.ssi_lives_in_another_persons_householdssi_receives_shelter_from_others_in_householdssi_receives_outside_shelter_supportssi_others_pay_all_mealsssi_shelter_support_valueco_ssa_in_kind_support_and_maintenanceequals $0 for every record too.co_oap_eligible, and 18 of them (57,634 weighted) receive OAP. In January, five (47,618 weighted) meetco_state_supplement_eligible. SSI places all of them in their own household, and neither program counts any ISM for them on either side.co_oap_countable_incometotals $11.2 trillion on both sides because it carries nodefined_for, so the model computes it for every person nationwide. Onlyco_oapreads it, andco_oapkeeps itsco_oap_eligiblerestriction.maintotal, 2026co_state_supplementco_state_supplement_countable_incomeco_ssa_in_kind_support_and_maintenancemainco_oap_in_kind_support_and_maintenanceco_oapco_oap_countable_incomesnapincome_taxstate_income_taxhousehold_net_income(households)household_benefitsA household calculation that sets one of those inputs moves as the worked cases above show.
impact: on the default dataset in 2026, no output changes. The dataset sets none of the in-kind support inputs, so Colorado's ISM stays $0 for every record on both sides, as SSI's does.
axiom: TheAxiomFoundation/rulespec-us#1720 queued, extended with a comment (ISM history and integration)
🤖 Generated with Claude Code