Skip to content

Correct Rhode Island pregnancy Medicaid routing and postpartum coverage - #10391

Merged
hua7450 merged 30 commits into
mainfrom
fix-ri-pregnancy-medicaid-pathways
Oct 29, 2026
Merged

hua7450 merged 30 commits into
mainfrom
fix-ri-pregnancy-medicaid-pathways

Conversation

@hua7450

@hua7450 hua7450 commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

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

  • 210-RICR-30-00-1 § 1.6(A)(2)(a)-(b), (B), version effective August 17, 2025 (pages 5-7) supplies the ordinary 190% Medicaid standard, the insured 253% standard, and the uninsured CHIP pathway. Stored limits include the five percentage point disregard (195% and 258%). Existing employer, individual-market, Medicare, TRICARE and CHAMPVA inputs represent third-party coverage without a dependency on Medicaid enrollment; the list is the parameter 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.
  • R.I. Gen. Laws § 42-12.3-3(g) bases full postpartum benefits on qualifying pregnancy-time eligibility, including retroactive eligibility, and continues them through the last day of the month in which the twelve-month postpartum period ends. Current income and a subsequent pregnancy do not terminate that entitlement. The statute does not say when the period begins; the code follows 42 U.S.C. 1396a(e)(16), which covers state plans and waivers, and RI-22-0024 (page 7), which start it on the last day of pregnancy. Only the 1115 wording for Budget Populations 6a and 6b ("end of the 12th month following the end of the pregnancy", in the March 2024 and November 2025 approvals) gives one more month when a pregnancy ends on the 1st. CHIP (RI-22-0025 CS27) ends the period "on the last day of the 12th month consistent with paragraphs (5) and (16) of section 1902(e)", and the state plan groups, RIte Start and FCEP have no conflicting text. source_conflicts/candidates.yaml records this as the unreviewed candidate us-ri:medicaid-postpartum-end-month.
  • RI-22-0024: the approval letter (page 2) confirms October 1, 2022 for Medicaid's extension, and section B (page 7) starts the 12-month period on the last day of pregnancy. A monthly RI parameter retains that exact effective date.
  • RI-22-0025, CS27 preserves separate CHIP through the postpartum period despite changed circumstances, including becoming eligible for Medicaid. An independent CHIP continuation flag preserves CHIP enrollment and prevents duplicate Medicaid enrollment. Medicaid remains available when eligible applicants take it up and decline CHIP.
  • Federal match. § 42-12.3-3(g) uses state-only funds "only if federal financial participation is not available", and § 1.6(A)(2)(d)(1) extends the 12 months to people "not eligible for Medicaid under another Medicaid eligibility category". The new ri_medicaid_state_funded_postpartum_eligible covers 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_share gives 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, or NONE). Eligibility may be established retroactively. The default NONE does 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_date and count_days_postpartum describe 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_postpartum below the state's postpartum_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_postpartum input and formula are unchanged. The mother/newborn fixture still derives the newborn's infinity default and verifies distinct enrollment.

Related work and remaining scope

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 to adcd687fdc and 4cab49cd24.

Pavel's review at 0cc897fae1:

  • 5d072531cd merges main (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.py keeps 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 after main's cases, and candidates.yaml keeps every entry. Correct CHIP and Medicaid pregnancy income limits and effective dates #10365's changelog fragment, already compiled on main, is dropped.
  • 3f130f4200 applies 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 renames ri_medicaid_pregnancy_end_date to ri_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_category NONE).
  • c1b83f4868 goes 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). f479a25ce7 merges the latest main, with no change to this PR's files.

Pavel's review at f479a25ce7 (round 2) resolves all round-1 items and accepts the c1b83f4868 change:

  • 34e547bb71 applies 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 without medicaid_enrolled (state-funded Case 4).
  • 67ea35e5f1 merges the latest main, with no change to this PR's files.
  • 32fe9bfd4c merges main with 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

hua7450 and others added 4 commits October 21, 2026 17:10
…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>
hua7450 and others added 5 commits October 22, 2026 17:04
…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>
…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>
hua7450 and others added 3 commits October 26, 2026 16:57
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>
hua7450 and others added 2 commits October 26, 2026 20:25
…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>
@hua7450
hua7450 marked this pull request as ready for review October 27, 2026 00:44
hua7450 and others added 3 commits October 26, 2026 21:35
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>
hua7450 and others added 3 commits October 27, 2026 14:55
…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>
…-dates' into fix-ri-pregnancy-medicaid-pathways

Brings in #10365's head 2bdcd57, which records the Kentucky ruling and
includes the latest main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hua7450 and others added 3 commits October 27, 2026 15:42
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>
Base automatically changed from fix-chip-pregnant-income-limit-dates to main October 27, 2026 21:44

