Repository navigation
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.
PR #9184 review — Medicaid LTSS financial-eligibility screen (federal 2026 chassis + TX / DE / WA)Program reviewThis PR adds a new, opt-in Medicaid long-term-services-and-supports (LTSS) Key structural facts confirmed across the code, regulatory and reference reviews:
The 25 variables correctly implement the LTSS financial-eligibility law they claim to model. No Source documents
All live-link checks passed (the CMS URL returned a bot-block 403 to the automated fetcher but is Branch statusThe PR branch is 76 commits behind CriticalNone. Explicitly checked and cleared: not wired into real Medicaid / net income / health benefits; no Should address1. CSRA spousal-impoverishment regime x state test matrix is incomplete (highest-value)The three CSRA regimes — half-below-floor → floor governs; floor < half < cap → half governs;
Consequence: because floor/half/cap are each proven in exactly one state and the WA/DE floor 2. MMMNA is computed but consumed by nothing, and lacks the sibling
|
| Jurisdiction | Figures audited | Result | Notes |
|---|---|---|---|
| Federal | 6/6 match | ✅ 0 mismatches | CSRA min/max 32,532 / 162,660; MMMNA min/max 2,705 (eff 2026-07-01) / 4,066.50; home-equity min 730,000 (2025) / 752,000 (2026). Shelter rate 0.30 confirmed via 811.50 = 0.30 × 2,705. FBR 994 × 3 = 2,982 (FBR/SIL pre-existing federal params). |
| Texas | (part of 11/11) | ✅ 0 mismatches | SIL 2,982 / 5,964 (couple = 2 × individual, source-published); resources 2,000 / 3,000; CSRA state_minimum 32,532. |
| Delaware | (part of 11/11) | ✅ 0 mismatches | SIL 2,485 / 3,727.50 (250% × couple FBR 1,491); $20 general disregard (one per couple); resources 2,000 / 3,000; CSRA state_minimum 25,000 correctly floored to federal 32,532 via max_(). |
| Washington | 5/5 + waivers | ✅ 0 mismatches | SIL 2,982; MNIL 994; resources 2,000; CSRA state floor 72,529 (distinct state floor, above federal min, below federal max 162,660); COPES / New Freedom / RSW waivers enabled = true (rest on WAC 182-515-1505/1508, not the income-standards PDF). |
Effective-date verdict: the MMMNA-minimum and shelter-rate 2026-07-01 keying is source-supported —
the CIB states section 1924 adjusts the MMMNA "effective July 1 of each year" and the chart stamps
2,705 "(Effective 7-1-26)"; CSRA min/max and MMMNA max are January-adjusted and correctly keyed
2026-01-01.
Validation summary
| Review dimension | Verdict |
|---|---|
| CI | 33/33 green (confirmed) |
| Value audit | 0 mismatches (federal 6/6, TX+DE 11/11, WA all match) |
| Regulatory / logic correctness | Correct; standalone, fail-closed, no duplicated eligibility |
| References | Every dollar figure sourced; 0 critical (DE deep-link + period: month = should-address) |
| Code patterns | 0 critical; no hard-coded values, correct enums/gating/entities/periods/changelog |
| Test coverage | No zero-coverage formula; CSRA regime × state matrix is the substantive gap |
| Critical findings | 0 |
| Should-address findings | 6 |
| Suggestions | ~8 |
Review severity
COMMENT.
No critical defects. This is a solid, unusually well-referenced and well-tested new opt-in program
with all 2026 dollar values verified against official sources and no risk to existing microsim
results. The should-address items are hardening (test-matrix completeness, metadata consistency,
reference deep-linking, uprating drift) rather than correctness blockers; none rises to a latent
critical, because the CSRA formula is verified correct by hand and the gap is only in test coverage.
Next steps
Run /fix-pr 9184 to apply the should-address items — priority order: (1) CSRA regime × state test
cases (WA floor-binds, DE federal-min-governs), (2) medicaid_ltss_mmmna default_value = 0 + PR
note, (3) pre-2026-07 MMMNA boundary test, (4) DE reference deep-link/note, (5) confirm
period: month metadata, (6) SSI-tree uprating derivation. Merge from main (76 behind) as routine
hygiene.
🤖 Generated with Claude Code /review-program
DTrim99
left a comment
There was a problem hiding this comment.
Fix minor nits, then ready
Recovered unchanged from hub backup 49b1831 (owner session b1291f8d's uncommitted reviewer fixes, tree identical). - Apply the January CMS maximum and prior-July minimum MMMNA before July instead of returning zero. - Derive TX/DE/WA special income limits from the canonical SSI federal benefit rate and drop the duplicated SIL/resource parameters. - Add CSRA floor/half-snapshot/cap boundary cases, sole-resource composite failure, MMMNA cap and unsupported-period cases. - Let statutory home-equity exceptions bypass invalid ownership shares and floor negative equity; index the minimum equity limit by CPI-U. - Document trusted input units and add property-based invariants. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Add medicaid_ltss_income_disregards_already_applied (Person, MONTH, default false). When true, the supplied income is final countable income and Delaware's $20 general disregard is not subtracted again. DSSM 20240.3 deducts $20 before the $65 and one-half earned-income disregards, so the old contract (pre-apply earned disregards, model subtracts $20) could pass gross earnings of $5,057: (5,057 - 65) / 2 - 20 = 2,476 instead of (5,057 - 20 - 65) / 2 = 2,486 > 2,485. - Document the ordered earned-income calculation, the most-advantageous unearned-first $20, and DSSM 20990's sole $20 deduction for applicants with a community spouse. - Add a partial programs.yaml entry for the financial screen (TX, DE, WA; verified 2026), separate from the Medicaid entry. - Cite the Delaware notice's page 2 for the resource limits. - Reference follow-up issue #9895 for the annual home-equity chassis. - Pin MMMNA Case 8 at January 2026, the formula's first month. - Add property tests: the flag changes nothing outside Delaware and can only remove Delaware's disregard. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
These were working notes and logs from the fix round, not part of the change. They are kept outside the repository. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review (round 2): Add Medicaid LTSS financial eligibility screen (TX, DE, WA)SummaryRound 1 reviewed head
Almost every round-1 item is addressed, and the new Delaware and Washington arithmetic reproduces DSSM, DMMA and WAC examples exactly. Two problems are new in this round:
The screen is still standalone. No formula outside Path prefixes: Round-1 itemsFrom the 2026-08-20 review (9 should, 7 suggestions):
From the 2026-09-01 review, items not already covered above:
Round-1 tally: 15 of 16 S/G items addressed, 1 partially addressed (S6). Of the 2026-09-01 extras, all are addressed except the description nits (now Should 6) and the accepted CIB URL deferral. Critical (must fix)1. Texas counts interest and dividends that MEPD excludes from the eligibility budget.
2. Policy values are hard-coded in formulas.
Should addressTexas 1. An unverified opening-month partial QIT deposit is still excluded, so the screen can pass a trust that F-6820 treats as invalid.
2. The Texas couple budget has no G-6120 "ineligible as a couple" fallback, and the input docs tell callers to use 2.
Texas and Washington 3. Community-spouse resources ignore the spouse's own inventory outside Delaware (round-1 S6, still open for TX/WA).
Delaware 4. Some Delaware references cite a superseded export or the wrong page, and the PR body misattributes the IRWE step.
All states 5. The changelog has 11 fragments for one unreleased feature, and 9 of them are typed
6. Some variable names, parameter descriptions and one label break house conventions.
SuggestionsDelaware
Texas and Washington
Shared
Verification notes (consolidation)
Verified correct
Axiom line assessmentThe PR body lists 28
CI statusAll 26 checks pass on Branch statusThe branch is 83 commits behind Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Round 2: 15 of 16 round-1 items are addressed, and the PR has roughly doubled since round 1. New findings (details in the comment above): C1, Texas counts interest and dividends in the LTSS eligibility budget, but MEPD E-3331.1 excludes them ($2,850 pension + $200 interest fails at $3,050; the law passes it). C2, hard-coded policy values: IRWE age 65, the 6-month Delaware election window, 12-month IRWE allocation, and the WA 1355 regime dates. Six should items: a Texas unverified partial opening-month QIT deposit, the Texas G-6120 couple fallback, community-spouse resources ignoring the spouse's inventory (round-1 S6), Delaware reference anchors, 11 changelog fragments to fold into one, and naming/description conventions. CI is green and the merge-tree is clean.
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), initial and continuing resource eligibility, home-equity caps, and spousal impoverishment protections (CSRA floor/half/maximum regimes and MMMNA).
The new monthly screens and supporting inputs remain deliberately separate from
is_medicaid_eligible, enrollment/take-up, and Medicaid benefit values. Functional/level-of-care eligibility is out of scope. Each person supplies gross earned and unearned income, source-specific QIT deposits, needs-based income and its deposits, and their own comprehensive countable-resource inventory; the model computes income exclusions, couple totals and Delaware budgeting units. Existing gross SSI income aggregates provide equal monthly defaults, with actual-month inputs available. Asset exclusions and trust/deposit validity still require caller determinations, as documented in metadata. Unknown HCBS waivers fail closed toUNMODELED; the modeled routes remain SSI-related and gate 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 applicable individual or Delaware marital equity interest passes everywhere; unmodeled states pass at or below the federal minimum and fail closed above it. Delaware sums the spouses' individual ownership shares before testing their marital home interest, independent of the income/resource budgeting unit (DSSM 20320.7.C). The community-spouse MMMNA is regime-specific: Texas pays the federal maximum flat (Appendix XXXI; MEPD J-7200); Delaware uses federal minimum-plus-excess-shelter arithmetic (DSSM 20910.4–.6); Washington uses its published rounded minimum and shelter standards (WAC 182-513-1385(2)).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.
Financial YAML 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 SSI-indexed one-person HCBS medically-needy 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.
The reviewer-response table below addresses the substantive findings and optional suggestions from @DTrim99 and Pavel.
🤖 Generated with Claude Code
Reviewer fixes, rounds 2–7 (2026-10-07–08)
Round 2 corrected Delaware married co-owner equity, distinguished initial from continuing spousal resource eligibility, indexed Washington's medically needy income level to canonical SSI, and followed Washington's published rounded MMMNA standards. It preserved the recovered canonical SIL/resource parameters, registry entry, effective-date coverage and all ten obsolete parameter deletions.
Round 3 fixes the remaining P2 from the review of
9d9f411c71: Washington now takes a separate trusted snapshot from the most recent continuous period of institutionalization, measured on the first day of its beginning month. A break of at least 30 consecutive days requires a new determination and a replacement snapshot. Texas and Delaware keep their first-period snapshot contract.Round 4 fixes Washington's legacy continuous-period allocation and implements both input-contract decisions under Max 2026-10-07 input principle: accept the facts a caller knows and derive exclusions, attributed totals and Delaware units internally. The standalone equity output design remains unchanged.
Round 5 fixes all three P2 findings from the review of
ed2dbeec3b: Washington now excludes identifiable WAC 182-513-1340 receipts before SIL routing and income eligibility; Delaware derives claimant applicability and deducts the supplied expense amount before halving earnings; Texas excludes whole covered QIT sources in the opening month when subsequent full deposits are verified. Round 6 repairs the two P2s in the r5 review of261e18cd71053c8352a1ead3b298b863b75408f5: the Washington dividend default now reads the same legacy-compatible source as gross SSI income, and Delaware impairment-related work expenses are derived from payment, reimbursement, business-expense and allocation-election facts. The round-6 delta review APPROVED headcfa416ec5d67795cc940299e3f305fb99430ec88with no P1 or P2 findings; it was a static review and did not rerun tests. The IRWE timing limitations remain disclosed below.Round 7 applies Max's d1085 ruling (2026-10-08): retain the independent statutory home-equity screen unchanged and add the couple's actual Delaware post-six-month budget election as a leaf input.
INDIVIDUALandCOUPLEoverride the favorable-budget fallback only in the statutory window;NOT_SUPPLIEDpreserves the existing selection. Both methodology choices are resolved, and no open items for Max remain on this PR.Reviewer response
SPECIAL_INCOME(categorically needy). The r5 legacy-input regression now readsdividend_income, the identical source counted in SSI gross income: annual pension $34,800 plus legacy dividends $1,200 count $2,900 monthly after the $100 dividend exclusion, pass the $2,982 SIL and route toSPECIAL_INCOME. The interest case and COPES ordinary-dividend control remain. Invariants also prevent conflicting legacy/ordinary inputs from excluding more dividends than gross counts. Public assistance, medically needy net income, source-default mixing and nonapplying-spouse investment controls remain covered. WAC 182-513-1317(2), 1340(1)(f), (bb).wa_medicaid_ltss_couple_countable_resources_at_most_recent_institutionalization. Washington directly uses this input, without falling back to the first-period snapshot; Texas and Delaware retain the original input. Callers supply resources on the first day of the most recent continuous period's beginning month and set the initial-determination flag true again after a break of at least 30 consecutive days. A 2024 first episode had a $100,000 snapshot; after a qualifying break, July 2026 starts with $400,000. At September's initial determination, applicant $2,000/community spouse $98,000 now pass using the $162,660 CSRA cap, rather than failing against the stale $72,529 CSRA. The passing counterpart, decreasing-snapshot boundaries and cross-state controls also pass. new input contract, resource formula, resource Cases 24–26, composite Case 11, WAC 182-513-1355(2)–(4), WAC 182-513-1350(3)(b)(vi)(A).medicaid_ltss_is_initial_eligibility_determination, default true. Initial determinations retain combined current resources and the snapshot-based CSRA. For modern statutory periods, after the eligibility month in the same continuous LTSS period, false tests the applicant's resources alone against the individual limit; community-spouse resources and the CSRA no longer enter this test. A $100,000 snapshot yields a $50,000 CSRA: subsequent applicant $2,000/spouse $60,000 passes; applicant $2,001/spouse $0 fails. Initial/default cases remain covered. input contract, regressions, 42 USC §1396r-5(c)(2), (4).medicaid_ltss_de_post_six_month_budget_election, withINDIVIDUAL,COUPLE, and defaultNOT_SUPPLIED. Only after six completed months together in the same facility may a supplied election determine their unit. When not supplied, the model computes both budgets and chooses the one admitting more spouses under both income and resource thresholds, with individual budgeting in a tie. An election outside that eligible window has no effect, including before six months and under the same-address HCBS rule. Same-address HCBS couples use couple standards; their unmodeled Delaware HCBS financial pathway is not enabled by this unit calculation. Both spouses receive the same budget. Income/resource aggregation and community-spouse resources are derived; the $3,727.50 couple SIL still uses 250% of couple SSI. unit calculation, unit regressions, DSSM §20810, p67.medicaid_ltss_income_disregards_already_applied; callers supply each person's gross earned/unearned income and source-specific trust deposits. Existingssi_earned_incomeandssi_unearned_incomedefinitions were read and reused as gross defaults, without SSI exclusions or spousal deeming. Delaware internally applies the eligible $20 to unearned income first, carries the unused amount to earnings, deducts $65 and applicable impairment-related work expenses, then counts half the remainder. A couple shares one general/earned exclusion; community-spouse applicants receive only $20 and use their own income. Raw earnings $5,055/$5,057 produce $2,485/$2,486 and pass/fail; the community-spouse $5,055 case counts $5,035 and fails even when the spouse has separate income. Mixed income, low earnings, needs-based income, source-specific QIT deposits, genuine couples, and mixed actual-month/annual-source populations are covered. individual calculation, couple calculation, income regressions, DSSM §20240.3, §20990.Washington exclusion coverage
The annual gross defaults already omit SSI/public assistance, calculated credits/refunds, educational grants and named settlement receipts; tax self-employment sources already reflect IRS business deductions. Round 5 identifies interest/dividends, and adds SSI/state-assistance receipt facts for broader monthly reports.
Other WAC 182-513-1340 exclusions cannot be identified inside aggregate actual receipts without additional source/qualification/expense facts: crime compensation; EITC/rebates/property or food tax refunds; excluded tribal/Alaska Native payments; required payee fees/acquisition expenses; eligible education/work-study; IRS business expenses; fuel/energy/OAA/foster-grandparent/ACTION assistance; medical/social-service agency payments; burial appreciation; Agent Orange/radiation/energy-employee/Japanese-Aleut/Austrian/Bayer/Ricky Ray/disaster/Dutch/Holocaust payments; spouse chore-service payments; VA dependent/UME/aid-and-attendance/SMC/housebound components; other federally excluded receipts. Broad education/VA amounts and SNAP expenses cannot identify those statutory subsets. Thus callers with these receipts need further leaf facts before this partial screen can represent them. WAC 182-513-1340.
Round-7 validation
Code head b2e25f3, based directly on approved head cfa416e without a main merge. 20 financial YAML cases passed (8 assistance-unit cases and 12 composite cases), and 57 invariants passed. Each file ran separately, sequentially and in the foreground; no folder runs or microsimulations ran. Python 3.13.9 and PolicyEngine Core 3.32.15 were used.
make format, Ruff lint and whitespace checks passed before both coherent commits.Against the exact round-6 formula at cfa416e, with the new election input registered only to express the regression facts: the assistance-unit YAML had 2 failed / 6 passed, and the expanded invariant file had 2 failed / 55 passed. Both failures in each file required explicit elections that the old formula ignored. Regression/schema commit d21fd7c preserves the old formula and new facts/cases. The unmodified 51-case invariant file from the approved head also passed against its original formulas, with only the new input schema registered: 51 passed, with 54.01 seconds process time (47.23 seconds pytest time); macOS peak RSS was unavailable because
sysctlwas denied. Implementation commit b2e25f3 makes every added case pass. New YAML cases require each explicit election to override the otherwise favorable budget, require an omitted election to preserve the previous results, and ignore an election before the six-month boundary. New invariants check determinism and require election effects to stay within the legally eligible window. The independent statutory home-equity screen is unchanged under d1085(a).The six added Python checks exercise simulation behavior that YAML cannot test: changing spouse, record and calculation order, and comparing every calculated output across elections over a seeded mixed-window cohort. The original 51-case file took 54.01 seconds including import/setup/exit (47.23 seconds pytest time); the expanded 57-case passing file took 40.68 seconds including import/setup/exit (11.49 seconds pytest time). These are local macOS measurements under changing host/cache conditions, not a claimed speedup; peak memory was unavailable because the timing tool could not read
sysctl kern.clockrate. Coverage stays in the existing Full Suite – Rest → core process (test-other-python-rest-core), with no new jobs or concurrent policy tests. Prior Linux group measurements in the preserved validation sections are not an isolated benchmark of this addition.The final
rgaudit covers all 79 financial variables, including the new election, and finds zero formula references outside the financial-screen directory. The hub's measured 2026/2028 zero change in the five existing outputs therefore carries forward; no new microsimulation or caseload estimate is claimed. The new top-level election changelog describes the supplied choice and fallback. The stale round-5 IRWE changelog now describes the current payment, reimbursement, business-expense and allocation-election facts, resolving the round-6 review's P3 wording issue.git diff --checkpassed; no partner contract files or lockfiles changed. Round-7 evidence remains untracked underhub-evidence/in the assigned workspace. Workspace-local Git metadata supports coherent commits and ordinary fast-forward pushes to the existing PR branch; no history is rewritten and the PR remains unmerged.Round-6 validation
Code head cfa416e, based directly on reviewed head 261e18c without a main merge: 58 financial YAML cases passed in the two touched files (21 pathway, 37 income), and 51 invariants passed. Each file ran separately, sequentially and in the foreground; no folders, concurrent test processes or microsimulations ran. Untouched YAML files were not rerun locally in this round. Python 3.14.7 and PolicyEngine Core 3.32.20 were used.
make format, Ruff and whitespace checks passed before both coherent commits, which were pushed as ordinary fast-forwards to the existing PR branch.Before implementation, the five affected/supporting existing formula files were byte-identical to 261e18c; the additional schemas only supplied the new raw facts. The expanded pathway file recorded 1 failed / 20 passed, income 5 failed / 32 passed, and invariants 9 failed / 42 passed against those formulas. The legacy-dividend regression had a zero exclusion instead of $100; the June $4,800 allocation regression had $0 of July expense instead of $400. The monthly non-durable $400 payment also failed to reduce the old formula's $2,685 income to $2,485. The final implementations make all expanded cases pass. The no-election July control remains $0 expense / $2,685 income, while the elected case becomes $400 / $2,485 and passes. The r5 interest case and COPES ordinary-dividend case remain passing.
Three new dividend properties check ordinary, legacy and conflicting alias inputs against the identical dividend source counted in gross income. Four allocation properties check each of twelve consecutive months, year rollover, both outside endpoints, full reimbursement and excess reimbursement; their sum equals net purchase cost before claimant and income-budget caps. Two new nonrecurring-expense properties require more expense to lower or preserve individual countable income with and without allocation. Existing recurring-expense and mandatory-couple monotonicity properties now use actual monthly payment facts. The cross-year YAML also exposed Core carrying and uprating one-time facts: that intermediate 1 failed / 36 passed trace is preserved. Policy-free zero/false fallback formulas, with no variable dependencies, prevent that behavior for every new transaction fact and election.
For the expanded 51-case invariant file, the before-fix single-file process took 138.48 seconds / 1.31 GiB peak RSS, and the passing process took 1317.78 seconds / 1.64 GiB peak RSS (pytest itself: 294.95 seconds for 51 cases). These macOS measurements include model import and occurred under changing host load; no speedup, isolated pre-expansion 42-case resource baseline or Linux memory comparison is claimed. The file stays in the existing Full Suite – Rest → core process (
test-other-python-rest-core); no runner jobs were added.The final
rgaudit covers all 78 financial variables and finds zero formula references outside the financial-screen directory. The hub's measured 2026/2028 zero change in the five existing outputs therefore carries forward; no new microsimulation or caseload estimate is claimed. All notes, exact-head hashes, failures, passing logs, body drafts, Git metadata and the recovery bundle remain untracked underbuild/hub-evidence/. No partner contract files or lockfiles changed. The existing shared Git metadata is read-only in this sandbox, so the two commits and fast-forward pushes use workspace-local metadata. No history was rewritten and the PR remains unmerged.Round-5 validation
Code head 261e18c, based directly on reviewed head ed2dbee without a main merge: 127 financial YAML cases passed (35 income, 20 pathway, 30 resources, 12 composite, 3 derived-unit, 16 equity, 9 MMMNA, 2 SIL) and 42 invariants passed. Each YAML file ran as a separate single-file test invocation, sequentially in the foreground using a freshly imported shared production model; the invariant file then ran in its own single-file pytest process. No microsimulations ran. Python 3.14.7 and PolicyEngine Core 3.32.20 were used.
make format, its Ruff lint check, and whitespace checks passed before every coherent commit.Before implementation, the six existing formula files were byte-identical to ed2dbee; the new input schemas were registered only to supply missing leaf facts. Regression/schema commits b25b44b and 8de71d1 preserve the old formulas and new cases. The first income run had 4 failed / 27 passed. With all additional controls, the pathway file had 4 failed / 16 passed, the income file 8 failed / 27 passed, and invariants 11 failed / 31 passed, including all 28 existing properties passing. Washington counted $3,000 instead of $2,900, Delaware $2,685 instead of $2,485, and Texas $3,500 instead of $0. The unchanged later-month Texas control counted $3,500. Implementation 261e18c makes every new case and property pass.
New properties bound countable income by gross income, require every new exclusion to lower or preserve countable income within individual and mandatory-couple budgets, check each spouse's work expenses against one shared exclusion sequence, and restrict whole-source QIT treatment to the actual opening month and year for both earned and unearned sources. YAML controls cover qualification, age-65 history, blind/community-spouse branches, caps, verified deposits, source overlap, cross-state/year facts and monthly-source default mixing.
The final
rgaudit covers all 70 financial variables and finds zero formula references outside the financial-screen directory. This supports carry-forward of the hub's measured 2026/2028 zero change in the five existing outputs; no new microsimulation or LTSS caseload estimate is claimed. Notes, exact-head formula hashes, failing/passing logs, body drafts and isolated Git metadata remain untracked underbuild/hub-evidence/; none are committed. No partner contract files or lockfiles changed. The sandbox made the supplied worktree's shared Git metadata read-only, so commits and the ordinary fast-forward push use workspace-local metadata. Three coherent commits are added to the PR branch; history is not rewritten.Round-4 validation
Code head ed2dbee, including ordinary merges of upstream
main, most recently atfc71844c9a: 113 financial YAML cases passed (30 resources, 12 composite, 26 income, 3 derived-unit, 16 equity, 9 MMMNA, 15 pathway, 2 SIL) and 28 invariants passed. Each YAML file ran separately and sequentially in the foreground with a shared loaded model; the invariant file then ran as its own single-file pytest invocation. No concurrent policy tests or microsimulations ran. Python 3.13.9 and PolicyEngine Core 3.32.20 were used.make format, its lint check, and whitespace checks passed before each coherent commit.At exact pre-fix head b63a822, all 93 existing YAML cases and 18 invariants passed. An additional regression of the July 2003 onset/September 2026 application failed its resource assertion while income and equity passed. The old head had no onset input, so its representable facts were supplied unchanged and the July 2003 continuous history was recorded in the regression. Workspace-local logs preserve that failure. Washington fix a49c726 then passed 98 YAML cases and 18 invariants, including the new July 2003 case, August 1 boundary, modern counterpart, October 1989 boundary, pre-1989 ownership/continuation and invalid-date checks. Current raw-input fixtures preserve those outcomes.
The updated invariants check monotonicity in raw earned and unearned income, both spouses' raw earnings under elective budgets, deterministic unit selection under spouse-role/record/calculation order changes, statutory exclusion ordering, every Washington dated regime, and initial/continuing pre-1989 treatment. Mixed actual-month/annual-source tests protect per-person gross defaults. Mixed-state tests also protect against partial inputs suppressing Delaware derivation: Texas/Washington unit and spouse-resource facts now have separate non-Delaware input names, while the shared outputs are derived. Logs, drafts and evidence remain untracked under
build/hub-evidence/; no report/evidence artifacts were committed. LTSS commits made no partner-expectation edits. The main merge retains already-published upstream changes; those are distinct from the LTSS fixes.Local invariant-file pytest time, including its fixtures with the model already loaded, changed from 6.09 seconds / 18 cases to 1.67 seconds / 28 cases. The full sequential foreground runner, including model import, took 825.48 seconds and peaked at 2.88 GiB RSS on macOS; an isolated baseline peak is unavailable. These are local measurements. The file remains in the existing Full Suite – Rest → core process (
test-other-python-rest-core). Its existing b63 Linux CI artifact records 337.66 seconds and 6,676,316 KiB peak RSS for the entire successful core group, not this file; no isolated before/after Linux memory claim is made and no runner jobs were added.Round-3 validation
Code head b63a822: all seven financial YAML files ran individually in separate sequential processes; 93 cases passed (26 resources, 11 composite, 16 equity, 14 income, 9 MMMNA, 15 pathway, 2 SIL). The invariant file ran separately: 18 passed. Python 3.13.9 and PolicyEngine Core 3.32.20 were used. Total local elapsed time, including model construction and process shutdown, was about 43m35s. The existing invariant population and assertions are preserved; its snapshot input now follows each state's contract.
Before fixing the model, the resource file ran from 9d9f411 with the review's concrete re-entry case and a passing control added: 1 failed, 24 passed. The failing September case followed the then-documented first-period input contract ($100,000 from 2024), while comments recorded the July 2026 re-entry snapshot ($400,000). The old head had no separate Washington snapshot input. Test-only commit 21bca80 preserves these cases with model code and parameters unchanged. Implementation commit b63a822 adds the Washington input and extends the same cases to supply the new period's snapshot; both now pass. Additional cases cover a lower replacement snapshot, unchanged Texas/Delaware first-period behavior, and end-to-end composite eligibility.
make formatand its lint check passed before both commits. Logs and notes remain untracked underbuild/hub-evidence/in the assigned workspace; no report or evidence files were committed. No partner expected outputs changed, no microsimulations were run, and no CI runners were added. The hub's measured zero impact in 2026 and 2028 carries forward because no existing formula consumes these screens, as detailed below.Prior validation evidence (round 2)
Local validation on code head 688f0b4: all seven financial YAML files ran individually in separate sequential processes; 89 cases passed (16 equity, 23 resources, 14 income, 9 MMMNA, 15 pathway, 2 SIL, 10 composite). The invariant file ran separately: 18 passed. No concurrent test processes, heavy-lock microsimulation, or new CI runners were used.
Before-fix evidence preserved seven expected failures: two married-equity cases, the two continuing-resource cases, the 2027 COPES case, and January/July Washington rounding. Initial/default and passing equity controls remained green. Regression commit 42624f9 contains the new tests and input schema against the original model formulas.
make formatand its lint check passed before each implementation commit. Round-2 logs and the zero-existing-consumer dependency audit were saved in the hub's external evidence workspace; no evidence files remain committed. The after-equity test passed all 16 cases; its optional memory-reporting wrapper subsequently failed because sandbox permissions deniedsysctl kern.clockrate, so peak memory is unavailable.CI checked with
gh pr checksfor code head 688f0b4, Actions run 37612263818. At 2026-10-07 11:29 UTC, Quick Feedback (selective tests and coverage) passed in 7m44s. At that snapshot, six checks had succeeded, one was running and 28 were queued; no failures were reported. At that snapshot, the full pipeline was still in progress. This snapshot verifies the code revision; the subsequent report/body/evidence commit changes no model or test code.Before-fix regression runs use formula bodies byte-identical to
b24094b166. The new determination input schema is registered solely to let the continuing-resource tests supply their flag; the resource formula in those runs remains unchanged. The resulting failures preserve the old behavior before the fixes are applied.The invariant fixture now assigns each independent random applicant a singleton marital unit. Core's missing-group default places all people in one unit, which would make the new Delaware marital aggregation combine unrelated records. All existing assertions and the 18-test count are preserved.
Prior-head Linux CI evidence remains available for b24094b, Actions run 37504243982: all 30 checks succeeded, including 81 financial YAML cases, 18 invariants, 620 partner-contract cases and 1,250 baseline HHS cases. Those are prior-head CI results; the round-2 results above identify the local reruns and then-current-head checks. No partner expected outputs were edited.
Impact
The hub completed a real microsimulation comparing merge base
6b80a8e447withb24094b166on the default datasetpopulace_us_2024.h5@populace-us-2024-spm-20260909, for 2026 and 2028, under the shared heavy lock. It ran once per side and compared every record.Exactly zero measured change in both years:
is_medicaid_eligible,medicaid,household_health_benefits,household_net_incomeandhousehold_net_income_including_health_benefitsare identical on every record, with zero people or dollars changed.That zero result carries over through round 7 for the LTSS changes, including the actual Delaware budgeting election. The round-7
rgaudit covers all 79 financial variables, including the actual election, and again finds zero formula references outside the financial-screen directory. The prior round-6rgaudit of all 78 financial variables also found zero formula references outside the financial-screen directory, including its eight new IRWE facts. No microsimulation was rerun. The fixes change only the new LTSS screen variables and their inputs/parameters; no existing eligibility, benefit or household-income variable consumes them. The existing annual home-equity consumer is untouched and its separate correction remains tracked in #9895. There is no changed existing consumer for the hub to re-run.The new monthly outputs have no main comparator and are not a national LTSS caseload estimate. The default unsupported setting makes the composite false; Delaware derives an individual unit by default, while other states retain the existing explicit unit contract. Supplied-input regressions establish the repaired boundary behavior; MMMNA remains informational and does not feed the composite eligibility screen.
Future-year scope: round 2 indexed Washington's one-person MNIL to canonical SSI projections; it does not claim complete verification of 2027 eligibility standards. Federal CSRA/MMMNA allowance leaves and Washington's published MMMNA chart values carry their latest sourced 2026 values into later periods. Later official allowance/chart amounts have not been verified.
Methodology and ruled input contracts
Washington's onset contract is resolved with actual start year/month facts, default August 2003 for modern treatment. The pre-October 1989, October 1989–July 2003, and August 2003 onward branches follow WAC 182-513-1355. Washington rounding continues to follow the agency's published standards, as identified in WAC 182-513-1385(2).
The two input contracts are resolved by Max 2026-10-07 input principle:
medicaid_ltss_reported_gross_earned_incomeandmedicaid_ltss_reported_gross_unearned_income; their -1 default means unspecified, while reported zero means actual zero. The gross outputs are derived, so a monthly report for one person preserves annual-source defaults for other people. The final-countable-income flag is removed. DSSM §20240.3 requires $20, then $65, then applicable impairment-related work expenses, then half, using eligible unearned income first for the general exclusion; §20990 permits community-spouse applicants only $20.Max d1085 (2026-10-08) rules both remaining choices:
medicaid_ltss_de_post_six_month_budget_election:INDIVIDUAL,COUPLE, or defaultNOT_SUPPLIED. The model derives both budgets from income/resource facts. A supplied election applies only after six completed months together in the same facility, where DSSM §20810 permits the couple to choose budgeting in their best interests.NOT_SUPPLIEDretains today's budget admitting more spouses, with individual budgeting on ties. Outside that window, the mandatory derived unit remains in force and the election input has no effect; this includes earlier same-facility months, same-address HCBS couples, and applicants outside Delaware. The input records a choice the couple actually made and requires no caller-computed budget or eligibility total.Disclosed IRWE scope limitation (unchanged from round 6):
No open methodology items for Max remain on this PR. DTrim99's CHANGES_REQUESTED review remains outstanding, so reviewer clearance is still required before merge. This PR has not been merged.
axiom: TX MEPD Appendix XXXI TheAxiomFoundation/rulespec-us#1567 queued | TX MEPD G-6100/G-6200 TheAxiomFoundation/rulespec-us#1568 queued | TX MEPD F-6820 TheAxiomFoundation/rulespec-us#1569 queued | TX MEPD J-4400 TheAxiomFoundation/rulespec-us#1570 queued | TX MEPD J-7200 TheAxiomFoundation/rulespec-us#1571 queued | DE DSSM 20100.2.2 TheAxiomFoundation/rulespec-us#1572 queued | DE DSSM 20240/20990 TheAxiomFoundation/rulespec-us#1573 queued | DE DSSM 20300 TheAxiomFoundation/rulespec-us#1574 queued | DE DSSM 20320.7 TheAxiomFoundation/rulespec-us#1575 queued | DE DSSM 20400.11 TheAxiomFoundation/rulespec-us#1576 queued | DE DSSM 20810 TheAxiomFoundation/rulespec-us#1577 queued | DE DSSM 20910.10/20950/20980 TheAxiomFoundation/rulespec-us#1578 queued | DE DSSM 20910.4–.6 TheAxiomFoundation/rulespec-us#1579 queued | WAC 182-513-1100 TheAxiomFoundation/rulespec-us#1580 queued | WAC 182-513-1340 TheAxiomFoundation/rulespec-us#1581 queued | WAC 182-513-1350 TheAxiomFoundation/rulespec-us#1582 queued | WAC 182-513-1355 TheAxiomFoundation/rulespec-us#1583 queued | WAC 182-513-1385 TheAxiomFoundation/rulespec-us#1584 queued | WAC 182-513-1395 TheAxiomFoundation/rulespec-us#1585 queued | WAC 182-515-1505/1508 TheAxiomFoundation/rulespec-us#1586 queued | WAC 182-519-0050 TheAxiomFoundation/rulespec-us#1587 queued | 42 USC 1396r-5(c),(f),(g) TheAxiomFoundation/rulespec-us#1588 queued | 42 USC 1396r-5(d) TheAxiomFoundation/rulespec-us#1589 queued | CMS CIB 2025-05-28/2026-04-27 TheAxiomFoundation/rulespec-us#1590 queued | 20 CFR416.976/416.1112(c)(4)–(7) TheAxiomFoundation/rulespec-us#1591 queued | 42 CFR 435.236/435.1005 TheAxiomFoundation/rulespec-us#1592 queued | PL 119-21 §71108/42 USC 1396p(f)(1) TheAxiomFoundation/rulespec-us#1593 queued | TX MEPD F-3600 TheAxiomFoundation/rulespec-us#1594 queued | 42 USC 1396p(f)(2) spouse-residency exception encoded-correct (us/statutes/42/1396p/f.yaml#eligible_when_spouse_exception_applies) | 42 USC 1396p(f)(4) hardship waiver encoded-correct (us/statutes/42/1396p/f.yaml#eligible_when_hardship_waiver_applies)