Skip to content

Add Medicaid LTSS financial eligibility screen (TX, DE, WA) - #9184

Open
MaxGhenis wants to merge 34 commits into
mainfrom
ltss-financial-eligibility
Open

MaxGhenis wants to merge 34 commits into
mainfrom
ltss-financial-eligibility

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Jul 31, 2026 •

Copy link
Copy Markdown
Contributor

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 to UNMODELED; the modeled routes remain SSI-related and gate on is_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.limit parameter (WAC 182-513-1350(8)(c)); Texas and Delaware apply the CPI-indexed federal minimum via a new home_equity.minimum_limit parameter 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 of 261e18cd71053c8352a1ead3b298b863b75408f5: 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 head cfa416ec5d67795cc940299e3f305fb99430ec88 with 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. INDIVIDUAL and COUPLE override the favorable-budget fallback only in the statutory window; NOT_SUPPLIED preserves the existing selection. Both methodology choices are resolved, and no open items for Max remain on this PR.

Reviewer response

Finding Resolution and source/test references
Washington mandatory exclusions and legacy dividends (r5 review P2; round-5 P2) Monthly interest/dividend source facts retain per-person annual defaults; SSI and qualifying state needs-based public-assistance receipts have separate leaves when included in reported gross. The model derives exclusions before CN/MN routing and applies the same net income to income eligibility. The 2026 institutional $2,900 pension + $100 interest case now counts $2,900, passes the $2,982 SIL and selects SPECIAL_INCOME (categorically needy). The r5 legacy-input regression now reads dividend_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 to SPECIAL_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).
Delaware impairment-related work expenses (r5 review P2; round-5 P2) Replaces the caller-computed qualifying/net/allocated expense amount with monthly payment and reimbursement facts, separate already-deducted business costs, a one-time purchase/payment amount recorded in its actual payment month, a working-when-paid fact, and the claimant's twelve-month allocation election. Unreported months default to zero/false, preventing Core from carrying or uprating historical payments and elections. These default formulas read no other variables, so the facts remain leaf nodes. The output computes the net recurring amount and each elected payment's twelve equal monthly portions, then existing claimant and income-budget formulas apply disability/age/blindness gates and the shared $20/$65 sequence. June's $4,800 durable purchase with an election gives $400 in July despite no July payment: $5,455 earnings become $2,485 and pass. Without the election, July gets $0 and counts $2,685, failing. The earlier $400 case is now an actual non-durable monthly payment. Reimbursement/business netting, purchase-month treatment, overlapping purchases, year rollover and allocation expiry have controls. The additional IRWE timing and election limitations are disclosed scope below. 20 CFR 416.976(b), (d), (e)(1)–(2), (f), 20 CFR 416.1112(c)(4)–(7).
Stale Delaware IRWE changelog (r6 review P3) Rewords the earlier round-5 fragment to describe the current payment, reimbursement, business-expense and allocation-election facts. The published entries now agree with the round-6 leaf-input implementation; this changes no model behavior.
Texas QIT opening-month whole-source exclusion (round-5 P2) Adds actual opening year/month, amounts of earned/unearned sources identified in the instrument, actual deposits from those sources, and verification of subsequent full deposits. The model recognizes the opening month and excludes the undeposited remainder of covered sources in addition to actual deposits, without overlapping deposits from other sources. A sole $4,000 pension with $500 deposited in the opening month counts $0 and passes; the later-month control counts $3,500 and fails. Earned-source, mixed-source, verification, missing/invalid fact and cross-state/year controls are included. Trust and deposit validity remain caller facts. Texas MEPD F-6820.
Washington legacy continuous periods (round-4 P2) Added actual onset year/month leaves, defaulting to August 2003 so omitted history retains modern treatment. WAC 182-513-1355 uses one-half of the sum of applicant-sole resources and the full jointly titled balance before October 1, 1989, the federal CSRA maximum from October 1, 1989 through July 31, 2003, and the floor/half/cap branch from August 1, 2003. Pre-1989 ownership balances are separate leaf inputs and that counting rule applies at both initial and continuing determinations. The July 2003 continuous-period applicant with a September 2026 initial determination, $100,000 beginning-month snapshot and current $2,000/$98,000 resources now receives $162,660 and passes; the August 1, 2003 boundary and a modern counterpart receive $72,529 and fail solely on resources. allocation formula, resource Cases 27–30, composite Case 12, WAC 182-513-1355(2)–(4).
Washington re-entry snapshot (round-3 P2) Added monthly Person stock 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).
Delaware married co-owners (round-2 P1) Retains individual ownership-share inputs and automatically sums the marital unit's shares for Delaware. Callers must supply both spouses in one marital unit, with each spouse's own share and the same whole-home value and encumbrances. Two nursing-facility spouses with 50% shares in a mortgage-free $1,000,000 retained home each fail the $752,000 cap; the same ownership in a $752,000 home passes. This treatment also applies when the couple is budgeted as two individuals. formula, married co-owner regressions, DSSM §20320.7.C, p17.
Initial versus continuing CSRA eligibility (round-2 P2) Added monthly Person Boolean 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).
Washington annual medically needy income level (round-2 P2) Replaced the frozen $994 future limit with canonical SSI-FBR uprating. Washington updates the effective one-person MNIL each January with SSA's COLA. The 2027 COPES regression has $4,000 income less $500 allowable deductions and $2,500 care cost: $1,000 net passes the projected FBR, rather than failing against 2026's $994. Future amounts are model projections until official values are published. parameter, 2027 regression, WAC 182-515-1508(2)(c)(ii), WAC 182-519-0050(1), (5).
Washington published MMMNA standards (round-2 P2) Uses the agency's January 2026 $2,644 minimum and $794 shelter threshold: shelter expenses of $1,000 yield $2,850. Bare federal arithmetic gave $2,850.625, a $0.625 difference. July 2026 uses the published $2,705/$812 standards, so $1,811.50 shelter yields $3,704.50 rather than $3,705. The agency chart governs the model, following Max's d1011 precedent; this is resolved rather than an unrestricted legal rounding election. Delaware retains its federal arithmetic and Texas its flat maximum; the shared maximum remains $4,066.50. formula, January/July regressions, WAC 182-513-1385(2), January 2026 chart, July 2026 chart.
Impact narrative (round-2 P3) Removed the contradictory claims that completed impact measurements were missing. The hub's record-by-record 2026/2028 comparison measured exactly zero changes in all five existing Medicaid/household outputs. That result carries over because these fixes alter only the new screens and their inputs/parameters, with no existing consumer. See Impact below.
Pre-July MMMNA (Pavel A1; DTrim99) January–June remain supported: Delaware retains the operative July 2025 federal minimum, $2,643.75, and Texas uses the January federal maximum, $4,066.50. Washington uses its January published $2,644 minimum and $794 shelter threshold. July 2026 changes the minimum to $2,705. A pre-July zero expectation would be incorrect. MMMNA formula, minimum, January regression, June regression.
CSRA and composite coverage (Pavel A2; DTrim99) Preserved exact Cases 13–18: DE floor $32,532/half-snapshot $50,000/cap $162,660; WA floor $72,529/half-snapshot $100,000/cap $162,660, each with a boundary pass and $1-over failure. CSRA Cases 13–18. Preserved sole-resource composite failure, MMMNA cap, and December 2025 unsupported period.
Program registry (Pavel A3) Separate partial HHS/Healthcare screen, TX/DE/WA, verified 2026, with its own financial parameter prefix; existing Medicaid status remains complete. programs.yaml.
Annual equity divergence (Pavel A4) Documented that the annual chassis still uses the federal maximum across states: TX/DE $900,000 equity passes that annual screen but fails this new $752,000 minimum-based screen in 2026. A separate consumer change and impact analysis are tracked in #9895. equity documentation.
Standalone equity gate (Pavel A5; d1085(a)) Max d1085 (2026-10-08) rules to keep the independent statutory payment-bar screen as built. The composite applies the modeled-pathway gate; round 7 changes no equity model behavior. equity contract, composite.
Leaf facts and Delaware couple budgeting (Pavel A6; rounds 4 and 7; d1085(b)) Max 2026-10-07 input principle replaces caller-selected Delaware units and attributed totals with same-facility institutional-service request/receipt, completed months together, same-address HCBS request/receipt, and each spouse's own income/resource inputs. Same-facility couples must use couple standards before six completed months. Max d1085 (2026-10-08) adds their actual election as the marital-unit leaf medicaid_ltss_de_post_six_month_budget_election, with INDIVIDUAL, COUPLE, and default NOT_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.
Equity indexing (Pavel A7) Preserved CPI-U uprating and nearest-$1,000 rounding. The 2028 $1 million non-agricultural ceiling caps the indexed minimum; it does not replace the minimum with $1 million. minimum_limit.yaml, ceiling formula.
Delaware hospitals/scope (Pavel A8; DTrim99 extensions) Delaware's institutional screen remains limited to nursing facilities; its 100%-SSI hospital route is disclosed as unmodeled. Court/hearing adjustments, agricultural equity, AK/HI, unidentified waivers, and WA excess-resource income/spenddown extensions remain outside this build. WA's composite still applies the resource screen. income limitations, resource limitations, pathway scope.
References/evidence (Pavel A9/A12; DTrim99) Pinned DSSM is the 73-page export: §20300 p10, §20810 p67, §§20910.4–.10 p69, §20990 p71, equity §20320.7 p17, QIT §20400.11 p54. Delaware's 2026 resource notice now cites p2. resources references, AU reference, QIT references, equity reference.
Canonical parameters/metadata (Pavel A10/A11; DTrim99) SIL derives from canonical SSI: TX $2,982/$5,964; DE $2,485/$3,727.50; WA $2,982. TX/DE use canonical SSI resource thresholds and TX uses the federal CSRA floor. WA $72,529 starts July 2025. Stocks and rate multipliers are not divided by twelve. SIL, resources, WA effective date, stock metadata, annual equity units.
Earlier defects/exception priority (DTrim99) Preserved DE nonowner/minimum-equity behavior, TX flat-maximum MMMNA, ABD categorization rather than SSI financial eligibility, negative-equity flooring, and invalid-input fail-closure. Statutory resident-family/hardship exceptions take priority even with invalid ownership shares; invalid shares otherwise fail. ABD gate, equity formula, exception/negative-equity cases.
Couple $20 test/disabled waiver (DTrim99) Existing couple tests already bracket needs-based $3,727/$3,727.50/$3,728 and ordinary $3,747/$3,747.50/$3,748, with one $20 disregard per couple. COPES coverage explicitly disables its parameter while preserving New Freedom. needs-based couple cases, ordinary couple cases, disabled COPES.
Raw earned-income exclusions (DTrim99; round 4) Max 2026-10-07 input principle removes medicaid_ltss_income_disregards_already_applied; callers supply each person's gross earned/unearned income and source-specific trust deposits. Existing ssi_earned_income and ssi_unearned_income definitions 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.
Optional enum/description cosmetics (DTrim99) Enum defaults remain last. The longer input-contract descriptions remain because they define ownership, budgeting and fail-closure contracts; shortening them is deferred as a cosmetic change.
Optional canonical CIB URL (DTrim99) Retains equivalent official CMS URL variants: they cite the same source bulletins. URL normalization is deferred as a cosmetic change.

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 sysctl was 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 rg audit 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 --check passed; no partner contract files or lockfiles changed. Round-7 evidence remains untracked under hub-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 rg audit 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 under build/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 rg audit 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 under build/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 at fc71844c9a: 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 format and its lint check passed before both commits. Logs and notes remain untracked under build/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 format and 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 denied sysctl kern.clockrate, so peak memory is unavailable.

CI checked with gh pr checks for 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 6b80a8e447 with b24094b166 on the default dataset populace_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_income and household_net_income_including_health_benefits are 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 rg audit covers all 79 financial variables, including the actual election, and again finds zero formula references outside the financial-screen directory. The prior round-6 rg audit 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:

  • Earned-income inputs: each person supplies raw earned/unearned income and source-specific deposits; the model computes ordinary trust subtraction, the verified Texas opening-month source exclusion, and the mandatory Delaware exclusion order. Gross existing SSI income variables supply equal monthly defaults. Actual monthly amounts use medicaid_ltss_reported_gross_earned_income and medicaid_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.
  • Delaware units and totals: the model derives the unit from service/location/duration facts and aggregates each spouse's own amounts. DSSM §20810 prescribes same-facility couple budgeting before six months and same-address HCBS couple standards. Marital home-equity aggregation still applies independently of the elected income/resource budget.