@PavelMakarchuk PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 at 1c78751418. 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 targets main. The branch conflicts with main (8ea43422e6) in 3 hunks: the RI references in IL, TS lines 659-795 and TP lines 614-885. In each hunk main's side is empty. Merge main (do not rebase) and keep this PR's side; the three files then equal the reviewed head. Confirm the scope: git diff --stat main...HEAD must 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 main merge.
  • #10371 (head f4b4586844) conflicts in one hunk, the return block of S: & 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_coverage and 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 the documentation attribute of S and in 6 hunks of TS. 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.58 Medicaid 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 first select branch); ME:23-25,58, FC:40-45, NFC:18-24 (every history enters eligibility and PREGNANT); S:48,60 and is_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; ruff clean; the new cases fail at the head). New RI/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_pregnancy

Edits:

# 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: TP 40 passed; parameter-key and reference-URL tests passed). Replace IL:30-33 with:
    - 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=3

At 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_coverage and | person("ri_chip_postpartum_eligible", period.first_month), delete ri_insurance_eligible, and add after #10371's has_disqualifying_coverage line:
        # 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: true

Suggestions

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-1 links (for example S:25, RIP/third_party_coverage.yaml:16) to the S3 PDF: #page=5 for § 1.6(A)(2)(a)-(b), #page=6 for (c)-(d), #page=7 for § 1.6(B), #page=19 for § 1.9(B)(1).
  • (b) RIP/postpartum_coverage_months.yaml:1 says "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-14 to RIP/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 (TRI Case 4; SHO 21-007 Q3).
  • #10241's 365-day route stays (TME Case 17), and state gating works (TRI Case 5, TME Case 19).
  • ri_medicaid_has_third_party_coverage encodes 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.

  1. Merge main (do not rebase), keep this PR's side in the 3 hunks, and confirm the 22-file scope.
  2. Apply C1, then SA1, SA2 (Case 26) and SA3 (Cases 7 and 20).
  3. Take the suggestions that you agree with.
  4. Run make format and the changed test files. Push and wait for CI to pass.
  5. Update the body: delete "Limitation:", replace "unverified estimates" and item (c), add #10363, and update the head SHAs.

hua7450 and others added 2 commits October 29, 2026 13:40
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>
@hua7450

hua7450 commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator Author

Thanks for the review (round 1). Everything is applied at 3f130f4200. Paths use your review's abbreviations; line numbers refer to the new head.

Main merge (5d072531cd). Merged main (no rebase): #10365 squashed and #10371. Main's side was empty in the IL, TS and TP hunks, so this PR's side is kept, and SC keeps every entry. S keeps #10371's coverage test and the RI continuation (SA2 below). #10365's changelog fragment came in through the stack and is already compiled on main, so I dropped it. git diff --stat main...HEAD lists this PR's own files: 24 after the fixes (22 before, plus the new variable and its test file).

C1. Fixed.

  • New RI/ri_medicaid_state_funded_postpartum_eligible.py:7, your code verbatim.
  • FC:54 and NFC:22 keep the pregnancy group for Medicaid pregnancies only, ME:24 reads the state-funded flag, and FS:37-43 uses federally_matched_route. The FS:17 wording is replaced, and the body's "Limitation:" sentence is deleted.
  • Changed expectations:
    • TP:621 Case 34 is renamed ("... with a CHIP-covered pregnancy stays in CHIP outside the pregnancy group, and the newborn is an infant") and now expects [false, false] and [NONE, INFANT].
    • TP:792 Case 38 now expects is_pregnant_for_medicaid: [true, false, false, false].
    • TFS:183 now expects medicaid_category: NONE, with its comment updated.
  • New cases: TFS:238, TS:800 (Case 25), and tests/.../states/ri/eohhs/medicaid/ri_medicaid_state_funded_postpartum_eligible.yaml Cases 1-2. I wrote them in the files' block style with your values unchanged.

SA1. Fixed.

  • IL:30-39 has the five references, and IL:128-130 replaces "(unverified estimates)" with the source periods.
  • FC:26-36 has the same five URLs, each with a one-line period comment.
  • SC:7020-7023 adds the March 2024 approval (page 11) as kind: policy. The body names the source periods.
  • I fetched the three in-period approvals. Budget Population 6b is on pages 2, 11 and 6, and the approval dates and periods match your titles.
  • One deviation: the repo's reference rule puts a single cited page in the href only, so the single-page titles drop "#page N". The two-page 2025 approval keeps "#page 3,15".

SA2. Fixed.

  • The main merge resolves S your way: ri_insurance_eligible is deleted, Rhode Island's third-party list feeds has_disqualifying_coverage (S:63-69), and the return keeps & ~has_disqualifying_coverage and | ri_chip_postpartum_eligible (S:71-78).
  • Case 26 is at TS:855.
  • Body item (c) is replaced by a description of the merged resolution.

