Repository navigation
Use state dollar standards for the Medicaid aged, blind and disabled income limit in AK, ID, NH, VT and WI - #10378
Conversation
…limit Alaska, Idaho, New Hampshire, Vermont and Wisconsin test aged, blind and disabled people who do not receive SSI against a monthly dollar standard of their own, not a share of the poverty guideline. Add uses_state_standard and state_standard parameters (with adds_ssi_rate for the four states whose standard is the SSI rate plus a state amount), one select branch in medicaid_optional_senior_or_disabled_income_limit, and Idaho's below-the-standard income test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The case now runs through is_209b_ssi_recipient_for_medicaid with SSI receipt, and no longer appends to the file that PolicyEngine#10378 also extends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Read New Hampshire, Vermont and Wisconsin amounts from their state supplement parameters on main (adding Vermont's 2017-2023 history), move Alaska to its own 7 AAC 40.310 parameter uprated by the Social Security COLA, keep only Idaho in state_standard, move the Wisconsin boundary test to 2025 and add 2021 and Vermont 2023 cases, check the state-standard flags in the unit test, and name Idaho as a below-only state. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Use Wisconsin's SSI rate plus state supplement from 2018, which equals the base plus the shelter cap that applied until July 2020 (MEH 39.4.1 Releases 18-01 and 19-02; Ops Memo 20-13), and drop its poverty-guideline shares. Take New Hampshire's standard disregard from the Medicaid parameter (He-W 854.16, as He-W 858.03(e)(2) names), point Idaho's state_standard at the AABD basic allowance (issue 10462), drop Vermont's repeated 2026 entries, and add a 2026 case for the NH and AK individual and ID and WI couple paths. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in main's CI fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
state_standard broke down by state but held only Idaho, which the single-member breakdown guard rejects. Move the amounts to state_standard/id and select Idaho alongside New Hampshire, Vermont and Wisconsin. Results are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Program Review
PR #10378, "Use state dollar standards for the Medicaid aged, blind and disabled income limit in AK, ID, NH, VT and WI" (hua7450). Round 1, full review.
IDs: C = critical, SA = should address, G = suggestion.
Paths: V = policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medicaid_optional_senior_or_disabled_income_limit.py, L/ = policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/, AKS/ = policyengine_us/parameters/gov/states/ak/dpa/ssp/income_eligibility_standard/, WIS/ = policyengine_us/parameters/gov/states/wi/dhs/ssp/amount/, VTA/ = policyengine_us/parameters/gov/states/vt/dcf/aabd/amount/, T = policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medicaid_optional_senior_or_disabled_income_limit.yaml. Line numbers refer to the reviewed head. Every PDF link uses the file page number.
Source Documents
- Reviewed head SHA: 62b72f6
- Mode: full
- Scope: 16 files, 585 insertions and 41 deletions against the merge base
4a1a3cdeb7. The full analysis ran at928c372043. The only later change in scope is62b72f6a93(3 files, see "Changed since the analysis"). The merge ofmain(204408c1ac) changes no file of this PR. - Alaska: 7 AAC 40.310, 40.230, 100.400, 100.410; ADLTC Addendum 1 (live and Wayback 2021-01-02, 2024-03-09) and 530 C. PDF: AK-26-0001 (pages 2, 13), APA Need and Maximum Payment Standards 2018-2021 (1 page, image).
- Idaho: PDF IDAPA 16.03.05 (pages 28, 39; page 39 as image), PDF State Plan TN 18-0002 (pages 5-6, images), DHW income limits.
- New Hampshire: He-W 800 (802.04(b)(1), 854.16, 858.03), MAM 601 Table A, SR 26-01, SR 18-01.
- Vermont: PDF HBEE Part 2 (pages 10-11, images), DVHA 2026 (pages 2, 7), DVHA 2024 (page 7, image), DCF B17-26 (pages 4, 11), DCF B18-14, B19-16, B20-12 and B21-16 (page 2 each, Wayback, images).
- Wisconsin: DHS 103.04(1)(c), MEH 24.1, 39.4, Releases 18-01 and 19-02. PDF: Ops Memo 20-13 (pages 1-2, images), Ops Memo 26-12 (page 2, image).
- Federal: 42 CFR 435.210; SSA 2027 COLA fact sheet and COLA series (Wayback).
- Repository:
CONTRIBUTING.md:78,policyengine_us/tests/test_parameter_files.py:148-155, CI job 121943875620 (shard 3 at928c372043). - Year: target 2026. Values checked 2018-2027. The PR's tests use 2020-2026.
Changed since the analysis
hua7450 pushed 62b72f6a93 ("Make Idaho's Medicaid ABD amount above the SSI rate a scalar parameter") after the analysis.
- C1 (CI failure) — RESOLVED. At
928c372043, shard 3 failedtest_enum_breakdown_parameters_do_not_have_single_member_tables: the newL/state_standard/{individual,couple}.yamlhadbreakdown: [state_code]with onlyID(CONTRIBUTING.md:78). The commit makes them scalar filesL/state_standard/id/{individual,couple}.yaml(33,0), adds astate == "ID"branch withdefault=0(V:73-83), and names Idaho in the descriptions and labels. This is the verified fix; only the path differs (L/state_standard/id/, notL/id/), and it also meets the rule. - Checks at
62b72f6a93.test_parameter_files.py8/8 (1 failed before). Property test 90/90.Tand the 209(b) file 35/35. YAML-key and URL checks 82/82. Medicaid folder 720. CI: 26 pass, 7 pending, 0 fail; shard 3 passes. - Other items. None depended on the changed files. SA1-SA3, G1, G2, G4-G7 and G9 refer to unchanged files, so their line numbers hold and the fixes marked "ran" (at
928c372043) still apply. G3 now applies to the moved Idaho files. G8 still applies: the default stays silent.
Branch Status
- The branch is 7 commits ahead and 6 behind
main(8ea43422e6). It is MERGEABLE. The 6 commits change the pregnancy income limit (#10365) and Idaho's CTC, and no file or reader of this PR. - Merge order: #10374, then #10373, then this PR.
- #10374 adds Wisconsin medically needy at 100% FPL from 2019-09-01 and Vermont's 2026 PIL of $1,375. Without it, this PR removes coverage in the model for a band of people (G1).
- #10373 (WV and ND at the SSI rate, approved). It conflicts in
L/individual.yamlandL/couple.yaml, one hunk each: #10373 removesWV, and this PR removes the adjacentWI. After #10373 merges, mergemaininto this branch and delete both theWVand theWIentries in that hunk, so that neither stays. A keptWIwould leave the old 0.83 / 1.00 share as dead data. This PR has no WV edit of its own. The resolved tree passed the guard and property tests (98) and the Medicaid folder (708). #10373's other shared files merge cleanly. - #10361 and #10386 (which contains #10361). A text dry run at their current heads (
b5e2f0256c,88851f01eb) gives three conflicts. (a) Line 1 ofL/individual.yamlandL/couple.yaml: combine both sentences. (b) Thereferencetuple atV:14-21: keep all five new URLs. (c) The line above theselect: take #10361'ssets_ssi_rate/covers_group/uses_ssi_ratelines and comment, then this PR's block. (a) and (b) are new since the body was written. (c) passed at #10361's earlier head (98 and 711).covers_non_ssi_recipientsis true for the five states, so the new branch is not shadowed. - #10364 merges cleanly (98 and 758). #10370 and #10374 share no file with this PR.
What the PR gets right
- All 2018-2026 monthly limits for the five states equal the source tables. None of the five uses a share of the poverty guideline for this group.
- Chaining Alaska's $1,047 / $1,551 from 2004 by each Social Security COLA, rounded to the nearest dollar, reproduces all nine published values. So the 2018-2019 need standard and the 2020+ Expanded Refused Cash limit are one 7 AAC 40.310 series, as the body says.
- Idaho is below-only under IDAPA 16.03.05.500 ("are more than their income"); AK, NH, VT and WI stay at-or-below. Both match the sources.
- NH, VT and WI reuse state parameters, so SSI and supplement changes flow through. The removed shares have no other reader. The formula is vectorized, with no hard-coded amounts.
- The tests use real boundaries (an AK couple at the standard, an ID individual at the allowance, a WI individual $0.64 a year over) and kill 13 of 20 mutations.
- The body is accurate on values, sources, known limits,
vt_aabdside effects and merge order. No partner test is edited. The changelog fragment is correct.
Critical (Must Fix)
None open. C1 is resolved at 62b72f6a93 (see "Changed since the analysis").
Should Address
SA1. Alaska's 2027 standard is $1 too high under 7 AAC 40.310(c).
- Where:
AKS/individual.yaml:14-26andAKS/couple.yaml:14-26. The values end at 2026; later years usegov.ssa.uprating, rounded to the nearest dollar. - Evidence: 40.310(c) raises the standards "by a percentage equal to the annual percentage increase in Social Security benefits." The 2027 COLA is 3.6 percent, so $1,845 × 1.036 → $1,911 and $2,732 × 1.036 → $2,830. The model applies the CPI-W ratio 1.036187 and gives $1,912 / $2,831, so a 2027 individual at $1,912 and a couple at $2,831 are income-eligible but $1 over under the rule. Nearest-dollar rounding matches 9 of 9 published years.
- Why SA: the method contradicts a clear rule and the COLA is published, so the body's note does not cover it. Not critical: it is a projection, and the band is $1 wide.
- Fix (ran; keep the uprating for 2028 and later):
# AKS/individual.yaml, after 2026-01-01: 1_845
# 7 AAC 40.310(c): $1,845 x 1.036 (2027 COLA), rounded to the nearest dollar.
2027-01-01: 1_911
# AKS/couple.yaml, after 2026-01-01: 2_732
# 7 AAC 40.310(c): $2,732 x 1.036 (2027 COLA), rounded to the nearest dollar.
2027-01-01: 2_830
# both files, add to reference
- title: SSA, 2027 Cost-of-Living Adjustment (COLA) Fact Sheet (3.6 percent COLA for 2027)
href: https://www.ssa.gov/news/en/cola/factsheets/2027.htmlWith the fix, $1,912 and $2,831 are ineligible in 2027, and $1,911 and $2,830 stay eligible.
SA2. Wisconsin's 2018-2025 limits rest on a back-filled 2026 supplement.
- Where:
WIS/individual.yaml:3andWIS/couple.yaml:3(first value2026-01-01).L/uses_state_standard.yaml:133-134turns Wisconsin on from 2018-01-01, andV:66,80reads the supplement. - Evidence: the parameter has no value before 2026, so 2018-2025 reuse the 2026 entry. The values are right: Ops Memo 26-12 page 2 says the supplements "had previously been unchanged since 1994", and MEH Release 18-01 gives $833.78 / $1,257.05 for 2018. But the file neither dates nor sources those years.
- Why SA: a switch that turns on before the parameter it reads has a value is a pattern violation. The value is right, so it is not a value mismatch.
- Fix (ran;
wi_ssp_regularalso reads this parameter, and its results and the WI SSP tests do not change):
# WIS/individual.yaml (couple.yaml: 132.05 and 145.26)
values:
# Unchanged since 1994 (Operations Memo 26-12).
2018-01-01: 83.78
2026-05-01: 92.16
# both files, add to reference
- title: Wisconsin Medicaid Eligibility Handbook 39.4.1, Release 18-01 (2018 SSI payment level with the state supplement, $833.78 and $1,257.05)
href: https://www.emhandbooks.wisconsin.gov/meh-ebd/history/18-01/18-01_39.4.htmSA3. The tests do not pin Vermont's couple history, Vermont's 2024 change or Alaska before 2020.
- Where:
VTA/couple.yaml:19-21,VTA/individual.yaml:21,AKS/individual.yaml:6-7,AKS/couple.yaml:6-7. Append toTafterT:620. - Evidence: four changes survive all 67 cases in the three test files that read this limit: VT 2017 couple $98.88 → $98.89, either VT
2024-01-01date moved to 2025, and AK 2019 couple $2,121 → $2,122. Alaska is tested only in 2026, although its 2018-2019 values come from the APA need standard. - Why SA: missing edge cases for an already-tested variable.
- Fix (ran: all pass at the head, and each fails on the change it pins; values from DVHA 2024 page 7 and the APA standards PDF):
- name: Vermont couple uses the $98.88 AABD couple supplement before 2024
period: 2023
input:
people:
person1:
age: 70
person2:
age: 70
tax_units:
tax_unit:
members: [person1, person2]
tax_unit_is_joint: true
marital_units:
marital_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: VT
output:
# (1,371 + 98.88) x 12
medicaid_optional_senior_or_disabled_income_limit: [17_638.56, 17_638.56]
- name: Vermont uses the $55.68 and $105.80 AABD supplements from 2024
period: 2024
input:
people:
person1:
age: 70
person2:
age: 70
person3:
age: 70
tax_units:
tax_unit1:
members: [person1]
tax_unit2:
members: [person2, person3]
tax_unit_is_joint: true
marital_units:
marital_unit1:
members: [person1]
marital_unit2:
members: [person2, person3]
households:
household1:
members: [person1]
state_code: VT
household2:
members: [person2, person3]
state_code: VT
output:
# (943 + 55.68) x 12; (1,415 + 105.80) x 12
medicaid_optional_senior_or_disabled_income_limit:
[11_984.16, 18_249.6, 18_249.6]The Alaska case is the second case with period: 2019, state_code: AK in both households, the name "Alaska uses the Adult Public Assistance need standard in 2019", and this output:
output:
# 1,432 x 12; 2,121 x 12
medicaid_optional_senior_or_disabled_income_limit: [17_184, 25_452, 25_452]Suggestions
G1. Merge only after #10374.
- Where: merge order. This PR removes the WI (1.00) and VT (0.80) shares from
L/individual.yamlandL/couple.yaml. - Evidence: in a 2026 probe, a WI individual with $1,200 a month of countable income, a WI couple with $1,700 and a VT individual with $1,055 get
medicaid_categoryNONE at the head,SENIOR_OR_DISABLEDat the merge base, andMEDICALLY_NEEDYwith #10374 merged in. Alone, this PR removes Medicaid in the model for WI individuals at $1,077.79-$1,330 and VT individuals at $1,049.69-$1,064 a month. - Why a suggestion: the law is encoded correctly, and the body already says to merge after #10374. Nothing enforces the order.
- Fix: hold the merge until #10374 is on
main, or rebase onto it.
G2. Wisconsin's May 2026 supplement increase does not reach 2026.
- Where:
V:66,80; the comment atL/uses_state_standard.yaml:130-132. - Evidence: Ops Memo 26-12 page 2 raises the supplement to $92.16 / $145.26 from May 1, 2026. The annual variable reads January 1, so 2026 is $8.38 / $13.21 a month low for May-December.
- Why a suggestion: the body documents it, and with #10374 these people are medically needy with no deductible.
- Fix (comment only), after line 132:
# NOTE: The supplement rose to $92.16 and $145.26 on May 1, 2026 (Operations
# Memo 26-12). This annual limit reads January 1, so 2026 uses the January
# amounts and the increase applies from 2027.G3. Idaho couple amount: the title's arithmetic does not give +$0, and the DHW title adds a fact the page does not state.
- Where:
L/state_standard/id/couple.yaml:2,18andL/state_standard/id/individual.yaml:18. - Evidence: with the 2000 SSI couple rate of $769, the title's arithmetic ($768 plus each SSI couple increase) gives the SSI couple rate minus $1. The encoded +$0 follows TN 18-0002 and DHW, which IDAPA 16.03.05.501.02 allows: "The increase may be rounded up." The DHW page does not mention a $20 disregard.
- Fix (comment and title only):
# couple.yaml, line 2
# Idaho: the AABD basic allowance, equal to the SSI couple rate. IDAPA
# 16.03.05.501.02 says "The increase may be rounded up", and TN 18-0002 sets
# the couple level equal to the SSI couple's amount.
# both files, DHW title
- title: Idaho Department of Health and Welfare, Medicaid Program Income Limits, AABD Cash and AABD Medicaid (January 2026, $1,047 and $1,511 gross; $1,027 and $1,491 after the IDAPA 16.03.05.540 $20 disregard)Also use a Wayback capture for the DHW href, because the live page rolls forward.
G4. Cite a source for Vermont's 2019-2022 supplement.
- Where:
VTA/individual.yaml:9-15andVTA/couple.yaml:9-15. - Evidence: the references cover 2017-2018 and 2023-2024. DCF bulletins B18-14 to B21-16 (page 2) show $52.04 / $98.88, so the values are right.
- Fix (ran):
- title: Vermont DCF Bulletin 21-16, P-2740A SSI/AABD Payment Maximums (effective January 1, 2021 and 2022)
href: https://outside.vermont.gov/dept/DCF/Shared%20Documents/ESD/Rules-Adopted/B21-16.pdf#page=2G5. Add #page=1 to the Alaska APA standards PDF link.
- Where:
AKS/individual.yaml:31andAKS/couple.yaml:31. - Evidence: the PDF has one page and the values corroborate, but the repo rule puts the file page on every PDF href.
- Fix:
href: https://web.archive.org/web/20210102211125/http://dpaweb.hss.state.ak.us/POLICY/PDF/APA-Standards.pdf#page=1
G6. Cite the Idaho, Vermont and Wisconsin rules in the variable, and the at-or-below rules where the flags are set.
- Where:
V:14-21;L/requires_income_below_limit.yaml:8-32, whosefalsevalues for AK, NH, VT and WI (lines 34-35, 94-95, 126-127, 130-131) this PR now relies on. - Evidence: the variable cites 7 AAC 40.310 and He-W 800, but not IDAPA 16.03.05.501, HBEE § 8.05(b) or DHS 103.04(1)(c), which the formula also encodes. The at-or-below wording for AK, VT and WI is not cited in the flag file.
- Fix (references only; run
code_health/test_reference_urls.pyafter):
"https://adminrules.idaho.gov/rules/current/16/160305.pdf#page=39",
"https://humanservices.vermont.gov/sites/ahsnew/files/documents/HBEE-Part-2-Eligibility-Standards.pdf#page=10",
"https://docs.legis.wisconsin.gov/code/admin_code/dhs/101/103/04/1/c", - title: 7 AAC 40.230 - Income eligibility (income "may not exceed the amounts specified in 7 AAC 40.310")
href: https://www.law.cornell.edu/regulations/alaska/7-AAC-40.230
- title: "Vermont HBEE Rules § 8.05(b) (income \"at or below the SSI/AABD payment level\") #page 10-11"
href: https://humanservices.vermont.gov/sites/ahsnew/files/documents/HBEE-Part-2-Eligibility-Standards.pdf#page=10
- title: Wisconsin Medicaid Eligibility Handbook 24.1 - Categorically needy income test (income that "does not exceed" the standard)
href: https://www.emhandbooks.wisconsin.gov/meh-ebd/policy_files/24/24.1.htmFor NH, cite MAM 601 Table A, which the body uses for the Medicaid boundary.
G7. Say in the Alaska description that Medicaid uses this amount.
- Where:
AKS/individual.yaml:1,19andAKS/couple.yaml:1,19. - Evidence: the description and label call it the APA "income eligibility standard". From 2020 the APA need standard equals the payment standard ($1,356 in 2026), and the 40.310 series continues only as the Medicaid Expanded Refused Cash limit (Addendum 1; 530 C). Only the values comment says so; a later reader could use it for the APA cash test.
- Fix (use "a couple" and "(couple)" in
couple.yaml):
description: Alaska sets this amount as the 7 AAC 40.310 income eligibility standard for an individual, which Medicaid uses as the income limit for aged and disabled people who are eligible for but do not receive cash assistance.
label: Alaska 7 AAC 40.310 income eligibility standard (individual)G8. Say that every flagged state needs a branch.
- Where:
V:74-83. The Missouri branch usesStateCode.MO(V:41); the new branches compare strings. - Evidence: a state flagged later in
uses_state_standardwithout a branch gets the SSI rate plusdefault=0, with no error.test_state_standard_states_match_their_rulespins the five states, which limits the risk. - Fix (comment only), above
monthly_amount = select(:
# Each state flagged in uses_state_standard needs a branch here (or the
# Alaska branch below); otherwise it gets the SSI rate alone.G9. Add one vt_aabd case before 2026.
- Where:
VTA/individual.yaml:19-21;policyengine_us/tests/policy/baseline/gov/states/vt/dcf/aabd/vt_aabd.yaml. - Evidence: the PR moves
vt_aabdfor 2017-2023 from the back-filled $55.68 / $105.80 to $52.04 / $98.88, andvt_aabdfeeds SNAP and HUD income. All 54 Vermont AABD cases use 2026 or 2026-01. - Fix (not run; Case 1 of that file with an earlier period):
- name: Independent individual in 2023 gets the $52.04 supplement.
period: 2023-01
absolute_error_margin: 0.01
input:
state_code: VT
age: 65
output:
vt_aabd: 52.04Investigated and cleared
T:419cites "(7 AAC 40.230)" for "may not exceed". Correct: 40.230 uses those words and points to 40.310.- New Hampshire. $994 + $27 − $13 = $1,008 and $1,491 + $21 − $20 = $1,492, as in MAM 601 Table A. #10364 keeps the $13 / $20 disregard.
- CI at
928c372043. The failure was C1, not the known Montana test.
Out of scope / follow-up
- Idaho's AABD cash allowance is still $545 / $768 (#10462).
- Documented simplifications: AK couples with one eligible spouse in 2018-2019; the WI shelter cap before August 2020; an ID spouse with an ineligible spouse; the WI "couple, one spouse eligible" supplement ($130.43).
- Other Vermont living arrangements back-fill their 2026 amounts (2021 another's household: $39.30 in B21-16, $42.05 in the model). Before 2018, the five states back-fill the 2018 values.
gov.ssa.ssi.amountuprates without whole-dollar rounding from 2028 (pre-existing). New York has its own PR. The microsimulation was not run.
Validation Summary
| Check | Result |
|---|---|
| CI | 928c372043: 2 fail (shard 3 and its aggregator; C1). 62b72f6a93: 26 pass, 7 pending, 0 fail |
Local tests at 62b72f6a93 |
guard 8/8; property 90/90; T + 209(b) 35/35; YAML-key and URL checks 82/82; Medicaid folder 720 |
| Fix runs | C1 fix: 180 + 32 pytest, Medicaid 703. All C1, SA and G4 fixes: 212 pytest; Medicaid, VT AABD and WI SSP 855, 0 fail |
| Partner contract tests | None edited. Read-only healthcare edge cases 70/70 |
| References and law | All added references corroborate (gaps G3-G7). All 2018-2026 values match. AK 2027 method (SA1) |
| Code and mutation | No hard-coded values. WI toggle gap (SA2). 20 mutants: 13 killed, SA3 kills 4, 3 survive (one mid-series AK value, two post-2026 projection changes) |
| Merge trials | #10373: one conflict, resolved tree passes. #10361/#10386: three text conflicts. #10364 clean |
| Branch | 7 ahead / 6 behind main; MERGEABLE |
| PR body | Accurate. axiom: line present (process note, not counted) |
| Other reviews | None |
Review Severity: REQUEST_CHANGES
Three should-address items are open (SA1-SA3). C1 is resolved, and nine suggestions are open.
Next Steps
To auto-fix issues: run the fix-pr workflow for this PR.
- Apply SA1 (AK 2027 values), SA2 (WI supplement from 2018) and SA3 (three test cases).
- Take the suggestions that you agree with.
- Run
make format, thenT, the property test and the Medicaid folder. - Merge after #10374. After #10373 merges, merge
mainand delete both theWVandWIentries in the conflicting hunk ofL/individual.yamlandL/couple.yaml. - If #10361 or #10386 merges first, resolve the three conflicts as described in Branch Status.
…irginia and North Dakota (#10373) * Use the SSI rate as West Virginia's Medicaid aged/disabled income limit West Virginia's SSI-Related/Non-Cash Assistance group (IMM § 23.11.4) covers aged, blind, and disabled people whose countable income is within the SSI Maximum Payment level (Chapter 4 Appendix A: $994 / $1,491 in 2026), not 75% of the poverty guideline. Income equal to the level qualifies, following § 4.14.3 Step 5 and SSI's "not more than" test. Part of #9734 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Use the SSI rate as North Dakota's Medicaid aged/disabled income limit N.D.A.C. 75-02-02.1-40(1)(a)(2) sets the income level for categorically needy aged, blind, or disabled recipients at the level "which establishes supplemental security income eligibility" (same text in the February 2017 edition), so the limit is the SSI individual or couple rate, not 75% of the poverty guideline. North Dakota is a 209(b) state, and the 209(b) SSI-recipient income test reads the same limit. Recipient liability is net income remaining after the level (75-02-02.1-41.1), so income equal to the level qualifies. Part of #9734 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Move the North Dakota SSI couple case to the 209(b) recipient tests The case now runs through is_209b_ssi_recipient_for_medicaid with SSI receipt, and no longer appends to the file that #10378 also extends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Record West Virginia's "under" wording as a source-conflict candidate IMM § 23.11.4 says countable income must be "under" the SSI Maximum Payment level, while SSI's income test (42 U.S.C. 1382(a)), which the optional group of 1902(a)(10)(A)(ii)(I) adopts, and the manual's own § 4.14.3 Step 5 admit income equal to it. The code follows the statute; the candidate is unreviewed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Keep both sides: PolicyEngine#10361's covers_non_ssi_recipients handling and reference, PolicyEngine#10373's ND and WV SSI-rate flags, and this PR's state standards. Delete both the WV and the WI poverty-guideline shares in limit/individual.yaml and couple.yaml, and combine their descriptions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SA1: add Alaska's 2027 7 AAC 40.310 amounts from the published 3.6% COLA. SA2: date Wisconsin's state supplement from 2018 (unchanged since 1994). SA3: test Vermont's couple history, its 2024 change and Alaska in 2019. G2-G9: May 2026 Wisconsin note, Idaho couple comment and archived DHW link, Vermont B21-16 source, APA standards page anchor, at-or-below and rule references, Alaska description, branch-per-state comment, and a 2023 vt_aabd case. Also fix the unit-test docstring's count of parameter checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for the round-2 review. All items are applied at Paths: Should address
Suggestions
Merge with
|
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Program Review
PR #10378, "Use state dollar standards for the Medicaid aged, blind and disabled income limit in AK, ID, NH, VT and WI" (hua7450). Round 2, incremental review of 62b72f6a93..1da08ea098.
IDs: C = critical, SA = should address, G = suggestion. New items continue the numbering after the highest prior ID in each class.
Paths are as in my round 1 report: V = policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medicaid_optional_senior_or_disabled_income_limit.py, L/ = policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/, AKS/ = policyengine_us/parameters/gov/states/ak/dpa/ssp/income_eligibility_standard/, WIS/ = policyengine_us/parameters/gov/states/wi/dhs/ssp/amount/, VTA/ = policyengine_us/parameters/gov/states/vt/dcf/aabd/amount/, T = policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medicaid_optional_senior_or_disabled_income_limit.yaml. Line numbers refer to the reviewed head.
Source Documents
- Reviewed head SHA: 1da08ea
- Mode: incremental (round 2)
- Scope: two commits since my review (Oct 27, 6:16pm EDT).
d0ad4625ebmergesmainatb210b45a6c, which brings #10361 (SSI-only states) and #10373 (WV and ND at the SSI rate). I checked the conflict resolution withgit show --cc: the WV and WI shares are both deleted inL/individual.yamlandL/couple.yaml, the two descriptions are combined, andVkeeps #10361'ssets_ssi_rate/covers_group/uses_ssi_ratelines before this PR's block. Theselectis unchanged.1da08ea098applies my round 1 items: 14 files, 148 insertions, 14 deletions (AKS/,WIS/,VTA/, the Idaho files,L/uses_state_standard.yaml,L/requires_income_below_limit.yaml,V,T,vt_aabd.yamland one docstring line in the property test).
- Sources I checked this round:
- SSA 2027 COLA fact sheet: "will receive a 3.6 percent COLA for 2027"; SSI $1,029 / $1,544.
- NH MAM 601: "The assistance group's net countable income cannot exceed the appropriate income limits." Table A: $1,008 / $1,492.
- WI MEH Release 18-01, 39.4: $83.78, $132.05, $833.78 and $1,257.05. MEH 24.1: income "that does not exceed the categorically needy income limit".
- 7 AAC 40.230: income "may not exceed the amounts specified in 7 AAC 40.310".
- PDF VT DCF B21-16, page 2 (text layer): Independent Living $52.04 / $98.88, "Effective 1/1/22" and "Effective 1/1/21 – 12/31/21".
- PDF IDAPA 16.03.05, page 42: § 540 "The standard disregard is twenty dollars ($20)".
- Idaho DHW income limits (live): AABD "Effective January 2026 ... $1,047 $1,511*", "Page last updated: 4-20-2026".
- Not opened: Wayback captures. The network here intercepts
web.archive.orgwith a "NetAlerts" certificate, and I did not bypass TLS. The two Wayback hrefs that changed are only a#page=1fragment (G5) and the new Idaho capture (G3). The evidence for both is in the table below.
Branch Status
- The branch is 9 commits ahead and 29 behind
main(360f63a443, Oct 29, 3:28pm EDT). It is MERGEABLE. None of the 75 files thatmainchanged since the merge is a file of this PR, and none is a Medicaid or SSA file. - CI at head: 33 pass, 0 fail, 0 pending (run 40923693180, finished 3:13pm EDT). I re-checked with
gh pr checksat 3:45pm EDT: 33 pass. - Merge order: #10361 and #10373 are merged and integrated, so steps 2 and 3 of my round 1 Branch Status are done. #10374 is still open (G1).
git merge-tree(no refs written) merges this head cleanly with #10374 (33d10a5f09), #10386 (2131da0de7) and #10364 (7f8a8a1bcf). - The body says that #10364 and #10374 "currently conflict with
mainitself". GitHub now reports both as MERGEABLE, so that sentence is out of date. This is not a finding. - Partner contract tests: none edited. The "Household API Partners" job passes.
Round 1 items
| ID | Status | Evidence |
|---|---|---|
| C1 | RESOLVED | Already resolved at 62b72f6a93. It still holds: the Idaho amounts stay scalar at L/state_standard/id/, test_parameter_files.py passes locally, and all 33 CI jobs pass. |
| SA1 | RESOLVED | AKS/individual.yaml:15-16 gives 2027-01-01: 1_911 and AKS/couple.yaml:15-16 gives 2_830, each with the 40.310(c) comment. The SSA reference is at line 42-43. The fact sheet says 3.6 percent: $1,845 × 1.036 = $1,911.42 → $1,911, and $2,732 × 1.036 = $2,830.35 → $2,830. The model gives $1,911 / $2,830 for 2027. For 2028 it gives $1,959 / $2,901, because the uprating now starts from the 2027 values. |
| SA2 | RESOLVED | WIS/individual.yaml:3-4 (2018-01-01: 83.78) and WIS/couple.yaml:3-4 (132.05), with the "Unchanged since 1994" comment. MEH Release 18-01 is at line 14-15 and shows the four amounts. The model gives $83.78 / $132.05 for 2018-2026 and $92.16 / $145.26 from 2027. wi_ssp_regular reads the same parameter, and the WI SSP folder passes (95). |
| SA3 | RESOLVED | The three cases are at T:622, T:645 and T:678, verbatim. The arithmetic holds: (1,371 + 98.88) × 12 = 17,638.56; (943 + 55.68) × 12 = 11,984.16; (1,415 + 105.80) × 12 = 18,249.60; 1,432 × 12 = 17,184; 2,121 × 12 = 25,452. Each change that I named in round 1 now fails exactly one case: VT 2017 couple $98.88 → $98.89, the VT individual or couple 2024-01-01 date moved to 2025, and AK 2019 couple $2,121 → $2,122. |
| G1 | STILL OPEN (accepted) | This is a merge-order action, not a code change, and the body leads its merge section with it. #10374 is open and MERGEABLE. At this head, a 2026 WI individual with $1,200 a month and a VT individual with $1,055 get medicaid_category NONE. On the tree merged with #10374, both get MEDICALLY_NEEDY, and people below the standard stay SENIOR_OR_DISABLED. |
| G2 | RESOLVED | L/uses_state_standard.yaml:133-135 has the May 2026 note. |
| G3 | RESOLVED | The couple comment is at L/state_standard/id/couple.yaml:2-4. The DHW title is at id/couple.yaml:20 and id/individual.yaml:18. IDAPA 16.03.05.540 is the $20 standard disregard, and $1,047 − $20 = $1,027 and $1,511 − $20 = $1,491. I could not open the new Wayback href (id/couple.yaml:21, id/individual.yaml:19) because of the network block. The live page shows the same January 2026 table and was last updated on April 20, 2026, before the October 23 capture. So I accept the author's check. |
| G4 | RESOLVED | B21-16 is at VTA/individual.yaml:14-15 and VTA/couple.yaml:14-15. Page 2 shows $52.04 / $98.88 for 2021 and 2022. |
| G5 | RESOLVED | AKS/individual.yaml:33 and AKS/couple.yaml:33 end in #page=1. |
| G6 | RESOLVED | V:23-26 adds IDAPA 16.03.05 (page 39), HBEE § 8.05(b) (page 10, with a # PDF pages 10-11 comment) and DHS 103.04(1)(c). L/requires_income_below_limit.yaml:39-46 adds 7 AAC 40.230, MAM 601, HBEE § 8.05(b) and MEH 24.1, and each quote matches its source. I agree with citing the MAM 601 page instead of Table A: the "cannot exceed" wording is on MAM 601, and the title names Table A. The URL and YAML-key checks pass. |
| G7 | RESOLVED | The description and label are at AKS/individual.yaml:1,21 and AKS/couple.yaml:1,21. |
| G8 | RESOLVED | The comment is at V:89-90. |
| G9 | RESOLVED | It is Case 17 at policyengine_us/tests/policy/baseline/gov/states/vt/dcf/aabd/vt_aabd.yaml:198-205, and the name follows that file's numbered style. Case 17 fails when the 2017 supplement becomes $52.14, and also when the $55.68 entry moves to 2023. A one-cent change stays inside the file's 0.01 margin, but the 2023 Vermont case in T catches it. |
New findings
Critical
None.
Should address
None.
Suggestions
G10. Add a test for Alaska's 2027 standard.
- Where:
AKS/individual.yaml:16andAKS/couple.yaml:16. Append the case toTafterT:708. - Evidence: SA1 added the 2027 values, but no test reads them. When I changed $1,911 to $1,912, all 45 cases in
Tandvt_aabd.yamlstill passed. My SA1 fix in round 1 did not include a test, so this gap comes from my own suggestion. - Why a suggestion: the values are correct and have a source. This is a non-blocking test improvement.
- Fix (ran: it passes at the head, and it fails when 2027 is $1,912 or when the 2027 couple entry is removed):
- name: Alaska uses the 7 AAC 40.310 standard raised by the 3.6 percent 2027 COLA
period: 2027
input:
people:
person1:
age: 70
person2:
age: 70
person3:
age: 70
tax_units:
tax_unit1:
members: [person1]
tax_unit2:
members: [person2, person3]
tax_unit_is_joint: true
marital_units:
marital_unit1:
members: [person1]
marital_unit2:
members: [person2, person3]
households:
household1:
members: [person1]
state_code: AK
household2:
members: [person2, person3]
state_code: AK
output:
# 1,845 x 1.036 = 1,911.42 -> 1,911; 1,911 x 12
# 2,732 x 1.036 = 2,830.35 -> 2,830; 2,830 x 12
medicaid_optional_senior_or_disabled_income_limit: [22_932, 33_960, 33_960]Tests run
policyengine-core testonT,is_209b_ssi_recipient_income_eligible_for_medicaid.yamlandvt_aabd.yaml: 55 passed.pytestontest_medicaid_abd_ssi_rate_standard_properties.pyandtest_parameter_files.py: 125 passed.pytestoncode_health/test_reference_urls.py,test_parameter_yaml_keys.py,test_no_concatenated_reference_urls.py,test_uprating_placement.pyandtest_known_dead_reference_urls.py: 155 passed.policyengine-core testongov/states/wi/dhs/ssp: 95 passed.- Mutations on a scratch copy: the four SA3 changes and the G9 changes each fail one case. AK 2027 $1,911 → $1,912 passes every existing case (G10). The G10 case fails on that change and when the 2027 couple entry is removed.
- Probes:
- Parameter values for 2017-2029 match the sources.
covers_non_ssi_recipientsis true for all five states, so the new branch is not shadowed.- The 14 states flagged in every year have no entry in the share files, and no unflagged state is missing.
- The G1 bands at the head and on the tree merged with #10374 give the results in the table.
Verdict
APPROVE: SA1-SA3 and the eight code suggestions are resolved, and the merge with #10361 and #10373 is correct. CI is green (33 pass). Two suggestions remain: G1 (merge after #10374) and G10 (a 2027 Alaska test). Neither one blocks.
…0240 and PolicyEngine#10378) into ca-medi-cal-asset-limit-2027 Resolves the conflicts from PolicyEngine#10374's squash: keeps main's medically needy files, adds this PR's SB 164 references and 2027-07-01 rows to the asset limits, and appends this PR's medically needy cases as Cases 31-36. medicaid_medically_needy_income_limit.yaml is main's, so it leaves this PR's diff. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Part of #9734: the dollar-standard states. #10361 handles the SSI-only states and #10373 handles West Virginia and North Dakota.
What and why
Five states test aged, blind and disabled people who don't receive SSI against a monthly dollar standard of their own. The model used a share of the poverty guideline for each of them. A share can't match a state's individual and couple amounts at once, so couples came out furthest off.
New Hampshire's 209(b) SSI-recipient test (
is_209b_ssi_recipient_income_eligible_for_medicaid) reads the same limit. SSI couples there with countable income between $1,353 and $1,492 now qualify without spenddown.Changes
income/limit/uses_state_standard(by state): true for AK, ID, NH, VT and WI from 2018-01-01.selectofmedicaid_optional_senior_or_disabled_income_limit. Monthly amounts are multiplied by 12.main:gov.states.nh.dhhs.ssp.minimum_payment_levelless this pathway's own Medicaid standard disregard (senior_or_disabled.income.disregard, $13 / $20), the He-W 858.03(e) method;gov.states.vt.dcf.aabd.amount.*.INDEPENDENT;gov.states.wi.dhs.ssp.amount, now dated from 2018-01-01 ($83.78 / $132.05, unchanged since 1994 per Ops Memo 26-12; MEH Release 18-01).wi_ssp_regularreads the same parameter, and its values don't change;income/limit/state_standard/id.{individual,couple}, which hold amounts no state program parameter has (+$33 / +$0).gov.states.ak.dpa.ssp.income_eligibility_standard.{individual,couple}.gov.ssa.upratingand rounded to the nearest dollar.gov.states.vt.dcf.aabd.amountINDEPENDENT gains $52.04 / $98.88 from 2017-01-01 and $55.68 / $105.80 from 2024-01-01 (DCF Bulletins 17-26 and 21-16; DVHA 2024). See the side effects below.requires_income_below_limit: ID is now true (IDAPA 16.03.05.500, below).is_optional_senior_or_disabled_income_eligiblenow names Idaho with Oregon.income/limit/individual.yamlandcouple.yaml: AK, ID, NH, VT and WI shares are removed, since the new standards replace them in every year.test_medicaid_abd_ssi_rate_standard_properties.py:uses_state_standardflags match the five states;Where the issue's description changed after reading the sources
From August 2020 that is a fixed amount (Ops Memo 20-13).
Before then it was a base amount plus the person's shelter costs up to a cap. The base plus the cap equals SSI plus the supplement in each year:
The model uses the cap for 2018 to July 2020, which is exact for anyone whose shelter costs reach it.
The state supplement rose to $92.16 / $145.26 on 2026-05-01 (Ops Memo 26-12). The variable is annual, so the model uses that amount from 2027.
Side effects of the Vermont history
vt_aabd(Vermont SSP) for 2017-2023 now uses the sourced independent-living supplement, $52.04 / $98.88, instead of the backfilled 2026 amount.vt_aabdcounts as unearned income for SNAP and HUD, so Vermont SSP recipients' SNAP and HUD amounts in those years move with it.vt_aabd_ep(the essential-person grant) combines the INDEPENDENT amounts with the HOUSEHOLD_OF_ANOTHER amount and the 2026 essential-person rates, so before 2026 it mixes sourced and backfilled values.Sources
Page numbers are PDF file pages. Every 2026 amount was re-read at the source on 2026-10-21, and again in a local review on 2026-10-26.
None of the five state plans covers the poverty-level group of 42 U.S.C. 1396a(m), which is where a share of the poverty guideline would come from.
Merge order and dependencies
Merge this PR after #10374, which carries two medically needy updates this PR relies on. Without them, people who keep coverage today through the old poverty-guideline shares lose it:
mainis still the 2018 PIL of $1,041. Without Update Medicaid medically needy limits and switch on AR, IA, IL, NJ and ND #10374, a single person with countable income between $1,049.68 and $1,064 a month in 2026 would lose coverage once this PR drops Vermont's 0.80 share.main, and this head mergesmainatb210b45a6c. Both sides are kept:covers_non_ssi_recipientshandling and its reference;uses_ssi_federal_benefit_rate;income/limit/individual.yamlandcouple.yamlare both deleted, and the two description sentences are combined.covers_non_ssi_recipientsis true for all five states here, so the new branch is not shadowed.mainitself, in test files this PR doesn't touch; those conflicts are theirs to resolve.Not changed here
state_standardfor 2018-2022. New York stays at 0.82 here.id_aabdonmainuses the 2000 basic allowance ($545 / $768) without the IDAPA 16.03.05.501 cost-of-living increases. The 2026 allowance should be $1,027 / $1,491. This PR encodes the same allowance for Medicaid only; the cash program fix is Idaho AABD basic allowance misses the SSI cost-of-living increases since 2001 (IDAPA 16.03.05.501) #10462.gov.ssa.uprating, which can differ by a dollar from applying each year's rounded COLA percentage.Test plan
medicaid_optional_senior_or_disabled_income_limit.yaml:vt_aabd.yamlCase 17: an independent individual in January 2023 gets the $52.04 supplement.is_209b_ssi_recipient_income_eligible_for_medicaid.yaml: a New Hampshire SSI couple with $1,420 a month of countable income is under the $1,492 standard and qualifies without spenddown.test_medicaid_abd_ssi_rate_standard_properties.pychecks theuses_state_standardflags for 2018-2026.requires_income_below_limit.make format.changelog.d/.No partner test has an aged, blind or disabled person in these states. The microsimulation impact was not run.
axiom: TheAxiomFoundation/rulespec-us#1934 queued
🤖 Generated with Claude Code