Max d1085 (2026-10-08) rules both remaining choices:

  • (a) Independent statutory home-equity screen. Keep the standalone payment-bar result as built, with the modeled-pathway gate in composite eligibility. Round 7 changes nothing else for this ruling. 42 USC §1396p(f) supplies the legal bar and exceptions.
  • (b) Actual Delaware post-six-month institutional election. Following Max's 2026-10-07 principle to “make inputs as leaf-nodey as possible,” callers report the couple's actual election through medicaid_ltss_de_post_six_month_budget_election: INDIVIDUAL, COUPLE, or default NOT_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_SUPPLIED retains 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):

  • IRWE work/payment timing and additional claimant elections. Round 6 implements recurring payments and the actual claimant election under 20 CFR 416.976(e)(2) for one-time items or services paid while working and receiving earned income. Callers supply the actual payment month as the monthly input key; the model derives the twelve-month allocation history. Payment timing may differ from acquisition timing, and callers do not compute an allocated amount. Pre-work durable-item payments under (e)(4), payments while working before the first paycheck, after-work payments relating to earlier services/use, and the special downpayment-plus-installment election under (e)(3) require additional work/service/pay-history and election facts. The ordinary formula requires the working-when-paid fact and earned-income receipt in that month; it does not silently choose or apply those other treatments. For a durable item paid three months before work starts, (e)(4) retains nine-twelfths of net cost, then the claimant chooses a full deduction or a new twelve-month allocation starting with first earned-income receipt. Those additional treatments remain outside this PR's modeled scope and require additional leaf facts before future implementation; they are not an outstanding methodology decision for Max on this PR. Reasonable-charge and need/use verification remain factual scope requirements; these inputs report actual payments rather than a legally qualified deductible total. 20 CFR 416.976(d)–(g).

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)

@codecov

codecov Bot commented Jul 31, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (98fbf36) to head (7cee6cd).
⚠️ Report is 97 commits behind head on main.

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     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@DTrim99

DTrim99 commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Program Review

PR #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 is_medicaid_eligible, with QIT-adjusted income and countable resources as documented trusted inputs.

Source Documents