SA3. Fixed. TRI:140 (Case 7) and TME:428 (Case 20).

G1. Fixed. TS:734-735 now quotes "without regard to the availability of federal financial participation".

G2. Done. "Related work" names the documentation conflict in S, the renumbering in TS, and the is_pregnant_for_medicaid_nfc coupling.

G3. Fixed.

  • (a) Six links are pinned to the S3 PDF: IL:31 and FC:27 (SA1), S:27 (#page=5), RI/ri_medicaid_has_third_party_coverage.py:11-12 (#page=5, with a "PDF pages 5, 19" comment), RIP/third_party_coverage.yaml:15-16 ("#page 5,19") and the TS:662 comment. The TP Case 36 comment link is pinned too.
  • (b) RIP/postpartum_coverage_months.yaml:12-13 adds RI-22-0024 section B with #page=7 in the href. Per the single-page rule, the page isn't in the title.
  • (c) RIP/third_party_coverage.yaml:17-22 has the EOHHS, TRICARE and CHAMPVA links.
  • (d) SC:7043-7046 quotes the CS27 words.

G4. Fixed.

  • documentation at RI/ri_pregnancy_end_date.py:8 and RI/ri_pregnancy_coverage.py:18 covers the annual inputs and the overlap with count_days_postpartum, where both routes apply.
  • ri_medicaid_pregnancy_end_date is renamed to ri_pregnancy_end_date, so both inputs share the ri_pregnancy_ prefix. The rename covers every file, and no partner files are affected.

G5. Fixed with a NOTE at FC:44-47 rather than a new parameter, since § 1.6(B) has one pregnancy row.

G6. Fixed. FC:43 is now ri_higher_limit = person("ri_medicaid_has_third_party_coverage", period), and (months > 0) & is removed (RI/ri_medicaid_postpartum_eligible.py:29-33). C1 removed the FS state clause.

G7. Fixed. The URL lines now follow their sentences above TP Case 34 (TP:615-620) and Case 36.

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 (c1b83f4868, head f479a25ce7 after merging the latest main). One change goes beyond your C1 code. title_xxi_pregnancy now also requires ~person("ri_medicaid_has_third_party_coverage", period) (RI/ri_medicaid_state_funded_postpartum_eligible.py:33-40, documentation updated). R.I. Gen. Laws § 42-12.3-3(g) makes the 12-month continuation an eligibility rule "without regard to the availability of federal financial participation", and only funding switches ("state-only funds will be used only if federal financial participation is not available"). So a new pregnancy may end the state-funded route only when Title XXI coverage is actually available. An insured person cannot get it: § 1.6(A)(2)(b) requires that the person "do not have third party liability insurance", and FCEP excludes other coverage since #10371 (42 CFR 457.310(b)(2)). Before the change, an undocumented, insured person with a non-Medicaid history who was pregnant again at or below 258% FPL had no route at all. New ri_medicaid_state_funded_postpartum_eligible.yaml Case 3 pins it: the insured person keeps the continuation and Medicaid eligibility, while the same person without coverage takes FCEP. The other cases are unaffected (checked by hand; no new run).

hua7450 and others added 2 commits October 29, 2026 14:50
…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 PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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. 5d072531cd merges main (#10365 squashed, #10371) and resolves S as SA2 proposed. 3f130f4200 applies C1, SA1-SA3 and G1, G3-G7 (19 files). c1b83f4868 adds one change beyond my C1 code: SF:14-16 and :34-39, and TSF Case 3. f479a25ce7 merges main (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. 0cc897fae1 is an ancestor of the head. The branch is 27 commits ahead of main and 6 behind (95cf2373a0). The 6 commits touch only Maine dependent-exemption files, changelog files, pyproject.toml and uv.lock. A trial merge with main is 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 the documentation attribute of S only and in TS, as the body says. This PR then needs one more main merge.
  • 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_pregnancy tests 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-35 also cites 42 CFR 457.310(b)(2), but the code applies only the narrower RI list.
  • A direct read of has_chip_disqualifying_health_coverage in SF makes a cycle (SF > has_chip_disqualifying_health_coverage > medicaid_enrolled > is_medicaid_eligible > SF). I confirmed the CycleError. The fix leaves out medicaid_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 format and ruff check clean; the new case fails at the head). Replace SF:32-41 with:
        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

  • TS Case 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.
  • TS Case 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, so medicaid_enrolled is true.
  • TSF Case 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.
  • TRI Case 7 and TME Case 20: an end date of 2024-01-01 is <= the January 1 reference date.

Investigated and cleared

  • The S merge resolution equals my SA2 text, and #10371's coverage test is unchanged outside Rhode Island.
  • ME:58 puts 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-7088 validates (test_source_conflicts.py passes) and records follows: 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 --check and ruff check on the changed variables: clean.
  • Mutations on a copy: SA3 (<) fails TRI and TME; six C1 mutants each fail at least one test; a direct read of the CHIP coverage list in SF raises a CycleError.
  • 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 in TSF).
  • 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.

