Skip to content

Lower California's non-MAGI Medi-Cal asset limit to $21,000 / $31,000 on July 1, 2027 - #10375

Merged
hua7450 merged 52 commits into
PolicyEngine:mainfrom
hua7450:ca-medi-cal-asset-limit-2027
Nov 2, 2026
Merged

hua7450 merged 52 commits into
PolicyEngine:mainfrom
hua7450:ca-medi-cal-asset-limit-2027

Conversation

@hua7450

@hua7450 hua7450 commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #10465

No longer stacked. #10360, #10364 and #10374 are merged, and this branch has merged main at c04845fc46, so this diff shows only this PR's changes. This PR's medically needy cases are Cases 31-36, after main's Cases 1-30.

What and why

California's budget trailer bill SB 164 (Statutes of 2026, Chapter 27; approved June 29, 2026) lowers the non-MAGI Medi-Cal asset limit on July 1, 2027. PolicyEngine kept $130,000 for one person and $195,000 for two in every later year. This PR adds the cut to the four California asset limits the model uses. The aged, blind and disabled limit's missing July 1, 2022 step ($130,000 / $195,000) is in #10364, not here.

Parameter (CA) Through June 30, 2027 From July 1, 2027
medicaid.eligibility.categories.senior_or_disabled.assets.limit.{individual,couple} $130,000 / $195,000 (none in 2024-2025; the July 2022 step is in #10364) $21,000 / $31,000
medicaid.eligibility.categories.medically_needy.limit.assets.{individual,couple} $130,000 / $195,000 $21,000 / $31,000
medicare.savings_programs.eligibility.asset.state_limit.{individual,couple} $130,000 / $195,000 $21,000 / $31,000
states.ca.chhs.wdp.eligibility.asset.{base,two_people,additional_person} (250% Working Disabled Program) $130,000 / $195,000 / +$65,000 for each person beyond two $21,000 / $31,000 / +$1,550 for each person beyond two (up to 10 people)

Working Disabled Program

WIC 14007.9(a)(1)(C) caps a Working Disabled Program applicant's resources at "the maximum levels established in subdivision (a) of Section 14005.62". So the program takes the new schedule too.

The old formula, base plus $65,000 for each person after the first, cannot express $21,000 / $31,000 / +$1,550. The PR therefore:

  • adds a two_people parameter ($195,000, then $31,000);
  • makes additional_person the amount for each person beyond two ($65,000, then $1,550);
  • changes ca_wdp_asset_eligible to use them.

Because $195,000 = $130,000 + $65,000, every limit before July 1, 2027 is unchanged.

Sources

  • SB 164, sec. 68, amends Welfare and Institutions Code (WIC) 14005.62 and keeps the $130,000 disregard plus $65,000 per additional member. Subdivision (e) says: "This section shall become inoperative on July 1, 2027".
  • SB 164, sec. 69, adds a new WIC 14005.62. For "an applicant or beneficiary whose eligibility is not determined using the modified adjusted gross income (MAGI)-based financial methods", subdivision (a)(1) sets "a resource limit of twenty-one thousand dollars ($21,000) in nonexempt property for a household with one member, thirty-one thousand dollars ($31,000) in nonexempt property for a household with two members, and one thousand five hundred fifty dollars ($1,550) for each additional household member, up to a maximum of 10 members". Subdivision (f) says: "This section shall become operative on July 1, 2027."
  • SB 164, sec. 71, re-adds WIC 14005.11 (Medicare Savings Programs), operative July 1, 2027. MSP resources must "not exceed the amount specified in subdivision (a) of Section 14005.62", so the cut also applies to MSP.
  • WIC 14005.40(c)(5) (aged and disabled FPL program): "Countable resources, as determined in accordance with subdivision (a) of Section 14005.62, do not exceed the maximum levels established in that section."
  • WIC 14007.9(a)(1)(C) (Stats. 2025, ch. 21, sec. 78, operative January 1, 2026): "The individual’s countable resources shall not exceed the maximum levels established in subdivision (a) of Section 14005.62."
  • ACWDL 21-31 (file pages 2-4) for the Working Disabled Program's July 1, 2022 history: "Effective July 1, 2022, the asset limits for Non-MAGI programs will increase to $130,000 for one person, and $65,000 for each additional person". Page 3 lists the ABD FPL aid codes and the 250% Working Disabled Program; page 4 shows "2 people $195,000".
  • Bill text: https://leginfo.legislature.ca.gov/faces/billTextClient.xhtml?bill_id=202520260SB164
  • DHCS Asset Limit FAQ (https://www.dhcs.ca.gov/medi-cal/help/asset-limit-frequently-asked-questions/) gives the same figures: $130,000 plus $65,000 "Through June 30, 2027", and "Starting July 1, 2027" $21,000 for one person, $31,000 for two and $1,550 for each extra person. I found no DHCS county letter on the 2027 limits yet. DHCS's MSP and Working Disabled Program pages still list only the current limit.

The statute and DHCS agree on the amounts and dates, so this PR records no source conflict.

MSP and the federal floor

msp_asset_eligible tests resources against the higher of the federal MSP limit and the state limit, because a state may be less restrictive than federal law but not more. The federal limit is $9,950 / $14,910 in 2026 and is indexed to CPI. That is well under $21,000 / $31,000, so the higher limit is California's, which matches sec. 71.

Timing

  • is_optional_senior_or_disabled_asset_eligible, is_medically_needy_for_medicaid and ca_wdp_asset_eligible are annual variables. They read the January 1 value, so they first use the lower limits in 2028. A comment above each July 2027 row says so. msp_asset_eligible is monthly and switches in July 2027.
  • The new WIC 14005.62(a)(2) also requires the director to certify that systems are ready, "and no sooner than July 1, 2027". Implementation is also subject to federal approval under (e). This PR uses the operative date in the statute and DHCS's FAQ.

Limitations

  • Follow-up Recheck California's July 2027 non-MAGI asset limit date when DHCS issues its county letter, and track the renewal phase-in #10542: recheck the July 1, 2027 date when DHCS issues its county letter, and track the renewal phase-in below.
  • New WIC 14005.62(b) and 14005.11(b) apply the new limit to people already enrolled only from their first annual redetermination on or after July 1, 2027. PolicyEngine has no redetermination-date input, so it applies the limit to everyone from that date.
  • The aged, blind and disabled, medically needy and MSP parameters cover one person or a couple only, so the $1,550 for each member after the second is encoded only for the Working Disabled Program, as was the earlier $65,000.

Notes for reviewers

Test plan

  • YAML cases come from the statute and ACWDL amounts:
    • Aged, blind and disabled:
      • 2027: one person at $21,001 and a couple at $31,001 are still eligible (the January 1 read).
      • 2028: ineligible at $21,001 for one person and $31,001 for a couple (each spouse under $21,000); eligible at exactly $21,000 and $31,000.
    • Medically needy:
      • 2027: one person at $21,001 and a couple at $31,001 are still eligible.
      • 2028: ineligible at $21,001 and $31,001; eligible at exactly $21,000 and $31,000.
    • MSP: at $21,001 and $31,001, eligible in June 2027 and ineligible from July 2027. At exactly $21,000 and $31,000, eligible in July 2027.
    • Working Disabled Program (new ca_wdp_asset_eligible.yaml):
      • 2025: a couple with $1,000,000 is eligible (no limit in 2024-2025).
      • 2026: a couple at $195,000 and three people at $260,000 are eligible.
      • 2027: one person at $21,001 and a couple at $31,001 are still eligible, and three people at $260,000 are eligible.
      • 2028: one person at $21,000 and $21,001; a couple at $31,000 and $31,001; three people at $32,550 and $32,551; eleven people at $43,400 and $43,401, with the household capped at 10.
  • Source conflicts: not applicable.
  • make format (ruff)
  • Changelog fragment in changelog.d/
  • CI passes at 753c6082c8 (34 of 34; tests were not run locally)

No file in tests/policy/baseline/partners/ changes.

axiom: TheAxiomFoundation/rulespec-us#1925 queued

🤖 Generated with Claude Code

hua7450 and others added 6 commits October 21, 2026 16:30
- Washington: no MSP asset test from 2023-01-01 (WSR 22-21-043).
- California: $130,000 / $195,000 asset limit from 2022-07-01; asset test
  reinstated from 2026-01-01 (ACWDL 21-31, 22-25, 25-14, 25-27).
- Minnesota: $10,000 / $18,000 asset limit, or the federal limit when
  higher (Minn. Stat. 256B.057 subd. 3).
- Illinois $25 and Mississippi $50 general income exclusions in place of
  the SSI $20.

Closes PolicyEngine#10359

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Switch on the senior and disabled medically needy flags for AR, IA, IL,
  NJ and ND.
- Add medicaid_medically_needy_income_limit, which applies a share of the
  poverty guideline (IL, MN, ND, NY, UT, WI) or of the SSI federal benefit
  rate (KS, WA) in place of a dollar limit; Washington applies its
  one-person limit to couples.
- Update dollar limits in CT, DC, NH, RI and NY (2022), and asset limits in
  CA, IL and NY.

Closes PolicyEngine#10357
Closes PolicyEngine#10358

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SB 164 (Stats. 2026, ch. 27) sec. 69 sets the non-MAGI resource limit
at $21,000 for one person and $31,000 for two from July 1, 2027, and
sec. 71 ties the Medicare Savings Program resource limit to it. Apply
the cut to the aged, blind and disabled, medically needy and MSP
California limits, with tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hua7450 and others added 2 commits October 26, 2026 16:43
…and pin the new limits

WIC 14007.9(a)(1)(C) caps 250% Working Disabled Program resources at the
WIC 14005.62(a) levels, so SB 164's July 1, 2027 schedule applies there
too: $21,000 for one person, $31,000 for two and $1,550 for each person
beyond two. Add a two_people parameter, make additional_person the amount
beyond two, and use them in ca_wdp_asset_eligible; limits before July
2027 are unchanged. Add eligible-side cases at or under the new limits,
WDP cases for one, two and three people, and January 1 timing comments
on the July 2027 rows read by annual variables.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…atute references

- Illinois gives each applying spouse with income their own $25 exemption
  (PM 15-04-03-a, 89 Ill. Adm. Code 120.335(a)(1)); new by-state flag
  state_general_exclusion_per_spouse, used only in the couple path.
- Tests pin Washington before 2023, California July 2022 and December
  2025, California's couple limit, and Minnesota's individual and couple
  limits from above.
- Cite Welf. & Inst. Code 14005.62, Laws of Washington 2022 ch. 297 and the
  official Mississippi rules; label the Illinois and Mississippi start
  dates as in-effect-by dates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rences

- Year-keyed cases pin every dated CT, DC, NH, RI, NY, MN, ND and WI
  income limit; cases sit exactly at the IL, ND, CA and NY limits, with
  CA one dollar over, CA 2024 without a limit, and couples at the NY, CA
  and IL couple asset limits.
- NJ and CA cases use incomes above the optional ABD pathway.
- Disabled adults in AR, IA, IL, ND and NJ are in a medically needy
  category.
- Arkansas spend down in cents (108.33 / 216.66, DHS quick reference).
- Fix NY GIS 22 MA/11 and RI 210-RICR-40-00-3 titles, the RI section,
  the KS F-8 page; cite 305 ILCS 5/5-2 and Welf. & Inst. Code 14005.62.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hua7450 and others added 5 commits October 26, 2026 17:21
ACWDL 21-31 raised the non-MAGI limit, including the ABD FPL program, to
$130,000 for one person and $195,000 for two on July 1, 2022; the CA ABD
rows jumped from $2,000 / $3,000 straight to no limit in 2024. Add the
2022 rows with the 21-31 reference and a 2023 case. Add 2027 cases
showing the annual variables still read $130,000, WDP cases at the 2026
three-person limit and at the ten-person cap, and the page lists in the
two_people reference titles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The PIL outside Chittenden County, the same for one and two people, each
January 1 (HBEE 8.06(b), 29.14; DCF B17-26; DVHA charts 2020-2026). No
2019 PIL was found, so 2018's value stays in force through 2019. The
higher Chittenden PIL is not modeled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PolicyEngine#10364 adds the same California 2022-07-01 rows, ACWDL 21-31 reference
and 2023 case to the senior_or_disabled asset files. Remove them here to
avoid duplicate edits; keep the 2027 January 1 case.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.yaml
KFF 2018 and 2026 list no medically needy program for aged, blind or
disabled people in these five states; the flags had been swapped with
AR, IL, IA, NJ and ND. Their -inf limits meant no result changes. The NJ
DMAHS fact sheet now 404s, so cite the 2026-05-14 Wayback copy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hua7450 and others added 5 commits October 26, 2026 20:08
# Conflicts:
#	policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml
#	policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml
#	policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… 1999

- A spouse's own income for the Illinois $25 exemption floors earned and
  unearned income separately, so a self-employment loss earns no
  exemption and does not raise countable income.
- Mississippi's MSP asset test ended 1999-07-01 (Eligibility Manual page
  7220; 23 Miss. Code R. 103-1.8(A)(1)), not 2024.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Iowa 441-75.8(7) and (5)"a", the NJ fact sheet (archived) and SPA
  KS-25-0019 page 7 for the $475 standard, alongside KFF.
- HBEE 29.14 cited from file page 50.
- Number the two category cases 3 and 4, after PR 10370's Cases 1-2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450

hua7450 commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator Author

Thanks, Pavel. Round 1 is addressed at head c3b93ce373. Line numbers below are at that head.

Paths:

  • TA = policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.yaml
  • TMN = .../medically_needy/is_medically_needy_for_medicaid.yaml
  • TMSP = .../medicare/savings_programs/eligibility/msp_asset_eligible.yaml
  • TW = .../states/ca/chhs/wdp/eligibility/ca_wdp_asset_eligible.yaml
  • V = policyengine_us/variables/gov/states/ca/chhs/wdp/eligibility/ca_wdp_asset_eligible.py
Item Status Where
SA1 Fixed. I changed the two 2028 eligible cases to your one-dollar-below amounts ($20,999; $15,499 + $15,500 = $30,999), keeping your names and comments. TA:184, TA:193
SA2 Fixed, all five cases verbatim. Your medically needy "Case 21" is now Case 29: main now has #10370's Cases 1-10 first, and #10374's cases follow as 11-23. TA:225; TMN:768 (Case 29); TW:272, TW:294, TW:318 (Cases 12-14)
G1 Deferred to the merge with #10364, as you suggested. The PR body's #10364 note gives the recipe (#10364's file plus git show c3b93ce373:<file> | sed -n '148,$p', giving 46 cases) and then the exact-limit cases. PR body, "Notes for reviewers"
G2 Applied: p.two_people + (capped_size - 2) * p.additional_person. V:25
G3 Applied: the ACWDL 21-31 title now reads "Increases to the Asset Limits for Non-Modified Adjusted Gross Income Medi-Cal Programs". policyengine_us/parameters/gov/states/ca/chhs/wdp/eligibility/asset/two_people.yaml:16
G4 Applied: ACWDL 21-31 (pages 2 and 4) and ACWDL 25-14 (pages 1 and 9). .../wdp/eligibility/asset/additional_person.yaml:14-17
G5 Applied. I read AB 173 sec. 16 on leginfo: 14005.11 as amended by SB 164 sec. 70 now has "(h) This section shall become inoperative on July 1, 2027". The body bullet is replaced, and both MSP files cite AB 173. .../medicare/savings_programs/eligibility/asset/state_limit/individual.yaml:19-20, couple.yaml:19-20; PR body
G6 No code change, as you suggested. The renewal phase-in stays a documented limitation and is tracked with G7 in #10542. PR body, "Limitations"
G7 Follow-up opened: #10542 (recheck the 2027-07-01 date and cite the DHCS county letter when it is issued). #10542

Stacking:

Update (head 5a37f33d7f): merged #10374 at 33d10a5f09, which adds its Cases 24-27, and main at 3f24a22578. This PR's medically needy cases are now Cases 28-33, so the SA2 couple case at TMN:768 is now Case 33 at TMN:831. MSP Cases 22-25 are unchanged.

Update (head 753c6082c8): C1 in your second review is addressed by merging #10374 at 0f8b603643, which replaces the single-member IL rounds_down_monthly.yaml with the scalar il/rounds_down_monthly.yaml. I also merged main at ec16e0fc99, which includes #10360 and #10364, and applied G1 with #10364's California inclusive flags: the 2028 eligible cases are now exactly $21,000 and $15,500 + $15,500 (TA:729, TA:738). Medically needy cases remain 28-33 (Case 33 is at TMN:831), and MSP Cases 22-25 are unchanged.

Update (head a8ffdcd1f7): round-3 C2 is addressed by merging #10374 at bdb48a7b2c (Illinois nearest-dollar limits through 2024), then main at 5f23a26bf8. G8 is applied to the PR body. TA now holds main's 53 cases (with #10386's four) plus this PR's six, so the G1 cases are at TA:799 and TA:808. Medically needy Cases 28-33 and MSP Cases 22-25 are unchanged.

hua7450 and others added 4 commits October 29, 2026 13:52
…needy-limits

# Conflicts:
#	policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_in_medicaid_medically_needy_category.yaml
#	policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.yaml
…and references

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.yaml
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 #10375, "Lower California's non-MAGI Medi-Cal asset limit to $21,000 / $31,000 on July 1, 2027" (hua7450). Round 2, incremental review of 8f9c019428..5a37f33d7f.

IDs: C = critical, SA = should address, G = suggestion. New items continue the numbering after the highest prior ID in each class.

Paths are the same as in my round 1 review: ABD/ = policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/, MN/ = .../medically_needy/limit/assets/, MSP/ = policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/, WDP/ = policyengine_us/parameters/gov/states/ca/chhs/wdp/eligibility/asset/, V = policyengine_us/variables/gov/states/ca/chhs/wdp/eligibility/ca_wdp_asset_eligible.py. Tests: TA = .../categories/is_optional_senior_or_disabled_asset_eligible.yaml, TMN = .../medically_needy/is_medically_needy_for_medicaid.yaml, TMSP = .../savings_programs/eligibility/msp_asset_eligible.yaml, TW = .../states/ca/chhs/wdp/eligibility/ca_wdp_asset_eligible.yaml. Line numbers refer to the reviewed head.

Source Documents

  • Reviewed head SHA: 5a37f33
  • Mode: incremental (round 2)
  • Scope: one own commit, f51df391f5 (8 files, +145/-9): the SA1 and SA2 tests, G2 in V:25, G3 in WDP/two_people.yaml:16, G4 in WDP/additional_person.yaml:14-17, and G5 in MSP/individual.yaml:19-20 and MSP/couple.yaml:19-20. The other commits are merges: #10360 at 5bb5a500e0, #10374 at 15059d9cd2 and then 33d10a5f09, and main at b210b45a6c and 3f24a22578. The merges renumber this PR's cases (TMN Cases 28-33, TMSP Cases 22-25) and change no line of this PR's own content. The PR body was updated (heads, recipe, AB 173 note, #10542).
  • Sources this round: I could not open leginfo (Cloudflare 403), the DHCS letter PDFs (Incapsula challenge) or Wayback (429 and a TLS error) from this machine. For SB 164, AB 173 sec. 16 and ACWDLs 21-31 and 25-14, I rely on my round 1 reading. Each new title and page in this round is the text I gave in round 1. The author also reports reading AB 173 sec. 16 on leginfo.
  • Issue #10542 (opened 1:42pm EDT, October 29): it lists the start-date recheck for all nine CA parameter files and the renewal phase-in.

Branch Status

  • The branch is 42 commits ahead of main (95cf2373a0) and 5 behind. GitHub reports MERGEABLE, and a trial merge with main is clean.
  • CI at the head (re-checked at 3:54pm EDT): 27 pass, 2 fail, 4 pending. "Full Suite - Rest (Python shard 3)" fails one test, and "Check Rest Python shards" fails because of it. See C1. "Household API Partners" and all baseline shards pass. Four contrib shards are still pending.
  • #10374 (33d10a5f09) and #10360 (5bb5a500e0) are still open, and their heads are the ones merged here. #10364 (7f8a8a1bcf) is still open.
  • #10364 trial merge (in a scratch clone): only TA conflicts. The ABD/ files merge to 2,000 → 130,000 (2022-07) → .inf (2024) → 130,000 (2026) → 21,000 (2027-07), and the matching couple series. The body's recipe gives 49 + 6 = 55 cases, and all 55 pass.
  • Other open PRs: #10386 (2131da0de7) conflicts in TA. #10240 (e3b765b1ce) conflicts in TMN and in #10360's msp_countable_income.yaml. I did not check #10394 (its head is not available locally).
  • No partner contract test differs from main. The six partner files that changed since my last review came from main merges.

Round 1 items

ID Status Evidence
SA1 RESOLVED TA:184-191 now uses 20,999 and TA:193-214 uses 15,499 + 15,500 = 30,999. Both pass. Mutations: an ABD/individual.yaml limit of 20,500 fails only the 20,999 case; an ABD/couple.yaml limit of 30,500 fails only the 30,999 case.
SA2 RESOLVED All five cases are in, word for word: TA:225-246, TMN Case 33 (TMN:831), TW Cases 12-14 (TW:272, TW:294, TW:318). Each mutation fails only the case it pins. The ABD/couple.yaml row moved to 2027-01-01 fails the 2027 couple case. The MN/couple.yaml row moved to 2027-01-01 fails Case 33. WDP/two_people.yaml moved to 2027-01-01 fails Cases 12 and 13. WDP/additional_person.yaml moved to 2027-01-01 fails Case 13. Removing the two_people 2024 .inf row fails Case 14.
G1 DEFERRED (accepted) The strict < is still on main (is_optional_senior_or_disabled_asset_eligible.py:32), and #10364 is still open. On the trial merge with #10364, the recipe file with the G1 amounts (21,000; 15,500 + 15,500) passes 55/55. The body's "Notes for reviewers" gives the recipe and the G1 step.
G2 RESOLVED V:25 is now p.two_people + (capped_size - 2) * p.additional_person. ruff format --check is clean. TW passes 14/14. The where makes the negative branch for one person harmless, and additional_person is never infinite, so inf * 0 cannot occur.
G3 RESOLVED WDP/two_people.yaml:16 now has the page 1 subject line, "Increases to the Asset Limits for Non-Modified Adjusted Gross Income Medi-Cal Programs". The MSP files use the same title.
G4 RESOLVED WDP/additional_person.yaml:14-17 cites ACWDL 21-31 "#page 2,4" (#page=2) and ACWDL 25-14 "#page 1,9" (#page=1). These are the pages where I read "$65,000 for each additional person" in round 1.
G5 RESOLVED The body bullet now reads as I suggested. MSP/individual.yaml:19-20 and MSP/couple.yaml:19-20 cite AB 173 sec. 16 and WIC 14005.11(h). This agrees with my round 1 reading and with the author's quote of (h).
G6 DEFERRED (accepted) Item 2 of #10542 tracks the renewal phase-in, and the body's "Limitations" section documents it. It was a suggestion, and the model has no redetermination-date input.
G7 DEFERRED (accepted) Item 1 of #10542 tracks the date recheck and the future DHCS letter for all nine CA files.

New findings

Critical

C1. CI fails at the head because of a parameter file that this branch takes from #10374.

  • Where: policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/medically_needy/limit/income/rounds_down_monthly.yaml. It came from #10374's commit 33d10a5f09 and has a state_code breakdown with one member, IL.
  • Evidence: policyengine_us/tests/test_parameter_files.py::test_enum_breakdown_parameters_do_not_have_single_member_tables reports: "has metadata.breakdown=['state_code'] but only one top-level member 'IL'. Use a scalar parameter under a member-specific path instead." The guard came from main (e281f7eef5). The same test fails in #10374's own CI (job 123653103433). I ran the test at this head: 1 failed, 7 passed.
  • Why CRITICAL: a CI failure with a real test failure, not an infrastructure timeout. This PR's own files do not cause it, and this PR needs no own change for it.
  • Fix: #10374 fixes the file (its formula reads p.rounds_down_monthly[state] in medicaid_medically_needy_income_limit.py:42). Then merge #10374's new head into this branch, or merge main after #10374 merges, and confirm that CI passes.

Should address

None.

Suggestions

None.

Investigated and cleared

  • New test arithmetic. TA: 20,999 < 21,000; 15,499 + 15,500 = 30,999 < 31,000; and in 2027, 31,001 < 195,000. TMN Case 33: a probe gives the CA couple income limit as 11,208 (934 x 12), and (9,000 - 4,000) x 2 = 10,000 is under it. In 2027 the couple asset limit reads 195,000, and in 2028 it reads 31,000. TW: 31,001 ≤ 195,000 (Case 12); 195,000 + 65,000 = 260,000 ≤ 260,000 (Case 13); .inf in 2025 (Case 14).
  • Merge resolutions. Compared with #10374's head, TMN adds only this PR's Cases 28-33 at the end. Compared with #10360's head, TMSP adds only Cases 22-25 at the end. No case of theirs is lost or changed. Compared with main, TA and TW have additions only.
  • PR body. The merged heads, case numbers (MN 28-33, MSP 22-25), the #10364 recipe (49 + 6 = 55 cases) and the test plan match the head. The unchecked "CI passes" box is accurate (C1).
  • Changelog. This PR's fragment is unchanged. The two stacked fragments are still present, and the body's stacking steps remove them with git rm.

Out of scope / follow-up

  • #10374's MN/individual.yaml:21 and MN/couple.yaml:21 still use the old ACWDL 21-31 title "(Phase I)". This belongs to #10374's review, as in round 1.
  • The CA medically needy income levels in the TMN comments (600 and 934 a month) belong to #10374's review.
  • The microsimulation was not run.

Tests run

  • At the head, the four touched test files and ca_wdp_eligible.yaml: 99 passed (TA 16, TMN 34, TMSP 25, TW 14, ca_wdp_eligible 10).
  • At the head, the stacked PRs' other changed YAML files (is_in_medicaid_medically_needy_category, medicaid_medically_needy_income_limit, medicaid_medically_needy_medical_expenses, msp_countable_income): 50 passed.
  • At the head, pytest policyengine_us/tests/test_parameter_files.py: 1 failed, 7 passed (C1).
  • Mutations on a scratch copy: 7 of 7 were caught, and each was caught only by the new SA1 or SA2 case for it.
  • Trial merge with #10364 (scratch clone): the recipe TA passed 55/55, and with the G1 amounts it also passed 55/55.
  • ruff format --check on V: clean.

Verdict

REQUEST_CHANGES: All round 1 items are resolved or accepted as deferred, and this PR's own changes are correct. The only open item is C1, a CI failure that comes from #10374's rounds_down_monthly.yaml. Fix it in #10374, merge that head here, and this PR is ready to approve when CI passes.

hua7450 and others added 4 commits October 29, 2026 17:42
…d comments

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…into ca-medi-cal-asset-limit-2027

Keep main's PolicyEngine#10360 MSP files and append this PR's 2027 rows, SB 164 and
AB 173 references, and MSP Cases 22-25. For the aged, blind and disabled
test file, take PolicyEngine#10364's file and append this PR's cases, then apply
Pavel's G1: with California's inclusive limit flags from PolicyEngine#10364, the 2028
eligible cases sit exactly at $21,000 and $31,000.

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 #10375, "Lower California's non-MAGI Medi-Cal asset limit to $21,000 / $31,000 on July 1, 2027" (hua7450). Round 3, incremental review of 5a37f33d7f..753c6082c8.

IDs: C = critical, SA = should address, G = suggestion. New items continue the numbering after the highest prior ID in each class.

Paths are the same as in my round 1 and round 2 reviews: ABD/ = policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/, MN/ = .../medically_needy/limit/assets/, MSP/ = policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/, WDP/ = policyengine_us/parameters/gov/states/ca/chhs/wdp/eligibility/asset/, V = policyengine_us/variables/gov/states/ca/chhs/wdp/eligibility/ca_wdp_asset_eligible.py. Tests: TA = .../categories/is_optional_senior_or_disabled_asset_eligible.yaml, TMN = .../medically_needy/is_medically_needy_for_medicaid.yaml, TMSP = .../savings_programs/eligibility/msp_asset_eligible.yaml, TW = .../states/ca/chhs/wdp/eligibility/ca_wdp_asset_eligible.yaml. Line numbers refer to the reviewed head.

Source Documents

  • Reviewed head SHA: 753c608
  • Mode: incremental (round 3)
  • Scope: two merge commits, no own commit.
    • 66939956eb merges #10374's head 0f8b603643. It moves the Illinois rounding flag to the scalar medically_needy/limit/income/il/rounds_down_monthly.yaml, reads it in medicaid_medically_needy_income_limit.py:40, adds Case 23 to medicaid_medically_needy_income_limit.yaml, and changes three TMN comments.
    • 753c6082c8 merges main at ec16e0fc99, with #10360 (631ff8cf10), #10363 (3cfcb37e00) and #10364 (ec16e0fc99).
    • This PR's own content changed in one place: the two 2028 eligible cases in TA:729-759 now sit at exactly $21,000 and $15,500 + $15,500 = $31,000 (G1). The ABD/ files took #10364's July 2022 step and Missouri rows, and kept this PR's SB 164 reference and 2027-07-01 rows. The MN/, MSP/, WDP/, V, TMSP, TW and changelog files of this PR did not change.
    • The PR body was updated: #10360 and #10364 are merged, the merged heads, the G1 note and the inclusive-limit note.
  • Sources this round: leginfo returned 403 and justia 403. The DHCS FAQ returned an Incapsula challenge, and Wayback returned 429. This round adds no new reference to this PR's own files. The only new citation is the "WIC 14005.40(c)(5)" comment on the G1 cases. That is the text I gave in round 1, from my round 1 reading of the section ("do not exceed the maximum levels established in that section").
  • Issue #10542 is open. It still lists the start-date recheck for all nine CA parameter files and the renewal phase-in.

Branch Status

  • The branch is 46 commits ahead of main and 1 behind. The missing commit is the release d983c32370 (5:48pm EDT). It deletes the #10360, #10363 and #10364 changelog fragments and bumps the version. A trial merge (git merge-tree) with d983c32370 is clean. This PR does not touch those three fragments, so the merge keeps them deleted.
  • CI at the head: 34 pass, 0 fail, 0 pending. This includes "Household API Partners".
  • #10374 is open, MERGEABLE, at 0f8b603643, which is the head merged here. Its CI is also 34 pass.
  • Merge order: #10374 first, then this PR, with the body's three stacking steps (merge main, git rm the #10374 fragment if the release removed it, then resolve the insertion-only conflicts in MN/ and TMN).
  • No partner contract test differs from the merge base or from main.

Round 2 items

ID Status Evidence
C1 RESOLVED The breakdown file medically_needy/limit/income/rounds_down_monthly.yaml is gone. The scalar .../income/il/rounds_down_monthly.yaml has no breakdown, and medicaid_medically_needy_income_limit.py:40 reads (state == "IL") & p.il.rounds_down_monthly. No other file reads the old path. At the head, pytest policyengine_us/tests/test_parameter_files.py passes 8/8, including test_enum_breakdown_parameters_do_not_have_single_member_tables. The test lives in policyengine_us/tests/, not in a code_health/ folder. CI is 34/34 green. The new income limit Case 23 is correct: 2022 keeps 18,310 and 13,590; 2023 gives 19,720 / 12 = 1,643.33, floored to 1,643 x 12 = 19,716, and 14,580 / 12 = 1,215 exactly.
SA1 RESOLVED G1 replaced the one-dollar-below cases with exact-limit cases, and they still pin the amounts. Mutations: ABD/individual.yaml 2027-07-01 at 20,999 fails only "assets at the July 2027 CA limit in 2028, eligible". ABD/couple.yaml at 30,999 fails only "joint filers at the July 2027 CA couple limit in 2028, eligible". The 21,001 and 31,001 ineligible cases catch a limit raised by $1.
SA2 RESOLVED The five cases are unchanged and pass: TA:761-790, TMN Case 33 (TMN:831), TW Cases 12-14 (TW:272, TW:294, TW:318).
G1 RESOLVED TA:729-736 uses 21,000, and TA:738-759 uses 15,500 + 15,500, with the names and comments I gave in round 1. On main, #10364 sets CA individual_limit_inclusive and couple_limit_inclusive to true from 2015. With the CA individual flag set to false, the 21,000 case fails, together with #10364's three CA at-limit cases. With the couple flag set to false, the 31,000 case fails, together with #10364's two CA couple at-limit cases.
G2 RESOLVED V:25 is unchanged since round 2. TW passes 14/14.
G3 RESOLVED WDP/two_people.yaml:16 is unchanged.
G4 RESOLVED WDP/additional_person.yaml:14-17 is unchanged.
G5 RESOLVED MSP/individual.yaml:19-20 and MSP/couple.yaml:19-20 are unchanged. After the #10360 merge, this PR adds only the SB 164 and AB 173 references and the 2027-07-01 rows to the two MSP/ files.
G6 DEFERRED (accepted) Item 2 of #10542 (open) tracks the renewal phase-in. The body's "Limitations" section documents it.
G7 DEFERRED (accepted) Item 1 of #10542 (open) tracks the date recheck and the future DHCS letter for all nine CA files.

New findings

Critical

C2. Inherited from #10374 (its C3): Illinois medically needy limits for 2018-2022 keep the cents.

  • Where: this branch contains #10374's head 0f8b603643, so it carries medically_needy/limit/income/il/rounds_down_monthly.yaml and the Illinois branch of medicaid_medically_needy_income_limit.py as they are there.
  • Evidence: in 2022 the model gives $1,132.50 / $1,525.83 a month for one and two people. The IDHS table publishes $1,133 / $1,526, and KFF 2018 and the IDHS 2019-2021 tables also round to the nearest dollar. The error is under $0.50 a month, but at the published level it makes the person ineligible in 7 of 10 probe cases (2018-2022).
  • The fault is in my round-1 fix on #10374, not in this PR's own work. My #10374 review gives the tested fix.
  • Fix: once #10374 takes the fix, merge #10374 into this branch again. This PR's own files need no change.

Should address

None.

Suggestions

G8. Correct two small points in the PR body.

  • Where: "Notes for reviewers", the second sub-bullet under "Resources exactly at the limit", and the last box of "Test plan".
  • Evidence: the body says that #10364 added the inclusive flags and that "All four formulas therefore count resources equal to the limit as within it." The flags drive only is_optional_senior_or_disabled_asset_eligible. The other three formulas already use <= and do not read the flags: is_medically_needy_for_medicaid.py (assets <= asset_limit), msp_asset_eligible.py (countable_resources <= asset_limit) and V:28. Also, the "CI passes" box is still unchecked, but CI is now 34/34 green.
  • Why a suggestion: this is documentation only. The model and the tests are correct.
  • Fix: change the sentence to "The flags make the aged, blind and disabled comparison inclusive for California. The medically needy, MSP and Working Disabled Program formulas already use <=. So all four count resources equal to the limit as within it." Then tick the CI box.

Investigated and cleared

  • Merge result with main. Compared with ec16e0fc99, the ABD/ files add only the SB 164 reference and the 2027-07-01 rows. The CA series are 2,000 → 130,000 (2022-07) → .inf (2024) → 130,000 (2026) → 21,000 (2027-07), and 3,000 → 195,000 → .inf → 195,000 → 31,000. TA adds 99 lines and deletes none: main has 49 cases, and with this PR's 6 cases the file has 55. The MSP/ files and TMSP add only lines (88 test lines, no deletions). No case from #10360 or #10364 was lost or changed.
  • #10364 logic and this PR. CA is not in uses_msp_limit (only AR, OK and SC are), so CA still uses its state dollar limit. The new whole-cent rounding of resources does not change any CA case. #10360's applies.yaml turns the CA MSP asset test off for 2024-2025 and on from 2026, so this PR's MSP/ rows need no .inf row.
  • New test arithmetic (G1). 21,000 ≤ 21,000 and 15,500 + 15,500 = 31,000 ≤ 31,000 in 2028. The January 1, 2028 read gives 21,000 / 31,000 from the 2027-07-01 rows. Both values are exact in float32.
  • Exact-limit cases in the other programs. TMN Cases 30-31, TMSP Cases 24-25 and TW Cases 2, 4 and 6 were already at the limits in round 2. All pass.
  • PR body. The merged heads (#10374 0f8b603643, main ec16e0fc99), the case counts (TA 49 + 6 = 55, TMN Cases 28-33, TMSP Cases 22-25, TW Cases 1-14), the stacking steps and the test plan match the head, apart from G8.
  • Changelog. This PR's fragment is unchanged. The #10374 fragment is still present, and step 2 of the body's stacking steps removes it if needed. The three main fragments on the branch are deleted by the release commit, and the trial merge keeps them deleted.

Out of scope / follow-up

  • #10374's MN/individual.yaml:21 and MN/couple.yaml:21 still use the old ACWDL 21-31 title "(Phase I)". This belongs to #10374's review, as in rounds 1 and 2.
  • The CA medically needy income levels in the TMN comments (600 and 934 a month) belong to #10374's review.
  • The microsimulation was not run.

Tests run

  • At the head, pytest policyengine_us/tests/test_parameter_files.py: 8 passed (C1).
  • At the head, the YAML folder gov/hhs/medicaid/eligibility/categories: 397 passed. The rest of gov/hhs/medicaid: 483 passed. gov/hhs/medicare/savings_programs, gov/states/ca/chhs and gov/states/ca/dhcs (Medi-Cal): 199 passed.
  • Per file: TA 55, TMN 34, TMSP 25, TW 14, ca_wdp_eligible 10, medicaid_medically_needy_income_limit 23. All passed.
  • Mutations on a scratch copy (deleted after use): 4 of 4 were caught. The CA individual limit at 20,999 and the CA couple limit at 30,999 each fail only the matching G1 case. The CA individual and couple inclusive flags set to false fail the matching G1 case and #10364's CA at-limit cases.
  • Trial merge with main d983c32370 (git merge-tree): clean.

Verdict

REQUEST_CHANGES: C1 is resolved (the scalar Illinois flag is in, the parameter-file test passes, and CI is 34/34 green). G1 is applied, and every other round 1 and round 2 item is resolved or accepted as deferred to #10542. The main merge did not break any of this PR's tests or logic. C2, inherited from #10374, is open; it clears when this branch merges #10374's fix. G8 is a PR-body wording point. Merge #10374 first, then this PR, with the body's stacking steps.

hua7450 and others added 4 commits October 30, 2026 10:45
KFF 2018 and the IDHS 2019-2024 tables round the monthly level to the
nearest dollar; the 2025 and 2026 tables drop the cents. Add the scalar
il/rounds_to_nearest_monthly flag and move il/rounds_down_monthly to 2025.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Takes PolicyEngine#10374's Illinois nearest-dollar rounding fix (Pavel's C3 there, C2 here) and its main merge at 7f736e8. The aged, blind and disabled asset test keeps main's 53 cases and appends this PR's 6.

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 #10375, "Lower California's non-MAGI Medi-Cal asset limit to $21,000 / $31,000 on July 1, 2027" (hua7450). Round 4, incremental review of 753c6082c8..a8ffdcd1f7.

IDs: C = critical, SA = should address, G = suggestion. New items continue the numbering after the highest prior ID in each class.

Paths are the same as in my earlier rounds: ABD/ = policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/, MN/ = .../medically_needy/limit/assets/, INC/ = .../medically_needy/limit/income/, MSP/ = policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/, WDP/ = policyengine_us/parameters/gov/states/ca/chhs/wdp/eligibility/asset/, V = policyengine_us/variables/gov/states/ca/chhs/wdp/eligibility/ca_wdp_asset_eligible.py, VL = policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medically_needy/medicaid_medically_needy_income_limit.py. Tests: TA = .../categories/is_optional_senior_or_disabled_asset_eligible.yaml, TMN = .../medically_needy/is_medically_needy_for_medicaid.yaml, TL = .../medically_needy/medicaid_medically_needy_income_limit.yaml, TMSP = .../savings_programs/eligibility/msp_asset_eligible.yaml, TW = .../states/ca/chhs/wdp/eligibility/ca_wdp_asset_eligible.yaml. Line numbers refer to the reviewed head.

Source Documents

  • Reviewed head SHA: a8ffdcd
  • Mode: incremental (round 4)
  • Scope: two merge commits, no own commit, both on October 30 at 10:50am EDT.
    • 9175021a3f merges #10374's head bdb48a7b2c. That head carries the C2 fix (#10374's C3): INC/il/rounds_down_monthly.yaml (false from 2018, true from 2025, plus the May 15, 2025 capture), the new scalar INC/il/rounds_to_nearest_monthly.yaml (true from 2018, false from 2025), VL:39-57 (the in_il, rounds_to_nearest and np.floor(fpg_monthly + 0.5) lines), the new Case 23 in TL:576-600, and the #10374 changelog fragment text. It also brings main at 7f736e8f3a, with #10386 (70eac3c751): four Maine cases in TA:694-762, a Maine savings exclusion in is_optional_senior_or_disabled_asset_eligible.py, and the new senior_or_disabled/covers_blind_or_disabled.yaml.
    • a8ffdcd1f7 merges main at 5f23a26bf8 (the release commit). It changes only CHANGELOG.md, pyproject.toml, uv.lock and one deleted main fragment.
    • This PR's own California files did not change. git diff 753c6082c8 HEAD shows no change in ABD/, MN/, MSP/, WDP/, V, TMN, TMSP, TW or changelog.d/ca-medi-cal-asset-limit-2027.fixed.md. In TA, the only change is the four Maine cases from main, inserted above the California block. The California block (TA:764-861, six cases) is byte-for-byte the same.
    • The PR body was updated: the merged heads (#10374 bdb48a7b2c, main 5f23a26bf8), the TA case count (53 + 6 = 59), the G8 sentence and the ticked CI box.
  • Sources this round: the three Wayback captures that the C2 fix cites return 200 with id_, and they show the AABD 100% FPL levels in the reference titles: Sept. 28, 2022 $1,133 / $1,526; July 15, 2024 $1,255 / $1,703; May 15, 2025 $1,304 / $1,762. This round adds no new California reference.
  • Issue #10542 is open. It still tracks the start-date recheck and the renewal phase-in (G6, G7).

Branch Status

  • The branch is 50 commits ahead of main (7a58b4fa2e) and 52 behind. A trial merge (git merge-tree) with 7a58b4fa2e is clean. main changed none of this PR's 31 files since 5f23a26bf8, and no Medicaid, MSP, SSI or CA CHHS variable or parameter.
  • CI at the head: 33 pass, 0 fail, 0 pending. This includes "Household API Partners".
  • No file under policyengine_us/tests/policy/baseline/partners/ differs from main.
  • #10374 is open at 51818a8130 (a main merge at bdd08b8d69, October 30, 7:25pm EDT). Its IL files, VL, TL and its changelog fragment are identical to this head (git diff 51818a8130 HEAD on those paths is empty). So this branch does not need to merge #10374 again for C2. One #10374 check, "Contrib tests / Full Suite - Contrib (other-shard-1)", was cancelled at the 60-minute limit (8:05pm to 9:05pm EDT, October 30), with no test failure. That is #10374's item: re-run it before #10374 merges.
  • Merge order: #10374 first, then this PR, with the body's three stacking steps. I simulated a squash merge of #10374 onto main 7a58b4fa2e and then merged this head into it. Only three files conflict: MN/individual.yaml, MN/couple.yaml and TMN. Each conflict hunk has this PR's lines on one side and nothing on the other (the SB 164 reference, the 2027-07-01 row, and Cases 28-33). That matches step 3 of the body. All other files, including the IL files, merge cleanly.

Round 3 items

ID Status Evidence
C2 RESOLVED The fix is present and identical to my round 3 fix on #10374 and to #10374's current head 51818a8130. INC/il/rounds_down_monthly.yaml and INC/il/rounds_to_nearest_monthly.yaml match my tested fix files byte for byte. VL:40-44 reads both flags, and VL:54 is np.floor(fpg_monthly + 0.5) * MONTHS_IN_YEAR. Neither file has a breakdown, and the guard test passes (8 of 8). TL:576-600 is my Case 23. Probe at the head: one and two people in IL, 2018-2026, at 12 times the published level. The model limit equals the published level in 18 of 18 cases, and all 18 are eligible (in round 3, 7 of the 10 cases for 2018-2022 were ineligible). Mutations: np.round in place of the half-up step fails only Case 23, and rounds_to_nearest_monthly false from 2018 fails only Case 23.
G8 RESOLVED "Notes for reviewers" now has my sentence: the flags make the aged, blind and disabled comparison inclusive for California, and the medically needy, MSP and Working Disabled Program formulas already use <=. The CI box is ticked. Optional: the box says "CI passes at 753c6082c8 (34 of 34)". At this head, CI is 33 of 33.
C1, SA1, SA2, G1-G5 RESOLVED (round 3) The files that these items rest on did not change in this round (see Scope). TA passes 59 of 59, including the G1 exact-limit cases at TA:799 and TA:808. TMN Cases 28-33, TMSP and TW pass.
G6 DEFERRED (accepted) Item 2 of #10542 (open) tracks the renewal phase-in. The body's "Limitations" section still documents it.
G7 DEFERRED (accepted) Item 1 of #10542 (open) tracks the date recheck and the future DHCS letter.

New findings

Critical

None.

Should address

None.

Suggestions

None.

Investigated and cleared

  • C2 arithmetic (Case 23). The 2022 poverty guideline is $13,590 / $18,310, and the 2025 guideline is $15,650 / $21,150. 2022: 13,590 / 12 = 1,132.50, half up to 1,133, x 12 = 13,596; 18,310 / 12 = 1,525.83, to 1,526, x 12 = 18,312. 2025: 21,150 / 12 = 1,762.50, cents dropped, 1,762, x 12 = 21,144; 15,650 / 12 = 1,304.17, to 1,304, x 12 = 15,648. These match the test and the IDHS captures.
  • #10386 merge and California. The Maine savings exclusion in is_optional_senior_or_disabled_asset_eligible.py applies only where(state == "ME", ...), so it is 0 for California. covers_blind_or_disabled.yaml is true for CA from 2018, so the CA pathway is unchanged. The four Maine cases are main's, and their arithmetic is right (9,000 - 8,000 = 1,000 < 2,000; 10,000 - 8,000 = 2,000, not under 2,000; 14,000 - 12,000 = 2,000 < 3,000; 15,000 - 12,000 = 3,000, not under 3,000).
  • TA merge result. TA has 53 cases at 5f23a26bf8 and 59 at the head. Against main, TA adds 99 lines and deletes none. This matches the body.
  • Changelog. Against main, the branch adds only ca-medi-cal-asset-limit-2027.fixed.md (unchanged) and #10374's medicaid-medically-needy-limits.fixed.md. The release in a8ffdcd1f7 removed ca-capi-ssi-ssp-standard.fixed.md, and the branch keeps it removed. Step 2 of the body still covers the #10374 fragment.
  • PR body. The merged heads, the TA count (53 + 6 = 59), the TMN numbering (Cases 28-33 after #10374's Cases 1-27, at TMN:704-831) and the stacking steps match the head. The axiom: line is queued (process note only).

Out of scope / follow-up

  • #10374's cancelled contrib shard and its remaining items belong to #10374's review.
  • The microsimulation was not run.

Tests run

  • At the head, pytest policyengine_us/tests/test_parameter_files.py: 8 passed.
  • At the head, the YAML folder gov/hhs/medicaid/eligibility/categories/medically_needy: 66 passed (TMN 34, TL 23, and the two other files). The whole gov/hhs/medicaid/eligibility/categories folder: 419 passed.
  • Per file or folder: TA 59 passed, TMSP 25 passed, gov/states/ca/chhs/wdp 27 passed (TW 14, ca_wdp_eligible 10, and the rest).
  • IL probe (18 cases, 2018-2026): 18 of 18 at the published level and eligible.
  • Mutations on a scratch copy (deleted after use): 2 of 2 caught, each by Case 23 only.
  • Trial merges (git merge-tree): clean with main 7a58b4fa2e. After a simulated squash of #10374, insertion-only conflicts in MN/individual.yaml, MN/couple.yaml and TMN, as the body says.

Verdict

APPROVE: C2 is resolved, because this branch now carries #10374's tested Illinois rounding fix, identical to #10374's current head. G8 is applied. Every earlier item is resolved or accepted as deferred to #10542. The merges did not change any California Medi-Cal asset file or test, and CI is 33 of 33 green. Merge #10374 first (after a re-run of its cancelled shard), then this PR, with the body's stacking steps.

hua7450 and others added 2 commits November 2, 2026 11:38
…0240 and PolicyEngine#10378) into ca-medi-cal-asset-limit-2027

Resolves the conflicts from PolicyEngine#10374's squash: keeps main's medically needy files, adds this PR's SB 164 references and 2027-07-01 rows to the asset limits, and appends this PR's medically needy cases as Cases 31-36. medicaid_medically_needy_income_limit.yaml is main's, so it leaves this PR's diff.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…al-asset-limit-2027

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

Encode SB 164's July 1, 2027 non-MAGI Medi-Cal asset limit (WIC 14005.62)

2 participants