# Source URL Pages
1 TX HHS MEPD Handbook, Appendix XXXI — Budget Reference Chart (Rev. 26-2, eff. June 1, 2026) https://fhb.hhs.texas.gov/handbooks/medicaid-elderly-people-disabilities-handbook/appendix-xxxi-budget-reference-chart HTML chart (n/a)
2 DE DMMA Administrative Notice A-14-2025 — 2026 SSI-Related Income Standards and Medicare Premiums https://dhss.delaware.gov/wp-content/uploads/sites/11/2026/06/2026-SSI-Related-Income-Standards-and-Medicare-Premiums.pdf 2
3 WA HCA — Apple Health Income and Resource Standards (1/1/2026) https://www.hca.wa.gov/assets/free-or-low-cost/income-standards-20260101.pdf 7
4 CMS CMCS Informational Bulletin (4/27/2026) — Updated 2026 SSI and Spousal Impoverishment Standards https://www.medicaid.gov/sites/default/files/2026-04/cib04272026.pdf 2
5 Supplementary regulations (HTML/PDF) — WAC 182-513-1395, WAC 182-515-1508 (+1505/1506 cross-checked); DE DSSM, 16 DE Admin Code 20000 (LTC), re-collected clean (83 pp.) https://app.leg.wa.gov/wac/default.aspx?cite=182-515-1505 ; https://regulations.delaware.gov/api/AdminCode/title16/20000/13aee487-1cd1-4726-addf-63603af28a78 n/a / 83
  • Year: 2026 — Scope: PR changes only (merge-base diff, 64 files: 32 parameters, 25 variables, 6 test YAMLs, 1 changelog fragment)

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)

  1. Delaware can never pass the composite screen — home-equity fails closed even for non-homeowners, and the DE cap is in fact established by DE regulation.
    Files: policyengine_us/variables/gov/hhs/medicaid/eligibility/long_term_care/financial/medicaid_ltss_home_equity_eligible.py (home_cap_is_modeled = (state == TX) | (state == WA), default=0), is_medicaid_ltss_financial_threshold_eligible.py (ANDs home-equity in), tests medicaid_ltss_home_equity_eligible.yaml Case 7 and is_medicaid_ltss_financial_threshold_eligible.yaml Case 2.
    Because DE has no modeled cap, every Delaware applicant returns medicaid_ltss_home_equity_eligible = False absent a residency/hardship exception — including an applicant with home_market_value: 0 — so is_medicaid_ltss_financial_threshold_eligible is false for all DE applicants regardless of income/resources. Delaware is one of the three states the PR adds, yet it can never produce a positive composite result. This is legally wrong on two counts: (a) under 42 USC 1396p(f) the home-equity payment bar applies only to a person with an equity interest in a home — a non-homeowner is not barred (https://www.law.cornell.edu/uscode/text/42/1396p); and (b) the PR's premise that "no DE document establishes a numeric cap" is contradicted by the re-collected DE regulation: DSSM 20320.7.B/E (16 DE Admin Code 20000) bars payment only where equity "exceeds the home equity cap as set by federal regulations" and adopts the CPI-indexed federal-minimum tier ($500,000 base in 2006), i.e., $752,000 for 2026 — the value already present in the PR's own federal/home_equity/minimum.yaml and confirmed on the CMS CIB chart (https://www.medicaid.gov/sites/default/files/2026-04/cib04272026.pdf). Fix: at minimum let zero-equity applicants pass the home-equity component; preferably give DE the federal-minimum $752,000 cap citing DSSM 20320.7.B/E (https://regulations.delaware.gov/api/AdminCode/title16/20000/13aee487-1cd1-4726-addf-63603af28a78).

Should Address

  1. The new home-equity subsystem duplicates the existing federal LTC home-equity chassis.
    Files: medicaid_ltss_home_equity_eligible.py plus seven manual home-input variables (medicaid_ltss_home_market_value/encumbrances/ownership_share/occupied_by_spouse/child_under_21/blind_or_disabled_child/hardship_waiver) and parameters financial/{tx,wa}/home_equity/limit.yaml, financial/federal/home_equity/{minimum,maximum}.yaml.
    The model already implements the 42 USC 1396p(f) bar via is_medicaid_long_term_care_home_equity_eligible and medicaid_home_equity_limit_family_exception (which derive spouse/child residence from actual household structure, is_blind/is_disabled, and age), backed by gov.hhs.medicaid.eligibility.long_term_care.home_equity.limit — which already carries the 2026 value $1,130,000 and 2027/2028 values incl. the H.R.1 (P.L. 119-21) Sec. 71108 change. The new wa/home_equity/limit.yaml (2026-only) will silently diverge from the tracked federal figure in 2027+. Prefer reusing/extending the existing chassis and parameters over the parallel financial/*/home_equity/* tree. (Note: the code-pattern auditor read the new medicaid_ltss_* names as intentionally namespaced trusted inputs; the regulatory reviewer flagged the duplication as blocking. Consolidated here as a strong should-address given the screen is opt-in and un-integrated.)

  2. TX MMMNA regime mismatch — verified (code-path CONFIRMED), informational-value only.
    Files: medicaid_ltss_mmmna.py, test medicaid_ltss_mmmna.yaml (TX state_code).
    Texas sets the community-spouse MMMNA as a single flat figure equal to the federal maximum — TX Appendix XXXI lists exactly one line, "MMMNA also known as Spousal Allowance — $4,066.50", with no minimum and no shelter standard (https://www.hhs.texas.gov/handbooks/medicaid-elderly-people-disabilities-handbook/appendix-xxxi-budget-reference-chart; corroborated by MEPD J-7200). The PR applies the generic federal formula ($2,705 + excess shelter over $811.50, capped at $4,066.50) to all states, and its own TX-coded test pins the federal-formula outputs [2_705, 2_705, 4_066.50] — understating the TX MMMNA by up to $1,361.50/month for low-shelter cases. Verification confirmed medicaid_ltss_mmmna feeds no eligibility output anywhere in the PR (exhaustive consumer trace) — it is a standalone informational quantity, hence should-address rather than critical. Remedies (any one): add a TX flat-maximum branch/parameter; re-scope the test off TX; or explicitly document that state MMMNA regimes are unmodeled and label the variable federal-only. (Open question noted for any follow-up: whether WA pays the maximum flat — check WAC 182-513-1380; DE regime likewise unmodeled.)

  3. Seven federal "chassis" parameters are declared but never referenced.
    Files: financial/federal/ssi_fbr/{individual,couple}.yaml, federal/resources/{individual,couple}.yaml, federal/special_income_limit/maximum.yaml, federal/home_equity/{minimum,maximum}.yaml.
    Flagged independently by three validators. Only federal/csra/{minimum,maximum} and federal/mmmna/* are read by formulas. The orphans also duplicate canonical values living elsewhere (SSI FBR = gov.ssa.ssi.amount; home-equity limit = gov.hhs.medicaid.eligibility.long_term_care.home_equity.limit), inviting drift. Remove them or wire them to real use (the values themselves are all correct per the CMS CIB).

  4. No aged/blind/disabled categorical gate on the SSI-related pathways.
    Files: is_medicaid_ltss_financial_threshold_eligible.py, is_medicaid_ltss_income_eligible.py, medicaid_ltss_financial_pathway.py.
    The 300% special-income level and institutional/medically-needy routes exist only for the SSI-related (aged 65+/blind/disabled) population (42 CFR 435.236, 435.1005; SSA SI 01110). A non-ABD person meeting the thresholds returns True. The model already has is_ssi_aged_blind_disabled. Gate on it, or document the omission prominently in medicaid_ltss_financial_pathway. (Kept at should-address given the PR's explicit financial-only scope.)

  5. MMMNA test coverage: the two load-bearing zero branches and the additive interior are untested.
    File: medicaid_ltss_mmmna.yaml (1 case, 3 people — all landing on the floor or the cap). Missing: has_community_spouse: false → 0; pathway == UNMODELED → 0 (both false branches of the gate prevent phantom spousal allowances and are unverified); an excess-shelter interior point (e.g., shelter $1,811.50 → $3,705) so the minimum + excess arithmetic is checked off-boundary; and shelter one cent below the $811.50 threshold.

  6. Edge-case test gaps on already-tested variables (all six formula variables have coverage; these harden it):

    • Home equity: (value − encumbrances) × share never checked at the cap with non-trivial encumbrance/share (e.g., TX $1,000,000 − $248,000 → exactly $752,000, then +$1); invalid ownership_share (<0 or >1) fail-closed guard unexercised.
    • CSRA: no has_community_spouse: true with assistance_unit_size: 2 case (confirming the couple case bypasses the CSRA branch); no both-spouses-institutionalized case; floor/interior crossovers asserted from one side only (add ±1 brackets to Cases 5–6); no half-snapshot-equals-state-minimum tie.
    • Cross-state: no identical-facts case showing TX/DE/WA divergence on the income pathway (WA flips to medically-needy above the SIL while TX/DE fail) or resource limits, mirroring the existing home-equity cross-state case.
    • Fail-closed defaults: no explicit assistance_unit_size: 0 case; no zero-income-eligible case (lowest tested income is $2,000).
  7. Reference precision and durability (all values corroborate; these make citations self-verifying):

    • federal/mmmna/shelter_threshold_rate.yaml: cite the subsection — 42 USC 1396r-5(d)(4) (excess shelter, 30% of (d)(3)(A)(i)), e.g. https://www.law.cornell.edu/uscode/text/42/1396r-5#d_4 — rather than bare 1396r-5.
    • All 11 federal CMS-bulletin citations: add #page=2 (the standards chart is file-page 2; the link currently lands on the cover letter). WA standards sheet: add #page=7 (LTSS block).
    • DE files: include the notice identifier "DMMA Administrative Notice A-14-2025" in titles (the /wp-content/uploads/ URL will rot on re-issue), and now that the DSSM has been cleanly re-collected, cite the durable sections directly: DSSM 20910.10 (CSRA $25,000 state spousal share), 20100.2.2 (250% SIL), 20240.1/20990 ($20 disregard incl. needs-based carve-out), 20400.11 (Miller trusts).
    • TX: pin "Revision 26-2; Effective June 1, 2026" in the title (living chart). WA csra/state_minimum: note the source stamps $72,529 as "(7/1/25), changes in odd years" — add the odd-year July cycle to the description so the 2026-01-01 date isn't misread as WA's action date.
  8. Style/formatting nits (code-pattern audit): shelter_threshold_rate.yaml value 0.30 → 0.3 (trailing zero; the .50 cent values in de/special_income_limit/couple.yaml and federal/mmmna/maximum.yaml are legitimate); parameter descriptions read as full explanatory sentences rather than the terser house pattern ("...under the [Program Name] program").

Suggestions

  1. DE csra/state_minimum ($25,000) — now verified verbatim in DSSM 20910.10 ("$25,000.00 (current state spousal share)", raised from $14,148 by DE SB 99 for applications on/after 10/1/93) and correctly inert in code via max_(state_minimum, federal_minimum) (the federal $32,532 governs, matching 42 USC 1396r-5(f)(2)). Add the DSSM 20910.10 section citation to the YAML and note in the description that the federal floor supersedes it.
  2. period: month metadata on stock parameters (resources, CSRA, home-equity, SIL limits): semantically odd for one-time/stock limits though behaviorally correct for the un-annualized read; consider a label/description note that these are stocks. Same nit applies to the WA waiver booleans.
  3. /2 statutory one-half in medicaid_ltss_csra_resource_eligible.py is the fixed 42 USC 1396r-5(f)(2)(A) spousal share and acceptable as a literal; a csra_share (0.5) parameter is optional for traceability.
  4. Document modeling simplifications: WA WAC 182-515-1507 CN route (no SIL test) and the 182-515-1508(2) / 182-513-1395(5) spend-down fallbacks are unmodeled; WAC 182-513-1395(4)(a) tests "remaining income plus excess resources" against the facility cost while the model omits the excess-resources term (slightly lenient, resources screened separately). A short scope note in the WA variables would lock these in.
  5. Nice-to-have tests: DE mixed needs-based/ordinary income so min_(non_needs_based, 20) binds at an interior value; WA HCBS medically-needy ±1 bracket at the $994 MNIL; medicaid_ltss_setting: UNKNOWN fail-closing to UNMODELED; an unsupported state (e.g., CA) returning UNMODELED/all-false; note that the WA waiver enabled: false branch is reform-only-reachable.
  6. Reference niceties: prefer the canonical app.leg.wa.gov WAC link over the hca.wa.gov landing page for COPES; add WAC 182-513-1100 (SIL definition) to complete the WA rule chain; name the exact table/row in citation titles; note that tx/csra/state_minimum is the federal floor as adopted by TX (the chart's own wording: "the minimum resource amount set by federal law").

Investigated and Cleared

  • DE CSRA state minimum $25,000 — initially flagged critical (uncorroborated, below federal floor); the DSSM PDF was re-collected cleanly (83 pp.) and DSSM 20910.10 states the figure verbatim; the code's federal-floor max_ matches both the DSSM and 42 USC 1396r-5(f)(2). Cleared (residual: Suggestion 1).
  • WA waiver flags (COPES, New Freedom, RSW) — WAC 182-515-1505/1506 confirm these are exactly the three HCS-authorized HCB waivers, and WAC 182-515-1508 + 182-513-1100 confirm the 300%-SSI SIL route. The five DDCS waivers (WAC 182-515-1510) correctly fail closed. Cleared.
  • DE 250% SIL / $20 disregard / QIT regulatory basis — verified against DSSM 20100.2.2, 20240.1, 20990, and 20400.11 (Miller trusts). The DE income + disregard modeling is exactly right. Cleared.
  • MMMNA minimum $2,705 (eff. 7/1/2026) — one reviewer flagged it as an unpublished projection; the collected CMS CIB chart itself lists "Minimum Monthly Maintenance Needs Allowance (Effective 7-1-26): 2,705.00", and 0.30 × 2,705 = the chart's $811.50 housing allowance. Corroborated; cleared. (The Jan–Jun 2026 minimum is documented as intentionally unmodeled.)
  • Test period 2026-07 — flagged as potentially rejected by the YAML runner; all CI checks pass and the MMMNA assertions can only pass if the July-2026 parameters actually resolved, empirically confirming the runner accepts 2026-07. Cleared (mid-year months are novel in this repo's baseline tree, which otherwise uses YYYY / YYYY-01).

Source Audit Summary

Category Count
Parameter values confirmed correct against primary sources 28 (10 income + 18 resources/CSRA/MMMNA/home-equity; every dollar figure exact, Jan-1 vs Jul-1 effective dates correct)
Verified mismatches 1 (TX MMMNA regime — federal formula vs TX flat $4,066.50; code-path CONFIRMED, informational-only, no eligibility impact)
Cleared by verification 5 (DE CSRA $25,000; 3 WA waiver flags; MMMNA 7/1/26 minimum)
Unmodeled items noted (documented scope, not errors) 7 (DE home-equity cap — escalated to Critical 1; WA couple resources; Jan–Jun 2026 MMMNA minimum; WA MNIL sizes 2+; TX CAS/community pathways and couple deeming; DE 30-day acute-care standard; AK/HI figures)

Validation Summary

Check Result
Regulatory Accuracy ⚠ 1 critical (DE home-equity fail-closed contradicts 42 USC 1396p(f) and DSSM 20320.7); all encoded dollar values and boundary arithmetic verified correct
Reference Quality ✔ All 32 parameters cite correct-jurisdiction primary sources; 31/32 corroborated on first pass, 32/32 after DSSM re-collection; durability/anchor improvements recommended
Code Patterns ✔ 0 critical (no hard-coded values, changelog present, vectorization clean, fail-closed defaults documented); 3 should-address style items; home-equity chassis duplication flagged
Test Coverage ✔ All 6 formula variables tested (35 cases, hand-reverified arithmetic); no non-functional boolean tests; edge-case gaps listed above
Source Value Audit ✔ 28 matches / 1 confirmed mismatch (informational-only) across 5 source documents
CI Status ✔ All CI checks passing

Review Severity: REQUEST_CHANGES

One 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 Steps

To auto-fix issues: /fix-pr 9184


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).

MaxGhenis and others added 3 commits August 19, 2026 11:13
…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>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Thanks @DTrim99 — this is an unusually useful review, and sorry it sat for two weeks. Everything below is now on the branch, after merging main in (459 commits, clean). All 59 LTSS tests plus the full gov/hhs/medicaid tree pass locally.

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 confirmed

DSSM 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:

  • New parameter gov.hhs.medicaid.eligibility.long_term_care.home_equity.minimum_limit (2025: $730,000; 2026: $752,000), cited to 42 USC 1396p(f)(1)(A)/(C) and the May 2025 / April 2026 CIB charts. It pins published values only — no 2027 projection and no uprating block (I tried the sibling agricultural_limit.yaml's CPI-U uprating, but core indexes it monthly past the last explicit value, drifting the cap to $766,000 by mid-2026; the tests caught it) — so it gets extended when CMS releases each year's standards chart. It lives in the existing chassis tree, next to limit.yaml; the parallel financial/*/home_equity/* tree is deleted entirely.
  • TX and DE read minimum_limit (TX's chart line "Substantial home equity — $752,000" is the federal minimum); WA reads the existing tracked limit.yaml, since WAC 182-513-1350(8)(c) says "The excess home equity limit is the federal maximum allowed" — so WA tracks that parameter's future entries automatically, including the H.R.1 §71108 $1,000,000 non-agricultural cap in 2028 (its 2027 entry is a CPI projection — flagged below). That resolves the divergence concern.
  • Zero-equity applicants now pass everywhere: the 1396p(f)(1)(A) bar attaches only to an equity interest exceeding the cap. Unmodeled states pass at or below the federal minimum (no state may bar below it) and fail closed above it. Tests: a DE boundary triple at $752,000, a DE non-homeowner passing the composite end-to-end, and a CA case showing the floor-pass plus composite fail-closed.

Should-address

  1. Home-equity chassis duplication — parameters fully consolidated (see above): the four financial/*/home_equity/* files are gone and the one new federal value extends the existing tree. I kept the separate medicaid_ltss_home_equity_eligible variable rather than reusing is_medicaid_long_term_care_home_equity_eligible: the chassis is YEAR-period with a single national maximum-tier cap ($1,130,000), which is wrong by $378,000 for TX/DE, and it reads a pre-netted home_equity input — while the screen's decomposed inputs mirror DSSM 20320.7.B/.C arithmetic (market value minus encumbrances, co-owner proration) and carry a hardship input the chassis lacks. Your code-pattern auditor's reading (intentionally namespaced trusted inputs) was the design intent. The screen's docstring now cross-references the chassis and documents the agricultural limit as chassis-only. (I first added a reciprocal note on the chassis variable too, but a docstring-only edit drags that file into the selective-coverage report without its tests and trips codecov/project, so the cross-reference lives on the screen side.)

  2. TX MMMNA — fixed with a TX flat-maximum branch. Appendix XXXI and J-7200 confirm your reading (flat $4,066.50, no minimum line, no shelter standard; the J-7200 worked examples subtract the flat figure). On your open question: WA is a formula state, not flat — WAC 182-513-1380(3)(b) routes to the WAC 182-513-1385(3)(a)/(4) calculation (150% of the two-person FPL plus excess shelter above a 30% standard, capped at the maximum). And DE is also a formula state: DSSM 20910.4 ("150% of Federal Poverty Level for two plus an excess shelter allowance," CPI-indexed cap). So the federal formula stays for DE/WA and TX pays the maximum flat, each with the state citation. Two documented limitations: the 1385(3)(b) offset for the community spouse's own income belongs to the allocation, which stays unmodeled; and the whole variable remains unmodeled before July 2026 (that now defers TX's flat maximum too, which is technically effective 1/1/26 — stated in the docstring).

  3. Seven orphan federal parameters — all resolved: ssi_fbr/* and resources/* deleted (canonical values live at gov.ssa.ssi.amount.{individual,couple} and gov.ssa.ssi.eligibility.resources.limit.{individual,couple}), special_income_limit/maximum deleted, home_equity/minimum moved into the existing tree and wired (TX/DE), home_equity/maximum deleted (limit.yaml is canonical). Only consumed parameters remain under financial/federal/.

  4. ABD categorical gate — added. medicaid_ltss_financial_pathway now requires is_ssi_aged_blind_disabled (42 CFR 435.236, 435.1005); non-ABD applicants are UNMODELED. Every pathway-dependent test case supplies the categorical input, and new cases cover a non-ABD applicant failing end-to-end despite qualifying finances.

  5. MMMNA test gaps — all four added: has_community_spouse: false → 0; UNMODELED pathway → 0; interior excess-shelter point ($1,811.50 → $3,705, on WA where the formula now binds); shelter one cent below the threshold ($811.49 → $2,705). The formula boundary triple moved to DE, TX now asserts the flat maximum at three shelter levels, and a mixed TX/DE case exercises the state branch in one vectorized simulation.

  6. Edge-case gaps — added: TX at-cap with encumbrance/share ($1,000,000 − $248,000 = exactly $752,000, then +$1); invalid ownership shares (1.5, −0.5) failing closed; CSRA couple-unit-with-spouse-flag fail-closed; a genuine two-person both-spouses-institutionalized household at the couple boundary; both-sided ±$1 brackets on the CSRA floor and half-snapshot crossovers; WA half-snapshot-equals-state-minimum tie ($145,058 → $72,529); cross-state above-SIL divergence (TX/DE fail, WA flips to medically needy and passes); zero-income eligible; assistance_unit_size: 0 → UNMODELED.

  7. Reference precision — done, with one correction: shelter_threshold_rate now cites 42 USC 1396r-5(d)(4) with the #d_4 anchor; the CIB citations carry the exact subject line ("Updated 2026 SSI and Spousal Impoverishment Standards…") and #page=2; DE titles carry "DMMA Administrative Notice A-14-2025" and the durable DSSM sections (20910.10 on the CSRA minimum, 20100.2.2 on the SIL and resources, 20240.1 + 20990 on the disregard, 20400.11 in the QIT docs); TX titles pin "Revision 26-2, Effective June 1, 2026"; the WA CSRA description notes the (7/1/25) stamp and July odd-year cycle. The correction: the 1/1/2026 WA standards sheet is a 3-page document with the LTSS block on page 3 (#page=7 looks like a stale anchor from a longer prior edition), so those references use #page=3.

  8. Style — the 0.30 → 0.3 fix is in. On the terser-description pattern I went the other direction: several descriptions grew to carry the new section citations and supersession notes from item 7 and the suggestions, which seemed worth more than compression. Happy to terser-ify if you disagree.

Suggestions

Taken: DE CSRA state_minimum now cites DSSM 20910.10 by section title and its description notes the federal floor supersedes the $25,000 state spousal share (the fixed statutory one-half is also now cited as 1396r-5(f)(2)(A) in the CSRA docstring); the WA scope notes are in is_medicaid_ltss_income_eligible (WAC 182-515-1507 CN route unmodeled; the 1395(4)(a) excess-resources term omitted — slightly lenient, resources screened separately; spenddown unmodeled); the nice-to-have tests are in (DE interior partial-disregard bind, WA HCBS MN ±$1 at $994, UNKNOWN setting, unsupported state); the COPES/New Freedom/RSW waiver parameters and the pathway and waiver variables now cite the canonical app.leg.wa.gov WAC, and the SIL parameter cites WAC 182-513-1100; the TX CSRA description uses the chart's own "minimum resource amount set by federal law" wording; the waiver enabled flags are documented as reform-only-reachable.

Declined, with reasons: the broad stock-vs-flow period metadata notes (the field is informational and the un-annualized read is correct; happy to revisit if you feel strongly); the csra_share 0.5 parameter (your review called the literal acceptable — it's the fixed 1396r-5(f)(2)(A) share, now cited in the docstring); and citation titles stop at section/revision granularity rather than naming exact tables and rows.

One thing your review surfaced that's out of scope here: the pre-existing home_equity/limit.yaml and agricultural_limit.yaml 2027 values have no published CMS source — CMS hasn't released 2027 standards — and limit.yaml's April-2026 CIB reference also carries a wrong title and no page anchor. Both are main-side issues, flagged for a separate fix.

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.

@MaxGhenis
MaxGhenis requested a review from DTrim99 August 20, 2026 04:35
@DTrim99

DTrim99 commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

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

Source Used for Verification
CMS CMCS Informational Bulletin, 2026 SSI & Spousal Impoverishment Standards (cib04272026.pdf, chart p.2) Federal CSRA min/max, MMMNA min/max, home equity, 300% SIL Text-extraction audit (pdftoppm unavailable); values confirmed
CMS CMCS Bulletin, 2025 Standards (cib05282025.pdf, p.2) 2025 home-equity floor (730,000) Confirmed
TX MEPD Handbook Appendix XXXI (Rev 26-2, eff 2026-06-01) TX SIL / resources / CSRA / home equity WebFetch-verified
DE DMMA Admin Notice A-14-2025 (2026 SSI-related income standards) DE 250%-SSI income std, $20 disregard, resources Text-verified
WA HCA Apple Health income & resource standards (eff 2026-01-01) + WACs 182-513-1395, 182-515-1505/1508 WA SIL, MNIL, resources, state CSRA, waivers Confirmed

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 Status

Branch is 14 commits behind main (8 ahead). CI is passing (33 checks). Recommend a rebase onto main before merge to keep the merge clean. The review was scoped to PR changes only, so branch staleness did not affect any finding.

Critical (Must Fix)

None. No CRITICAL issues across all five passes. In particular:

  • The value audit found zero mismatches — every federal and state figure matches its authoritative source (see Value Audit below).
  • The one item that could have been critical — whether DE should use 300% of SSI instead of 250% — was investigated specifically and is correct as coded. Delaware genuinely elects a 250%-of-SSI special income limit (250% × 994 = 2,485 individual). The 300% figure is a federal ceiling a state may elect up to; DE elects 250%. Do not "fix" this to 300%.

Should Address

Numbered; each is non-blocking but worth resolving before or shortly after merge.

  1. DE couple special income limit may be too strict — confirm the couple basis. is_medicaid_ltss_income_eligible.py:3036-3068; de/special_income_limit/couple.yaml. The SIL group (42 CFR 435.236 / §1902(a)(10)(A)(ii)(V)) is normally an individual institutionalized-person test — each spouse measured against 250% of the individual SSI standard (2,485 each), not a combined couple cap. The PR tests total AU income against 250% of the couple FBR (3,727.50) when assistance_unit_size == 2, which is more restrictive than testing each spouse at 2,485 (4,970 combined) and can under-grant a genuine two-institutionalized-spouse couple. Same modeling choice as TX (5,964 = 2×individual). Confirm against the DE/TX manuals whether the couple SIL is a true couple standard or shorthand for "each spouse at the individual limit"; if the latter, the couple branch is too strict.

  2. No DE AU=2 + $20-disregard test; document the couple-disregard interaction. is_medicaid_ltss_income_eligible.py:3054-3067. The DE $20 general disregard (DSSM 20240.1 / 20990) is applied to combined income while a couple SIL is used — a defensible simplification that compounds with Basic prototype #1 and is untested for AU=2 (Cases 4/5/6/11 only exercise the AU=1 disregard). Add a couple+disregard test to pin the intended behavior and add a one-line doc note.

  3. No end-to-end community-spouse scenario for DE or WA. is_medicaid_ltss_financial_threshold_eligible.yaml. Only TX runs a community-spouse person through the top-level AND (income + CSRA + home-equity together). DE/WA community spouses are exercised only in the isolated CSRA and MMMNA files. Add one DE and one WA end-to-end case (has_community_spouse: true, snapshot, spouse resources, income at SIL, a home) asserting the final is_medicaid_ltss_financial_threshold_eligible.

  4. DE CSRA federal-floor override is not directly tested. medicaid_ltss_csra_resource_eligible.py. DE's CSRA is max_(de.csra.state_minimum=25_000, federal.csra.minimum=32_532) = 32,532, but every snapshot/floor case (5–11) is TX or WA. If the DE state_minimum were wrong or the max_ inverted, no test would catch it. Add a DE community-spouse case with snapshot/2 below 32,532 (e.g. snapshot 60,000 → half 30,000) asserting the floor at 32,532, mirroring TX Case 5.

  5. MMMNA 2026-07-01 temporal boundary is untested. medicaid_ltss_mmmna has only formula_2026_07_01; every MMMNA test uses period: 2026-07. Add a 2026-01 (or 2026-06) case asserting medicaid_ltss_mmmna: 0 before the effective date — the exact boundary the variable's own docstring calls load-bearing.

  6. Community-spouse resources/shelter are trusted per-person inputs, not couple aggregation (confirm intended scope). medicaid_ltss_csra_resource_eligible.py:3320-3327; medicaid_ltss_mmmna.py:3747. The couple resource total is applicant resources + a trusted per-person spouse input; there is no marital-unit/spouse-lookup aggregation, so the total is only correct when the user hand-supplies the spouse allocation. This is a documented "explicit trusted input" modeling-scope decision — flagging for an explicit reviewer sign-off, not a code defect.

  7. MMMNA is computed but never consumed by any eligibility variable (intentional — note in PR description). medicaid_ltss_mmmna.py. Confirmed unwired into income/CSRA/home-equity/top-level AND. This is correct: MMMNA is a post-eligibility spousal-protection standard (42 USC 1396r-5(d)), not an applicant-eligibility deduction, and the docstring says so. Keep as-is; add a one-line PR-description note so reviewers don't mistake the non-wiring for a bug.

  8. DE regulatory-anchor hrefs don't reach the cited DSSM section (all 6 DE params). de/csra/state_minimum.yaml:24, de/income/general_disregard.yaml:43, de/resources/{individual,couple}.yaml, de/special_income_limit/{individual,couple}.yaml. The DSSM href resolves to the entire ~709 KB Title-16/20000 AdminCode PDF with no section anchor or #page=, so clicking does not land on the cited subsection. The DE value remains traceable via the co-cited DMMA A-14-2025 notice. Point the DSSM href at the per-section HTML (or add #page=), or mark the DSSM entry authority-only. Related: the DE resource params cite "DSSM 20100.2.2 – Individuals Whose Income is 250% of SSI" (an income-group subsection) for a resource limit — cite the DSSM resource-limit subsection instead (citation precision; value corroborated by the DMMA notice).

  9. Stock/annual ceilings tagged period: month (metadata inconsistency). federal/csra/{minimum,maximum}.yaml, {tx,de,wa}/csra/state_minimum.yaml, {tx,de,wa}/resources/{individual,couple}.yaml carry period: month though they are resource stock ceilings, while the new home_equity/minimum_limit.yaml correctly uses period: year for the same class. Does not affect the calculation (consuming MONTH variables read the level as-is, no ÷12), but is semantically inconsistent — align the stock/CSRA params to period: year or confirm the month choice is intentional. Separately, the three WA waivers/*/enabled.yaml bool flags also carry a meaningless period: month — consider dropping it.

Suggestions

  1. WA disabled-waiver (enabled: false) branch is never exercised. The three WA waiver flags are reform levers gated by the pathway formula; all tests use baseline enabled: true, so the disabled branch is reform-only-reachable and untested. Add a one-line reform-style test or note that flipping a waiver flag has no regression test.

  2. Home-equity edge cases untested. (a) Exception × invalid ownership share: a qualifying exception with ownership_share: 1.5 still fails closed (valid_ownership_share & (exception | equity<=limit)) — Case 10 tests invalid share without an exception. (b) Encumbrances-exceed-value negative-equity floor: no case has encumbrances > home_market_value to lock in the max_(value − encumbrances, 0) floor. Add one vectorized case each.

  3. Two parallel home-equity variables — confirm intended architecture. The new medicaid_ltss_home_equity_eligible (MONTH, trusted explicit inputs) is genuinely distinct from the pre-existing is_medicaid_long_term_care_home_equity_eligible (YEAR, derived home_equity), and the docstring calls out the distinction. Not a duplicate, but a reviewer should confirm two parallel variables is intended rather than extending the existing one.

  4. Microsim inertness of trusted inputs (report, not prescribe). qit_adjusted_income, cost_of_care, community-spouse resources, home_market_value, medically_needy_expenses, and the occupancy booleans all default to 0/False with no formula. Over survey microdata they default to 0/False, so the whole screen is effectively inert (income-eligible at 0 income, home-equity passes at 0 equity) unless a caller supplies inputs — consistent with the "opt-in screen" framing and it does not set actual eligibility. Direction is fail-toward-nonbinding on assets/equity and toward income-eligible; noting the direction only.

  5. is_ssi_aged_blind_disabled is YEAR, read via period.this_year from MONTH formulas (correct). medicaid_ltss_financial_pathway.py:3388. Correct period pattern; consequence is ABD status can't vary within a year on the monthly screen. Acceptable; worth a one-line doc note.

  6. WA institutional medically-needy test omits the excess-resources term (documented, only-lenient standalone). is_medicaid_ltss_income_eligible.py:3074-3076. WAC 182-513-1395(4)(a) reduces the payment standard by excess resources; the PR screens income-only and gates resources separately in the top-level AND, so the composite is not actually lenient. Clarify the doc's "slightly lenient" caveat refers to the standalone variable, not the composite.

  7. Optional citation polish. Add 42 USC 1396r-5(f)(2)/(d)(3) as a secondary "governing statute" cite on the federal CSRA/MMMNA numeric params (mirroring the exemplary home-equity param, which pairs statute + annual figure). The TX MEPD App XXXI href (HTML, chart is the whole page) has no in-page anchor — low severity.

Value Audit

Every federal and state figure was confirmed against its authoritative source — 0 mismatches.

Figure PR value Source Result
Federal CSRA minimum 32,532 CMS CIB 2026 p.2 ✓
Federal CSRA maximum 162,660 CMS CIB 2026 p.2 ✓
Federal MMMNA minimum 2,705 (eff 2026-07-01) CMS CIB 2026 p.2 ✓
Federal MMMNA maximum 4,066.50 CMS CIB 2026 p.2 ✓
Home equity floor 730,000 (2025) / 752,000 (2026) CMS CIB 2025 / 2026 p.2 ✓ (some 3rd-party sites say 731,000 for 2025; CMS says 730,000 — PR correct)
Home equity WA cap (pre-existing home_equity/limit.yaml) 1,130,000 (2026) CMS CIB 2026 p.2 ✓ (param exists in repo, matches WA test boundary)
Federal SIL (individual, 300% SSI) 2,982 CMS CIB 2026 ✓
TX SIL ind / couple 2,982 / 5,964 TX MEPD App XXXI ✓
TX resources / CSRA 2,000 / 3,000; 32,532 / 162,660 TX MEPD App XXXI ✓
DE SIL ind / couple (250% SSI) 2,485 / 3,727.50 DE DMMA A-14-2025 ✓ 250% is correct, not 300%
DE $20 disregard; resources 20; 2,000 / 3,000 DE DMMA A-14-2025 ✓
WA SIL ind 2,982 WA HCA 2026 ✓
WA medically-needy income level (MNIL) 994 WA HCA 2026 / WAC 182-513-1395 ✓
WA state CSRA min; resources ind 72,529; 2,000 WA HCA 2026 ✓
Shelter threshold rate 0.30 42 USC 1396r-5(d)(4); % of MMMNA per CIB ✓

Reference quality: 24/24 parameters carry a proper title/href reference dict; jurisdiction is correct throughout (federal CIB for federal values, state agency for state values); CMS/WA PDF refs carry #page= chart anchors; WA WAC sections verified against leg.wa.gov. Only gap is the DE DSSM anchor precision (Should #8).

Validation Summary

Pass Result
Regulatory (LTSS logic: pathway / CSRA / home-equity / MMMNA / income-cap vs medically-needy) Sound within documented simplifications; 0 critical; DE 250% confirmed correct
References 24/24 have proper refs, correct jurisdiction, page anchors; DE DSSM anchor precision (Should #8)
Code patterns 0 critical; no hardcoded values, complete enum coverage with UNMODELED fail-closed, correct changelog/reference format
Test coverage 0 critical; ~61 scenarios, all 4 risky calculators boundary-tested; gaps are community-spouse end-to-end (DE/WA), DE CSRA floor, MMMNA temporal boundary, disabled-waiver branch
Value audit 0 mismatches across all federal + TX/DE/WA figures
CI Passing (33 checks)

Review Severity: APPROVE

No 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 main and adding a PR-description note that MMMNA is post-eligibility/informational-only.

Reviewed with Claude Code assistance.

@PavelMakarchuk PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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 to UNMODELED, and is_medicaid_ltss_financial_threshold_eligible
    is false for 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 at formula_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 entry 2026-07-01: 2_705, with no
    2025-07-01 predecessor.
  • .../financial/federal/mmmna/shelter_threshold_rate.yaml:3 — sole entry 2026-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:

  1. 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"). Because system.py:116 calls
    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.
  2. shelter_threshold_rate is 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:

  1. 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 composite false with 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.
  2. Delaware CSRA is a completely empty cell. medicaid_ltss_csra_resource_eligible.py:62 computes
    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 the max_() with a bare p.de.csra.state_minimum
    and every test passes while every DE couple in the floor regime gets a CSRA $7,532 too low.
  3. 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. Replace max_(p.wa.csra.state_minimum, p.federal.csra.minimum) with
    p.federal.csra.minimum and all tests pass while WA — the state with by far the highest floor —
    silently loses ~$40k of spousal protection.
  4. The MMMNA federal maximum never binds. In medicaid_ltss_mmmna.yaml case 2 the shelter figure
    of 2,173 yields 2,705 + (2,173 − 811.50) = exactly 4,066.50. The cap is touched, never exceeded,
    so min_(..., p.federal.mmmna.maximum) can be deleted and the MMMNA grows without limit. (TX is
    flat-at-maximum and cannot cover this.)
  5. Both effective-date boundaries are unpinned. All 59 cases run at period: 2026-07. Renaming any
    formula_2026_01_01 → formula makes all six screens produce 2026-valued determinations from 2015
    onward — phantom eligibility before the program was modeled — and nothing catches it, because
    backdate_parameters makes every 2026 value resolvable back to 2015. Renaming
    formula_2026_07_01 → formula_2026_01_01 triggers 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:

  1. DE DMMA PDF href has no #page= — affects de/income/general_disregard,
    de/resources/{individual,couple}, de/special_income_limit/{individual,couple}, plus variables
    is_medicaid_ltss_income_eligible and medicaid_ltss_needs_based_income. Verified: the PDF is 2
    pages and every cited figure is on file page 1. Add #page=1.
  2. 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.gov serves a JavaScript shell to automated clients; worth a human check.
  3. 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"
    ).
  4. wa/resources/individual cites 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.
  5. 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=2 carries "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.
  6. All five TX parameters rest on a single mutable "current revision" page.
    fhb.hhs.texas.gov/handbooks/.../appendix-xxxi-budget-reference-chart serves 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 the 2026-01-01 dating 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 let max_ fall through, or set it to 0 with 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 value 72_529 is keyed 2026-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), but 2025-07-01 is 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) and de/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

  1. 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).
  2. add(...) > 0 over manual OR chains. medicaid_ltss_home_equity_eligible.py:45-59 ORs four
    person-level booleans; medicaid_ltss_csra_resource_eligible.py:76-79 hand-sums two same-entity
    variables.
  3. Enum default members are placed first. MedicaidLTSSFinancialPathway.UNMODELED
    (medicaid_ltss_financial_pathway.py:5) and MedicaidLTSSSetting.UNKNOWN
    (medicaid_ltss_setting.py:5); convention is NONE/default last. (MedicaidLTSSWaiver splits the
    difference.)
  4. 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 than person1/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
    carries absolute_error_margin: 0.01 where it is needed for a currency assertion in the same case
    but sits alongside boolean-only outputs elsewhere.
  5. The three WA waiver toggles have no false branch under test. All ship
    2026-01-01: true, and medicaid_ltss_financial_pathway.py:24-26 notes the disabled branch is
    reform-only-reachable. A YAML case with a reforms: block flipping one would genuinely cover
    medicaid_ltss_financial_pathway.py:51-55.
  6. Dead defensive code. min_(needs_based_income, income) in is_medicaid_ltss_income_eligible.py
    is untestable — the following max_(income − needs_based_income, 0) already floors the result, so
    no input distinguishes the clamped from the unclamped version.
  7. Additional edge cases worth pinning (all with worked inputs in the tests report): assistance-unit
    size 3+ and negative; ownership share exactly 0 with 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 have ownership_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.
  8. home_equity/minimum_limit's 2025 value (730_000) is currently untestable, not merely untested:
    its only consumer has formula_2026_01_01. Either drop the 2025 entry or fold it into the pre-2026
    fail-closed case from A2 item 5.
  9. 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=2 publishes MMMNA 3,381.25 (AK) / 3,111.25 (HI). gov/hhs/fpg.yaml already carries
    CONTIGUOUS_US / AK / HI keys. No impact today — TX/DE/WA are all contiguous.
  10. 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.
  11. Cross-reference medicaid_ltss_setting to the existing is_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 populated is_in_medicaid_facility
    gets a false screen with no indication why.
  12. 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_size cites 42
    CFR 435.601, which governs financial methodologies, not unit composition — consider 435.602/.603
    or 42 USC 1396r-5(b).
  13. Cross-file citation drift on the same CIB. Pre-existing home_equity/limit.yaml cites CIB
    04/27/2026 as .../federal-policy-guidance/downloads/cib04272026.pdf with no page anchor and a
    title that does not match the document's SUBJECT line; the new minimum_limit.yaml cites it as
    .../sites/default/files/2026-04/cib04272026.pdf#page=2 with the correct title. The new file is
    right
    — align the older one while A7 requires touching it anyway.
  14. 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 takes federal/mmmna/maximum from the
    CIB and is correct; flagged only so a future editor does not "fix" it to match the TX wording.
  15. medicaid_ltss_mmmna has 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.yaml cases 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 keyed 2026-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 them 2026-01-01 is 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=2 heads 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 for mmmna/minimum, 2026-01-01 for everything
    else) matches. The 2026-07-01 stamps 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-75 computes min(max(half, floor), maximum) where 42 USC 1396r-5(f)(2)(A) says max(floor, min(half, maximum)). These are equal for
    every input provided floor ≤ maximum
    , which lines 62-64 guarantee via max_(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-88 is a
    select whose non-default arms require state ∈ {TX, DE} or state == WA; everything else falls to
    default=UNMODELED. Three screens independently re-gate on pathway != UNMODELED, so the
    composite cannot return true for an unmodeled state even if one leg were bypassed.
  • ABD categorical gate — medicaid_ltss_financial_pathway.py:48 gates 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_resources is 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):

  1. A3 — add the programs.yaml entry (state_implementations: [TX, DE, WA] under id: medicaid,
    status: partial), or record an explicit decision to defer it.
  2. A1 — fix the MMMNA effective-date complex as one change: add 2025-07-01: 2_643.75 to
    federal/mmmna/minimum.yaml with its CIB 05/28/2025 reference, re-date shelter_threshold_rate
    away from 2026-07-01, and either move medicaid_ltss_mmmna to formula_2026_01_01 or 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.
  3. 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.
  4. 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.
  5. A9 — apply the six citation fixes; each has a verified replacement with a page number.