hua7450 and others added 2 commits October 29, 2026 17:43
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>
@hua7450

hua7450 commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator Author

Thanks for round 2 (review). SA4 is applied with your tested fix, not the NOTE alternative. The new head is 67ea35e5f1; paths use your abbreviations, and line numbers refer to that head.

SA4. Fixed (34e547bb71).

  • SF:32-62 now holds your code verbatim. People with CHIP immigration status use the pregnancy limit and Rhode Island's third-party list. People without it use the FCEP limit and the CHIP no-other-coverage list without medicaid_enrolled, which avoids the cycle you found.
  • The SF:16 documentation now ends "…no coverage that bars that CHIP route."
  • TSF:116 adds Case 4 with your values. I checked it by hand: both undocumented people (other means-tested coverage, or the aggregate flag) keep the continuation and Medicaid eligibility, with no FCEP and no CHIP. The citizen with other means-tested coverage takes standard CHIP, because that coverage is not on the Rhode Island list.
  • TSF Case 3 and TS Case 25 are unchanged. Employer coverage is on both lists, and the Case 25 people have no coverage.
  • The body's federal-match sentence uses your wording: "…unavailable with third-party insurance or, for unborn-child coverage, with any coverage that bars CHIP."

Main. 67ea35e5f1 merges the latest main (40f6990eda). Only source_conflicts/candidates.yaml auto-merged, and no Medicaid, CHIP, Rhode Island or partner file changed. No parameter is touched in this round. The only breakdown table among the PR's parameter files is the 51-state Medicaid pregnancy income limit, so the single-member breakdown guard does not apply.

#10363 is still open. Once it merges, this PR will merge main again, combine the S documentation string, and renumber its Rhode Island TS cases to follow Case 27.

I didn't run the new case locally; CI will run it. ruff format and ruff check are clean.

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 PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 and TSF +49 (Case 4). No other file.
    • 67ea35e5f1 merges main (40f6990eda). Among the PR files, only SC changes (auto-merged entries from other PRs). No Medicaid, CHIP, Rhode Island or partner file changes.
    • 32fe9bfd4c merges main (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: S and TS. I check both resolutions below.
    • The PR is still 24 files, +1,502/-10, against main. The file set of git diff ec16e0fc99 32fe9bfd4c equals 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_enrolled among them). No reference URL is new or changed in the PR's own code this round. The new S references (42 USC 1397ll(d)(2)(A), 1397gg(e)(1)(K), SHO 21-007) come from #10363 on main.

Branch Status

  • Ancestry. f479a25ce7 is an ancestor of the head. The branch is 30 commits ahead of main and 1 behind. The one commit is d983c32370 (5:48pm EDT, "Update PolicyEngine US"). It changes only CHANGELOG.md, three compiled fragments, pyproject.toml and uv.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-16 combines #10363's pregnant-or-postpartum documentation with this PR's Rhode Island sentence.
    • S:46 keeps #10363's is_pregnant_for_medicaid_nfc read. S:73-79 keeps this PR's Rhode Island third-party list.
    • TS holds main'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 at 67ea35e5f1.
    • 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_eligible is 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_eligible is 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, so title_xxi_pregnancy is false. Results: SF true, ME true (through ME:58), and FCEP false (has_chip_disqualifying_health_coverage), so chip_enrolled is 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_pregnancy is true and SF is false. FC uses 1.95 (no third-party coverage), and 2.3 is above it, so ME is false. S is true and chip_enrolled is 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_enrolled true, medicaid_enrolled false). 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".
  • Inert FCEP limit. The FCEP branch of SF:42-46 cannot 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 TSF Case 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 since f479a25ce7. us-ri:medicaid-postpartum-end-month is intact, and test_source_conflicts.py passes.
  • 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/medicaid and states/ri/eohhs: 1,030 passed, with no CycleError. Round 2 had 951; the increase comes from #10360, #10363 and #10364.
  • At the head, test_source_conflicts.py and test_known_dead_reference_urls.py: 143 passed.
  • ruff format --check and ruff check on the 12 PR Python files: clean.
  • Mutations on copies, now deleted:
    • SF restored to its f479a25ce7 text: TSF 1 failed (Case 4), 3 passed.
    • medicaid_enrolled left in the FCEP coverage list: TSF 4 failed with a CycleError.
  • 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.

@hua7450
hua7450 merged commit ed34cae into main Oct 29, 2026
34 checks passed
@hua7450
hua7450 deleted the fix-ri-pregnancy-medicaid-pathways branch October 29, 2026 23:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Correct Rhode Island pregnancy Medicaid routing and postpartum continuation

2 participants