Add Medicaid LTSS financial eligibility screen (TX, DE, WA) - #9184
Add Medicaid LTSS financial eligibility screen (TX, DE, WA)#9184MaxGhenis wants to merge 8 commits into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9184 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 2 25 +23
Lines 52 339 +287
Branches 1 0 -1
==========================================
+ Hits 52 339 +287
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Program ReviewPR #9184 — "Add Medicaid LTSS financial eligibility screen (TX, DE, WA)" (author: @MaxGhenis). Opt-in financial-threshold screen (special income limits/QIT, medically-needy, resource limits, CSRA, home equity, MMMNA) for 2026, deliberately not wired into Source Documents
Branch Status⚠ PR branch is 24 commit(s) behind main. Consider rebasing before merging. Review was scoped to the PR's actual changes — staleness did not affect findings. Critical (Must Fix)
Should Address
Suggestions
Investigated and Cleared
Source Audit Summary
Validation Summary
Review Severity: REQUEST_CHANGESOne critical issue: the Delaware fail-closed home-equity design means a state the PR adds can never pass the composite screen — including non-homeowners — and the underlying premise (no DE cap exists) is contradicted by DSSM 20320.7.B/E, which adopts the federal-minimum $752,000 cap. Everything else is non-blocking: values are accurate and unusually well sourced, arithmetic is correct at every tested boundary, and the confirmed TX MMMNA mismatch affects an informational quantity only. Next StepsTo auto-fix issues: This review was generated by the /review-program multi-agent pipeline (regulatory, reference, code-pattern, and test validators; income and resources source audits; code-path, cross-reference, and external-source verification agents). |
…gate - Give Delaware the CPI-indexed federal-minimum home-equity cap (DSSM 20320.7.B/E) via a new long_term_care/home_equity/minimum_limit parameter; Texas reads the same minimum and Washington reads the existing tracked maximum-tier limit (WAC 182-513-1350(8)(c)). - Pass zero-equity applicants everywhere (42 USC 1396p(f)(1)(A)); unmodeled states pass at or below the federal minimum and fail closed above it. - Pay the Texas MMMNA as the flat federal maximum (Appendix XXXI; MEPD J-7200); Delaware and Washington keep the federal formula (DSSM 20910.4-.6; WAC 182-513-1385). - Gate the SSI-related pathways on is_ssi_aged_blind_disabled (42 CFR 435.236, 435.1005). - Delete the seven orphan federal parameters and the parallel home-equity parameter tree; cross-reference the annual chassis. - Sharpen references (CIB subject lines and page anchors, DSSM section titles, TX revision stamp, WA odd-year note, 1396r-5(d)(4), canonical WAC links) and grow the suite from 35 to 59 tests. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The docstring-only edit pulled the file into the selective-coverage report without its tests, tripping codecov/project; the LTSS screen's docstring carries the cross-reference instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Thanks @DTrim99 — this is an unusually useful review, and sorry it sat for two weeks. Everything below is now on the branch, after merging Before touching code I re-verified the statute claims against the primary sources (the collected DSSM PDF, the April 2026 CMS CIB, 42 USC 1396p/1396r-5, P.L. 119-21 §71108, TX Appendix XXXI + J-7200, WAC 182-513-1350/-1380/-1385/-1100, and the WA standards sheet). Your DSSM reading checks out exactly; two details came back different and are noted below. Critical: Delaware fail-closed home equity — fixed, your reading confirmedDSSM 20320.7.B bars payment only for "Individuals with equity value in home property that exceeds the home equity cap as set by federal regulations," and the 20320.7.E table ($500,000 in 2006, $506,000 in 2011, $525,000 in 2012, then CPI yearly) tracks the federal minimum tier exactly — the maximum-tier figures for those years appear nowhere in the manual. So DE's cap is the CPI-indexed federal minimum: $752,000 for 2026 per the April 2026 CIB. Fix as implemented:
Should-address
SuggestionsTaken: DE CSRA Declined, with reasons: the broad stock-vs-flow One thing your review surfaced that's out of scope here: the pre-existing CI is green across all 33 checks on the latest run — full suite, microsimulation, partner contract tests, and codecov patch + project. Re-requesting your review. |
Program Review — Medicaid LTSS financial eligibility (TX, DE, WA)PR #9184 adds an opt-in Medicaid long-term-services-and-supports (LTSS) financial-eligibility screen for TX, DE, and WA plus the federal spousal-impoverishment chassis (28 variables, 24 parameters, 6 YAML test files, effective 2026). The screen reports whether an applicant would clear the LTSS financial thresholds; it does not set actual Medicaid eligibility or a benefit amount. This was reviewed across five independent passes (regulatory, references, code patterns, test coverage, and a full source/value audit). It is an unusually clean, well-documented PR. Source Documents
Note: the CMS/DE/WA PDFs were audited via text extraction rather than rendered pages; every value-bearing figure was located in the extracted text. Branch StatusBranch is 14 commits behind Critical (Must Fix)None. No CRITICAL issues across all five passes. In particular:
Should AddressNumbered; each is non-blocking but worth resolving before or shortly after merge.
Suggestions
Value AuditEvery federal and state figure was confirmed against its authoritative source — 0 mismatches.
Reference quality: 24/24 parameters carry a proper Validation Summary
Review Severity: APPROVENo critical issues; the value audit is clean and the LTSS logic is regulatorily sound within its documented simplifications. The Should-Address items are refinements (couple-SIL basis confirmation, test gaps, DE citation anchors, metadata consistency) that can be handled before or shortly after merge. Recommend a rebase onto Reviewed with Claude Code assistance. |
PavelMakarchuk
left a comment
There was a problem hiding this comment.
PR 9184 review — Medicaid LTSS financial eligibility screen (TX, DE, WA)
Recommended severity: COMMENT — 0 CRITICAL, 12 SHOULD ADDRESS, 15 SUGGESTION.
Every parameter value in this PR was audited against its primary source and every one matched.
The two findings that delegate reviewers escalated to CRITICAL were both put through independent
verification and both were disproven. What remains is a set of effective-dating, test-coverage,
citation-hygiene and registry items — real work, none of it blocking, and all of it contained by the
fact that the screen is deliberately not wired into any live model output.
Source Documents
| PR | 9184 — "Add Medicaid LTSS financial eligibility screen (TX, DE, WA)", author MaxGhenis |
| Reviewed head SHA | 7cee6cd97e24f6a0b18bd119ddf213d08fe69fca |
| Merge base | ac7c612f36849bc09b4fe53ac26cb7f0b55e6de8 |
| Mode | full (5 review roles + 3 Phase-5 verifications, 2 PDF audit lanes) |
| Scope | NEW PROGRAM, 56 files, +3,893 lines: 24 parameters, 25 variables, 6 test YAMLs / 59 cases, 1 changelog fragment |
| CI | 33/33 checks pass |
Primary sources fetched and read end to end (13 distinct):
| # | Source | Retrieved | Rendered |
|---|---|---|---|
| 1 | WA HCA, Apple Health Income and Resource Standards eff. 1/1/2026 (HCA 19-0096), 3 pp. | yes | 3/3 pages at 300 DPI |
| 2 | DE DMMA Admin Notice A-14-2025, 2026 SSI-Related Income Standards & Medicare Premiums, 2 pp. | text only (HTTP 999 WAF) | none — see A12 |
| 3 | CMS CIB 04/27/2026, Updated 2026 SSI and Spousal Impoverishment Standards, 2 pp. | yes | 2/2 pages |
| 4 | CMS CIB 05/28/2025, Updated 2025 SSI and Spousal Impoverishment Standards, 2 pp. | yes | 2/2 pages |
| 5 | TX HHS MEPD Appendix XXXI, Budget Reference Chart, Rev. 26-2 (HTML) | yes | n/a |
| 6 | DE DSSM, 16 DE Admin Code ch. 20000 (83 pp. PDF, text-extracted) | yes | re-renderable |
| 7–10 | 42 USC 1396r-5; 42 USC 1396p (incl. the P.L. 119-21 §71108 note); 42 CFR 435.217/.236/.601/.1005 (Cornell LII) | yes | n/a |
| 11 | WAC 182-515-1508, 182-515-1505, 182-513-1395, 182-513-1385, 182-513-1350, 182-513-1100 | yes | n/a |
| 12 | P.L. 119-21 (H.R. 1) §71108, full enacted text (govinfo) | yes | n/a |
| 13 | CMS CIB 11/18/2025, printed pp. 8–10 (§71108 guidance) | yes (text proxy; 403 to direct fetch) | n/a |
All three #page= anchors cited by the PR (WA HCA #page=3, CIB 04/27/2026 #page=2,
CIB 05/28/2025 #page=2) were checked against the rendered page images. All three PDFs have offset
0 (file page == printed page) and every anchor lands on the page carrying the cited figures.
Throughout this report, .../financial/ abbreviates
policyengine_us/{parameters,variables}/gov/hhs/medicaid/eligibility/long_term_care/financial/.
Branch Status
BEHIND=38, AHEAD=8. The branch is 38 commits behind main.
Recommendation: rebase onto upstream/main before merge. This is hygiene, not a correctness
concern — and it is worth doing because a new-program PR that adds a programs.yaml entry (A3) will
want a current registry file to edit against.
Staleness did not affect any finding in this report. Every value check, code read, model run and
grep in this review was executed against the PR snapshot at head
7cee6cd97e24f6a0b18bd119ddf213d08fe69fca. The PR touches only new files in a new parameter/variable
subtree plus one new file (home_equity/minimum_limit.yaml) in an existing tracked tree; no changed
file overlaps anything the 38 upstream commits could have moved, and CI on the head is 33/33 green.
Critical
None. No finding in this review blocks the merge.
That conclusion is not a default — it is the output of three independent Phase-5 verifications, two of
which overturned an escalated CRITICAL. The details are in Investigated and cleared below, and the
reasoning that keeps the surviving items below CRITICAL is:
- Every audited value is correct. 25/25 parameter values matched their primary source, across two
independent audit lanes. Zero mismatches, zero differences above the 0.3 flag threshold. - No screened eligibility outcome is wrong. The one confirmed wrong number (A1) is a leaf output
with zero consumers; the composite screen returns the same answer on both sides of the affected
boundary, proven by model run. - The blast radius is contained by design.
grep -r "medicaid_ltss"over the whole package
returns hits only inside.../financial/and its own test directory. Nothing outside the new tree
reads any of the 25 new variables; the screen is deliberately not wired into
is_medicaid_eligible, take-up, or any benefit value. Unmodeled states, settings, waivers and
assistance-unit sizes all fail closed toUNMODELED, andis_medicaid_ltss_financial_threshold_eligible
isfalsefor 100% of the population at default inputs.
Should Address
A1 — MMMNA effective dating: the variable returns 0 for January–June 2026, and the parameter that feeds it has no pre-July bracket
(This is the single highest-value item. It merges findings from the code, regulatory, tests and
federal-PDF roles, and carries the CONFIRMED verdict from Phase-5 verification codepath-2.)
Three artefacts combine:
.../financial/medicaid_ltss_mmmna.py:35—def formula_2026_07_01(...). It is the variable's
only formula. Every one of the five sibling screens starts atformula_2026_01_01
(medicaid_ltss_financial_pathway.py:38,is_medicaid_ltss_income_eligible.py:33,
medicaid_ltss_csra_resource_eligible.py:27,medicaid_ltss_home_equity_eligible.py:31,
is_medicaid_ltss_financial_threshold_eligible.py:20)..../financial/federal/mmmna/minimum.yaml:3— sole entry2026-07-01: 2_705, with no
2025-07-01predecessor..../financial/federal/mmmna/shelter_threshold_rate.yaml:3— sole entry2026-07-01: 0.3.
Confirmed at runtime (Phase 5, codepath-2). Identical TX community-spouse household, only the
period changing:
--- TX community spouse @ 2026-03 ---
medicaid_ltss_mmmna = [0.]
is_medicaid_ltss_financial_threshold_eligible = [ True]
--- TX community spouse @ 2026-08 ---
medicaid_ltss_mmmna = [4066.5]
is_medicaid_ltss_financial_threshold_eligible = [ True]
$0.00 vs $4,066.50 on identical facts. Texas is the unambiguous case: TX pays the flat federal
maximum, federal/mmmna/maximum.yaml:3 is already dated 2026-01-01: 4_066.50, and CMS CIB
04/27/2026 #page=2 puts that line under the section default "Effective 1-1-26" with no override
(only the minimum MMMNA and the CS housing allowance carry the "(Effective 7-1-26)" stamp). TX MEPD
Appendix XXXI independently states the $4,066.50 spousal allowance with no July stamp, and MEPD J-7200
subtracts it flat in worked examples. So the correct March-2026 Texas answer is fully determined by
parameters already in the tree, and the model returns 0.
Downstream reachability — the reason this is not CRITICAL. Exhaustive grep confirms
medicaid_ltss_mmmna is a leaf output with zero consumers: no variable formula, no adds/subtracts
list and no reform reads it. is_medicaid_ltss_financial_threshold_eligible depends only on
medicaid_ltss_financial_pathway, is_medicaid_ltss_income_eligible,
medicaid_ltss_csra_resource_eligible and medicaid_ltss_home_equity_eligible. Empirically the
composite returns True at both 2026-03 and 2026-08 for the same household. No screened outcome
flips. This understates a reported post-eligibility spousal protection figure; it does not
misclassify anyone's eligibility.
The behaviour is deliberate and documented (medicaid_ltss_mmmna.py:22-24: "The whole variable is
unmodeled before July 2026 … this also defers the Texas flat maximum, which is otherwise effective
January 1, 2026"). But documenting a wrong number does not make it right, and a user calculating the
LTSS block at 2026-03 gets five live results and one silent zero.
Two companion data-fidelity gaps that must be fixed in the same change:
- Missing prior bracket. The operative MMMNA floor for 1/1/2026–6/30/2026 is $2,643.75,
confirmed verbatim from the rendered CIB 05/28/2025 page 2 image: "Minimum Monthly Maintenance
Needs Allowance (MMMNA): 2,643.75 … (Effective 7-1-25)", and corroborated independently by the WA
HCA chart ("CS & Dependent Allowance (7/1/25) $2,644") and TX Appendix XXXI ("Spousal Impoverishment
Dependent Allowance (effective July 1, 2025): $2,643.75"). Becausesystem.py:116calls
backdate_parameters(..., first_instant="2015-01-01"), the single 2026-07-01 entry is copied back
to 2015 — so the parameter tree asserts $2,705 for Jan–Jun 2026 and for every year back to 2015. shelter_threshold_rateis dated to an event that did not happen. 30% is statutory and
time-invariant under 42 USC 1396r-5(d)(4) ("exceeds 30 percent of the amount described in paragraph
(3)(A)(i)"), unchanged since 1989; the file's only reference is that statute, which carries no
2026-07-01 event. The date appears to have been copied from the dollar figure it multiplies.
These are one edit deep from becoming live, which is why they belong together. Lowering
formula_2026_07_01 to formula_2026_01_01 — the natural fix for the TX zero — would immediately
apply the backdated $2,705 to DE and WA for Jan–Jun 2026, an overstatement of $61.25/month on the
floor and $18.375/month on the derived shelter threshold ($811.50 applied where $793.13 governs),
with no test catching it because all 59 cases run at period: 2026-07.
Suggested direction: add 2025-07-01: 2_643.75 to minimum.yaml (and its CIB 05/28/2025
reference — already in the PR's citation set on home_equity/minimum_limit.yaml); re-date
shelter_threshold_rate to the statute or an early sentinel; move the variable to
formula_2026_01_01; add YAML cases at period: 2026-03. A narrower alternative, from the
verification report, is to add a formula_2026_01_01 that covers only the TX branch (whose parameter
genuinely is effective 1-1-26) and leaves DE/WA at 0 until July.
A2 — Five implementation mutations survive the entire 59-case test suite
These are coverage gaps, not wrong values. The same role re-derived all 59 expected values by hand
against the formulas and the effective 2026 parameters and found zero arithmetic mismatches; test
mechanics are clean (no absolute_error_margin ≥ 1; every enum literal matches a real member; every
referenced input exists). Nothing in this item says a current output is wrong. It says a regression
would not be caught — and for a new program whose distinctive state rules are its whole value, that
matters.
State × screen coverage (✓ adequate · △ present but non-discriminating · ✗ empty):
| Screen | TX | DE | WA | Unmodeled |
|---|---|---|---|---|
medicaid_ltss_financial_pathway |
✓ 5 | ✓ 1 (unit size 1 only) | ✓ 5 (all 3 waivers) | ✓ CA, unknown setting, unknown waiver, non-ABD, size 0 |
is_medicaid_ltss_income_eligible |
✓ 4 | ✓ 4 | ✓ 4 | ✓ 2 |
medicaid_ltss_csra_resource_eligible |
✓ 9 | △ 1 — flat resource limits only; no community spouse, no CSRA at all | △ 3 — one non-discriminating tie | ✓ 1 |
medicaid_ltss_home_equity_eligible |
✓ 7 | ✓ 2 | ✓ 1 | ✓ CA |
medicaid_ltss_mmmna |
✓ 2 | ✓ 3 | ✓ 1 | ✓ CA |
is_medicaid_ltss_financial_threshold_eligible |
✓ 4 | ✓ 3 | ✓ 2 | ✓ CA |
CSRA regime × state — the sub-matrix that carries the two empty cells:
| CSRA regime | TX | DE | WA |
|---|---|---|---|
| Floor controls (½ snapshot < floor) | ✓ cases 5 / 9 | ✗ | △ case 11 is the exact tie (½ snapshot = 72_529), so floor and half give the same answer — it discriminates nothing |
| Half-of-snapshot controls | ✓ cases 6 / 10 | ✗ | ✗ |
| Federal maximum caps | ✓ case 7 | ✗ | ✗ |
The five surviving mutations:
- The composite can drop the resource test entirely.
is_medicaid_ltss_financial_threshold_eligible.py
ANDs four terms; delete& person("medicaid_ltss_csra_resource_eligible", period)and all 59 cases
still pass. No case asserts the compositefalsewith the resource screen as the sole failing
leg. Income and home equity are both properly isolated (composite cases 1/6 and 2/3); resources are
not. - Delaware CSRA is a completely empty cell.
medicaid_ltss_csra_resource_eligible.py:62computes
max_(p.de.csra.state_minimum, p.federal.csra.minimum)=max_(25_000, 32_532)= 32,532, and the
variable's documentation makes that a load-bearing claim. No DE case sets
medicaid_ltss_has_community_spouse. Replace themax_()with a barep.de.csra.state_minimum
and every test passes while every DE couple in the floor regime gets a CSRA $7,532 too low. - Washington's $72,529 floor is never pinned.
medicaid_ltss_csra_resource_eligible.yaml:case 11
uses snapshot 145,058 = exactly 2 × 72,529, so half-of-snapshot equals the state floor and the case
cannot tell them apart. Replacemax_(p.wa.csra.state_minimum, p.federal.csra.minimum)with
p.federal.csra.minimumand all tests pass while WA — the state with by far the highest floor —
silently loses ~$40k of spousal protection. - The MMMNA federal maximum never binds. In
medicaid_ltss_mmmna.yamlcase 2 the shelter figure
of 2,173 yields 2,705 + (2,173 − 811.50) = exactly 4,066.50. The cap is touched, never exceeded,
somin_(..., p.federal.mmmna.maximum)can be deleted and the MMMNA grows without limit. (TX is
flat-at-maximum and cannot cover this.) - Both effective-date boundaries are unpinned. All 59 cases run at
period: 2026-07. Renaming any
formula_2026_01_01→formulamakes all six screens produce 2026-valued determinations from 2015
onward — phantom eligibility before the program was modeled — and nothing catches it, because
backdate_parametersmakes every 2026 value resolvable back to 2015. Renaming
formula_2026_07_01→formula_2026_01_01triggers the A1 trap. This is the fail-closed temporal
safety property; the fail-closed categorical property (unmodeled state / setting / waiver /
non-ABD / unit size 0 / invalid ownership share) is well covered.
The tests role supplied ready-to-paste YAML for all five, plus discriminating input tables for the DE
and WA CSRA regimes.
A3 — No policyengine_us/programs.yaml entry
programs.yaml is not touched anywhere in the 56-file diff (verified against the diff; grep -n "ltss\|long_term_care" policyengine_us/programs.yaml returns nothing). CLAUDE.md makes an entry
unconditional for a new program, and this PR adds 24 parameters and 25 variables under a new
parameter_prefix (gov.hhs.medicaid.eligibility.long_term_care.financial) with a natural top
variable (is_medicaid_ltss_financial_threshold_eligible).
Natural placement: a state_implementations: [TX, DE, WA] list under the existing id: medicaid entry
at programs.yaml:153-164, with status: partial — complete would overstate a screen that is
deliberately not wired into is_medicaid_eligible. If maintainers prefer to defer the registry entry
until the screen is wired in, that is a reasonable call, but it should be a stated decision rather
than an omission.
A4 — The repo will contain two divergent implementations of 42 USC 1396p(f), and the pre-existing one applies the maximum limit to Texas and Delaware
- new:
.../financial/medicaid_ltss_home_equity_eligible.py:35-39 - pre-existing:
policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_long_term_care_home_equity_eligible.py:19-23
The new screen correctly implements the (f)(1)(B) State election — WA reads home_equity.limit
($1,130,000, matching the WA HCA chart and WAC 182-513-1350(8)(c) "the federal maximum allowed"), while
TX, DE and every other state read the new home_equity.minimum_limit ($752,000, matching Appendix
XXXI's "Substantial home equity — $752,000" and DSSM 20320.7.B's deferral to federal law). This is
the most valuable thing in the PR.
The pre-existing variable — which is wired into is_medicaid_long_term_care_eligible and exposed
through the API — applies p.home_equity.limit ($1,130,000) to every state. So for a Texas or
Delaware applicant with $900,000 of home equity, the new screen correctly returns ineligible and the
old one returns eligible. Both cite 1396p(f). The PR authored the parameter that fixes the old
variable and did not apply it.
The two also diverge on period (YEAR vs MONTH), equity source (household/assets/home_equity.py vs
max_(market_value − encumbrances, 0) × ownership_share) and exception source
(medicaid_home_equity_limit_family_exception, which derives residency from household composition and
calls itself a proxy, vs three explicit boolean inputs). A related sub-issue: the existing chassis
reads the under-21 boundary from
.../home_equity/family_exception/child_age_threshold.yaml, while the new input bakes "21" into the
variable name and label (medicaid_ltss_home_occupied_by_child_under_21.py:4,7) — so a reform moving
that threshold changes one chassis and not the other.
Fixing the old variable may be out of scope for this PR, but the divergence should at minimum be
recorded: either point the old variable at a state-aware limit here, or open a follow-up issue and
cross-reference it from the new variable's docstring (which currently mentions the old chassis only to
say the agricultural limit "is not modeled here").
A5 — medicaid_ltss_home_equity_eligible is the only screen with no pathway gate, and reads true for the entire population
.../financial/medicaid_ltss_home_equity_eligible.py:61-62 returns
valid_ownership_share & (exception | (applicant_home_equity <= home_equity_limit)). At default
inputs (ownership_share = 0, market value 0, encumbrances 0), valid_ownership_share is True and
0 <= limit, so the variable returns true for every person in every state from 2026-01 onward.
The other three screens all gate on pathway != UNMODELED
(medicaid_ltss_csra_resource_eligible.py:84, medicaid_ltss_mmmna.py:62,
is_medicaid_ltss_income_eligible.py:93).
This changes no existing baseline output today — the only consumer,
is_medicaid_ltss_financial_threshold_eligible.py:27, is itself pathway-gated. The finding is the
inconsistency and the API-visible default, and the direction: permissive is the one that becomes wrong
first if the screen is ever wired in. (Note the regulatory reviewer's counterpoint: applying the
federal minimum to unmodeled states is the legally correct fail-closed default, since 1396p(f)(1)(B)
makes the minimum the floor of the state election. The gate, not the limit selection, is what is
missing.)
A6 — Person-level income and resources are compared against couple-level limits, and the input contract does not say which to supply
.../financial/is_medicaid_ltss_income_eligible.py:42,44-60.../financial/medicaid_ltss_csra_resource_eligible.py:36-52.../financial/medicaid_ltss_qit_adjusted_income.py,..._countable_resources.py,..._assistance_unit_size.py
Every variable in the PR is entity = Person, and unit-level quantities are carried per person. When
medicaid_ltss_assistance_unit_size == 2, the formulas select p.{tx,de}.special_income_limit.couple
and p.{tx,de}.resources.couple — i.e. a person-level value against a couple-level limit.
The intended convention (each member carries the full unit total) is pinned only by a test:
medicaid_ltss_csra_resource_eligible.yaml:553-617 case 12 gives both spouses 3_000, not 1_500
each. It is stated in exactly one docstring (medicaid_ltss_countable_resources.py:13-14, "for the
applicant or applicant assistance unit") and contradicted by another:
medicaid_ltss_qit_adjusted_income's docstring says "after any qualified income trust treatment and
applicant/spouse ownership allocation", which reads as applicant-only income — and DSSM 20990.1
"ownership allocation" is precisely the rule that splits jointly-titled income between spouses. A user
following that literally, at unit size 2, gets a Texas applicant with $5,900 of individually-allocated
income passing a $5,964 test whose correct comparand is $2,982. That is the over-generous
direction. The equivalent split-resources entry ($1,500 + $1,500 against the $3,000 couple limit)
passes a screen it should fail, on both members, with no warning.
Either state the convention explicitly in the documentation of all three inputs and add a unit-size-2
test that pins the semantics (the existing couple cases are consistent with either reading), or
aggregate the unit total at a real entity. Related and lower-stakes: medicaid_ltss_mmmna and
medicaid_ltss_community_spouse_* attach the community spouse's quantities to the institutionalized
applicant — coherent and documented, but a household where both spouses are applicants can
double-count the same community-spouse resources, and no test covers that shape.
A7 — home_equity/minimum_limit.yaml has no CPI uprating, so TX and DE freeze at $752,000 indefinitely
.../long_term_care/home_equity/minimum_limit.yaml:3-8 carries 2025-01-01: 730_000 /
2026-01-01: 752_000 and no uprating: block, so 752,000 extends flat forever (verified at runtime:
2027, 2028, 2035 all resolve to 752,000). But 42 USC 1396p(f)(1)(C) indexes that amount annually by
CPI-U rounded to the nearest $1,000, and CMS CIB 11/18/2025 says so in terms: "The minimum home
equity limit will continue to increase based on CPI-U increases until it reaches $1,000,000."
The PR is internally inconsistent about this: sibling agricultural_limit.yaml:12-16 does carry
uprating: gov.bls.cpi.cpi_u with nearest-$1,000 rounding, and limit.yaml hard-codes a CPI
projection for 2027 (1,159,000). So the maximum is projected forward and the minimum is frozen.
Magnitude, using the repo's own gov.bls.cpi.cpi_u from a 752,000 base: 2027 ≈ 766,000; 2028 ≈
784,000; 2032 ≈ 858,000 — roughly 2%/yr low, ~4% low by 2028. Households with TX/DE equity in the
752,000–784,000 band would be screened out in 2028 where the statute would admit them. Real, small,
entirely forward-looking, and in years for which CMS has not published a figure. The fix is to add the
same uprating block as agricultural_limit.yaml.
Do not instead add 2028-01-01: 1_000_000 here — see the ext-1 clearance below; that would be
wrong law.
A8 — Delaware's 250% standard does not reach hospitalized applicants, and the setting enum cannot express the distinction
.../financial/medicaid_ltss_setting.py (enum: UNKNOWN / INSTITUTIONAL / HCBS);
.../financial/medicaid_ltss_financial_pathway.py:57-62.
DSSM 20100.2.2 is explicit: "The 250% standard applies only to nursing facility residents.
Individuals hospitalized for 30 consecutive days may be eligible only if their monthly income is 100%
of the SSI standard or less" — i.e. $994, not $2,485. INSTITUTIONAL covers both settings, so a
hospitalized Delaware applicant with $2,400/month is screened eligible where DSSM would deny. The
over-inclusive direction is what makes this worth recording.
Minimum fix: a limitation note in the medicaid_ltss_setting or is_medicaid_ltss_income_eligible
docstring naming the hospital carve-out. Complete fix: split the enum (NURSING_FACILITY vs
HOSPITAL). (The same DSSM section also brings HCBS Waiver programs under the 250% standard; the PR
leaves those unmodeled and fail-closed, which is the conservative direction and fine.)
A9 — Citation fixes (six, each with a verified replacement)
Presence is perfect — 24/24 parameters and 25/25 variables carry a reference, all official
government sources, zero jurisdiction mismatches, correct format on both sides (parameters use
structured title:/href: dicts, variables use bare strings or tuples). These are accuracy and
clickability fixes:
- DE DMMA PDF href has no
#page=— affectsde/income/general_disregard,
de/resources/{individual,couple},de/special_income_limit/{individual,couple}, plus variables
is_medicaid_ltss_income_eligibleandmedicaid_ltss_needs_based_income. Verified: the PDF is 2
pages and every cited figure is on file page 1. Add#page=1. - DE DSSM href is an opaque UUID API endpoint that downloads an 83-page PDF with no anchor —
affects 6 parameters and 8 variables. Clicking it starts a download rather than showing the value.
Verified file pages, ready to paste: DSSM 20100.2.2 →#page=1; 20910.4/.5/.6 →#page=78;
20910.10 →#page=79; 20990 →#page=81. (20240.1 and 20320.7 are present but their pages were
not individually confirmed.) A browsable HTML equivalent could not be confirmed —
regulations.delaware.govserves a JavaScript shell to automated clients; worth a human check. de/resources/{individual,couple}cite an income-standard section for a resource limit —
DSSM 20100.2.2 sets the income standard and never states $2,000/$3,000. Verified replacements, read
directly from the DSSM PDF: DSSM 20800 (file p.76, "The resource limit is $2,000.00") and
DSSM 20950 (p.79–80, "Compare the remaining resources to the Medicaid resource limit of
$2,000").wa/resources/individualcites WAC 182-513-1395, which does not contain the $2,000 standard —
that WAC defers to WAC 182-513-1350, which this PR already cites elsewhere (on
medicaid_ltss_home_equity_eligible). Add or substitute it.federal/mmmna/shelter_threshold_rate's 2026-07-01 date rests on a citation with no July-2026
event (see A1). The July date is corroborable, just not from 42 USC 1396r-5(d)(4): CIB
04/27/2026#page=2carries "Community Spouse Monthly Housing Allowance: (Effective 7-1-26)
811.50", and 811.50 = 0.30 × 2,705 exactly. Either add that CIB as a second reference or re-date
the rate to the statute.- All five TX parameters rest on a single mutable "current revision" page.
fhb.hhs.texas.gov/handbooks/.../appendix-xxxi-budget-reference-chartserves whatever revision is
current; when 26-3 / 27-1 lands at that URL the citations silently stop showing the 2026 figures.
Cite a revision-specific permalink if TX HHS publishes one. Separately, fix the title's date: it
reads "Revision 26-2, Effective June 1, 2026" while the rows it supports are stamped "Effective Jan.
1, 2026" on the chart itself — which is precisely what makes the2026-01-01dating correct (see
the PDF audit clearance below).
A10 — Parameter metadata: period: month on stocks, on a dimensionless rate, and on booleans; description conventions
period: (12 files): federal/csra/{maximum,minimum}.yaml:7, {tx,de,wa}/csra/state_minimum.yaml:7,
{tx,de}/resources/{individual,couple}.yaml:7, wa/resources/individual.yaml:7,
federal/mmmna/shelter_threshold_rate.yaml:7, wa/waivers/{copes,new_freedom,rsw}/enabled.yaml:7.
Resource limits and community-spouse resource allowances are point-in-time stocks, not monthly
flows — and the consuming code treats them as such (medicaid_ltss_csra_resource_eligible.py:45-49
compares them against quantity_type = STOCK inputs). The repo's comparable parameters
(gov/ssa/ssi/eligibility/resources/limit/{individual,couple}.yaml) omit period entirely, and the
sibling home_equity/*.yaml files in this very tree use period: year. A dimensionless rate is
period: year by convention. For booleans the repo-wide split is 316 period: year vs 28 period: month.
period is display/API metadata and nothing computes wrongly today — but a $162,660 CSRA maximum
labelled "per month" renders as an annualised $1.95M in the parameter browser, and it is the field a
future reader uses to decide whether a value needs ÷12.
Descriptions: five federal files (federal/csra/{maximum,minimum}.yaml:1,
federal/mmmna/{maximum,minimum,shelter_threshold_rate}.yaml:1) are noun phrases with no allowed verb
(limits / provides / sets / excludes / deducts / uses). All 24 files write the acronym
"Medicaid LTSS" in description: (labels may abbreviate; descriptions should spell out "Medicaid
long-term services and supports") and none closes with the conventional "… under the [Full Program
Name] program." de/csra/state_minimum.yaml:1 is a two-clause sentence whose caveat already lives in
the consuming variable's documentation.
A11 — tx/csra/state_minimum.yaml stores a copy of the federal minimum; wa/csra/state_minimum.yaml's date contradicts its own description
.../financial/tx/csra/state_minimum.yaml:3—2026-01-01: 32_532, byte-identical to
federal/csra/minimum.yaml:3, with its own description saying "Texas adopts the minimum resource
amount set by federal law". The consumer already takes the max against the federal value
(medicaid_ltss_csra_resource_eligible.py:62), so this is a wrapper parameter that will silently
diverge the next time CMS updates the standard and only the federal file is touched. Either drop
the TX file and letmax_fall through, or set it to0with a description explaining that Texas
elects no higher state floor..../financial/wa/csra/state_minimum.yaml:1-3— the description states the standards chart "stamps
July 1, 2025 and revises on a July odd-year cycle", but the value72_529is keyed2026-01-01.
The WA HCA chart confirms "State Spousal Resources (7/1/25) changes in odd years — $72,529". No
numeric impact (backdating covers the gap with the same figure, and the consuming formula starts
2026-01-01), but2025-07-01is the faithful key and makes the odd-year cycle self-documenting.
Same shape, lower stakes:de/csra/state_minimum(DSSM 20910.10 fixes $25,000 for applications
filed on or after 10/1/93) andde/income/general_disregard($20 has been the SSI general income
exclusion since 1974).
A12 — Evidence-quality gap: five Delaware values have no renderable source
This is a verification-process gap, not a suspected error, and it must not be buried.
The Delaware primary source — DMMA Administrative Notice A-14-2025,
https://dhss.delaware.gov/wp-content/uploads/sites/11/2026/06/2026-SSI-Related-Income-Standards-and-Medicare-Premiums.pdf
— returns HTTP 999 (WAF block) to every automated client tried (curl with browser headers, WebFetch,
CORS proxies). There is no Wayback snapshot. No PDF bytes were obtained, therefore no page images
exist and no 600-DPI visual confirmation was possible for any DE value. All that exists is text
extracted through the r.jina.ai proxy.
Five DE values rest solely on that proxy text:
| Parameter | Value |
|---|---|
de/special_income_limit/individual |
2_485 |
de/special_income_limit/couple |
3_727.50 |
de/resources/individual |
2_000 |
de/resources/couple |
3_000 |
de/income/general_disregard |
20 |
Proxy extraction is lossy, and artefacts are visible in the capture ($1491.00 without a thousands
separator, $ 20.00 with a stray space, a Docusign envelope ID interleaved mid-sentence). None affects
the digits matched, but they demonstrate the mode of failure.
Mitigations, which are substantial:
- The two SIL values are arithmetically self-checking. The notice states the rate (250%), the base
($994 / $1,491) and the products ($2,485 / $3,727.50). 250% × 994 = 2,485 and 250% × 1,491 =
3,727.50 both reconcile — a corrupted digit in any of the four would break the identity. The
$994/$1,491 FBR pair is independently confirmed at 300 DPI in the TX chart and the CMS CIB. - The 250% rate is independently confirmed by DSSM 20100.2.2 (a separate, separately-extracted
document) in three places, dating the election to 10/1/1994. - $2,000 / $3,000 are independently confirmed by DSSM 20800 and DSSM 20950.
- The $20 disregard cross-checks internally ($2,485 + $20 = $2,505 and $3,727.50 + $20 = $3,747.50,
both printed in the notice).
Every DE parameter has either a second document or an internal arithmetic identity behind it, and
there is no positive indication that any DE value is wrong. But the primary citation in all five
files is a document nobody has rendered.
Action: a human should open the A-14-2025 URL in a normal browser and eyeball the five figures.
The URL is very likely fine interactively — the block is a bot/WAF rule, not a dead link.
de/csra/state_minimum = 25,000 is not affected; it comes from the DSSM, whose PDF bytes were
obtained (83 pp.) and are re-renderable.
Suggestions
- Trailing zeros on values.
de/special_income_limit/couple.yaml:3(3_727.50→3_727.5),
federal/mmmna/maximum.yaml:3(4_066.50→4_066.5), and the matching test literals
(medicaid_ltss_mmmna.yaml:21,65,87,131,260). add(...) > 0over manual OR chains.medicaid_ltss_home_equity_eligible.py:45-59ORs four
person-level booleans;medicaid_ltss_csra_resource_eligible.py:76-79hand-sums two same-entity
variables.- Enum default members are placed first.
MedicaidLTSSFinancialPathway.UNMODELED
(medicaid_ltss_financial_pathway.py:5) andMedicaidLTSSSetting.UNKNOWN
(medicaid_ltss_setting.py:5); convention is NONE/default last. (MedicaidLTSSWaiversplits the
difference.) - Test-file conventions. Two of six files omit the
Case N,prefix
(is_medicaid_ltss_financial_threshold_eligible.yaml,medicaid_ltss_financial_pathway.yaml); all
six use descriptive person keys rather thanperson1/person2(genuinely readable here — worth a
deliberate decision rather than a default);families:is declared in two files and omitted in
three for otherwise identical households;is_medicaid_ltss_financial_threshold_eligible.yaml:3
carriesabsolute_error_margin: 0.01where it is needed for a currency assertion in the same case
but sits alongside boolean-only outputs elsewhere. - The three WA waiver toggles have no
falsebranch under test. All ship
2026-01-01: true, andmedicaid_ltss_financial_pathway.py:24-26notes the disabled branch is
reform-only-reachable. A YAML case with areforms:block flipping one would genuinely cover
medicaid_ltss_financial_pathway.py:51-55. - Dead defensive code.
min_(needs_based_income, income)inis_medicaid_ltss_income_eligible.py
is untestable — the followingmax_(income − needs_based_income, 0)already floors the result, so
no input distinguishes the clamped from the unclamped version. - Additional edge cases worth pinning (all with worked inputs in the tests report): assistance-unit
size 3+ and negative; ownership share exactly0with a high-value home; negative equity
(encumbrances above market value); TX and WA MMMNA with no community spouse (only DE has that
case); DE pathway coverage (one case vs TX's five — no DE twin for "TX HCBS cannot use a WA named
waiver"); home-equity exception branches tested only in TX; home-equity case 9 does not test what
its name says (both people haveownership_share: 1, so only encumbrances are exercised); and one
composite case with the applicant and community spouse as two members of one household — 15 of
59 cases are multi-person but all but one place each person in a separate household, which is
vectorization across households, not within one. home_equity/minimum_limit's 2025 value (730_000) is currently untestable, not merely untested:
its only consumer hasformula_2026_01_01. Either drop the 2025 entry or fold it into the pre-2026
fail-closed case from A2 item 5.- AK/HI need a breakdown before those states can be added.
federal/mmmna/minimum.yaml:1
correctly scopes itself to "the contiguous states and District of Columbia"; CIB 04/27/2026
#page=2publishes MMMNA 3,381.25 (AK) / 3,111.25 (HI).gov/hhs/fpg.yamlalready carries
CONTIGUOUS_US/AK/HIkeys. No impact today — TX/DE/WA are all contiguous. - Delaware's earned-income disregard sequence is neither modeled nor disclosed. DSSM 20240.3
applies "$20, then $65, then ½ of remainder" to gross earned income; the code applies only the
general $20. For the spousal case DSSM 20990 makes the $20 the sole deduction, so the code is
exactly right there, and LTC applicants rarely have earned income — but the trusted-input contract
does not tell the user whether to pre-apply 20240.3. - Cross-reference
medicaid_ltss_settingto the existingis_in_medicaid_facility. The two are
independent person-month inputs that can disagree; when they do, the screen silently falls to
UNMODELED(the safe direction), but a user who has already populatedis_in_medicaid_facility
gets afalsescreen with no indication why. - Three low-confidence citation details worth a 30-second browser check. Cornell anchors (
#d,
#d_4,#f,#f_1,#f_2,#f_4,#d_4_B) did not surface as element IDs in
markdown-converted fetches — probably a converter artefact; the underlying subsection content was
spot-checked and all passed.medicaid_ltss_home_equity_eligible's documentation asserts
"DSSM 20320.7.B and 20320.7.E" — §20320.7 exists with subsections A–F, but B and E were not
individually confirmed as the equity-cap subsections.medicaid_ltss_assistance_unit_sizecites 42
CFR 435.601, which governs financial methodologies, not unit composition — consider 435.602/.603
or 42 USC 1396r-5(b). - Cross-file citation drift on the same CIB. Pre-existing
home_equity/limit.yamlcites CIB
04/27/2026 as.../federal-policy-guidance/downloads/cib04272026.pdfwith no page anchor and a
title that does not match the document's SUBJECT line; the newminimum_limit.yamlcites it as
.../sites/default/files/2026-04/cib04272026.pdf#page=2with the correct title. The new file is
right — align the older one while A7 requires touching it anyway. - Heads-up on a conflicting TX label. TX Appendix XXXI labels $4,066.50 the "Minimum Monthly
Maintenance Needs Allowance (MMMNA) also known as Spousal Allowance", whereas federally $4,066.50
is the Maximum MMNA and $2,705 is the minimum. The PR takesfederal/mmmna/maximumfrom the
CIB and is correct; flagged only so a future editor does not "fix" it to match the TX wording. medicaid_ltss_mmmnahas no consumer. Correct for a post-eligibility spousal standard, but it
means a regression in it can only ever be caught by its own test file — which is what makes A2 item
4 matter more than it otherwise would.
PDF Audit Summary
Two independent audit lanes covered all 25 parameter values (24 files; home_equity/minimum_limit
carries two dated values).
| Federal + WA lane | TX + DE lane | Total | |
|---|---|---|---|
| Values audited | 14 | 11 | 25 |
| MATCH | 14 | 11 | 25 |
| MISMATCH | 0 | 0 | 0 |
| Differences > 0.3 | 0 | 0 | 0 |
| Mismatches rejected (investigated and cleared) | — | — | 2 of 2 (see below) |
| Effective-date findings | 1 substantive (A1) + 3 cosmetic | 1 resolved in the PR's favour + 1 cosmetic | — |
| Values with no source support | 0 | 0 | 0 |
| Values with no renderable source | 0 | 5 (all DE) | 5 — see A12 |
Zero value mismatches across all 25 audited parameters. Selected corroborations:
- The unusual Delaware 250%-of-SSI special income limit was confirmed from two independent
sources. DMMA A-14-2025 states it verbatim ("The income standard for Long Term Care Programs …
is equal to 250% of the SSI standard … $2,485.00 for an individual $3,727.50 for a couple"), and
DSSM 20100.2.2 confirms the election independently and historically ("Effective October 1, 1994,
the eligibility standard for individuals in nursing facilities and HCBS Waiver programs became 250%
of the SSI standard"), restated in two further DSSM passages. 42 CFR 435.1005 makes 300% a federal
ceiling, not a mandate, so a 250% election is lawful. This is not a typo in the PR. - The $20 general disregard is applied exactly once — no double-count. The repo stores the bare
250% figures (2_485 / 3_727.50, not 2_505 / 3_747.50) and subtracts at most one $20 on the income
side (is_medicaid_ltss_income_eligible.py:71-76), capped at the non-needs-based portion so a
wholly VA-pension income gets $0 disregard, exactly as the notice requires. The couple boundary lands
at $3,747.50 (= +$20), not $3,767.50 (= +$40) — the $40-per-couple failure mode is
structurally unreachable, and the shipped fixtures pin all four boundaries
(is_medicaid_ltss_income_eligible.yamlcases 4 and 5: 3_727/3_727.50/3_728 → true/true/false and
3_747/3_747.50/3_748 → true/true/false). - TX Revision 26-2's June effective date was resolved in the PR's favour. The handbook header reads
"Revision 26-2; Effective June 1, 2026" while the values are keyed2026-01-01— a five-month gap on
its face. But the chart carries its own inline effective dates per value block, and they are
January: "Income — Effective Jan. 1, 2026, total countable income must be no more than the special
income limit". The June stamp is the handbook revision's publication date; the values it publishes
are federal SSI COLA-driven standards effective 1/1/2026. Dating them2026-01-01is correct and
is what the cited page's own text supports. (Cosmetic follow-up in A9 item 6.) - The CIB's date structure is reproduced faithfully. CIB 04/27/2026
#page=2heads the Spousal
Impoverishment block "Effective 1-1-26 Unless Otherwise Noted", and exactly two line items carry an
override — Minimum MMMNA (2,705.00) and CS Monthly Housing Allowance (811.50), both stamped
"(Effective 7-1-26)". The repo's split (2026-07-01 formmmna/minimum, 2026-01-01 for everything
else) matches. The2026-07-01stamps are not errors — the PR did not naively take the January
date, which is the more common mistake. - Two-year independent arithmetic on the 30% shelter share. 0.3 × 2,705 = 811.50 = the CIB's
published 2026 CS Monthly Housing Allowance, exactly; 0.3 × 2,643.75 = 793.125 → 793.13 = the
2025 CIB's figure, to published rounding. Also stated in WA's own regulation, WAC
182-513-1385(4)(b)(ii): "The standard shelter allocation is 30 percent of 150 percent of the
two-person FPL."
Mismatches rejected — investigated and cleared
Both escalated CRITICALs went to Phase-5 verification and both were disproven. Neither is carried
as a finding.
Cleared #1 — federal/mmmna/minimum backdating $2,705 into a Jan–Jun 2026 window governed by
$2,643.75 is NOT a reachable wrong value. (This was the federal PDF lane's headline effective-date
item; the correction is material.)
The parameter-level facts all held up: the file has exactly one entry (2026-07-01: 2_705);
system.py:116 backdates it to 2015-01-01; it therefore resolves to 2,705 at 2026-03-01; the correct
window figure is 2,643.75 (confirmed verbatim from the CIB 05/28/2025 page-2 image); and the repo has
no 2025-07-01 entry. What was disproven is that any computed screen consumes it. The parameter's
only consumer is medicaid_ltss_mmmna, which declares formula_2026_07_01; for every month in
2026-01 .. 2026-06 the variable returns its 0 default and never reads the parameter. Model run across
the boundary:
DE shelter=0: 2026-01=0.0 2026-03=0.0 2026-06=0.0 2026-07=2705.0
DE shelter=2173: 2026-01=0.0 2026-03=0.0 2026-06=0.0 2026-07=4066.5
WA shelter=0: 2026-01=0.0 2026-03=0.0 2026-06=0.0 2026-07=2705.0
TX shelter=0: 2026-01=0.0 2026-03=0.0 2026-06=0.0 2026-07=4066.5
There is no month in the disputed window in which any household gets a number derived from 2,705.
The finding is latent, not live — a data-fidelity defect with zero current output impact. It is
carried in A1 at SHOULD ADDRESS precisely because it is one edit deep from becoming live, but it is
not a wrong result today and it is not evidence that the PR published a wrong value.
Cleared #2 — the P.L. 119-21 §71108 / post-2028 home-equity concern (752,000 vs 1,000,000) rests on
a misreading of the amendment.
The claim was that §71108 strikes the 1396p(f)(1)(B) state election and the (C) CPI escalator and
replaces the federal minimum with $1,000,000, making minimum_limit's flat 752,000 wrong for TX, DE
and every non-WA state from 2028. Reading the enacted text directly (govinfo, P.L. 119-21, 139 Stat.
296–297) shows the opposite:
| Element | Claim | Actual |
|---|---|---|
| (f)(1)(A) $500,000 indexed minimum | implicitly replaced by $1M | Untouched — not amended at all |
| (f)(1)(B) state election | "struck" | Preserved and expanded — split into cl. (i) agricultural and new cl. (ii) non-agricultural, capped at $1,000,000 |
| (f)(1)(C) CPI escalator | "struck" | Preserved — amended only to exclude the new (B)(ii) figure from indexation and to deem other indexed amounts capped at $1,000,000 |
$1,000,000 is a ceiling on the state-elected maximum for non-agricultural homes, not a floor and
not a replacement for the minimum. CMS CIB 11/18/2025 (pp. 8–10) says so in terms: "States will
continue to have the option to impose a limit between the applicable minimum and maximum amounts …
The minimum home equity limit will continue to increase based on CPI-U increases until it reaches
$1,000,000."
Empirically settled by model run at both 2026-01 and 2028-01: a TX household at $900,000 equity —
squarely in the disputed band — is screened out in both years, which is the correct result, because
Texas applies the federal minimum. Meanwhile the one behavioural change §71108 does produce is
already correctly modeled: WA at $1,000,001 flips True → False between 2026 and 2028 as WA's
elected maximum steps down from 1,130,000 to the new statutory cap.
minimum_limit.yaml extending 752,000 past 2028 is therefore not a wrong threshold. Adding
2028-01-01: 1_000_000 would be wrong law. The PR's three-parameter split (minimum_limit = (A),
limit = (B)(ii) stepping down to $1M at 2028, agricultural_limit = (B)(i) uprating past $1M)
matches the statute and the CIB precisely — if anything this item is evidence the PR handled §71108
with unusual care. The only residual is the missing CPI uprating on minimum_limit, carried as
A7 at MINOR magnitude.
Also checked and cleared (no finding)
The regulatory reviewer hunted four specific failure modes and found none of them:
- SIL basis — TX/WA at 300% and DE at 250% all confirmed against their own published charts, with
the $20 disregard applied at the DSSM 20990 step (before the limit comparison), once per unit, and
carved out of needs-based income. - CSRA regimes —
medicaid_ltss_csra_resource_eligible.py:72-75computesmin(max(half, floor), maximum)where 42 USC 1396r-5(f)(2)(A) saysmax(floor, min(half, maximum)). These are equal for
every input provided floor ≤ maximum, which lines 62-64 guarantee viamax_(state_minimum, federal.csra.minimum)and which holds for all three states. Non-obvious, and correct. The
eligibility test at line 82 is DSSM 20950 rearranged. - MMMNA formula — the 30% threshold is taken against the 150%-FPG floor, which is what
1396r-5(d)(4) means by "30 percent of the amount described in paragraph (3)(A)(i)" — not 30% of
the maximum and not 30% of the computed MMMNA, the two common ways to get this wrong. - Fail-closed behaviour — every route traced.
medicaid_ltss_financial_pathway.py:76-88is a
selectwhose non-default arms requirestate ∈ {TX, DE}orstate == WA; everything else falls to
default=UNMODELED. Three screens independently re-gate onpathway != UNMODELED, so the
composite cannot returntruefor an unmodeled state even if one leg were bypassed. - ABD categorical gate —
medicaid_ltss_financial_pathway.py:48gates on
is_ssi_aged_blind_disabled(pure categorical status, no income or resource test) rather than on SSI
eligibility. That is the correct and non-obvious choice: 42 CFR 435.236 covers ABD individuals who
"because of their income, would not be eligible for SSI", so an SSI-eligibility gate would exclude
the very population the SIL group exists to cover. - Reinvented variables —
medicaid_ltss_countable_resourcesis not a duplicate of
ssi_countable_resources; the repo's established pattern is one countable-resources variable per
program (17 exist), SSI's is narrower by design, and the docstring says so. - WA institutional medically-needy omission — WAC 182-513-1395 tests "remaining income plus
excess resources"; the code tests income only, and the docstring names that omission exactly.
Resources are screened separately, so the composite is not lenient in the common case. Verified,
no action. - Stale DSSM home-equity figures are encoded nowhere. DSSM 20320.7.E's own chart ends at
1/1/2012 ($525,000);grep -rn "525_000\|525000\|525,000"over the whole snapshot returns no policy
hit. Correct.
Validation Summary
| Check | Result |
|---|---|
| Files scanned | 56 (25 variables, 24 parameters, 6 test YAMLs, 1 changelog) |
| Parameter values audited vs primary source | 25/25 MATCH, 0 mismatches |
Parameters with a reference: block |
24/24 |
Variables with a reference |
25/25 |
| Jurisdiction mismatches | 0 — all TX params cite TX sources, DE→DE, WA→WA, federal→CMS/USC |
| Source authority | 100% official government — no advocacy, news, or secondary sources |
| Sources fetched successfully | 13/13 (DE DMMA via text proxy only — see A12) |
#page= anchors verified |
3/3 correct, all offset 0 |
| Test cases | 59 across 6 files; all 59 expected values re-derived by hand — 0 arithmetic errors |
| Test mechanics | Clean — no absolute_error_margin ≥ 1; all enum literals valid; all referenced inputs exist |
| Test period coverage | All 59 cases at period: 2026-07 — the one month that hides A1 |
| Mutations surviving the suite | 5 (see A2) |
| Hard-coded policy values in formulas | 0 — every numeric literal is structural (max_(…,0), unit-size comparisons, the statutory ½ at 1396r-5(f)(2)(A)) |
| TODO / FIXME / placeholder | 0 |
| Vectorization | Clean — no Python if/and/or/not on arrays; select() always with explicit default |
uv run ruff format --check |
25 files already formatted |
| Trusted inputs | 19/19 are genuine inputs (no formula/adds); quantity_type = STOCK on exactly the stock quantities |
| Enum fail-closed | Clean — default UNMODELED; composite false for 100% of the population at defaults |
| Wired into existing outputs | No — grep -r "medicaid_ltss" hits only the new tree and its tests |
| Changelog fragment | Present, correct type and location (changelog.d/ltss-financial-eligibility.added.md) |
programs.yaml entry |
Missing — see A3 |
| CI | 33/33 pass |
| Branch | BEHIND=38, AHEAD=8 — rebase recommended, no effect on findings |
Review Severity
COMMENT — issues present, none blocking.
Rationale: zero CRITICAL findings survive verification; every audited value is correct; no screened
eligibility outcome is wrong; and the program is genuinely inert with respect to existing model
outputs. The 12 SHOULD ADDRESS items are worth resolving before or shortly after merge, with A1
(MMMNA effective dating), A2 (five surviving mutations) and A3 (programs.yaml) as the
priority three.
Posting note: the run state records a posting constraint of approve-or-request-changes. With no
criticals present, that maps to APPROVE with the comments above, not REQUEST_CHANGES.
Assessment for the maintainer: this is an unusually disciplined PR. Zero hard-coded policy values,
zero TODOs, 100% reference coverage on both parameters and variables, correct fail-closed design, and
three things that are easy to get wrong and that this PR gets right — Delaware's genuinely unusual 250%
SIL with the $20 disregard applied at exactly the right step and exactly once; the excess-shelter
threshold taken against the 150%-FPG floor rather than the maximum; and the 1396p(f)(1)(B) State
election between the federal home-equity minimum and maximum, which the repo's pre-existing LTC screen
does not implement at all. The findings are dating, contract, coverage and registry issues — not
formula errors.
Next Steps
Before merge (recommended):
- A3 — add the
programs.yamlentry (state_implementations: [TX, DE, WA]underid: medicaid,
status: partial), or record an explicit decision to defer it. - A1 — fix the MMMNA effective-date complex as one change: add
2025-07-01: 2_643.75to
federal/mmmna/minimum.yamlwith its CIB 05/28/2025 reference, re-dateshelter_threshold_rate
away from 2026-07-01, and either movemedicaid_ltss_mmmnatoformula_2026_01_01or add a
TX-only January formula. Do not lower the formula start date without adding the 2025 parameter
entry first — that ordering is what keeps the DE/WA $61.25/month error latent. - A2 — add the five discriminating test cases (composite-fails-on-resources-alone; DE CSRA floor;
WA CSRA floor; MMMNA cap actually binding; pre-2026 fail-closed). Ready-to-paste YAML and input
tables are in the tests report. - A12 — have a human open the DE A-14-2025 URL in a browser and confirm the five figures. Cheap,
and it closes the only evidence gap in the audit. - A9 — apply the six citation fixes; each has a verified replacement with a page number.
Before or shortly after merge:
- A5, A6 — gate
medicaid_ltss_home_equity_eligibleonpathway != UNMODELED, and state the
assistance-unit input contract explicitly in the three affected input docstrings (resolving the
contradiction withmedicaid_ltss_qit_adjusted_income's "ownership allocation" wording). - A7, A10, A11 — add the CPI
upratingblock tominimum_limit.yaml; correctperiod:metadata
on the 12 files; resolvetx/csra/state_minimum's federal duplicate andwa/csra/state_minimum's
date. - A8 — add the Delaware hospital carve-out to the limitations documentation.
Follow-up issue (out of this PR's scope):
- A4 — the pre-existing
is_medicaid_long_term_care_home_equity_eligibleapplies the federal
maximum to every state, including TX and DE, and it is wired into
is_medicaid_long_term_care_eligibleand exposed through the API. This PR authored the parameter
that fixes it. Open an issue and cross-reference it from the new variable's docstring.
No action needed: the two cleared items. Do not add 2028-01-01: 1_000_000 to
minimum_limit.yaml, and do not treat the Jan–Jun 2026 parameter resolution as a live wrong value —
both were verified and disproven.
Adds an opt-in Medicaid long-term services and supports (LTSS) financial-eligibility screen: an effective-dated 2026 federal chassis with Texas, Delaware, and Washington parameters covering the special income limit routes (300% of SSI in TX/WA; Delaware's 250% route with the $20-disregard mechanics), qualified income trusts, institutional medically-needy budgeting (WA), resource limits, home-equity caps, and spousal impoverishment protections (CSRA floor/half/maximum regimes and MMMNA).
Twenty-five new variables — six computed screens (
medicaid_ltss_financial_pathway,is_medicaid_ltss_income_eligible,medicaid_ltss_csra_resource_eligible,medicaid_ltss_home_equity_eligible,medicaid_ltss_mmmna,is_medicaid_ltss_financial_threshold_eligible) plus nineteen documented trusted-input variables — deliberately not integrated intois_medicaid_eligible, enrollment/take-up, or Medicaid benefit values. Functional/level-of-care eligibility is out of scope and labeled as such; QIT-adjusted income and countable resources are trusted inputs with the limitation in metadata; unknown HCBS waivers fail closed tounmodeledrather than inheriting statewide rules. The modeled routes are SSI-related, so the pathway gates onis_ssi_aged_blind_disabled(42 CFR 435.236, 435.1005).Home equity follows 42 USC 1396p(f): Washington elects the federal maximum and reads the existing tracked
home_equity.limitparameter (WAC 182-513-1350(8)(c)); Texas and Delaware apply the CPI-indexed federal minimum via a newhome_equity.minimum_limitparameter in the same tree, pinned to published CIB values (TX Appendix XXXI; DSSM 20320.7.B/E). A person with no equity interest passes everywhere; unmodeled states pass at or below the federal minimum and fail closed above it. The community-spouse MMMNA is regime-specific: Texas pays the federal maximum flat (Appendix XXXI; MEPD J-7200), while Delaware and Washington use the federal minimum-plus-excess-shelter formula (DSSM 20910.4–.6; WAC 182-513-1385).Every parameter value traces to a cited primary source (Texas HHS Appendix XXXI Rev. 26-2, Delaware's DMMA Administrative Notice A-14-2025 and DSSM sections, Washington's 2026 standards and WACs, and the May 2025 / April 2026 CMS CIBs) with reference URLs and page anchors in the YAML metadata.
59 YAML contract tests cover every SIL/resource/home-equity boundary (including encumbrance/ownership-share arithmetic landing exactly at the cap and invalid-share fail-closure), TX QIT sufficiency both ways, DE's 250% + disregard including an interior partial-disregard bind, WA SIL-failure→institutional-MN and the HCBS medically-needy bracket at the $994 income level, all three CSRA control regimes with both-sided ±$1 brackets and the WA half-snapshot tie, per-state MMMNA regimes with the zero branches, the ABD categorical gate, non-homeowner and cross-state comparisons, fail-closed unknown-waiver/unknown-setting/unsupported-state/zero-unit cases, and vectorized cases.
Addresses @DTrim99's review point by point (see the reply below it).
🤖 Generated with Claude Code