Before or shortly after merge:

  1. A5, A6 — gate medicaid_ltss_home_equity_eligible on pathway != UNMODELED, and state the
    assistance-unit input contract explicitly in the three affected input docstrings (resolving the
    contradiction with medicaid_ltss_qit_adjusted_income's "ownership allocation" wording).
  2. A7, A10, A11 — add the CPI uprating block to minimum_limit.yaml; correct period: metadata
    on the 12 files; resolve tx/csra/state_minimum's federal duplicate and wa/csra/state_minimum's
    date.
  3. A8 — add the Delaware hospital carve-out to the limitations documentation.

Follow-up issue (out of this PR's scope):

  1. A4 — the pre-existing is_medicaid_long_term_care_home_equity_eligible applies the federal
    maximum to every state, including TX and DE, and it is wired into
    is_medicaid_long_term_care_eligible and 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.

@DTrim99

DTrim99 commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

PR #9184 review — Medicaid LTSS financial-eligibility screen (federal 2026 chassis + TX / DE / WA)

Program review

This PR adds a new, opt-in Medicaid long-term-services-and-supports (LTSS)
financial-eligibility screen
: 25 new variables under
variables/gov/hhs/medicaid/eligibility/long_term_care/financial/, plus supporting federal
and state parameters and 6 YAML test files. It implements the 2026 federal spousal-impoverishment
chassis (CSRA, MMMNA, home-equity limits under 42 USC 1396r-5 / 1396p(f)) and three state
pathways — Texas (HHSC MEPD), Delaware (DMMA/DSSM) and Washington (HCA / WAC 182-513/515).

Key structural facts confirmed across the code, regulatory and reference reviews:

  • Genuinely standalone. The screen is not wired into medicaid, is_medicaid_eligible,
    any household_net_income* path, or household_health_benefits. A grep over the whole
    variables/ tree finds no reference to any screen variable outside the
    long_term_care/financial/ folder. It cannot silently move microsim Medicaid results.
  • No duplicated computed eligibility. SSI aged/blind/disabled status reuses the existing
    is_ssi_aged_blind_disabled; the MONTH-period 1396p(f) home-equity screen is deliberately
    distinct from (and documented against) the pre-existing annual home-equity chassis.
  • UNMODELED fails closed. medicaid_ltss_financial_pathway defaults to UNMODELED; the
    top-level screen ANDs pathway != UNMODELED, and every sub-screen independently gates or
    returns False, so no false positives arise for unsupported state/setting/waiver combinations.

The 25 variables correctly implement the LTSS financial-eligibility law they claim to model. No
critical correctness, reference, or coverage defect was found across any of the seven reviews.

Source documents

  • Federal — CMCS Informational Bulletin, April 27, 2026, "Updated 2026 SSI and Spousal
    Impoverishment Standards" (cib04272026.pdf, standards chart on file page 2).
  • Texas — HHSC MEPD Handbook, Appendix XXXI Budget Reference Chart, Revision 26-2,
    effective June 1, 2026.
  • Delaware — DMMA Administrative Notice A-14-2025, "2026 SSI-Related Income Standards and
    Medicare Premiums" (Nov 20, 2025); DSSM sections 20100/20240/20910/20990 (combined
    title-16/20000 regulations PDF).
  • Washington — HCA Apple Health Income and Resource Standards, effective January 1, 2026;
    WAC 182-513-1395, 182-515-1505/1508.

All live-link checks passed (the CMS URL returned a bot-block 403 to the automated fetcher but is
confirmed live via the reviewer's downloaded copy with matching content).

Branch status

The PR branch is 76 commits behind main. This is a branch-freshness note only, not a review
finding — CI is green and no merge conflict is implied. A rebase/merge from main before merge is
advisable as routine hygiene.

Critical

None.

Explicitly checked and cleared: not wired into real Medicaid / net income / health benefits; no
duplicated computed eligibility variable; UNMODELED fails closed; every federal, TX, DE and WA
dollar figure matches its official 2026 source exactly (see Value Audit Summary); every computed
screen has direct unit coverage with below/at/above boundary triples; no hard-coded policy values
in formulas; correct enums, state gating, entity levels, periods, and changelog type (.added).

Should address

1. 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;
half-above-cap → cap governs — are the riskiest math in the PR, yet all three are proven in TX
only
(csra_resource Cases 5/6/7). The other two states' floor-selection is not exercised in its
binding direction:

  • WA state floor (72,529) is tested only at a half == 72,529 tie (Case 11, snapshot 145,058).
    There is no case where half < 72,529 so the WA floor actually binds. A regression that dropped
    max_(…, state_csra_minimum) for WA, or substituted the federal 32,532, would not be caught.
    Add a WA case with half-of-snapshot below 72,529 and community-spouse resources between half and
    72,529 (should PASS).
  • DE spousal CSRA — where the federal 32,532 governs over DE's 25,000 state share via
    max_(p.de.csra.state_minimum, p.federal.csra.minimum) — is never exercised. All DE
    csra_resource cases leave has_community_spouse unset and hit the no-community-spouse branch. Add
    one DE case with a community spouse and half-of-snapshot below 32,532 to confirm the federal
    minimum governs.

Consequence: because floor/half/cap are each proven in exactly one state and the WA/DE floor
selection is never exercised in its binding direction, a state-row bug in the state_csra_minimum
select (e.g. swapping DE/WA rows) could pass CI. This is a coverage gap, not a live defect — the
formula itself is verified correct by hand — but it leaves the most complex logic under-guarded.

2. MMMNA is computed but consumed by nothing, and lacks the sibling default_value = 0

medicaid_ltss_mmmna (and its only input medicaid_ltss_community_spouse_shelter_expenses) feeds
no eligibility variable. The docstring states this is intentional — it is a post-eligibility spousal
protection standard reported for reference, not an applicant income deduction — so it is a
deliberate standalone figure, not dead code. Flagging because a computed variable that feeds nothing
is easily mistaken for an orphan; a one-line PR-description note would prevent confusion.
Separately, medicaid_ltss_mmmna has no default_value while every sibling float variable sets
default_value = 0; add it for consistency and to make the pre-July-2026 behavior explicit
(behavior is already 0).

3. MMMNA effective-date boundary (pre-2026-07-01) is untested

medicaid_ltss_mmmna is defined formula_2026_07_01 (the federal MMMNA minimum is a July-1 figure,
and this design also defers the TX flat maximum to July). Every MMMNA test runs at period: 2026-07,
so the correct-value side is covered, but there is no pre-July case (e.g. 2026-01) asserting the
UNMODELED/0 behavior the documentation calls out as load-bearing. Add one pre-July case to lock the
effective-date boundary. No eligibility impact (MMMNA is post-eligibility).

4. DE parameter references do not deep-link to the cited DSSM subsection

All five DE parameter files (de/csra/state_minimum, de/income/general_disregard,
de/resources/{individual,couple}, de/special_income_limit/{individual,couple}) point every DSSM
section title at the same single href — a 709 KB PDF export of the entire title-16 / 20000
series with no subsection anchor. The link therefore only weakly corroborates the section citation.
Mitigant: the DE values are fully corroborated by the DMMA A-14-2025 notice (a direct,
value-containing source that is the first reference on the income/resource/SIL files). Recommend a
subsection anchor if the portal supports one, or a note that the href is the combined title export.

5. Resource / CSRA parameters carry period: month for what sources present as fixed thresholds

The CSRA and resource parameters (e.g. federal/csra/minimum 32,532, federal/csra/maximum
162,660, the TX/DE/WA resources/* and csra/state_minimum files) are asset (resource) standards,
yet the YAML stamps period: month; the federal home_equity/minimum_limit correctly uses
period: year. This does not affect corroboration (values match the source) or any tested behavior,
but the label is inconsistent with how the sources state these standards. Flag for the metadata
reviewer to confirm intended semantics.

6. State resource / SIL limits hardcode dated dollars instead of deriving from the SSI tree

The SSI resource standards (gov.ssa.ssi.eligibility.resources.limit.*) and FBR
(gov.ssa.ssi.amount.individual, with uprating) already exist and uprate automatically. This PR
instead hardcodes new dated leaves equal to them (TX/DE/WA resources/* = 2,000/3,000) and encodes
the SILs as static dollars (TX 2,982 = 300%×994, DE 2,485 = 250%×994) rather than a rate × FBR.
Not a 2026 correctness bug — the values are source-confirmed and state-plan standards are legally
state-adopted amounts — but when the 2027 COLA lands, the SSI params uprate while these leaves keep
the 2026 figures until hand-edited (year-rollover drift risk). Consider deriving the SIL as a rate ×
the existing FBR, or add uprating/a pinning test for the 300%/250%-of-FBR relationship.

Suggestions

  • WA special-income branch has no explicit state guard — safe today (only reachable when
    pathway == SPECIAL_INCOME, which is assigned only to covered states), but the coupling is
    load-bearing on the pathway gate; make it explicit in a comment or an invariant test.
  • Home-equity YEAR param in a MONTH formula is correct — equity is a stock compared to a stock
    cap (no ÷12); add a one-line comment so a future reader does not "fix" the non-bug.
  • Home-equity statutory exceptions gated behind the ownership-share validity check — an invalid
    home_ownership_share overrides a genuine resident-spouse/child exception (statutorily
    unconditional under 42 USC 1396p(f)(2)). Fail-closed direction is conservative and inputs are
    trusted; consider letting the exceptions bypass the validity check.
  • CSRA "greater of" omits the fair-hearing / court-order prongs — documented as out of scope;
    confirming the omission is intentional and disclosed. No change needed.
  • WA home-equity test hardcodes a pre-existing param's value — Case 2 asserts the WA boundary at
    1,130,000, a value from the pre-existing home_equity.limit, not added in this PR. If that param
    changes, the test silently encodes today's value; consider a paired WA-vs-federal-min divergence
    case instead of a hardcoded cap number.
  • Minor param-description / enum-ordering nits — a couple of two-clause parameter descriptions
    (DE/WA csra/state_minimum) push documentation-grade detail into the one-line description; the two
    enums order NONE/UNKNOWN differently. Cosmetic.
  • Federal CIB href differs across files — the new params use .../2026-04/cib04272026.pdf#page=2
    while the pre-existing home_equity/limit cites .../downloads/cib04272026.pdf; consider
    standardizing on one canonical URL.
  • Additional test hardening (all optional): a positive size-2 institutionalized-couple CSRA case
    (mutual exclusion of couple-limit vs CSRA allowance currently rests on the fail-closed Case 8); a
    DE couple case that exercises the $20 disregard; a non-TX home-equity exception case.

Value audit summary

Zero mismatches across all three audits (federal 6/6, TX+DE 11/11, WA 5/5 numeric + waivers).

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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Fix minor nits, then ready

MaxGhenis and others added 3 commits September 25, 2026 10:49
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>
MaxGhenis and others added 10 commits October 6, 2026 10:43
- 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>
This was referenced Oct 9, 2026
@DTrim99

DTrim99 commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator

PR Review (round 2): Add Medicaid LTSS financial eligibility screen (TX, DE, WA)

Summary

Round 1 reviewed head 7cee6cd97e. This round reviews head b2e25f3265. Since round 1 the PR has roughly doubled: it went from 56 files (+3,557 lines) to 122 files (+10,203 lines), with 79 variables, 22 parameter files, 8 YAML test files and a new invariant-test module. Most of the growth comes from replacing trusted caller inputs with leaf facts:

  • gross income defaults from the SSI income sources;
  • ordered Delaware exclusions, including impairment-related work expenses (IRWE) derived from payment facts;
  • a derived Delaware budgeting unit with the post-six-month election;
  • Washington source exclusions and dated spousal-resource regimes;
  • a Texas qualified income trust (QIT) opening-month rule;
  • Delaware community-spouse resources taken from the marital unit.

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:

  • Moving income exclusions into the model left out the Texas interest and dividend exclusion.
  • Three new formulas hard-code policy values.

The screen is still standalone. No formula outside long_term_care/financial/ reads it, so existing outputs do not move.

Path prefixes: V/ = policyengine_us/variables/gov/hhs/medicaid/eligibility/long_term_care/financial/, P/ = the matching parameters/.../financial/ folder, T/ = the matching tests/policy/baseline/.../financial/ folder. "Pinned DSSM" means the 73-page DSSM 20000 export https://regulations.delaware.gov/api/AdminCode/title16/20000/61c317a6-5b56-4745-83ff-60107295dd03.

Round-1 items

From the 2026-08-20 review (9 should, 7 suggestions):

# Round-1 item Status Evidence at head
S1 Couple SIL basis (couple standard vs 2× individual) Addressed DE: DSSM 20810 (pinned #page=67) applies couple standards to same-facility couples; V/medicaid_ltss_assistance_unit_size.py derives the unit. TX: 1 TAC 358.433, "twice the special income limit for an individual". The TX "ineligible as a couple" fallback is a new finding (Should 2).
S2 DE AU=2 + $20 disregard test Addressed T/is_medicaid_ltss_income_eligible.yaml Case 4 ($3,727 / $3,727.50 / $3,728) and Case 5 ($3,747 / $3,747.50 / $3,748).
S3 DE/WA end-to-end community-spouse case Addressed T/is_medicaid_ltss_financial_threshold_eligible.yaml Case 8 (DE) and Cases 9, 11 and 12 (WA; ±$1 at $72,529, re-entry, 2003 onsets).
S4 DE CSRA federal-floor override untested Addressed T/medicaid_ltss_csra_resource_eligible.yaml Cases 13–15 (floor, half, cap).
S5 MMMNA 2026-07-01 boundary untested Addressed (behavior changed) January–June 2026 now use the 7-1-25 standards (P/federal/mmmna/minimum.yaml 2,643.75; WA 2,644 / 794). T/medicaid_ltss_mmmna.yaml Cases 8 and 9; composite Case 10 covers 2025-12.
S6 Community-spouse resources were trusted per-person inputs Partially addressed DE now derives them from the marital unit. TX/WA still read a separate input (default 0): Should 3.
S7 MMMNA not consumed; say so Addressed V/medicaid_ltss_mmmna.py:21-25, plus the PR body.
S8 DE DSSM hrefs lacked anchors; resource params cited an income section Addressed Every DE parameter now anchors to the pinned DSSM at the right page. The DE resource leaves were removed in favor of the SSI tree. New residue in variable references: Should 4.
S9 Stock/CSRA params tagged period: month Addressed Federal, DE and WA CSRA, WA resources and the waiver flags are period: year. Flow standards stay month.
G1 WA disabled-waiver branch untested Addressed T/medicaid_ltss_financial_pathway.yaml Case 15 (copes.enabled: false).
G2 Home-equity exception × invalid share; negative-equity floor Addressed V/medicaid_ltss_home_equity_eligible.py:80-99; equity Cases 12 and 13.
G3 Two parallel home-equity variables Addressed (documented) Docstring at :28-33; follow-up issue #9895.
G4 Microsim inertness Re-quantified Still zero for every record by construction. See Verified correct.
G5 ABD read via period.this_year Addressed V/medicaid_ltss_financial_pathway.py:28-29.
G6 WA medically needy "slightly lenient" caveat Addressed V/is_medicaid_ltss_income_eligible.py:18-22.
G7 1396r-5 cites; TX App XXXI anchor Addressed Federal CSRA/MMMNA params pair the CIB with 1396r-5(f)(2), (d)(3) and (d)(4). TX cites use mepd-26-2.pdf#page=465.

From the 2026-09-01 review, items not already covered above:

Item Status
Derive SIL and resources from the SSI tree Addressed. SIL = rate × gov.ssa.ssi.amount; resources read gov.ssa.ssi.eligibility.resources.limit; WA MNIL is uprated by the FBR. Residue: the DE income disregards duplicate the SSI exclusions (Suggestion 1).
WA SPECIAL_INCOME state guard; YEAR equity param comment; exceptions bypass share validity; fair-hearing prongs disclosed; WA equity test no longer hard-codes $1,130,000; positive size-2 CSRA, DE couple $20 and non-TX equity exception cases Addressed
Enum ordering Addressed (defaults are listed last)
Parameter description nits Open and grown: about 10 new non-template descriptions (Should 6)
Canonical CIB URL Open. The author deferred it as cosmetic; this is accepted.

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.

  • Code:
    • V/medicaid_ltss_gross_unearned_income.py:26 defaults gross unearned income to ssi_unearned_income / 12. Its sources include dividend_income and interest_income (parameters/gov/ssa/ssi/income/sources/unearned.yaml:19-20).
    • The only interest/dividend exclusion is Washington's (V/medicaid_ltss_wa_excluded_income.py:45-54).
    • For Texas, V/medicaid_ltss_individual_countable_income.py:72 returns max_(gross - washington_excluded, 0), where the Washington exclusion is 0, and V/medicaid_ltss_couple_countable_income.py:63 returns earned + unearned.
    • The reported-gross path doesn't avoid this, because medicaid_ltss_reported_gross_unearned_income is defined "before Medicaid LTSS income exclusions".
  • Law: MEPD E-3331.1, Rev. 09-4 (E-3300): "Do not count the interest or dividends as income in the eligibility budget regardless of the amount or frequency. Count the interest or dividends as income in the co-payment budget." E-3331.2 also excludes interest on certain excluded resources from both budgets. The SSI basis is 20 CFR 416.1124(c)(22).
  • Impact (hand-traced):
    • A Texas nursing-facility applicant has a $34,200/yr pension ($2,850/mo) and $2,400/yr of CD interest ($200/mo). The model counts $3,050, which is above the $2,982 SIL (3 × $994), so is_medicaid_ltss_income_eligible and the composite are false.
    • Under E-3331.1 the eligibility budget is $2,850 ≤ $2,982, so the applicant passes.
    • The same facts pass in Washington under WAC 182-513-1340(1)(bb).
  • Why this is new: In round 1, income was a caller-adjusted input. Commit ed2dbeec3b moved exclusions into the model and added Washington's exclusion but not Texas's.
  • Fix:
    • Subtract medicaid_ltss_interest_income and medicaid_ltss_dividend_income for Texas before the SIL comparison, in both the individual and the couple budget. If you want E-3331.3 coverage, add a leaf for interest on "all other resources", which stays countable.
    • Add TX YAML cases: $2,850 pension plus $200 interest passes; a $3,050 pension fails.
    • Disclose the other unmodeled E-series exempt-income categories in one line, as the PR does for Washington.
    • Queue a pe-parity issue for E-3331.

2. Policy values are hard-coded in formulas.

  • Values:
    • V/medicaid_ltss_excluded_impairment_related_work_expenses.py:31: person("age", period.this_year) < 65. This is the 20 CFR 416.1112(c)(6) condition, "if you are disabled (but not blind) and under age 65" (Cornell). The model already has gov.ssa.ssi.eligibility.aged_threshold (65 since 1975).
    • V/medicaid_ltss_assistance_unit_size.py:94: months_together < 6. This is DSSM 20810 (pinned #page=67): "After a husband and wife have resided in the same facility for 6 months they have the option of being budgeted as a couple or as two individuals."
    • V/medicaid_ltss_impairment_related_work_expenses.py:49 (range(12)) and :77 (net_payment / 12). This is the 20 CFR 416.976(e)(2) allocation period, "allocate the amount over a 12 consecutive month period beginning with the month of payment" (Cornell). It is a policy length, not months per year.
    • V/medicaid_ltss_csra.py:67 (onset < 198910, onset < 200308) and V/medicaid_ltss_csra_resource_eligible.py:119 (onset < 198910). These are the WAC 182-513-1355 regime dates: (2)(a) "Before October 1, 1989"; (3)(b) "on or after August 1, 2003". The values are correct; they just belong in parameters. The WA onset defaults 2003 / 8 (V/wa_medicaid_ltss_most_recent_institutionalization_start_year.py:9, ..._start_month.py:9) encode the same boundary.
  • Fix:
    • Read gov.ssa.ssi.eligibility.aged_threshold for the age test.
    • Add P/de/assistance_unit/same_facility_election_months.yaml (6; DSSM 20810).
    • Add an IRWE allocation-months parameter (12; 416.976(e)(2)) and use it for both the loop bound and the divisor.
    • Add the two WA regime-start parameters cited to 1355(2)–(3), read them in both formulas, and tie or document the onset defaults.
    • No YAML expectation changes.

Should address

Texas

1. An unverified opening-month partial QIT deposit is still excluded, so the screen can pass a trust that F-6820 treats as invalid.

  • Code:
    • V/tx_medicaid_ltss_qit_opening_month_exclusion_applies.py:64-70 uses verified only to gate the whole-source extension.
    • V/medicaid_ltss_qit_adjusted_unearned_income.py:26-29, 45 (and the earned twin) still subtracts the partial deposit.
    • T/is_medicaid_ltss_income_eligible.yaml (case at l.1232, output [3500, …]) pins the unverified person at $4,000 − $500.
  • Law: F-6820 (F-6800): "If only a partial deposit is made in the initial month, prior to certification, staff must verify that the entire amount of the income source(s) for which the QIT is established is being deposited into the QIT account subsequent month or the QIT is considered invalidated."
  • Impact: A $3,400 covered pension with $500 deposited and verification false counts $2,900 ≤ $2,982, so income and the composite pass. Under F-6820 the trust is invalid (or certification is pending), and $3,400 > $2,982.
  • Parity: rulespec-us#1569 gives the opposite answer for this exact row: "Do not apply whole-source opening exclusion; trust validity/certification prerequisite is unsatisfied. Do not assert financial eligibility."
  • Fix: Pick one, then update the unverified expectation, add a case where income minus the deposit is ≤ SIL, and align Missing MD AGI subtraction for social security benefits #1569.
    • Treat the unverified partial opening deposit as invalid, and count the covered income including the deposit.
    • Or state in the deposit and verification docs that callers must report zero valid deposits when verification fails.

2. The Texas couple budget has no G-6120 "ineligible as a couple" fallback, and the input docs tell callers to use 2.

  • Code:
    • V/medicaid_ltss_non_delaware_assistance_unit_size.py:11-14 and V/medicaid_ltss_assistance_unit_size.py:28-32 say "use two … including Texas spouses in the same institutional setting".
    • :97-100 passes the input through with no individual re-test. Delaware has one at :62-90.
  • Law: G-6120, Rev. 18-3 (G-6100): "Prepare two individuals budgets when a married couple resides in different institutional settings; or is ineligible as a couple."
  • Impact: Same-facility TX spouses have $5,000 and $1,500. The couple budget gives $6,500 > $5,964, so both fail. Individually, the $1,500 spouse passes at ≤ $2,982.
  • Parity: rulespec-us#1568 quotes the fallback, but its companion row "increasing either spouse by $1 fails" contradicts it.
  • Fix: Pick one, then add a test and correct Missing MD AGI subtraction for pension benefits #1568.
    • Derive the TX unit: couple budget first, two individual budgets when the couple fails.
    • Or reword both docstrings to tell callers to re-test individually when the couple budget fails.

Texas and Washington

3. Community-spouse resources ignore the spouse's own inventory outside Delaware (round-1 S6, still open for TX/WA).

  • Code: V/medicaid_ltss_community_spouse_countable_resources.py:30-45 derives the spouse total from the marital unit only for DE. TX and WA read medicaid_ltss_non_delaware_community_spouse_countable_resources (default 0).
  • PR body: "Each person supplies … their own comprehensive countable-resource inventory; the model computes income exclusions, couple totals and Delaware budgeting units."
  • Law: 42 USC 1396r-5(c)(2)(A): "all the resources held by either the institutionalized spouse, community spouse, or both, shall be considered to be available to the institutionalized spouse".
  • Impact: A TX applicant holds $2,000; the spouse in the same marital unit has $400,000 in her own medicaid_ltss_individual_countable_resources; the snapshot is $100,000, so the SPRA is $50,000. The model tests $2,000 + $0 ≤ $52,000 and passes. The law gives $402,000 > $52,000, a fail.
  • Fix: Outside DE, use the spouse's inventory when the spouse is in the marital unit, and keep the separate input only for spouses outside the simulation. Otherwise, narrow the PR-body "couple totals" claim and add a TX same-marital-unit test that pins the documented behavior.

Delaware

4. Some Delaware references cite a superseded export or the wrong page, and the PR body misattributes the IRWE step.

  • (a) Superseded export: Four IRWE references cite the older DSSM 20000 export …/13aee487-1cd1-4726-addf-63603af28a78#page=6, whose latest amendment is 28 DE Reg. 545 (01/01/25):

    • V/medicaid_ltss_individual_countable_income.py:28
    • V/medicaid_ltss_couple_countable_income.py:27
    • V/medicaid_ltss_impairment_related_work_expenses.py:31
    • V/medicaid_ltss_excluded_impairment_related_work_expenses.py:23

    Every other DE cite uses the pinned export (amended through 29 DE Reg. 608, 01/01/26), where 20200.2 "(f) Impairment-related work expenses" is on #page=5.

  • (b) Wrong page: Four gross-income references cite pinned #page=5:

    • V/medicaid_ltss_gross_earned_income.py:23
    • V/medicaid_ltss_gross_unearned_income.py:22
    • V/medicaid_ltss_reported_gross_earned_income.py:23
    • V/medicaid_ltss_reported_gross_unearned_income.py:21

    The definitions they rely on (20200.4 Gross Income, 20200.6 Unearned Income, 20200.7 Earned Income) are on #page=6.

  • (c) PR body: The "Earned-income inputs" bullet and the "Raw earned-income exclusions" row say DSSM §20240.3 "requires $20, then $65, then applicable impairment-related work expenses, then half". 20240.3 (pinned #page=9) lists only "deduct $20.00 / deduct $65.00 / then 1/2 of remainder". IRWE comes from 20200.2(f), and the ordering comes from 20 CFR 416.1112(c)(4)–(7). The docstrings already say this correctly (V/medicaid_ltss_individual_countable_income.py:16-17).

  • Fix: Point the four IRWE hrefs at pinned #page=5, move the four gross-income hrefs to #page=6, and reword the two PR-body passages to match the docstrings.

All states

5. The changelog has 11 fragments for one unreleased feature, and 9 of them are typed fixed/changed.

  • Files: Besides ltss-financial-eligibility.added.md, the PR adds medicaid-ltss-delaware-budget-election.added.md, medicaid-ltss-leaf-inputs.changed.md and eight .fixed.md files (ltss-financial-round-two, ltss-financial-wa-reentry, medicaid-ltss-delaware-irwe, medicaid-ltss-irwe-leaf-payments, medicaid-ltss-qit-opening-month, medicaid-ltss-wa-legacy-dividends, medicaid-ltss-wa-legacy, medicaid-ltss-washington-income-exclusions).
  • Problem: Towncrier would publish nine "Fixed/Changed" bullets about corrections to a screen that never shipped. Two of them (medicaid-ltss-delaware-irwe and medicaid-ltss-irwe-leaf-payments) describe the same change.
  • Fix: Fold the content into the single ltss-financial-eligibility.added.md and delete the other ten.

6. Some variable names, parameter descriptions and one label break house conventions.

  • (a) State code in the middle of the name: V/medicaid_ltss_de_post_six_month_budget_election.py and V/medicaid_ltss_wa_excluded_income.py put the state code mid-name. The PR's other state-specific variables use the {st}_medicaid_ltss_* prefix (tx_medicaid_ltss_qit_opening_month_exclusion_applies, the five wa_medicaid_ltss_* inputs). Rename them to de_medicaid_ltss_post_six_month_budget_election and wa_medicaid_ltss_excluded_income. The election input is new this round, so it has no external callers yet.
  • (b) Descriptions off the one-sentence template:
    • Verbs outside the template: "disregards" (P/de/income/general_disregard.yaml:1, P/de/income/earned_disregard.yaml:1), "counts" (P/de/income/earned_income_countable_rate.yaml:1), "publishes" (P/wa/mmmna/minimum.yaml:1, P/wa/mmmna/shelter_threshold.yaml:1) and "applies" (home_equity/minimum_limit.yaml:1).
    • Explanatory second clauses in P/wa/medically_needy/income_level.yaml:1 and P/wa/mmmna/shelter_threshold.yaml:1.
    • Every new file ends "under Medicaid long-term services and supports" rather than "under the Medicaid long-term services and supports program".
    • Most of these files were added after round 1, so the earlier "cosmetic" deferral doesn't cover them.
  • (c) Label: P/wa/waivers/rsw/enabled.yaml:8 reads "Residential Support Waiver waiver enabled".
  • Fix: Rename as above. Rewrite the descriptions with template verbs, for example "Delaware excludes this amount of monthly unearned and earned income under the Medicaid long-term services and supports program." Drop the doubled "waiver".

Suggestions

Delaware

  1. Reuse the SSI exclusion parameters. P/de/income/{general_disregard, earned_disregard, earned_income_countable_rate}.yaml duplicate gov.ssa.ssi.income.exclusions.{general, earned, earned_share} ($20 / $65 / 0.5). The PR's own ordering cites 20 CFR 416.1112(c)(4)–(7). DSSM 20240.1 and 20240.3 do state the amounts themselves, so state copies are defensible. Still, reading the SSI tree, as the SIL and resources now do, removes three files. This was raised as a Should and downgraded; see Verification notes.
  2. medicaid_ltss_has_community_spouse is still an explicit flag. A married DE nursing-facility applicant who omits it gets the individual $2,000 test, and the spouse's resources are ignored. This errs in the lenient direction. The flag can't be inferred from the marital unit alone, because the spouse may also be institutionalized. Add a warning in the flag's documentation or a "spouse is institutionalized" leaf.
  3. Blind work expenses are silently out of scope. IRWE correctly excludes blind claimants, but the blind counterpart in 20 CFR 416.1112(c)(8), "expenses reasonably attributable to the earning of the income if you are blind", is neither modeled nor disclosed. DSSM 20200.2 lists only IRWE; add a one-line disclosure.
  4. State which reading of the 42 CFR 435.1005 ceiling the screen adopts. With $65 + ½, a DE applicant with $5,055 of gross earnings counts $2,485 and passes, which is 170% of the $2,982 FFP figure. Whether 435.1005's "income before deductions" means before SSI exclusions is not settled. rulespec-us#1592, however, frames it as a pre-deduction test. Add one docstring sentence so PolicyEngine and Axiom don't diverge silently.

Texas and Washington

  1. Washington doesn't recognize QITs, but the model subtracts WA deposits. 42 USC 1396p(d)(4)(B) applies only where the State doesn't cover nursing-facility services under its medically needy option, and WA does (WAC 182-513-1395). Gate deposits to TX and DE, or document that WA has no valid QIT.
  2. Reported monthly gross is mixed with annual investment defaults. When the per-source monthly leaves are −1, V/medicaid_ltss_dividend_income.py:18-21 and V/medicaid_ltss_interest_income.py:17-20 fall back to annual ÷ 12 even when medicaid_ltss_reported_gross_unearned_income is supplied. Example: reported $3,050 plus $24,000/yr of dividends excludes $2,000. Default these leaves to 0 when gross is reported, or document the coupling.
  3. The WA pre-1989 branch fails open when the ownership leaves are omitted. With onset 1989-09 and a $98,000 spouse, the screen passes because the sole and joint leaves default to 0 (V/medicaid_ltss_csra_resource_eligible.py:114-122). Fail closed, or fall back to medicaid_ltss_individual_countable_resources.
  4. One WA MNIL reference doesn't corroborate the value. P/wa/medically_needy/income_level.yaml:15-16 cites WAC 182-513-1395, which never mentions the MNIL or the FBR. The other three references do corroborate it. Drop that entry.
  5. There is no modern TX or WA continuing-determination test. is_initial_eligibility_determination: false appears only in DE Cases 19, 20 and 23 and in the WA pre-1989 case. Add one TX case and one WA case (onset ≥ 2003-08) where the spouse holds more than the CSRA and the applicant holds ≤ $2,000.

Shared

  1. Federal CSRA min/max and MMMNA max freeze at their 2026 values. Meanwhile the home-equity minimum uprates. 1396r-5(g) indexes them to CPI-U ($12,000 × 2.711 = $32,532). The MMMNA minimum could derive from gov.hhs.fpg ($21,640 × 1.5 ÷ 12 = $2,705). The PR body discloses the freeze.
  2. The pathway recomputes Washington income in parallel. V/medicaid_ltss_financial_pathway.py:56-60 repeats the arithmetic in V/medicaid_ltss_individual_countable_income.py:68-73. The two agree only because the WA pathway requires unit size 1. Read the countable-income variable instead.
  3. Test polish.
    • medicaid_ltss_community_spouse_countable_resources, medicaid_ltss_excluded_impairment_related_work_expenses and tx_medicaid_ltss_qit_opening_month_exclusion_applies are never YAML outputs. Add direct rows, for example to CSRA Case 13.
    • 26 of 135 case names lack the "Case N," prefix or the trailing period.
    • Composite Case 12 carries a generated &id001 anchor.
  4. Stale docs and idioms.
    • The programs.yaml note still says "Income and resources are trusted inputs."
    • V/medicaid_ltss_reported_dividend_income.py:15-16 still describes the old ordinary-dividend fallback.
    • The annual defaults divide period.this_year by a bare 12 (dividend, interest, gross earned and gross unearned). Use MONTHS_IN_YEAR or Core's auto-division.
    • Add a one-line comment on the zero-returning formula of the 8 IRWE transaction leaves noting that API metadata won't list them as inputs.
    • rulespec-us#1592 cites a nonexistent is_medicaid_ltss_threshold_applicable.yaml.
  5. IRWE lookback memory (informational). A full-year monthly sweep of the IRWE lookback costs about 600 bytes per person, roughly 0.6 GB per million records. Because the DE branch is evaluated through where, every state pays it. The default microsimulation never requests the screen, so it pays nothing today.

Verification notes (consolidation)

  • Both critical findings and all six shoulds were re-checked against the head code and the cited source text:
    • Texas: E-3331.1, F-6820 and G-6120 on the live MEPD pages.
    • Delaware: DSSM 20200.2(f), 20200.4/.6/.7, 20240.1/.3 and 20810, page-mapped in both DSSM exports.
    • Federal: 20 CFR 416.1112(c)(6) and 416.976(e)(2).
    • The numeric examples were traced by hand.
  • Downgraded: "DE income parameters duplicate the SSI exclusions" went from Should to Suggestion 1. DSSM 20240 states the amounts itself, so the copies are a reuse preference rather than a defect.
  • Merged:
    • The WA regime-date hard-coding (raised as a Should) went into Critical 2: same pattern, same fix.
    • The two convention findings (variable naming; descriptions and label) became Should 6.
    • The PR-body IRWE attribution went into the DE citation finding (Should 4).
    • Round-1 S6, reported by all three passes, is one row plus Should 3.
  • Nothing was dropped.

Verified correct

  • Delaware unit (DSSM 20810):
    • Before six completed months, same-facility spouses are a compulsory couple. After that, the INDIVIDUAL/COUPLE election applies, NOT_SUPPLIED falls back to the more favorable budget, and a tie gives individual budgets.
    • Same-address HCBS spouses use couple standards.
    • Reproduced: $2,980 ≤ $3,727.50; $3,980 fails at 5 months.
  • Delaware income (DSSM 20240.1/.3, 20990; 416.1112(c)(4)–(7)):
    • $2,505 / $2,506 gross gives $2,485 / $2,486 (DMMA "$2,505.00 for an individual").
    • $5,055 of earnings gives (5,055 − 20 − 65)/2 = $2,485.
    • A community-spouse applicant gets $20 only (5,055 − 20 = $5,035).
    • A couple shares one $20 and one $65.
    • IRWE: (5,455 − 20 − 65 − 400)/2 = $2,485; a $4,800 purchase allocated over 12 months gives $400/mo; the 12th month is $400 and the 13th is $0.
    • Delaware counts interest except as infrequent/irregular income (DSSM 20210.1, pinned #page=7), so it doesn't share the Texas defect.
  • CSRA:
    • TX/DE: min(max(½ snapshot, floor), $162,660). The DE floor is max($25,000, $32,532). Passes at ±$1 in all three states.
    • WA dated regimes (WAC 182-513-1355): onset 1989-09 → $0; 1989-10 to 2003-07 → $162,660; 2003-08 and later → $72,529 floor.
    • Continuing determinations count applicant resources only (1396r-5(c)(4)).
  • Texas:
    • QIT ordinary months: a $1,018 / $1,017 deposit on $4,000 counts $2,982 / $2,983.
    • Verified opening month: 4,000 − 500 − 3,500 = $0.
    • SIL $2,982 / $5,964 and MMMNA $4,066.50 (App XXXI p465).
  • Washington:
    • Exclusions apply before SIL routing; (bb) has no dollar cap.
    • Institutional medically needy: 4,000 − 500 ≤ 3,500.
    • HCBS medically needy: 4,000 − 500 − 2,506 = 994 ≤ MNIL.
    • January 2026 MMMNA: 2,644 + (1,000 − 794) = $2,850.
  • Values: Every federal, TX, DE and WA parameter matches its source:
    • CIB 2025 and 2026 p2;
    • DMMA A-14-2025 p1–2;
    • pinned DSSM pages 1, 9, 17, 67, 69, 70 and 71;
    • MEPD App XXXI p465;
    • HCA standards 1/1/26 and 7/1/26 p3;
    • WAC 182-513-1350 and 182-519-0050.
  • References follow the current one-entry-per-source-document convention. No titles carry page lists.
  • Microsim:
    • medicaid_ltss_setting defaults to UNKNOWN, so the pathway is UNMODELED and the composite is false for 100% of records.
    • Home equity is true (equity 0), and only the gross/countable income outputs are non-zero.
    • No formula outside the folder reads any medicaid_ltss_* variable.
    • No files under tests/policy/baseline/partners/** change.
  • Tests and code health:
    • Test periods are plain, enum defaults are listed last, there is no dead code or TODO, and every new parameter is read.
    • The invariant module is deterministic (SEED = 9184) and light in CI (about 13 s in total).

Axiom line assessment

The PR body lists 28 queued rulespec-us issues (#1567–#1594) and 2 encoded-correct 1396p(f) modules. A sample of 7 issues (#1567, #1568, #1569, #1573, #1585, #1592, #1594) are all OPEN, labelled pe-parity, and were updated 2026-10-09 at this head. The stage reviews covered the rest. Each issue carries a module path, a corpus citation, verbatim law and companion tables from external arithmetic. The line is valid in form, with four gaps:

CI status

All 26 checks pass on b2e25f3265 (gh pr checks 9184).

Branch status

The branch is 83 commits behind PolicyEngine/main and 34 ahead. git merge-tree --write-tree PolicyEngine/main b2e25f3265 merges cleanly with no conflicts. A routine merge from main before landing is still advisable.

Verdict: REQUEST_CHANGES

@DTrim99 DTrim99 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants