Repository navigation
Correct Rhode Island pregnancy Medicaid routing and postpartum coverage - #10391
Conversation
…n amendments Kentucky's CHIP pregnancy group starts July 1, 2022 at 218% FPL (KY-21-0001, 907 KAR 4:030). West Virginia's CHIP group and 185% Medicaid standard start July 1, 2019 (WV-19-0006, WV-19-0004). Colorado, New Jersey and Rhode Island store the disregard-inclusive CHIP limits from 2018, Colorado's FCEP option starts January 1, 2025, and Rhode Island's Medicaid pregnancy limit stays at 195% FPL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…into fix-chip-pregnant-income-limit-dates
…ources - Add boundary cases that pin the corrected WV CHIP, WV Medicaid, NJ, RI, KY and Colorado FCEP limits on both sides, plus KY 2021 and CO 2019. - Replace the dead New Jersey notice link with the medicaid.gov 1115 amendment request and add the current Rhode Island rule version. - State the five percentage point disregard (42 CFR 435.603(d)(4)) in the descriptions, cite the older Colorado rule text and CO-26-0047, and explain the January 1 read and the Colorado FCEP end date. - Assert the Colorado FCEP downstream CHIP result, rename three cases, and give each person in Cases 9-11 and 13 their own units. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ncome-limit-dates
…ription verb, 907 KAR pages Add the West Virginia Medicaid-to-CHIP hand-off pair with computed income (Cases 21-22), give the Medicaid pregnancy limit description a verb, and add file page 3 (the version date) to the 907 KAR 4:030 page list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ys branch Keep PR 10365's test cases in place and renumber this branch's appended Rhode Island cases after them: Cases 23-24 in is_chip_eligible_standard_pregnant_person.yaml and Cases 17-23 in is_pregnant_for_medicaid.yaml. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t federal share - End Rhode Island's postpartum continuation in the month in which the 12-month period beginning on the last day of pregnancy ends (42 U.S.C. 1396a(e)(16), SPA RI-22-0024), and record the 1115 wording as an unreviewed source-conflict candidate. - Keep the day-count postpartum route in every state and add the Rhode Island continuation on top of it. - Give RIte Start continuations no Title XIX match. - Move the third-party coverage list to a parameter, cast the months parameter, cite the 1115 Budget Population 6b approval, and fix the affected tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sland pathways branch Keep both sides of source_conflicts/candidates.yaml: main's updated entries and this branch's us-ri:medicaid-postpartum-end-month candidate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…al match, narrow the end-month candidate - Case 17 person 3 is 400 days postpartum (pregnancy ended 2022-11-27), so the case holds whether Rhode Island's postpartum_coverage is 60 or 365 days. - The continuation's day-count comment no longer assumes 60 days. - Rhode Island postpartum continuations get no Title XIX match unless the pregnancy was covered by Medicaid and the enrollee meets Medicaid immigration requirements; add a CHIP-history and an undocumented Medicaid-history case. - Limit the us-ri:medicaid-postpartum-end-month candidate to 1115 Budget Populations 6a and 6b. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
907 KAR 4:030 Section 2(1)(b) limits KCHIP Phase III to lawfully present immigrants, while the KY-21-0001 state plan covers targeted low-income pregnant individuals at 195-213% FPL. The code follows the state plan; the candidate awaits a project sign-off. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve is_pregnant_for_medicaid.yaml by keeping main's postpartum cases from #10241 and appending this branch's West Virginia cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-dates' into fix-ri-pregnancy-medicaid-pathways Brings in #10365's head ae4dc7a, which includes main with #10241. is_pregnant_for_medicaid.yaml keeps main's #10241 cases and #10365's West Virginia cases, followed by this branch's Rhode Island block. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main's #10241 cases now precede the block, so Cases 17-23 become 34-40. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ncome-limit-dates Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The candidate is now ruled under agency-breaks-ties and follows gap-fill: KRS 205.6485 is silent on immigration status, the children's rule has the same form, and the 2022 impact analysis describes the group by income and implements the state plan amendment. The example moves to 210% FPL, above Kentucky's pregnancy Medicaid limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in the Social Security state backend fix for Core 3.33.13 (#10504). 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>
…y-medicaid-pathways Brings in main's CI fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Program Review
PR #10391, "Correct Rhode Island pregnancy Medicaid routing and postpartum coverage" (hua7450). Round 1, full review.
IDs: C = critical, SA = should address, G = suggestion.
Paths: under policyengine_us/variables/gov/, S = hhs/chip/is_chip_eligible_standard_pregnant_person.py, FS = hhs/medicaid/costs/medicaid_federal_share.py, ME = hhs/medicaid/eligibility/is_medicaid_eligible.py, FC / NFC = hhs/medicaid/eligibility/categories/pregnant/is_pregnant_for_medicaid_fc.py / _nfc.py, RI/ = states/ri/eohhs/medicaid/. RIP/ = policyengine_us/parameters/gov/states/ri/eohhs/medicaid/; IL = policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/pregnant/income_limit.yaml; SC = source_conflicts/candidates.yaml. Tests under policyengine_us/tests/policy/baseline/gov/: TS = hhs/chip/is_chip_eligible_standard_pregnant_person.yaml, TP = hhs/medicaid/eligibility/categories/is_pregnant_for_medicaid.yaml, TME = hhs/medicaid/eligibility/is_medicaid_eligible.yaml, TFS = hhs/medicaid/costs/medicaid_federal_share.yaml, TRI = states/ri/eohhs/medicaid/ri_medicaid_postpartum_eligible.yaml. Line numbers refer to the reviewed head.
Source Documents
- Reviewed head SHA: 0cc897f
- Mode: full
- Scope: this PR's own changes (22 files, +1052/-11), measured against #10365's final head
501704d5a5. The analysis ran at1c78751418. The head then moved only by a merge of #10365's final head, which changed one file in scope (SC, #10365's Kentucky entry). The other 21 files are byte-identical; all checks and fixes were re-run at the head. - Rhode Island: R.I. Gen. Laws § 42-12.3-3(b), (g); 210-RICR-30-00-1, version effective August 17, 2025 (S3 PDF, pages 5-7 and 19), and its six earlier versions (2018-2024).
- CMS (as images): 1115 approvals of 2013 (page 2), March 2024 (page 11), December 2024 (page 6), November 2025 (pages 1, 3, 15); RI-22-0024 (pages 2, 7), RI-22-0025 (page 4), RI-22-0026 (page 2).
- Federal: 42 U.S.C. 1396a(e)(16), 1396d(b) and (y), 1397jj(b)(1)(C); SHO 21-007 Q3, Q6, Q22.
Branch Status
- Main merge. #10365 merged by squash (
069a10f762) on 2026-10-27, and this PR now targetsmain. The branch conflicts withmain(8ea43422e6) in 3 hunks: the RI references inIL,TSlines 659-795 andTPlines 614-885. In each hunkmain's side is empty. Mergemain(do not rebase) and keep this PR's side; the three files then equal the reviewed head. Confirm the scope:git diff --stat main...HEADmust list only this PR's 22 files (+1052/-11). - CI. No checks have run, because the PR targeted #10365's branch. CI must run and pass after the
mainmerge. - #10371 (head
f4b4586844) conflicts in one hunk, thereturnblock ofS:& ri_insurance_eligible ) | person("ri_chip_postpartum_eligible", period.first_month)against& ~has_disqualifying_coverage ). Pavel's #10371 review expects it. Body item (c) plans to keep& ~has_disqualifying_coverageand the CHIP continuation and drop the RI gate. That passes the tests but leaves an RI coverage gap. SA2 corrects it; the #10371 review repeats plan (c) and needs the same correction. - #10363 (head
05526a4381) conflicts in thedocumentationattribute ofSand in 6 hunks ofTS. The body names only the renumbering (G2).
What the PR gets right
- The calendar rule is exact: 52,608 end-date x month checks against an independent 1396a(e)(16) implementation gave 0 mismatches, leap days included.
- The insured/uninsured split is right in every year tested (2018-2026). The insured route first appears in the rule on August 17, 2025, as the body says.
- Removing RI's
2023-01-01: 2.58Medicaid entry matches CMS. There is no dual CHIP and Medicaid enrollment or dependency cycle, and take-up is respected. - Of 30 code mutants, 26 fail the tests, 3 are equivalent (G6) and 1 survives (SA3).
- The references corroborate, and the 1115 end-month wording is recorded honestly in
SC. No partner test is edited.
Critical (Must Fix)
C1. The state-funded continuation displaces federally matched routes.
- Where:
FS:37-54(the zero match is the firstselectbranch);ME:23-25,58,FC:40-45,NFC:18-24(every history enters eligibility and PREGNANT);S:48,60andis_chip_fcep_eligible_person.py:73,98(~is_medicaid_eligible). - Evidence (RI 2024, end date 2023-03-07, takes up Medicaid; A, B and E decline CHIP):
| Person | Head | History NONE | |
|---|---|---|---|
| A | RITE_START, FCEP or CHIP, 120% FPL | PREGNANT, share 0 | ADULT, 0.9 |
| B | RITE_START or CHIP, pregnant, 150% | PREGNANT, 0 | PREGNANT, 0.5501 |
| C | RITE_START or FCEP, pregnant, 230%, uninsured | Medicaid, 0, no CHIP | CHIP |
| D | FCEP or RITE_START, undocumented, pregnant, 200% | Medicaid, 0, no CHIP | CHIP FCEP |
| E | CHIP history, SSI recipient | SSI, 0 | SSI, 0.5501 |
- Law: § 42-12.3-3(g) uses state-only funds "only if federal financial participation is not available". § 1.6(A)(2)(d)(1) (PDF page 6) limits the extension to people "not eligible for Medicaid under another Medicaid eligibility category". Under § 1.6(A)(2)(b)(1) and (c), a new pregnancy in the CHIP band is CHIP. 42 U.S.C. 1397jj(b)(1)(C) bars CHIP only for Title XIX eligibility, which a state-funded continuation is not. HSI funds "cannot supplant Medicaid" (RI-22-0026 page 2).
- CHIP and FCEP histories with no other route rightly get 0 and stay in CHIP (CS27); the fix keeps that.
- Why CRITICAL: a regulatory mismatch with confirmed wrong values. The "Limitation" note does not save a choice that contradicts a clear rule. Microsimulation is unchanged (history defaults to NONE).
- Fix (ran: changed files plus new cases 129 passed; Medicaid, CHIP, RI and partner healthcare, read-only, 1,489; pytest 248;
ruffclean; the new cases fail at the head). NewRI/ri_medicaid_state_funded_postpartum_eligible.py:
from policyengine_us.model_api import *
from policyengine_us.variables.gov.hhs.medicaid.income.medicaid_income_level import (
medicaid_income_eligible,
)
class ri_medicaid_state_funded_postpartum_eligible(Variable):
value_type = bool
entity = Person
label = "Eligible for Rhode Island postpartum Medicaid outside the pregnancy group"
documentation = (
"Rhode Island's 12-month postpartum continuation for people whose "
"pregnancy was not covered by Medicaid, or who lack Medicaid "
"immigration status. It does not apply while a new pregnancy "
"qualifies for Title XXI coverage that the person takes up."
)
definition_period = YEAR
defined_for = StateCode.RI
reference = (
"https://webserver.rilegislature.gov/Statutes/TITLE42/42-12.3/42-12.3-3.htm",
"https://risos-apa-production-public.s3.amazonaws.com/EOHHS/REG_13314_20250728104245127.pdf#page=5",
"https://www.medicaid.gov/CHIP/Downloads/RI-22-0026.pdf#page=2",
)
def formula(person, period, parameters):
continuation = person("ri_medicaid_postpartum_eligible", period.first_month)
coverage = person("ri_pregnancy_coverage", period)
pregnancy_group = (coverage == coverage.possible_values.MEDICAID) & person(
"is_medicaid_immigration_status_eligible", period
)
state = person.household("state_code", period)
chip_limit = parameters(period).gov.hhs.chip.pregnant.income_limit[state]
title_xxi_pregnancy = (
person("is_pregnant", period)
& medicaid_income_eligible(person, period, parameters, chip_limit)
& person("takes_up_chip_if_eligible", period)
)
return continuation & ~pregnancy_group & ~title_xxi_pregnancyEdits:
# FC:40-42 and NFC:18-20 (only a Medicaid pregnancy keeps the group, SHO 21-007 Q6)
coverage = person("ri_pregnancy_coverage", period)
ri_postpartum_eligible = person(
"ri_medicaid_postpartum_eligible", period.first_month
) & (coverage == coverage.possible_values.MEDICAID)
# ME:23-25
ri_postpartum_eligible = person(
"ri_medicaid_state_funded_postpartum_eligible", period
)
# FS:37-46
federally_matched_route = (category != categories.NONE) & person(
"is_medicaid_immigration_status_eligible", period
)
no_federal_medicaid_match = (
person("ri_medicaid_state_funded_postpartum_eligible", period)
& ~federally_matched_route
)In FS:17-18, replace "The zero match applies even if the enrollee also meets another federally matched group." with "An enrollee who also meets a federally matched group keeps that group's match." Delete the body's "Limitation:" sentence. Three expectations change: TP Case 34 is_pregnant_for_medicaid: [false, false], medicaid_category: [NONE, INFANT] (rename it: the parent stays in CHIP outside the pregnancy group); TP Case 38 is_pregnant_for_medicaid: [true, false, false, false]; TFS "RIte Start continuation has no Title XIX match for a citizen" medicaid_category: NONE. New cases (flow-style maps; they parse as block style does):
# TFS, append. 210-RICR-30-00-1 § 1.6(A)(2)(d)(1), PDF page 6.
- name: Rhode Island non-Medicaid pregnancy histories keep the match of a federally matched group the person meets.
period: 2024
input:
people:
person1: {age: 30, immigration_status: CITIZEN, ri_pregnancy_coverage: RITE_START, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 1.2, takes_up_medicaid_if_eligible: true}
person2: {age: 30, immigration_status: CITIZEN, ri_pregnancy_coverage: FCEP, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 1.2, takes_up_medicaid_if_eligible: true}
person3: {age: 30, immigration_status: CITIZEN, is_pregnant: true, ri_pregnancy_coverage: RITE_START, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 1.5, takes_up_medicaid_if_eligible: true}
person4: {age: 30, immigration_status: CITIZEN, ri_pregnancy_coverage: CHIP, ri_medicaid_pregnancy_end_date: "2023-03-07", is_ssi_recipient_for_medicaid: true, medicaid_household_size: 2, medicaid_income_level: 0.5, takes_up_medicaid_if_eligible: true, takes_up_chip_if_eligible: false}
households:
household: {members: [person1, person2, person3, person4], state_code: RI}
output:
medicaid_category: [ADULT, ADULT, PREGNANT, SSI_RECIPIENT]
medicaid_enrolled: [true, true, true, true]
medicaid_federal_share: [0.9, 0.9, 0.5501, 0.5501]
# TS, append. § 1.6(A)(2)(b)(1), (c); 42 U.S.C. 1397jj(b)(1)(C).
- name: Case 25, a new Rhode Island pregnancy in the CHIP band moves a state-funded continuation to CHIP.
period: 2024
input:
people:
person1: {age: 30, immigration_status: CITIZEN, is_pregnant: true, ri_pregnancy_coverage: RITE_START, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 2.3, takes_up_chip_if_eligible: true}
person2: {age: 30, immigration_status: UNDOCUMENTED, is_pregnant: true, ri_pregnancy_coverage: FCEP, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 2.0, takes_up_chip_if_eligible: true}
person3: {age: 30, immigration_status: CITIZEN, is_pregnant: true, ri_pregnancy_coverage: RITE_START, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 2.3, takes_up_chip_if_eligible: false}
person4: {age: 30, immigration_status: CITIZEN, is_pregnant: true, ri_pregnancy_coverage: MEDICAID, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 2.3, takes_up_chip_if_eligible: true}
households:
household: {members: [person1, person2, person3, person4], state_code: RI}
output:
is_medicaid_eligible: [false, false, true, true]
is_chip_eligible_standard_pregnant_person: [true, false, false, false]
is_chip_fcep_eligible_person: [true, true, false, false]
chip_enrolled: [true, true, false, false]
# New file: ri_medicaid_state_funded_postpartum_eligible.yaml, next to TRI
- name: Case 1, the state-funded continuation covers non-Medicaid histories and Medicaid histories without status.
period: 2024
input:
people:
person1: {immigration_status: CITIZEN, ri_pregnancy_coverage: RITE_START, ri_medicaid_pregnancy_end_date: "2023-03-07"}
person2: {immigration_status: CITIZEN, ri_pregnancy_coverage: CHIP, ri_medicaid_pregnancy_end_date: "2023-03-07"}
person3: {immigration_status: UNDOCUMENTED, ri_pregnancy_coverage: FCEP, ri_medicaid_pregnancy_end_date: "2023-03-07"}
person4: {immigration_status: UNDOCUMENTED, ri_pregnancy_coverage: MEDICAID, ri_medicaid_pregnancy_end_date: "2023-03-07"}
person5: {immigration_status: CITIZEN, ri_pregnancy_coverage: MEDICAID, ri_medicaid_pregnancy_end_date: "2023-03-07"}
person6: {immigration_status: CITIZEN, ri_pregnancy_coverage: RITE_START, ri_medicaid_pregnancy_end_date: "2022-11-27"}
households:
household: {members: [person1, person2, person3, person4, person5, person6], state_code: RI}
output:
ri_medicaid_state_funded_postpartum_eligible: [true, true, true, true, false, false]
- name: Case 2, a new pregnancy in the CHIP band ends the state-funded continuation only when CHIP is taken up.
period: 2024
input:
people:
person1: {is_pregnant: true, ri_pregnancy_coverage: RITE_START, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 2.58, takes_up_chip_if_eligible: true}
person2: {is_pregnant: true, ri_pregnancy_coverage: RITE_START, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 2.59, takes_up_chip_if_eligible: true}
person3: {is_pregnant: true, ri_pregnancy_coverage: RITE_START, ri_medicaid_pregnancy_end_date: "2023-03-07", medicaid_household_size: 2, medicaid_income_level: 2.3, takes_up_chip_if_eligible: false}
households:
household: {members: [person1, person2, person3], state_code: RI}
output:
ri_medicaid_state_funded_postpartum_eligible: [false, true, true]Should Address
SA1. The insured route before August 17, 2025 cites a 2026-2030 approval and is labelled "unverified estimates".
- Where:
IL:30-33,122;FC:26-28; the body;SC:6289-6292. - Evidence: the code applies the insured split from 2018, but the only 1115 reference covers 2026-2030 (pages 1, 15), and the rule has no insured route before August 17, 2025. In-period approvals exist and match the model in every year tested: 2013-2018, 2019-2024 and the extension through June 30, 2025. No source was found for July 1 to August 16, 2025.
- Why SA, not C: the cited sources corroborate their own periods, in-period sources exist, and the behavior is correct (as rated for the RI rule-version item in #10365).
- Fix (ran:
TP40 passed; parameter-key and reference-URL tests passed). ReplaceIL:30-33with:
- title: "210-RICR-30-00-1 § 1.6(A)(2)(a) (version effective August 17, 2025) #page 5"
href: https://risos-apa-production-public.s3.amazonaws.com/EOHHS/REG_13314_20250728104245127.pdf#page=5
- title: "Rhode Island 1115 expenditure authorities (December 23, 2013 to December 31, 2018), Budget Population 6b #page 2"
href: https://www.medicaid.gov/Medicaid-CHIP-Program-Information/By-Topics/Waivers/1115/downloads/ri/Comprehensive-Demonstration/ri-global-consumer-choice-compact-expnditure-auth-12232013-12312018.pdf#page=2
- title: "Rhode Island 1115 amendment approval (March 21, 2024; 2019 to 2024), Budget Population 6b #page 11"
href: https://www.medicaid.gov/medicaid/section-1115-demonstrations/downloads/ri-comphnsve-dmnstrtn-aprvl.pdf#page=11
- title: "Rhode Island 1115 temporary extension (December 12, 2024; through June 30, 2025), Budget Population 6b #page 6"
href: https://www.medicaid.gov/medicaid/section-1115-demonstrations/downloads/ri-comphnsve-dmnstrtn-tmp-extn-amndmnt.pdf#page=6
- title: "Rhode Island 1115 approval (November 28, 2025; 2026 to 2030), Budget Population 6b #page 3,15"
href: https://www.medicaid.gov/medicaid/section-1115-demonstrations/downloads/ri-comp-demo-appvl-11282025.pdf#page=3At IL:122, replace "(unverified estimates)" with the periods: 1115 Budget Population 6b since 2013 (185-250% FPL before MAGI, 190-253% after), and § 1.6(A)(2)(a)(2) from August 17, 2025. In FC:26-28, use the same five URLs, each with a one-line period comment. In the body, replace "and are unverified estimates" with the source periods. In SC, add the 2024 approval (page 11) as a kind: policy source; it has the same "end of the 12th month" wording.
SA2. The planned #10371 resolution (body item (c)) leaves some RI pregnant applicants with no pathway.
- Where: body item (c);
S:54,62;RIP/third_party_coverage.yaml:3-9. - Evidence: item (c) says "all six Rhode Island sources are on the CHIP list". True, but the CHIP list also has VA, other means-tested, Medicaid coverage and the partner-provided aggregate
has_health_coverage_other_than_chip. On a copy merged with #10371 and plan (c), an RI citizen, pregnant at 230% FPL, whose only coverage is VA, other means-tested or the aggregate flag gets CHIP at the head and neither CHIP nor Medicaid after the merge. § 1.6(A)(2)(a)(2) and (b)(1) pair the routes: Medicaid with third-party insurance, CHIP without it. - Why SA: the code at this head is correct. But the body prescribes this resolution, and as written it removes all coverage for three inputs that get CHIP today.
- Fix (ran on the merged copy: 9 test files, 161 passed; with C1, 1,424 passed). Replace item (c): keep
& ~has_disqualifying_coverageand| person("ri_chip_postpartum_eligible", period.first_month), deleteri_insurance_eligible, and add after #10371'shas_disqualifying_coverageline:
# 210-RICR-30-00-1 § 1.6(A)(2)(a)(2), (b): Medicaid and CHIP use the
# same third-party list in Rhode Island.
has_disqualifying_coverage = where(
state_code == StateCode.RI,
person("ri_medicaid_has_third_party_coverage", period),
has_disqualifying_coverage,
)Add this case to TS now. It passes at the head, fails with plan (c) and passes with the resolution:
# 210-RICR-30-00-1 § 1.6(A)(2)(a)(2), (b)(1), PDF page 5.
- name: Case 26, Rhode Island pregnant applicants whose only coverage is outside the third-party list stay in standard CHIP.
period: 2024
input:
people:
person1: {age: 30, is_pregnant: true, immigration_status: CITIZEN, medicaid_household_size: 2, medicaid_income_level: 2.3, has_va_health_coverage_at_interview: true}
person2: {age: 30, is_pregnant: true, immigration_status: CITIZEN, medicaid_household_size: 2, medicaid_income_level: 2.3, has_other_means_tested_health_coverage_at_interview: true}
person3: {age: 30, is_pregnant: true, immigration_status: CITIZEN, medicaid_household_size: 2, medicaid_income_level: 2.3, has_health_coverage_other_than_chip: true}
households:
household: {members: [person1, person2, person3], state_code: RI}
output:
is_medicaid_eligible: [false, false, false]
is_chip_eligible_standard_pregnant_person: [true, true, true]SA3. A pregnancy that ends on the first day of the evaluated month is not tested.
- Where:
RI/ri_medicaid_postpartum_eligible.py:32(pregnancy_end <= reference_date). - Evidence: with
<, all 125 cases in the changed test files still pass. Annual outputs read January 1, so under<a pregnancy that ends on January 1 loses that year's annual Medicaid. - Why SA: a missing edge case for an already-tested variable.
- Fix (ran: both pass at the head and with C1; both fail under
<):
# TRI, append
- name: Case 7, a pregnancy ending on the first day of the evaluated month starts the continuation that month.
period: 2024
input:
state_code: RI
ri_pregnancy_coverage: MEDICAID
ri_medicaid_pregnancy_end_date: "2024-01-01"
output:
ri_medicaid_postpartum_eligible:
2024-01: true
2024-12: true
# TME, append
- name: Case 20, a Rhode Island pregnancy that ends on January 1 keeps Medicaid in that year's annual result.
period: 2024
input: {state_code: RI, age: 30, immigration_status: CITIZEN, is_pregnant: false, ri_pregnancy_coverage: MEDICAID, ri_medicaid_pregnancy_end_date: "2024-01-01", medicaid_household_size: 2, medicaid_income_level: 4}
output:
is_pregnant_for_medicaid: true
is_medicaid_eligible: trueSuggestions
G1. Fix the TS:734 comment; the CHIP match after a status change is open. § 42-12.3-3(g) says "without regard to the availability of federal financial participation", not "without federal funds". chip_federal_share.py:19-24 gives an undocumented CHIP-history person 0.68507; FS gives a Medicaid-history person without status 0. Why G: a comment fix, and no source settles the Title XXI match (inconclusive). Fix: use the statute's words in the comment.
G2. Add #10363 to "Related work". Name the documentation conflict in S and the coupling: #10363 makes CHIP read is_pregnant_for_medicaid_nfc, which this PR extends. No wrong outcome was found (CHIP still requires ~is_medicaid_eligible). Why G: process.
G3. Reference precision. Why G: the values are already corroborated.
- (a) Pin the six other
rules.sos.ri.gov/regulations/part/210-30-00-1links (for exampleS:25,RIP/third_party_coverage.yaml:16) to the S3 PDF:#page=5for § 1.6(A)(2)(a)-(b),#page=6for (c)-(d),#page=7for § 1.6(B),#page=19for § 1.9(B)(1). - (b)
RIP/postpartum_coverage_months.yaml:1says "beginning on the last day of pregnancy", but statute (g) does not say that. Add the RI-22-0024 section B reference (https://www.medicaid.gov/medicaid/spa/downloads/RI-22-0024.pdf#page=7, title ending "#page 7"). - (c) Copy the EOHHS, TRICARE and CHAMPVA links from
RI/ri_medicaid_has_third_party_coverage.py:12-14toRIP/third_party_coverage.yaml. - (d) At
SC:6308-6309, replace "no conflicting text" with the CS27 words "ending on the last day of the 12th month consistent with paragraphs (5) and (16) of section 1902(e)".
G4. Document the inputs. ri_medicaid_pregnancy_end_date and count_days_postpartum describe one event and can disagree (the day count wins by OR). Both new inputs are YEAR (RI/ri_pregnancy_coverage.py:20, RI/ri_medicaid_pregnancy_end_date.py:8), so a 2023-only input gives no continuation in 2024. Why G: documentation. Fix: say so in documentation; use one prefix for both names.
G5. The insured Medicaid limit reuses the CHIP parameter (FC:38-39). § 1.6(B) has one pregnancy row, but a CHIP edit would silently move the Medicaid route. Why G: correct today. Fix: a dedicated RI parameter or a NOTE.
G6. Redundant and dead clauses. FC:35 (state == "RI") & and FS:43 repeat defined_for = StateCode.RI (C1 removes the second). (months > 0) at RI/ri_medicaid_postpartum_eligible.py:30 never decides the result. Why G: no effect on results. Fix (ran: all PR tests pass without each): ri_higher_limit = person("ri_medicaid_has_third_party_coverage", period), and delete (months > 0) &.
G7. Test readability. A URL line splits a sentence above TP Cases 34 and 36 (lines 615-618, 670-675). Why G: readability. Fix: move each URL below its sentence.
Investigated and cleared
- The October 1, 2022 date and coverage for people already postpartum then (
TRICase 4; SHO 21-007 Q3). - #10241's 365-day route stays (
TMECase 17), and state gating works (TRICase 5,TMECase 19). ri_medicaid_has_third_party_coverageencodes RI third-party liability (§ 1.9(B)(1)), not 42 CFR 457.310(b)(2).- Partner contract tests: none edited; the partner healthcare suite passes at the head and with C1.
Out of scope / follow-up
- SHO 21-007 Q22 allows the expansion FMAP for a Medicaid-history person in the adult group; C1 keeps the regular FMAP.
- Microsimulation: the continuation is inert (history NONE). The income split moves insured RI pregnant people at 196-258% FPL to Medicaid in 2018-2022 and uninsured ones to CHIP from 2023 (size not measured).
- #10475 tracks the VA question from #10371.
Validation Summary
| Check | Result |
|---|---|
| CI | No checks at 0cc897fae1; must run and pass after the main merge |
| Local tests | Changed files 125/125; Medicaid + CHIP 895; RI 520; partner healthcare 70 (read-only); pytest 235; ruff clean |
| Fix runs | C1 129, 1,489 and 248 passed. SA1 40. SA2 161, 1,424 with C1. SA3 2, both fail under < |
| Mutation | 30 mutants: 26 caught, 3 equivalent, 1 survivor (SA3) |
| Merge trials | main 3 hunks; #10371 1 hunk in S; #10363 S and TS |
| PR body | Edits for C1, SA1, SA2, G2, head SHAs; axiom: line valid (process note) |
| Other reviews | None |
Review Severity: REQUEST_CHANGES
One critical item (C1) and three should-address items (SA1-SA3) are open; under Pavel's criteria any open C or SA item requests changes.
Next Steps
To auto-fix issues: run the fix-pr workflow for this PR.
- Merge
main(do not rebase), keep this PR's side in the 3 hunks, and confirm the 22-file scope. - Apply C1, then SA1, SA2 (Case 26) and SA3 (Cases 7 and 20).
- Take the suggestions that you agree with.
- Run
make formatand the changed test files. Push and wait for CI to pass. - Update the body: delete "Limitation:", replace "unverified estimates" and item (c), add #10363, and update the head SHAs.
Main now has #10365 (squash) and #10371. Conflicts keep both sides: - is_chip_eligible_standard_pregnant_person.py keeps #10371's coverage test and the Rhode Island continuation; Rhode Island reads its third-party list for that test (210-RICR-30-00-1 § 1.6(A)(2)(a)(2), (b)). - The pregnancy income limit references and the CHIP and Medicaid pregnancy test files keep this PR's Rhode Island blocks after main's cases. - candidates.yaml keeps every entry in file order. - #10365's changelog fragment, already compiled on main, is dropped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…te-funded continuation - C1: add ri_medicaid_state_funded_postpartum_eligible. Only a Medicaid pregnancy keeps the pregnancy group; other histories, and Medicaid histories without status, get the state-funded continuation unless a new CHIP-band pregnancy is taken up in CHIP (R.I. Gen. Laws 42-12.3-3(g); 210-RICR-30-00-1 § 1.6(A)(2)(b)-(d)). medicaid_federal_share keeps any federally matched group's match. - SA1: cite the in-period 1115 approvals for the insured route. - SA2: Case 26 for coverage outside Rhode Island's third-party list. - SA3: pregnancies ending on the first of the evaluated month. - G1, G3-G7: statute wording, pinned regulation pages, input documentation, ri_pregnancy_end_date rename, a NOTE on the shared limit, and dead clauses removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for the review (round 1). Everything is applied at Main merge ( C1. Fixed.
SA1. Fixed.
SA2. Fixed.
SA3. Fixed. G1. Fixed. G2. Done. "Related work" names the G3. Fixed.
G4. Fixed.
G5. Fixed with a NOTE at G6. Fixed. G7. Fixed. The URL lines now follow their sentences above I checked the new and changed cases by hand and didn't run them locally; CI will run them. ruff format and check pass, and no partner contract test file is edited. Update ( |
…lable A new pregnancy in the CHIP band ends the state-funded continuation only when the person can take up Title XXI coverage, which excludes third-party coverage (210-RICR-30-00-1 § 1.6(A)(2)(b); 42 CFR 457.310(b)(2)). R.I. Gen. Laws 42-12.3-3(g) provides the continuation without regard to federal funding, so an insured, undocumented person pregnant again keeps it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Program Review
PR #10391, "Correct Rhode Island pregnancy Medicaid routing and postpartum coverage" (hua7450). Round 2, incremental review of 0cc897fae1..f479a25ce7.
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 round 1. Under policyengine_us/variables/gov/: S = hhs/chip/is_chip_eligible_standard_pregnant_person.py, FS = hhs/medicaid/costs/medicaid_federal_share.py, ME = hhs/medicaid/eligibility/is_medicaid_eligible.py, FC / NFC = hhs/medicaid/eligibility/categories/pregnant/is_pregnant_for_medicaid_fc.py / _nfc.py, RI/ = states/ri/eohhs/medicaid/, SF = RI/ri_medicaid_state_funded_postpartum_eligible.py. RIP/ = policyengine_us/parameters/gov/states/ri/eohhs/medicaid/; IL = policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/pregnant/income_limit.yaml; SC = source_conflicts/candidates.yaml. Tests under policyengine_us/tests/policy/baseline/gov/: TS = hhs/chip/is_chip_eligible_standard_pregnant_person.yaml, TP = hhs/medicaid/eligibility/categories/is_pregnant_for_medicaid.yaml, TME = hhs/medicaid/eligibility/is_medicaid_eligible.yaml, TFS = hhs/medicaid/costs/medicaid_federal_share.yaml, TRI = states/ri/eohhs/medicaid/ri_medicaid_postpartum_eligible.yaml, TSF = states/ri/eohhs/medicaid/ri_medicaid_state_funded_postpartum_eligible.yaml. Line numbers refer to the reviewed head.
Source Documents
- Reviewed head SHA: f479a25
- Mode: incremental (round 2)
- Scope: four commits since my review of 2026-10-27, 6:59pm EDT.
5d072531cdmergesmain(#10365 squashed, #10371) and resolvesSas SA2 proposed.3f130f4200applies C1, SA1-SA3 and G1, G3-G7 (19 files).c1b83f4868adds one change beyond my C1 code:SF:14-16and:34-39, andTSFCase 3.f479a25ce7mergesmain(ef94955d48) with no change to PR files. The PR is now 24 files, +1,432/-11, against the merge base. - Rhode Island: R.I. Gen. Laws § 42-12.3-3(g) (fetched today; both quotes in the author's c1b83f4 note are exact); 210-RICR-30-00-1, version effective August 17, 2025, S3 PDF pages 5-6 (§ 1.6(A)(2)(a)-(d), fetched today).
- CMS: 1115 authorities of December 23, 2013 (file page 2, Budget Population 6b, "have other coverage", 185-250% FPL; fetched today); March 21, 2024 amendment approval for 2019-2024 (file page 11, Budget Population 6b, 190-253% FPL, "end of the 12th month following the end of the pregnancy"; fetched today). The December 2024 extension and the November 2025 approval were checked in round 1; their hrefs are byte-identical to the ones I checked. medicaid.gov and eohhs.ri.gov return 403 to curl today, and the Wayback Machine failed with a TLS error from this machine, so I fetched the two PDFs above through WebFetch.
- Federal: 42 CFR 457.310(b)(2) (CHIP no-other-coverage test, as encoded by #10371).
Branch Status
- Ancestry and merges.
0cc897fae1is an ancestor of the head. The branch is 27 commits ahead ofmainand 6 behind (95cf2373a0). The 6 commits touch only Maine dependent-exemption files, changelog files,pyproject.tomlanduv.lock. A trial merge withmainis clean. - CI at
f479a25ce7(last checked at 3:59pm EDT): 32 checks pass and 1 is pending ("Contrib tests / Full Suite - Contrib (other-shard-1)"). No check fails. The baseline, partner, microsimulation and Python shards all pass. Confirm that the last check passes before merge. - #10363 (open, approved, head
bf56d69ed9): a trial merge conflicts in thedocumentationattribute ofSonly and inTS, as the body says. This PR then needs one moremainmerge. - Partner contract tests: none edited. The "Household API Partners" check passes at the head.
Round 1 items
| ID | Status | Evidence |
|---|---|---|
| C1 | RESOLVED | New SF:7-42 (my code, plus the c1b83f4 change that I accept below). FC:50-54 and NFC:18-22 keep the pregnancy group for a Medicaid pregnancy only. ME:23-25 reads SF. FS:37-43 gives the zero match only without a federally matched route, and FS:17-18 has the new wording. The body has no "Limitation:" sentence. I re-ran the round 1 table at the head: A (each of RIte Start, FCEP and CHIP at 120%) ADULT 0.9; B (RIte Start, CHIP, pregnant at 150%) PREGNANT 0.5501; C (RIte Start, FCEP, pregnant at 230%, uninsured) CHIP; D (FCEP, RIte Start, undocumented, pregnant at 200%) CHIP FCEP; E (CHIP, SSI) SSI 0.5501. Every row now equals the "History NONE" column. New cases TFS:238, TS:800 (Case 25) and TSF Cases 1-2 match my values; TP Case 34 (:621), Case 38 (:792) and TFS:183 have the three changed expectations. Six mutants of the new logic (drop the TPL clause, the CHIP take-up, ~title_xxi_pregnancy, ~pregnancy_group, ~federally_matched_route, or the FC Medicaid-only filter) each fail at least one test. |
| SA1 | RESOLVED | IL:30-39 has the five references, and IL:126-130 gives the source periods in place of "(unverified estimates)". FC:26-36 has the same five URLs with one-line period comments. SC:7062-7065 adds the March 2024 approval as kind: policy. The body names the source periods. I checked file page 2 of the 2013 authorities and file page 11 of the March 2024 approval today; both support the titles. The author dropped "#page N" from single-page titles. That is right: the repo rule puts a single page in the href only, and my round 1 wording was wrong on this point. |
| SA2 | RESOLVED | S:63-69 reads Rhode Island's third-party list for the coverage test, and S:71-78 keeps & ~has_disqualifying_coverage and the CHIP continuation. ri_insurance_eligible is gone. Case 26 is at TS:855 and passes. Body item (c) is replaced by the "Related work" bullet on #10371. |
| SA3 | RESOLVED | TRI:140 (Case 7) and TME:428 (Case 20). With < in place of <= at RI/ri_medicaid_postpartum_eligible.py:31, both files fail. |
| G1 | RESOLVED | TS:734-735 quotes the statute: "without regard to the availability of federal financial participation". |
| G2 | RESOLVED | The body's "Related work" names #10363, the documentation conflict in S, the TS renumbering and the is_pregnant_for_medicaid_nfc coupling. The trial merge confirms the conflict set. |
| G3 | RESOLVED | (a) No rules.sos.ri.gov link is left in the 24 PR files; the regulation links point to the S3 PDF with #page=5. (b) RIP/postpartum_coverage_months.yaml:12-13 adds RI-22-0024 section B, #page=7. (c) RIP/third_party_coverage.yaml:17-22 has the EOHHS, TRICARE and CHAMPVA links (TRICARE and VA return 200; EOHHS returns 403 to curl). (d) SC:7086-7087 quotes the CS27 words. |
| G4 | RESOLVED | documentation at RI/ri_pregnancy_end_date.py:8-15 and RI/ri_pregnancy_coverage.py:18-23 covers the annual inputs and the overlap with count_days_postpartum. The rename to ri_pregnancy_end_date is complete: no ri_medicaid_pregnancy_end_date is left in policyengine_us/ or source_conflicts/. |
| G5 | RESOLVED | NOTE at FC:44-47. I accept a NOTE in place of a new parameter: § 1.6(B) has one pregnancy row. |
| G6 | RESOLVED | FC:43 reads ri_medicaid_has_third_party_coverage directly, (months > 0) & is gone (RI/ri_medicaid_postpartum_eligible.py:29-33), and C1 removed the FS state clause. |
| G7 | RESOLVED | Each URL line now follows its sentence above TP Case 34 (:615-620) and Case 36 (:672-677). |
The c1b83f4 change (beyond my C1 code). I accept it. My C1 code ended the continuation for every new pregnancy in the CHIP band that the person takes up in CHIP, also when other coverage barred CHIP. An undocumented person with employer coverage then had no route at all. § 42-12.3-3(g) gives "full Medicaid benefits ... without regard to the availability of federal financial participation" and uses state-only funds "only if federal financial participation is not available". So the continuation can end only when Title XXI coverage is actually available. TSF Case 3 pins this, and I confirmed it: the insured person keeps the continuation (federal share 0), and the same person without coverage takes FCEP. The change closes the gap for Rhode Island's third-party list only. SA4 covers the rest.
New findings
Critical
None.
Should address
SA4. A new pregnancy still ends the continuation when unborn-child CHIP is barred by coverage outside Rhode Island's third-party list.
- Where:
SF:34-41. - Evidence:
title_xxi_pregnancytests Rhode Island's third-party list for everyone. A person without CHIP immigration status can get Title XXI only through FCEP (§ 1.6(A)(2)(c), "based on the eligibility status of the unborn child"). FCEP uses the wider CHIP no-other-coverage list (is_chip_fcep_eligible_person.py:90-100, 42 CFR 457.310(b)(2)). RI 2024, undocumented, FCEP history ending 2023-03-07, pregnant again at 230% FPL, takes up CHIP, with only one coverage source:
| Coverage | Head | With fix |
|---|---|---|
| None | CHIP FCEP | CHIP FCEP |
| Employer (on the RI list) | State-funded Medicaid | State-funded Medicaid |
Other means-tested, VA, the aggregate has_health_coverage_other_than_chip, has_medicaid_health_coverage_at_interview or receives_medicaid |
No Medicaid and no CHIP | State-funded Medicaid |
The same happens with a RIte Start history. A citizen with the same coverage gets standard CHIP at the head and with the fix (Case 26 logic).
- Law: the same § 42-12.3-3(g) reasoning that the author gives for c1b83f4. FCEP is not available, so the 12-month entitlement continues with state-only funds. A person who reports that she "currently receives Medicaid" (the continuation itself) loses all coverage at the head.
- Why SA, not C: a missing edge case in a variable that is already tested. It is household-only (microdata has no pregnancy history), needs a person without CHIP immigration status, a new pregnancy inside the 12 months and one of five coverage inputs. The SF comment at
:34-35also cites 42 CFR 457.310(b)(2), but the code applies only the narrower RI list. - A direct read of
has_chip_disqualifying_health_coverageinSFmakes a cycle (SF>has_chip_disqualifying_health_coverage>medicaid_enrolled>is_medicaid_eligible>SF). I confirmed theCycleError. The fix leaves outmedicaid_enrolled, which is the continuation itself. - Fix (ran: the 8 changed test files plus the new case, 161 passed; Medicaid, CHIP and RI EOHHS folders, 951 passed;
ruff formatandruff checkclean; the new case fails at the head). ReplaceSF:32-41with:
state = person.household("state_code", period)
p = parameters(period).gov.hhs.chip
# Standard pregnancy CHIP excludes Rhode Island's third-party list
# (210-RICR-30-00-1 § 1.6(A)(2)(b)). Unborn-child coverage
# (§ 1.6(A)(2)(c)) uses the CHIP no-other-coverage test (42 CFR
# 457.310(b)(2)) without Medicaid enrollment, which is this
# continuation itself.
chip_immigration_eligible = person(
"is_chip_immigration_status_eligible", period
)
income_limit = where(
chip_immigration_eligible,
p.pregnant.income_limit[state],
p.fcep.income_limit[state],
)
fcep_coverage_sources = [
source
for source in p.disqualifying_health_coverage
if source != "medicaid_enrolled"
]
has_disqualifying_coverage = where(
chip_immigration_eligible,
person("ri_medicaid_has_third_party_coverage", period),
add(person, period, fcep_coverage_sources) > 0,
)
title_xxi_pregnancy = (
person("is_pregnant", period)
& medicaid_income_eligible(person, period, parameters, income_limit)
& ~has_disqualifying_coverage
& person("takes_up_chip_if_eligible", period)
)The FCEP branch reads p.fcep.income_limit. Both Rhode Island limits are 2.58 today, so no result changes, but a later FCEP-only edit would otherwise not reach this test. In SF documentation, replace "which requires income within the CHIP limit and no third-party coverage." with "which requires income within the CHIP limit and no coverage that bars that CHIP route." In the body, replace "which is unavailable with third-party insurance" with "which is unavailable with third-party insurance or, for unborn-child coverage, with any coverage that bars CHIP". Append to TSF:
# 210-RICR-30-00-1 § 1.6(A)(2)(c) bases CHIP for people without CHIP
# immigration status on the unborn child, whom other coverage bars (42 CFR
# 457.310(b)(2)). R.I. Gen. Laws § 42-12.3-3(g) then keeps the continuation
# with state-only funds. The citizen takes standard CHIP, which uses Rhode
# Island's third-party list.
- name: Case 4, coverage that bars unborn-child CHIP keeps the continuation for a person without CHIP immigration status.
period: 2024
input:
people:
person1:
age: 30
immigration_status: UNDOCUMENTED
is_pregnant: true
has_other_means_tested_health_coverage_at_interview: true
ri_pregnancy_coverage: FCEP
ri_pregnancy_end_date: "2023-03-07"
medicaid_household_size: 2
medicaid_income_level: 2.3
takes_up_chip_if_eligible: true
person2:
age: 30
immigration_status: UNDOCUMENTED
is_pregnant: true
has_health_coverage_other_than_chip: true
ri_pregnancy_coverage: RITE_START
ri_pregnancy_end_date: "2023-03-07"
medicaid_household_size: 2
medicaid_income_level: 2.3
takes_up_chip_if_eligible: true
person3:
age: 30
immigration_status: CITIZEN
is_pregnant: true
has_other_means_tested_health_coverage_at_interview: true
ri_pregnancy_coverage: RITE_START
ri_pregnancy_end_date: "2023-03-07"
medicaid_household_size: 2
medicaid_income_level: 2.3
takes_up_chip_if_eligible: true
households:
household:
members: [person1, person2, person3]
state_code: RI
output:
ri_medicaid_state_funded_postpartum_eligible: [true, true, false]
is_medicaid_eligible: [true, true, false]
is_chip_fcep_eligible_person: [false, false, false]
chip_enrolled: [false, false, true]If the author prefers, a NOTE at SF:34 and a tracked issue also clear SA4 under my criteria, because it is not critical.
Suggestions
None.
Hand checks of the new cases
TSCase 25: person 1 (RIte Start, citizen, 230%, uninsured) is above the 195% Medicaid limit and inside 258%, so CHIP; person 2 (undocumented, 200%) gets FCEP; person 3 declines CHIP and keeps the continuation; person 4 (Medicaid history) stays in the pregnancy group.TSCase 26: VA, other means-tested and the aggregate flag are not on the 6-item RI list, so standard CHIP.TFS:238: 120% is inside the 138% adult limit (0.9); 150% is inside the 195% pregnancy limit (FY2024 regular FMAP 0.5501); SSI (0.5501). Person 4 declines CHIP, somedicaid_enrolledis true.TSFCase 1: the 2022-11-27 end date covers through November 2023, so January 2024 is out. Case 2: 2.58 is at the limit (inclusive), 2.59 is above it. Case 3: as described above.TRICase 7 andTMECase 20: an end date of 2024-01-01 is<=the January 1 reference date.
Investigated and cleared
- The
Smerge resolution equals my SA2 text, and #10371's coverage test is unchanged outside Rhode Island. ME:58puts the state-funded flag outside the federal and Arkansas work-requirement gates. That is right for a state-only group: the federal requirement applies to the expansion adult group, which this group is not.SC:7047-7088validates (test_source_conflicts.pypasses) and recordsfollows: statute.- The changelog fragment is a top-level file, and #10365's fragment is no longer in the PR diff.
Out of scope / follow-up
- § 42-12.3-3(g) promises "full Medicaid benefits". For an undocumented person who is pregnant again, C1 routes her to FCEP so that Title XXI funds are used. The model cannot split one person between full Medicaid benefits and Title XXI funding, so this stays a modeling choice. It is inert in microdata.
- From round 1, still open and outside this PR: the SHO 21-007 Q22 expansion FMAP, and #10475 (VA question).
Tests run
- At the head: the 8 changed YAML files (
TS,is_chip_eligible_fcep.yaml,TFS,TP,TME,medicaid_enrolled.yaml,TRI,TSF): 160 passed. - At the head:
test_source_conflicts.py,test_known_dead_reference_urls.py,test_aggregate_list_integrity.py,test_parameter_files.py: 173 passed.ruff format --checkandruff checkon the changed variables: clean. - Mutations on a copy: SA3 (
<) failsTRIandTME; six C1 mutants each fail at least one test; a direct read of the CHIP coverage list inSFraises aCycleError. - SA4 fix on a copy: 8 changed files plus Case 4, 161 passed; Medicaid, CHIP and RI EOHHS folders (
hhs/chip,hhs/medicaid,states/ri/eohhs), 951 passed. Case 4 fails at the head (1 failed, 3 passed inTSF). - Probes: the round 1 C1 table (11 rows) and the SA4 coverage table (10 rows).
Verdict
REQUEST_CHANGES: all 11 round 1 items are resolved, and I accept the c1b83f4 change. One new should-address item is open: SA4, the same coverage gap for unborn-child CHIP. Apply the tested fix, or add a NOTE and a tracked issue.
Pavel's SA4: a person without CHIP immigration status reaches Title XXI only through unborn-child coverage (210-RICR-30-00-1 § 1.6(A)(2)(c)), which uses the CHIP no-other-coverage test (42 CFR 457.310(b)(2)) without Medicaid enrollment. A new pregnancy ends the state-funded continuation only when that route is open; citizens keep Rhode Island's third-party list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for round 2 (review). SA4 is applied with your tested fix, not the NOTE alternative. The new head is SA4. Fixed (
Main. #10363 is still open. Once it merges, this PR will merge I didn't run the new case locally; CI will run it. |
Main now has #10363. is_chip_eligible_standard_pregnant_person.py combines #10363's pregnant-or-postpartum documentation with the Rhode Island continuation note. is_chip_eligible_standard_pregnant_person.yaml keeps main's Cases 1-27 and appends this PR's Rhode Island cases as Cases 28-31. No changelog fragment of this PR is compiled on main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Program Review
PR #10391, "Correct Rhode Island pregnancy Medicaid routing and postpartum coverage" (hua7450). Round 3, incremental review of f479a25ce7..32fe9bfd4c.
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 round 2. Under policyengine_us/variables/gov/: S = hhs/chip/is_chip_eligible_standard_pregnant_person.py, FS = hhs/medicaid/costs/medicaid_federal_share.py, ME = hhs/medicaid/eligibility/is_medicaid_eligible.py, FC / NFC = hhs/medicaid/eligibility/categories/pregnant/is_pregnant_for_medicaid_fc.py / _nfc.py, RI/ = states/ri/eohhs/medicaid/, SF = RI/ri_medicaid_state_funded_postpartum_eligible.py. IL = policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/pregnant/income_limit.yaml; SC = source_conflicts/candidates.yaml. Tests under policyengine_us/tests/policy/baseline/gov/: TS = hhs/chip/is_chip_eligible_standard_pregnant_person.yaml, TP = hhs/medicaid/eligibility/categories/is_pregnant_for_medicaid.yaml, TME = hhs/medicaid/eligibility/is_medicaid_eligible.yaml, TFS = hhs/medicaid/costs/medicaid_federal_share.yaml, TRI = states/ri/eohhs/medicaid/ri_medicaid_postpartum_eligible.yaml, TSF = states/ri/eohhs/medicaid/ri_medicaid_state_funded_postpartum_eligible.yaml. Line numbers refer to the reviewed head.
Source Documents
- Reviewed head SHA: 32fe9bf
- Mode: incremental (round 3)
- Scope: three commits since my review of 2026-10-29, 4:09pm EDT.
34e547bb71(the SA4 fix):SF+27/-4 andTSF+49 (Case 4). No other file.67ea35e5f1mergesmain(40f6990eda). Among the PR files, onlySCchanges (auto-merged entries from other PRs). No Medicaid, CHIP, Rhode Island or partner file changes.32fe9bfd4cmergesmain(ec16e0fc99). This merge is not free of Medicaid and CHIP files: it brings in #10363 (CHIP postpartum), #10364 (Medicaid aged, blind and disabled values) and #10360 (Medicare Savings Programs). It changes no Rhode Island or partner file. It resolves two PR files:SandTS. I check both resolutions below.- The PR is still 24 files, +1,502/-10, against
main. The file set ofgit diff ec16e0fc99 32fe9bfd4cequals the PR file list, so the merges leave no residue.
- Rhode Island: 210-RICR-30-00-1, version effective August 17, 2025, S3 PDF pages 5-6 (downloaded today, HTTP 200). § 1.6(A)(2)(b)(1)-(2) puts CHIP for people who meet Medicaid or CHIPRA 214 status behind "do not have third party liability insurance". § 1.6(A)(2)(c) says that CHIP for "pregnant people who do not meet Medicaid or CHIP requirements for citizenship/immigration status ... is based on the eligibility status of the unborn child". This supports the split in
SF:39-56. - Federal: 42 CFR 457.310(b)(2), as encoded in
gov.hhs.chip.disqualifying_health_coverage(12 sources,medicaid_enrolledamong them). No reference URL is new or changed in the PR's own code this round. The newSreferences (42 USC 1397ll(d)(2)(A), 1397gg(e)(1)(K), SHO 21-007) come from #10363 onmain.
Branch Status
- Ancestry.
f479a25ce7is an ancestor of the head. The branch is 30 commits ahead ofmainand 1 behind. The one commit isd983c32370(5:48pm EDT, "Update PolicyEngine US"). It changes onlyCHANGELOG.md, three compiled fragments,pyproject.tomlanduv.lock. A trial merge is clean. - CI at
32fe9bfd4c: 34 checks pass, none fail or wait. This includes "Household API Partners", the baseline state shards and the microsimulation suite. - #10363 merge order. The note that #10363 is still open is out of date. #10363 merged at 5:44pm EDT, one minute after the author's comment. The author then carried out the plan from that comment in
32fe9bfd4c:S:11-16combines #10363's pregnant-or-postpartumdocumentationwith this PR's Rhode Island sentence.S:46keeps #10363'sis_pregnant_for_medicaid_nfcread.S:73-79keeps this PR's Rhode Island third-party list.TSholdsmain's file as an exact prefix (lines 1-790, Cases 1-27). After it come this PR's four Rhode Island cases as Cases 28-31 (TS:797,:869,:932,:987). Apart from the case numbers, they are byte-identical to Cases 23-26 at67ea35e5f1.- The body's "Related work" now says that #10363 is merged and names the renumbering ("Cases 28-31 (formerly 23-26)"; "CHIP Case 31 pins this"). No other comment in the code or the tests points to an old case number.
- Partner contract tests: none edited. The partner check passes at the head.
Round 2 items
| ID | Status | Evidence |
|---|---|---|
| C1 | RESOLVED | No change since round 2: FC, NFC, ME and FS are not touched since f479a25ce7. The C1 cases in TFS, TP, TS (now Case 30) and TSF Cases 1-2 pass at the head. |
| SA1 | RESOLVED | The IL and FC references are unchanged since round 2. |
| SA2 | RESOLVED | S:73-79 still reads ri_medicaid_has_third_party_coverage in Rhode Island after the #10363 merge. The old Case 26 is now TS Case 31 (:987) and passes. |
| SA3 | RESOLVED | TRI Case 7 and TME Case 20 are unchanged and pass. |
| G1 | RESOLVED | The statute quote is at TS:866-867, above Case 29. |
| G2 | RESOLVED | #10363 is merged, and the conflict was resolved as the body said it would be (see Branch Status). |
| G3-G7 | RESOLVED | The files that these items touch have not changed since round 2. The one exception is SC, which only gained other PRs' entries; the CS27 quote in us-ri:medicaid-postpartum-end-month is intact. |
| SA4 | RESOLVED | SF:32-62 equals my round 2 code line for line (text diff, no difference). SF:16 has the new documentation ending. The body has the new federal-match sentence. TSF:111-158 is my Case 4, also identical apart from indentation. Checks: (a) no cycle: the Medicaid, CHIP and RI EOHHS folders pass (1,030), and the read through is_chip_immigration_status_eligible, which #10363 now points at is_pregnant_for_medicaid_nfc, does not loop back to SF; (b) Case 4 is functional: with SF at f479a25ce7, only Case 4 fails; (c) the medicaid_enrolled filter is needed: without it, all four TSF cases raise a CycleError; (d) my SA4 coverage table, re-run at the head (32 rows), matches the "With fix" column. Undocumented with no coverage: FCEP. Undocumented with employer or marketplace coverage, or with other means-tested coverage, VA, the aggregate flag, Medicaid coverage at interview or receives_medicaid: the state-funded continuation, with FCEP false. Citizen with coverage outside the RI list: standard CHIP. |
New findings
Critical
None.
Should address
None.
Suggestions
None.
Hand checks of the new case
TSF Case 4, Rhode Island, 2024, all three people pregnant at 230% FPL, end date 2023-03-07:
- Continuation. The day before the end date is 2023-03-06. The first month without coverage is March 2023 + 13 = April 2024. January 2024 is inside, so
ri_medicaid_postpartum_eligibleis true for all three. No person has a Medicaid history, so no person is in the pregnancy group. - Person 1 (undocumented, FCEP history, other means-tested coverage).
is_chip_immigration_status_eligibleis false. The FCEP limit is 2.58 (chip/fcep/income_limit.yaml, RI 2024), and 2.3 is within it. The coverage is on the CHIP list, sotitle_xxi_pregnancyis false. Results:SFtrue,MEtrue (throughME:58), and FCEP false (has_chip_disqualifying_health_coverage), sochip_enrolledis false. - Person 2 (undocumented, RIte Start history, the aggregate
has_health_coverage_other_than_chip). The same result as person 1. - Person 3 (citizen, RIte Start history, other means-tested coverage). The standard branch applies: the limit is 2.58, and the coverage is not on the 6-item RI list, so
title_xxi_pregnancyis true andSFis false.FCuses 1.95 (no third-party coverage), and 2.3 is above it, soMEis false.Sis true andchip_enrolledis true. FCEP is false because of the CHIP coverage list. - The expected
[true, true, false],[true, true, false],[false, false, false]and[false, false, true]are correct.
Investigated and cleared
- #10363 and this PR together. I probed seven Rhode Island postpartum cases (2024, not pregnant, 230% FPL, end date 2023-06-15). There is no double enrollment and no wrong route:
- CHIP history with a 200-day count keeps CHIP (
chip_enrolledtrue,medicaid_enrolledfalse). With employer coverage, it also keeps CHIP. - No history with a 200-day count gets #10363's standard postpartum CHIP.
- An FCEP history (undocumented) or a RIte Start history (citizen) with a 200-day count gets the state-funded continuation with federal share 0, not CHIP. This is right: RIte Start serves people not eligible under Title XIX or XXI, and FCEP has no 12-month extension (SHO 21-007).
- A Medicaid history (citizen, or an LPR with 2 years through Rhode Island's lawfully residing pregnancy option from October 1, 2022) stays in the pregnancy group with FMAP 0.5501.
- This supports the body's statement "no wrong outcome was found".
- CHIP history with a 200-day count keeps CHIP (
- Inert FCEP limit. The FCEP branch of
SF:42-46cannot change a result today, because both Rhode Island limits are 2.58. That was intended in round 2, so a test cannot pin it. - Case 3 wording. The comment above
TSFCase 3 cites § 1.6(A)(2)(b) and 42 CFR 457.310(b)(2) as the general Title XXI rule. Its people are undocumented, so § 1.6(A)(2)(c) is their route. Employer coverage is on both lists, so the case is right under either route, and the federal citation covers it. No change is needed. SC. No line is removed sincef479a25ce7.us-ri:medicaid-postpartum-end-monthis intact, andtest_source_conflicts.pypasses.- Changelog. The PR's fragment is a top-level file. The PR does not carry #10363's, #10364's or #10360's fragments.
Out of scope / follow-up
- These stay as in round 2: § 42-12.3-3(g) "full Medicaid benefits" for an undocumented person routed to FCEP (a modeling choice, inert in microdata); the SHO 21-007 Q22 expansion FMAP; #10475 (the VA question).
Tests run
- At the head, the two changed YAML files (
TSF,TS): 35 passed. - At the head, the folders
hhs/chip,hhs/medicaidandstates/ri/eohhs: 1,030 passed, with noCycleError. Round 2 had 951; the increase comes from #10360, #10363 and #10364. - At the head,
test_source_conflicts.pyandtest_known_dead_reference_urls.py: 143 passed. ruff format --checkandruff checkon the 12 PR Python files: clean.- Mutations on copies, now deleted:
SFrestored to itsf479a25ce7text:TSF1 failed (Case 4), 3 passed.medicaid_enrolledleft in the FCEP coverage list:TSF4 failed with aCycleError.
- Probes: the SA4 coverage table (32 rows) and the #10363 postpartum interaction table (7 rows).
Verdict
APPROVE: SA4 is resolved with the tested fix, and all round 1 items stay resolved. The #10363 merge resolution is correct, and CI passes at the head. There are no open C or SA items and no suggestions.
Summary
Fixes #10390.
Correct Rhode Island's pregnancy Medicaid/CHIP insurance split and preserve postpartum coverage based on qualifying eligibility during the completed pregnancy. Continuation survives income changes and another pregnancy, and lasts through the last day of the month in which the 12-month postpartum period (beginning on the last day of pregnancy) ends, including across leap years.
During pregnancy, an otherwise eligible citizen at 230% FPL qualifies for Medicaid with third-party insurance and standard pregnancy CHIP when uninsured. After the pregnancy, only a Medicaid-covered pregnancy keeps the Medicaid pregnancy group. A CHIP-covered pregnancy stays in CHIP. RIte Start, FCEP and CHIP histories, and Medicaid histories without Medicaid immigration status, get a state-funded continuation, but a person who also meets a federally matched group keeps that group and its match. A new pregnancy ends the state-funded continuation only when the person takes up Title XXI coverage, which is unavailable with third-party insurance or, for unborn-child coverage, with any coverage that bars CHIP. The model prevents simultaneous CHIP and Medicaid enrollment and respects take-up choices.
Authority and behavior
gov.states.ri.eohhs.medicaid.third_party_coverage(§ 1.9(B)(1), page 19, defines third-party liability). The insured route appears in the rule from its August 17, 2025 version. Before then it rests on section 1115 Budget Population 6b: the December 23, 2013 to December 31, 2018 authorities (185-250% FPL before MAGI), the March 21, 2024 approval for 2019 to 2024 and the December 12, 2024 extension through June 30, 2025 (190-253%), and the November 28, 2025 approval for 2026 to 2030 (pages 3 and 15). No source was found for July 1 to August 16, 2025.source_conflicts/candidates.yamlrecords this as the unreviewed candidateus-ri:medicaid-postpartum-end-month.ri_medicaid_state_funded_postpartum_eligiblecovers the continuation outside the Medicaid pregnancy group. It ends while a new pregnancy in the CHIP band is taken up in CHIP (§ 1.6(A)(2)(b)(1) and (c); 42 U.S.C. 1397jj(b)(1)(C) bars CHIP only for Title XIX eligibility), but not when that coverage is unavailable: standard pregnancy CHIP excludes Rhode Island's third-party insurance (§ 1.6(A)(2)(b)), and unborn-child coverage, the only Title XXI route for a person without CHIP immigration status (§ 1.6(A)(2)(c)), excludes any coverage on the CHIP no-other-coverage list (42 CFR 457.310(b)(2)). Such a person keeps the continuation that § 42-12.3-3(g) provides without regard to federal funding.medicaid_federal_sharegives the state-funded continuation no Title XIX match, while a person who meets a federally matched group (the adult group, a new pregnancy, SSI) keeps that group's match. RIte Start serves any person "who lacks health insurance coverage for maternity care and who is not eligible for medical assistance under Title XIX ... and Title XXI ... of the Social Security Act" (§ 42-12.3-3(b)). RI-22-0026 provides FCEP postpartum benefits through a Title XXI health services initiative (HSI), whose funds "cannot supplant Medicaid". The model does not calculate HSI funding.Required history and calendar inputs
Two new annual person inputs record facts the old day-count flags cannot establish:
ri_pregnancy_coverage: qualifying pregnancy history (MEDICAID,CHIP,RITE_START,FCEP, orNONE). Eligibility may be established retroactively. The defaultNONEdoes not infer prior eligibility from current income or current take-up.ri_pregnancy_end_date: the last completed pregnancy's end date. A newborn is not required; miscarriage and termination use the same calendar rule.Both inputs are annual, so a value entered only for the year the pregnancy ended gives no continuation in later years; their documentation says so.
ri_pregnancy_end_dateandcount_days_postpartumdescribe the same event and can disagree; both routes apply, and either one qualifies.The shared monthly continuation calculation requires established history, a completed pregnancy and current RI residence. Its exclusive endpoint is the month after the month of (end date minus one day) plus 12 months; for example, a pregnancy ending January 1, 2023 is covered through December 2023, and one ending January 2, 2024 through January 2025. Missing history/date does not activate the continuation, but the existing day-count route (
count_days_postpartumbelow the state'spostpartum_coverage) still applies in every state, Rhode Island included. Without a pregnancy-history input (microdata has none), Rhode Island falls back to that day count, as other states do; #10241 sets it to 365 days from October 1, 2022. When history is NONE the model cannot tell "no qualifying coverage" from "unknown", so the day-count proxy can over-cover. This PR does not impute history in microdata.The generic
count_days_postpartuminput and formula are unchanged. The mother/newborn fixture still derives the newborn's infinity default and verifies distinct enrollment.Related work and remaining scope
main. RI's calendar calculation does not use Date 12-month Medicaid postpartum coverage from each state's approval #10241's 365-day proxy, while the day-count route does.mainmerge keeps its coverage test inis_chip_eligible_standard_pregnant_personand, in Rhode Island, reads the state's third-party list for that test (210-RICR-30-00-1 § 1.6(A)(2)(a)(2) and (b) pair the routes: Medicaid with third-party insurance, CHIP without it). Coverage outside the list (VA, other means-tested coverage, the aggregate other-coverage flag) therefore still leaves CHIP open; CHIP Case 31 pins this.mainmerge combines its pregnant-or-postpartumdocumentationinis_chip_eligible_standard_pregnant_person.pywith the Rhode Island continuation note, andis_chip_eligible_standard_pregnant_person.yamlkeepsmain's Cases 1-27 and appends this PR's Rhode Island cases as Cases 28-31 (formerly 23-26). Extend standard pregnancy CHIP through the postpartum period #10363 makes CHIP readis_pregnant_for_medicaid_nfc, which this PR extends with the Rhode Island continuation for Medicaid-covered pregnancies; CHIP still requires~is_medicaid_eligible, and no wrong outcome was found. General standard-CHIP postpartum work remains in Extend standard pregnancy CHIP through the postpartum period #10363.The new monthly flags are evaluated at each month's start. Existing annual national eligibility variables read January's flag; this PR does not convert all Medicaid/CHIP outputs to monthly periods. Tests exercise the actual September/October 2022 boundary directly through the monthly calculation. Full Title XIX/Title XXI/HSI funding allocation after a later immigration-status change remains outside this eligibility correction.
Validation
Law-derived YAML cases cover income increases and decreases, false/missing history, all prior-program choices, another pregnancy, citizens and undocumented residents, month-end expiry, pregnancies ending on the first of the evaluated month, leap years, October 2022, state controls, CHIP retention, enrollment separation, take-up choices, federally matched groups that keep their match, and a new pregnancy in the CHIP band. Existing pregnancy, CHIP/FCEP, immigration, enrollment and FMAP cases are checked as well.
At
f0f8add67d, before the review rounds, 142 policy YAML cases and 4 input-definition checks passed locally across the focused pregnancy, Medicaid, CHIP/FCEP, immigration, enrollment and federal-share suites. A local review on 2026-10-26 led toadcd687fdcand4cab49cd24.Pavel's review at
0cc897fae1:5d072531cdmergesmain(Correct CHIP and Medicaid pregnancy income limits and effective dates #10365 squashed, Apply the CHIP no-other-coverage test to pregnancy pathways in every state #10371). Conflicts keep both sides.is_chip_eligible_standard_pregnant_person.pykeeps Apply the CHIP no-other-coverage test to pregnancy pathways in every state #10371's coverage test and the Rhode Island continuation, with Rhode Island's third-party list for that test. The income-limit references and the CHIP and Medicaid pregnancy test files keep this PR's Rhode Island blocks aftermain's cases, andcandidates.yamlkeeps every entry. Correct CHIP and Medicaid pregnancy income limits and effective dates #10365's changelog fragment, already compiled onmain, is dropped.3f130f4200applies the state-funded continuation (C1), the in-period 1115 references (SA1), CHIP Case 26 (SA2; now Case 31), the first-of-month cases (SA3) and suggestions G1 and G3-G7. G4 renamesri_medicaid_pregnancy_end_datetori_pregnancy_end_date. Three existing expectations change: Medicaid pregnancy Case 34 (renamed; the CHIP-history parent stays in CHIP outside the pregnancy group), Case 38 (the FCEP parent is outside the pregnancy group) and the RIte Start citizen federal-share case (medicaid_categoryNONE).c1b83f4868goes beyond the reviewed C1 code: a new pregnancy in the CHIP band ends the state-funded continuation only without third-party coverage, so an insured, undocumented person pregnant again keeps it (state-funded Case 3).f479a25ce7merges the latestmain, with no change to this PR's files.Pavel's review at
f479a25ce7(round 2) resolves all round-1 items and accepts thec1b83f4868change:34e547bb71applies SA4 with his tested fix: for a person without CHIP immigration status, unborn-child CHIP uses the FCEP limit and the CHIP no-other-coverage list withoutmedicaid_enrolled(state-funded Case 4).67ea35e5f1merges the latestmain, with no change to this PR's files.32fe9bfd4cmergesmainwith Extend standard pregnancy CHIP through the postpartum period #10363, as described under Related work; no other PR file changes.The new and changed cases were checked by hand and not run locally; CI validates them. ruff format and check pass. No partner contract test files are edited.
axiom: TheAxiomFoundation/rulespec-us#1935 queued