Skip to content

Add Utah state supplementation for 2026 - #10170

Merged
hua7450 merged 13 commits into
mainfrom
ut-ssp-2026
Oct 22, 2026
Merged

hua7450 merged 13 commits into
mainfrom
ut-ssp-2026

Conversation

@hua7450

@hua7450 hua7450 commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

What and why

Utah's state supplements to SSI recipients were missing from PolicyEngine-US. Add ut_ssp for 2026 under Utah Admin. Code R414-306-6, Utah Medicaid Policy Manual 661 and DWS Eligibility Manual 205-10. Utah pays two separate supplements, and ut_ssp is their sum:

  • ut_dws_ssp, the Department of Workforce Services (DWS) supplement. It goes to SSI recipients and to people "who meet SSI criteria other than income" (205-10), except single people who live alone, residents of Medicaid institutions and inmates.
  • ut_dhhs_ssp, a $15 payment to SSI recipients in a Medicaid-funded medical institution (R414-306-6; Manual 661).

Details:

  • Who administers it:

    • DWS supplement: DWS pays it "on a quarterly basis following the end of the quarter" (205-10). The 2004–2013 edition of 205-10 shows that SSA used to pay it "through a contractual agreement with the state". SSA's January 2011 summary lists it as state-funded. POMS SI 01415.058 A doesn't list Utah for January 2026.
    • $15 payment: "The payment process for the $15 SSP occurs at the state level based on information in eREP about nursing home members’ Medicaid eligibility" (Manual 661, "The Payment Process"). No separate application is needed.
    • SSA administers neither supplement, so neither uses the shared helper for SSA-administered supplements (SSA rounding and its $1 minimum).
  • 2026 levels:

    Payment Recipient Monthly amount
    DWS supplement (205-10, effective January 1, 2026) Single person who doesn't live alone $3.91
    Couple in the household of another $12.19 ($6.095 each)
    Couple living alone or with others in their own household $5.75 ($2.875 each)
    $15 payment (R414-306-6(2); Manual 661) SSI recipient in a Medicaid-funded medical institution $15 per person
  • Payment: both supplements are flat amounts.

    • "There are no income calculations that reduce the $15 amount" (Manual 661). Countable income can lower SSI below the $30 facility rate without changing the $15.
    • 205-10 sets no income reduction for the DWS supplement.
    • The model reports the DWS amount in the month it accrues, not in the quarterly payment month (code comment on ut_dws_ssp).
  • Couples:

    • DWS supplement. The couple amounts apply when both members of a marital unit qualify, and each spouse gets half. A qualifying person whose spouse doesn't qualify gets the single-person $3.91 (ut_dws_ssp.yaml Case 6). The phrase "household of another" means the federal living arrangement code B (ANOTHER_PERSONS_HOUSEHOLD), the same mapping SSA used when it paid the supplement (2004–2013 edition; SSA's January 2011 table, codes A and B). So a couple in someone else's household who pay their own way gets the own-household amount.
    • $15 payment. Each qualifying spouse gets $15. With both spouses in a facility, SSI is $30 each from the $60 couple rate (20 CFR 416.414(b)(2)). With one spouse in a facility, only that spouse gets the $15 (416.414(b)(3)).
  • COLA:

    • $15 payment: none. The $15 has been fixed since Manual 661 took effect on February 1, 2008, and the federal $30 facility rate isn't indexed.
    • DWS supplement: no indexing rule is published. DWS has republished the amounts each January since 2024 ($3.72, $3.81, then $3.91 for a single person). Earlier editions kept $3.13 from 1994 through 2021 and $3.31 in 2022–2023. The model carries the 2026 amounts forward.
    • A 2027 case checks each payment.
  • Who qualifies for the DWS supplement (ut_dws_ssp_eligible), each month:

    Requirement Source How modeled
    Receives SSI, or meets SSI criteria other than income 205-10 (ssi > 0) | receives_ssi, or is_ssi_eligible (aged, blind or disabled; resources; immigration) with uncapped_ssi of 0
    Not denied or closed SSI "for reasons other than exceeding the income" 205-10 Applied through is_ssi_eligible. Financial assistance applicants must apply for other benefits they may be entitled to (205, "Application for Other Possible Benefits"). So someone whose income qualifies for SSI but who declines it gets nothing.
    Not a single individual who lives alone 205-10 A person lives alone when no other household member is at home; members in a medical treatment facility or incarcerated don't count. A spouse at home counts as a housemate. A spouse left at home alone while the other spouse is in a facility or incarcerated counts as living alone (ut_dws_ssp_eligible.yaml Cases 9 and 11).
    Not in a public or private institution where Medicaid pays more than 50 percent of the cost of care 205-10 The federal living arrangement MEDICAL_TREATMENT_FACILITY
    Not incarcerated 205-10 is_incarcerated
    Lives in Utah State program defined_for = StateCode.UT
  • Who qualifies for the $15 payment (ut_dhhs_ssp_eligible), each month:

    Requirement Source How modeled
    Receives an SSI payment of at least $1.00 R414-306-6(2); Manual 661 ("The SSI payment must be at least $1.00") ssi at least minimum_ssi_payment, or reported receipt through receives_ssi. A code NOTE records that the rule says only "receives a Supplemental Security Income (SSI) payment" and that the manual sets the $1.00 floor.
    Lives in a medical institution where Medicaid pays more than half the cost of care, so SSA limits SSI to $30 R414-306-6(2), (4); Manual 661; 20 CFR 416.414 The federal living arrangement MEDICAL_TREATMENT_FACILITY, from ssi_lives_in_medical_treatment_facility and ssi_medicaid_pays_majority_of_care
    Eligible for Utah Medicaid R414-306-6(3); Manual 661 medicaid_enrolled_for_ssi_state_supplement (Medicaid eligibility and take-up)
    Lives in Utah State program defined_for = StateCode.UT

    Both payments key on the MEDICAL_TREATMENT_FACILITY arrangement: the DWS supplement excludes it and the $15 payment requires it. So no one receives both. A facility resident who fails the $15 payment's SSI or Medicaid conditions receives neither.

  • Source conflicts. Each has a code comment and is listed in the Axiom conflicts comment:

    • A single person living with others in their own household. The current 205-10 pays "a single person" and excludes only "Single individuals who live alone". SSA's January 2011 table paid individuals only in the household of another (code B). The model follows the current manual and pays $3.91 (NOTE in ut_dws_ssp_eligible; ut_dws_ssp.yaml Case 1).
    • SNAP treatment of the DWS supplement. 425-11 exempts the supplement when Utah pays it and cites no exclusion in 7 CFR 273.9(c), which excludes only the items it lists. The model follows 425-11 (comment in the SNAP list; integration Cases 4–6).
  • Inputs: none new.

    • $15 payment: set ssi_lives_in_medical_treatment_facility and ssi_medicaid_pays_majority_of_care for each month in the facility.
    • DWS supplement: set the three household-of-another inputs (ssi_lives_in_another_persons_household, ssi_receives_shelter_from_others_in_household and ssi_others_pay_all_meals) for both spouses (documentation on ut_dws_ssp). It also reads is_incarcerated.
    • receives_ssi covers an SSI payment the model doesn't compute. Utah Medicaid enrollment is computed.
    • Setting the facility inputs for one person leaves other household members' $15 payment unchanged (ut_ssp.yaml Case 13). For the DWS supplement, a member in a facility or incarcerated stops counting as a housemate, so a spouse left alone at home loses it (ut_dws_ssp_eligible.yaml Cases 9 and 11).

ut_ssp, covering both payments, is added to household_state_benefits (all four year blocks) and spm_unit_benefits. The income lists treat the two payments differently:

  • SNAP: unearned income lists only ut_dhhs_ssp. Utah's SNAP policy exempts the DWS supplement when Utah pays it ("If paid by the state of Utah, the supplement is exempt", 425-11). 425-11 doesn't address the $15 payment, which counts under 7 CFR 273.9(b)(2) as for the other states' supplements.
  • HUD: unearned income lists ut_dws_ssp. It reads nothing downstream of HUD income, so it can't create a cycle. ut_dhhs_ssp stays out because its recipients live in a Medicaid-funded medical institution, not HUD-assisted housing, and counting it would make its Medicaid condition circular through rent-related tax deductions (NOTE on ut_dhhs_ssp).
  • Other Utah programs: none needs a change. Utah CCAP, the only other Utah program on main that reads SSI, doesn't count an SSI recipient's SSI (R986-700-710(4)(e)), and 425-11 exempts the supplement for child care.

Files:

policyengine_us/parameters/gov/states/ut/dhhs/ssp/              amount.yaml, minimum_ssi_payment.yaml
policyengine_us/parameters/gov/states/ut/dws/ssp/amount/        individual.yaml, couple/another_household.yaml, couple/own_household.yaml
policyengine_us/variables/gov/states/ut/dhhs/ssp/               ut_ssp.py, ut_dhhs_ssp.py, ut_dhhs_ssp_eligible.py
policyengine_us/variables/gov/states/ut/dws/ssp/                ut_dws_ssp.py, ut_dws_ssp_eligible.py
policyengine_us/tests/policy/baseline/gov/states/ut/dhhs/ssp/   ut_ssp.yaml, integration.yaml
policyengine_us/tests/policy/baseline/gov/states/ut/dws/ssp/    ut_dws_ssp.yaml, ut_dws_ssp_eligible.yaml

Each agency has its own folder. The program total ut_ssp sits in dhhs/ssp/. The registry's parameter_prefix is gov.states.ut.dhhs.ssp because the registry takes a single prefix.

Shared files:

  • household_state_benefits.yaml gains one Utah entry per year block.
  • spm_unit_benefits.py and programs.yaml each gain one Utah entry.
  • SNAP income/sources/unearned.yaml gains ut_dhhs_ssp, with a comment citing 425-11. HUD annual_income/sources/unearned.yaml gains ut_dws_ssp.
  • medicaid_enrolled_for_ssi_state_supplement.py keeps main's code. Only its docstring changes, from naming Indiana and Kansas to "state supplements that require Medicaid enrollment"; the text is the same as in Add Ohio state supplementation for 2026 #10164.
  • The shared state supplement helper and minimum_payment.yaml are unchanged.

References

Additional section and page citations are included alongside the parameters and formulas.

Coverage limits

The registry marks Utah as partial, verified for 2026. In October 2026 the $15 and the $1.00 floor were checked against R414-306-6 and Manual 661, and the DWS amounts against 205-10.

Not modeled:

  • Budget reductions to the DWS amounts. 205-10 says "If the number of SSI recipients increases, theses [sic] amount may be reduced to stay within budget". The model pays the published amounts.
  • The quarterly payment schedule. The model reports each month's DWS amount in that month.
  • Start and stop months for the $15 payment beyond the monthly inputs. R414-306-6(4) starts the $15 "with the first month that their SSI assistance is reduced to $30". The model pays it for each month the facility inputs are set, so users set them from the month SSA applies the $30 rate. Medicaid enrollment is a yearly value, so a mid-year Medicaid start or end isn't reflected.
  • The Medicaid cost-of-care contribution, which counts the $15 (Manual 661, citing 463-1).

Microsimulation and model limits:

  • The $15 payment reaches household calculations only. The microdata don't populate the two facility inputs (code NOTE).
  • The DWS supplement's over-income path has no take-up. In microsimulation it reaches every aged, blind or disabled Utahn who meets the SSI resource and immigration rules and doesn't live alone, whatever their income (NOTE in ut_dws_ssp_eligible; the registry notes say so too). Modeling who applies needs a take-up input assigned in the microdata, which is outside this PR.
    • A local run on the default Populace 2024 dataset, for January 2026 annualized, pays 244,694 Utahns (146 records) about $9.36 million a year. Of these, 16,306 receive SSI ($0.77 million) and 228,388 qualify only through the over-income path ($8.59 million).
    • When SSA administered the supplement, it reported 2,414 recipients in January 2011 and $82,000 in payments for 2010.
  • Facility residents where Medicaid pays half or less of the cost. 205-10 says nothing about them. The model judges them by household membership, like anyone else. For an aged couple with one spouse in such a facility, SSI pays both the couple rate; the resident has a spouse at home, so receives the single person amount, and the spouse at home lives alone and receives nothing (ut_dws_ssp.yaml Case 9).
  • Spouses with different household-of-another inputs. Each spouse's half follows that spouse's own living arrangement, as SSI's couple rate does, so inputs set for only one spouse give a total that matches neither published couple amount (code NOTE). The ut_dws_ssp documentation asks for the inputs on both spouses.

Earlier years use parameter backfilling and are unverified historical estimates; no historical coverage is claimed. The obsolete editions of 205-10 for 2014 to 2025 were read but aren't encoded.

Related:

Test plan

  • 41 Utah SSP YAML cases pass locally on this branch merged with main at 1f678c7:

    • in dhhs/ssp/: 15 in ut_ssp.yaml and 6 in integration.yaml;
    • in dws/ssp/: 9 in ut_dws_ssp.yaml and 11 in ut_dws_ssp_eligible.yaml.

    They cover:

    • $15 payment: SSI of $30, $1 and $0.50. No Medicaid, independent living, another state, a facility without majority Medicaid funding, and declined SSI. Negative earnings, the annual total and reported SSI receipt. Couples with both spouses or one spouse in a facility.
    • DWS amounts: a single person living with others or in the household of another; couples living alone, with a grandson or in the household of another; a recipient whose spouse isn't aged, blind or disabled; a couple with one spouse in a facility where Medicaid pays half or less of the cost; an over-income single person and couple; and the annual total.
    • DWS exclusions: living alone, a Medicaid institution, incarceration, excess resources, declined SSI, reported receipt and another state. Also a spouse left at home alone while the other spouse is in a facility or incarcerated.
    • Mixed cases: a facility spouse with the $15 payment and a spouse at home with the DWS supplement; a Utah and a Massachusetts household in one simulation.
    • Totals: household_state_benefits, spm_unit_benefits, SNAP income (the DWS supplement left out) and HUD income (the DWS supplement in, the $15 out). Computed Medicaid in 2026 and 2027, and a 2027 case for each payment.
  • The aggregate list integrity and program registry tests pass locally (728 passed, 10 skipped).

  • ruff format, ruff check and git diff --check.

  • Changelog fragment in changelog.d/.

  • CI passes.

axiom: Utah Admin. Code R414-306-6; Utah Medicaid Policy Manual 661; Utah DWS Eligibility Manual 205, 205-10, 425-11 TheAxiomFoundation/rulespec-us#1838 queued

hua7450 and others added 3 commits October 12, 2026 14:34
- Accept reported SSI receipt alongside the $1 computed-SSI floor; drop the redundant $30 bound
- Cite Utah Admin. Code R414-306-6 and note state administration
- State-neutral wording in the shared Medicaid helper documentation (same as OH)
- Registry placement and comments, SNAP reference title, programs.yaml note
- Floor cases with direct SSI inputs; reported-receipt and couple cases

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450
hua7450 marked this pull request as ready for review October 13, 2026 08:14
@hua7450
hua7450 marked this pull request as draft October 13, 2026 19:04
hua7450 and others added 2 commits October 13, 2026 15:12
Counting ut_ssp as HUD income made Medicaid enrollment, rent-related tax
deductions and HUD income circular, so the shared SSP Medicaid helper had
to run a full-population branch in every year and the microsimulation job
ran out of time and memory. Recipients live in Medicaid-funded medical
institutions, so the supplement stays out of HUD income, and the helper and
its core test return to main's version (only the docstring wording differs).
Integration Case 2 drops its HUD check, which depended on calculation order
for a January-only facility input.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450 hua7450 mentioned this pull request Oct 20, 2026
4 of 5 tasks
hua7450 and others added 2 commits October 20, 2026 05:04
Add the Department of Workforce Services quarterly supplement (DWS Eligibility Manual 205-10) alongside the $15 DHHS payment, with SNAP excluding it (425-11) and HUD counting it; mark the registry entry partial, update descriptions and add SPM benefit and 2027 cases.

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

DTrim99 commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Add Utah state supplementation for 2026

PR #10170 (author: hua7450, head a77c52db80, merge-base f19877374a). 21 files (+1,376/−1), 8 commits.

Summary

The PR adds Utah's two state supplements to SSI recipients:

  • The Department of Workforce Services (DWS) supplement.
    • ut_dws_ssp_eligible (Person, MONTH, defined_for = StateCode.UT) pays SSI recipients and people who "meet SSI criteria other than income". It excludes single people who live alone, residents of Medicaid institutions and inmates.
    • ut_dws_ssp pays $3.91 to a single person. A couple gets $12.19 in the household of another (federal code B) or $5.75 otherwise, split evenly when both spouses qualify.
  • The $15 DHHS payment. ut_dhhs_ssp_eligible requires SSI of at least $1.00, the federal MEDICAL_TREATMENT_FACILITY arrangement and Utah Medicaid. ut_dhhs_ssp adds the $15 parameter.
  • The total. ut_ssp is the sum of the two.
  • Aggregates.
    • ut_ssp goes into household_state_benefits (all four year blocks) and spm_unit_benefits.
    • SNAP counts only ut_dhhs_ssp, because DWS Manual 425-11 exempts the DWS supplement.
    • HUD counts only ut_dws_ssp, to avoid a Medicaid cycle.
  • Registry and tests. There is a programs.yaml entry (partial, verified_years: "2026") and 40 YAML cases.

The policy content is right for 2026:

  • Every amount, exclusion and administrative fact matches the sources:
    • DWS Eligibility Manual 205-10 (effective January 1, 2026);
    • Utah Admin. Code R414-306-6 and Medicaid Policy Manual 661;
    • DWS Manual 425-11 and 205;
    • POMS SI 01415.058 A, which doesn't list Utah.
  • Two source conflicts. The author found both, documented them in code and in rulespec-us#1838, and pinned them with tests: the SNAP exemption, and a single person living with others in their own household. I agree with both readings.
  • The axiom line is valid. rulespec-us#1838 is open, labelled pe-parity, dispatch-ready and consistent with the head.
  • Checks.
    • The New Hampshire bug pattern doesn't occur.
    • A probe shows Utah's Medicaid dependency gives the same results in either calculation order.
    • I checked 19 expectations by hand.
  • CI and branch. All 27 checks pass on the head, and the branch merges cleanly with main.

No critical items remain. One should-fix item remains:

  • The over-income path has no take-up, so microsimulation overstates the DWS supplement's caseload by about 100 times.

Two suggestions:

  • The DWS amounts for 2014–2025, which the author has already read, still default back to the 2026 levels.
  • Two couple readings aren't pinned by any test.

Critical (must fix)

None.

Should address

1. The over-income path has no take-up, so microsimulation overstates the DWS supplement about 100-fold.

  • Where: ut_dws_ssp_eligible.py:39-44. The NOTE says this path "reaches every eligible non-recipient who does not live alone".
  • Direction: upward, in both recipients and cost.
  • Magnitude. The PR body's own run on the default Populace 2024 dataset, for January 2026 annualized, finds:
    • 244,694 Utah recipients and $9.36 million a year in total;
    • of these, 228,388 recipients and $8.59 million come only through the over-income path, and 16,306 SSI recipients account for $0.77 million.
    • When SSA paid the supplement, it reported about 2,414 recipients in January 2011 and $82,000 for 2010 (figures from the PR body). That is roughly 100 times fewer recipients. That era had no over-income path, so the gap isn't all bias, but the over-income path alone is 14 times the modeled SSI-recipient caseload.
    • Per person the amount is small ($3.91 a month), so the bias shows mainly in the program's aggregate cost and caseload, not in household net income or poverty.
  • Why.
    • The rule itself is followed correctly: 205-10 says people who "meet SSI criteria other than income are eligible".
    • The bias comes from two gaps. Nothing models who applies to DWS, and the SSI resource test is loose in the microdata.
    • 205-10's budget clause ("theses [sic] amount may be reduced to stay within budget") also points to a much smaller real program.
  • Remedies (any one):
    • (a) Data-side take-up for the over-income path, or populating the variable from microdata.
    • (b) Document the limitation where users see it. The code NOTE and the PR body already do; the programs.yaml notes and the coverage page don't yet.
    • (c) Accept it, if the PR records it as quantified and small. The per-person amount is small, but the caseload overstatement isn't.

Suggestions

1. Encode the DWS amounts for 2014–2025 (deferral documented in the PR body).

  • The leak. The three DWS files (dws/ssp/amount/individual.yaml:4, couple/another_household.yaml:4, couple/own_household.yaml:4) each have only a 2026-01-01 value, so backdating copies the 2026 levels to every earlier year.

    • Probe at the head: a single SSI recipient living with a daughter gets ut_dws_ssp of 3.91 for January of 2015, 2021, 2022, 2024 and 2025.
    • Where it shows up. The PR wires ut_ssp into the 2023, 2024 and 2025 household_state_benefits blocks, so these years reach household totals.
  • The law. DWS's own obsolete editions of 205-10 give every year. Each has the same eligibility text as the current edition, so only the amounts change:

    Edition Single person Couple, household of another Couple, own household
    January 1, 2014 – December 31, 2021 $3.13 $9.73 $4.60
    January 1, 2022 – December 31, 2023 $3.31 $10.30 $4.87
    January 1 – December 31, 2024 $3.72 $11.56 $5.46
    January 1 – December 31, 2025 $3.81 $11.86 $5.60
    • The model overstates the single amount by $0.10 to $0.78 a month in those years.
    • One trap. The 2022–2023 edition still says "As of May 1, 1994" above the $3.31 figures. Its effective date is January 1, 2022.
  • Why it's a suggestion.

  • Fix:

    • Add four dated values to each file (2014-01-01, 2022-01-01, 2024-01-01, 2025-01-01), with one reference per edition.
    • Before 2014, SSA paid the supplement under the SSA-era rules (individuals only under code B, and no over-income path). That period would stay out of scope.

2. Two couple readings that no case pins.

  • (a) A spouse in a medical facility where Medicaid pays half or less. ut_dws_ssp_eligible.py:63-65 treats anyone with ssi_lives_in_medical_treatment_facility as absent from the household, whoever pays for the care.
    • Probe at the head, a couple aged 80 and 78, one in a private-pay facility:
      • ssi_federal_living_arrangement is own household for both, and SSI pays the couple rate, 745.50 each.
      • ut_dws_ssp_eligible is [true, false] and ut_dws_ssp is [3.91, 0].
      • So the resident is "not alone" because the spouse is at home, and the spouse at home "lives alone".
    • The documentation. It says such a resident "is judged by household membership like anyone else". But no case in the four files sets ssi_medicaid_pays_majority_of_care: false for the DWS supplement.
  • (b) Spouses with different household-of-another inputs. ut_dws_ssp.py:41-48 picks each spouse's half from that spouse's own arrangement.
    • Probe: only spouse A has the three code-B inputs. SSI is [497, 745.50] and ut_dws_ssp is [6.095, 2.875]. That totals $8.97, which is neither published couple amount.
    • How likely it is. SSI itself behaves the same way, and the variable's documentation tells users to set the inputs for both spouses. So this only happens with inconsistent inputs.
  • Fix:
    • Add a ut_dws_ssp.yaml case for (a) that pins the chosen result.
    • For (b), either decide the couple's arrangement at the marital-unit level (code B only when both spouses are code B) or leave it documented.
    • Update Missouri tax rules for 2022 #1838 can then list both under "Interpretations".

Verified correct

  • Batch cross-cutting checks:

    # Check Verdict
    1 Axiom line Valid: TheAxiomFoundation/rulespec-us#1838 queued; see the Axiom line assessment
    2 House-template descriptions All five follow it. Each is one sentence, spells out the program and ends "under the State Supplemental Payment program" (DHHS) or "under the State Supplemental Payments to Supplemental Security Income Recipients program" (DWS, 205-10's own title)
    3 Backdating The DWS amounts leak back to 2015 at the 2026 levels; documented deferral (Suggestion 1). The $15 and $1.00 parameters start on 2008-02-01, Manual 661's effective date, so nothing leaks into a modeled year
    4 tx_rebate.py copy Omits ut_ssp. The PR body defers this to Keep one spm_unit_benefits list so reforms that add a benefit stop dropping baseline programs #10226 (open), which the siblings also did; accepted
    5 Aggregate wiring Complete, with no double count (details below)
    6 Income attribution The per-person, couple, ineligible-spouse and absent-spouse readings are documented and pinned: ut_dws_ssp.yaml Cases 6–7, ut_dws_ssp_eligible.yaml Cases 9 and 11, and ut_ssp.yaml Cases 12–14. Two readings remain unpinned (Suggestion 2)
    7 Sibling conflicts Branch note only (see Branch status)
    8 CI All green on the head
    9 State law Verified (below)
  • DWS Eligibility Manual 205-10 (live page, "Policy Effective: January 1, 2026"):

    • Who qualifies: "Customers who are receiving Supplemental Security Income (SSI) or who meet SSI criteria other than income are eligible to receive a state supplement. This will be paid to the customer on a quarterly basis following the end of the quarter."
    • Amounts: "$3.91/month for a single person. $12.19/month for couples who live in the household of another. $5.75/month for couples who live alone or with others in their own household." These match the three parameter files.
    • Exclusions: "Single individuals who live alone. Individuals who live in a public or private institution where Medicaid pays more than 50 percent of their cost of care. Individuals who are incarcerated. Individuals who are denied or closed SSI for reasons other than exceeding the income." These match ut_dws_ssp_eligible.py: lives_alone, MEDICAL_TREATMENT_FACILITY (which requires ssi_medicaid_pays_majority_of_care), is_incarcerated, and is_ssi_eligible for the other SSI criteria.
  • The SSA era and the code-B mapping.

    • The obsolete 205-10 (April 1, 2004 to December 31, 2013) says the supplement "is administered by the Social Security Administration (SSA) through a contractual agreement with the state", and that it "is paid ... when they meet one of the SSA defined living arrangements". Its rows are "$3.13 for a single person living with others", "$9.73 for couples who live with others" and "$4.60 for couples who live alone".
    • SSA's January 2011 Utah summary gives $3.13 and $9.73 for "Living in the household of another" and $4.60 for a couple "Living alone or with others". It lists state funds for administration and assistance. SSA's site blocks automated fetches, so I confirmed these through SSA-domain search results.
    • That supports mapping "household of another" to federal code B, and the PR's NOTE quotes both sides accurately.
  • Who administers it now.

    • POMS SI 01415.058 A, for January 2026, lists only CA, DE, DC, HI, IA, MI, MT, NV, NJ, PA, RI and VT, and "Utah" doesn't appear anywhere on the page.
    • Utah issues both payments itself, so the PR rightly doesn't use the shared SSA-administered helper (SSA rounding, $1 minimum).
  • The $15 payment.

    • R414-306-6:
      • (2): "A State Supplemental payment equal to $15 shall be paid to a resident of a medical institution who receives a Supplemental Security Income (SSI) payment."
      • (3): "Recipients must be eligible for Medicaid benefits to receive the State Supplemental payment."
      • (4): it starts "with the first month that their SSI assistance is reduced to $30 a month because they stay in an institution and they are eligible for Medicaid."
    • Manual 661 ("Effective Date: February 1, 2008"):
      • "SSA limits the SSI payment to no more than $30 per month because the recipient is a resident of a Medicaid funded medical institution. ... However, The SSI payment must be at least $1.00."
      • "There are no income calculations that reduce the $15 amount."
      • "The payment process for the $15 SSP occurs at the state level based on information in eREP".
    • This matches amount.yaml (15), minimum_ssi_payment.yaml (1) and the three conditions in ut_dhhs_ssp_eligible.py.
  • SNAP and the source conflict. 425-11 ("Policy Effective: February 1, 2025"), SNAP section: "a. If paid by the state of Utah, the supplement is exempt."

    • The federal side. 7 CFR 273.9(c) allows only the listed exclusions, and the author's conflict comment on Update Missouri tax rules for 2022 #1838 works through the nearest ones.
    • Why the PR's reading is right. 425-11 is the policy Utah's caseworkers apply, so following it gives the SNAP benefit Utah households actually receive. The effect is at most a few dollars a month.
    • The $15 payment. 425-11 doesn't cover it, so it stays countable under 273.9(b)(2)(i).
  • Other Utah programs.

    • 425-11 exempts the supplement for General Assistance and child care. Utah CCAP on main already omits ssi (R986-700-710(4)(e)).
    • Utah FEP treats SSI recipients as non-household members.
    • No other Utah list needs the new variables.
  • The take-up reading. DWS Manual 205, "Application for Other Possible Benefits": "All applicants and recipients of any Financial assistance program must apply for other Financial benefits or other Financial assistance they may be eligible for". 205-10 is a sub-topic of 205. So it is reasonable to refuse the over-income path to someone whose income qualifies for SSI but who doesn't take it up (ut_dws_ssp_eligible.yaml Case 4).

  • The New Hampshire bug pattern doesn't occur here.

    • The Utah-gated variables are two bools (ut_dws_ssp_eligible, ut_dhhs_ssp_eligible) and three floats. None is used as a parameter or breakdown key.
    • The parameters are read by attribute.
    • The only enum, the federal ssi_federal_living_arrangement, is compared with ==.
    • ut_ssp.yaml Case 15 runs a Utah and a Massachusetts household in one simulation.
    • CI's Microsimulation job and both Rest (Python) jobs pass. These held all nine of Add New Hampshire state supplementation for 2026 #10156's failures.
  • Medicaid dependency and calculation order.

    • ut_dhhs_ssp_eligible is the third consumer of medicaid_enrolled_for_ssi_state_supplement, after Indiana and Kansas.
    • Probe at the head. I ran tests/core/test_ssi_state_supplement_medicaid_dependency.py's situation with state="UT" for 2027 and 2030, calculating ut_ssp, snap and medicaid_enrolled in both orders. The results are identical:
      • 2027: ut_ssp [180, 0] and medicaid_enrolled [true, true];
      • no ssi_state_supplement_medicaid branch is left behind.
    • The HUD list. Leaving ut_dhhs_ssp out of HUD matches ks_sspp, which is also kept off the HUD list.
    • The shared docstring. Its one-line change is accurate.
  • The Oklahoma lesson (Add Oklahoma state supplementation for 2026 #10165) doesn't apply. The DWS over-income path is defined by SSI's own income test (uncapped_ssi), and the $15 payment has no income test. So there's no separate state wage or premium rule to compare with the federal one. Integrate modeled state unemployment insurance into income flows #9558 and Document disjoint health premium inputs and correct consumer treatment #10046 don't apply either: the PR touches no unemployment or premium list.

  • Aggregate wiring at the head:

    • household_state_benefits.yaml (lines 82, 183, 295, 408);
    • spm_unit_benefits.py:29;
    • SNAP ut_dhhs_ssp, with the 425-11 comment;
    • HUD ut_dws_ssp;
    • programs.yaml:1151, whose parameter_prefix resolves, as the registry test confirms.

    Neither variable is an SSI income source (20 CFR 416.1124(c)(2)). spm_unit_benefits holds ssi and ut_ssp separately, so nothing is counted twice.

  • Code:

    • The adds-a-parameter pattern matches ks_sspp.
    • The MONTH variables sum to the year (Cases 10 and 8), and the YEAR Medicaid input is read through period.this_year.
    • There are no hard-coded policy values.
    • References give one entry per document, and the variable tuples have no titles.
    • dws/ matches the existing ut/dws/unemployment_insurance folder. (main also has ut/dwf/ for CCAP and FEP, which predates this PR.)
  • Hand checks (2026 FBRs: $994 individual and $1,491 couple; 2027 couple: $1,544):

    • ut_ssp.yaml:
      • Case 1: facility SSI 30; ut_ssp 15.
      • Cases 2 and 3: $1 ≥ $1 gives 15; $0.50 < $1 gives 0.
      • Case 10: 15 × 12 = 180.
      • Case 12: $60 / 2 = 30 each (416.414(b)(2)); 15 each.
      • Case 13: separate computation, so SSI [30, 994] and [15, 0].
      • Case 14: [15, 3.91, 0]. The spouse at home lives with a son, and the facility spouse fails the DWS test, so the spouse at home gets the single amount.
    • ut_dws_ssp.yaml:
      • Case 2: 994 × 2 / 3 = 662.67; 3.91.
      • Case 3: 1,491 / 2 = 745.50; 5.75 / 2 = 2.875 each.
      • Case 4: 745.50 × 2 / 3 = 497; 12.19 / 2 = 6.095 each.
      • Case 7: (24,852 + 13,644) / 12 = 3,208, and 3,208 − 20 = 3,188 > 1,491. uncapped_ssi is 745.50 − 1,594 = −848.50 each, so 2.875 each.
      • Case 8: 3.91 × 12 = 46.92.
    • ut_dws_ssp_eligible.yaml:
      • Case 3: 2,071 − 20 = 2,051 > 994, so eligible.
      • Case 4: uncapped_ssi 994 > 0 with no take-up, so not eligible.
      • Case 5: $15,000 > $2,000 fails the resource test, so not eligible.
    • integration.yaml:
      • Case 1: SNAP 360 + 180 = 540; HUD 360; spm_unit_benefits 540.
      • Case 4: 662.67 × 12 = 7,952; DWS 46.92; HUD 7,998.92; SNAP 7,952.
      • Case 5: 1,544 / 2 × 2 / 3 = 514.67 each; SNAP 1,029.33; 6.095 each.
      • Case 6: HUD 24,852 + 46.92 = 24,898.92; SNAP 24,852.
  • Changelog: changelog.d/ut-ssp-2026.added.md is top-level, typed added, and accurate.

  • PR body:

    • The case count is right: 40 = 15 + 6 + 8 + 11, matching CI.
    • The history it gives ($3.13 for 1994–2021, $3.31 for 2022–2023, then $3.72, $3.81 and $3.91) matches the obsolete editions.
    • The shared files it lists match the diff.
  • Partner tests: the PR touches none, and Household API Partners passes.

Axiom line assessment

Valid: axiom: Utah Admin. Code R414-306-6; Utah Medicaid Policy Manual 661; Utah DWS Eligibility Manual 205, 205-10, 425-11 TheAxiomFoundation/rulespec-us#1838 queued.

  • Issue state.
    • The PR author filed Update Missouri tax rules for 2022 #1838 on 2026-10-20. It is open, labelled pe-parity, and the only rulespec-us issue that searches for "Utah supplement" and "R414-306" find.

    • rulespec-us main (5796861e58) still has no module. us-ut/ holds only:

      • policies/cms;
      • policies/dws/eligibility-manual/table-1-*;
      • policies/income_tax;
      • regulations/admin-rules/r986/200;
      • statutes/59-10-*.

      So queued is the right form.

  • Dispatch-ready on the Add AMT parameters for 2020-2023 #1467 model:
    • Module paths: 205-10, 425-11, R414-306-6 and Manual 661, plus the federal imports.
    • Corpus citations. I confirmed each against axiom-corpus main:
      • us-ut-manuals.yaml holds the 205, 205-10 and 425-11 paths;
      • us-ut-ssi-state-supplement-rules.yaml holds R414-306 section 6 (expression date 2025-06-19, as of 2026-09-15);
      • us-ut-medicaid-eligibility-manual.yaml holds 661.
    • The recorded blocker. The obsolete 205-10 and SSA's 2011 page are "Needs ingest", for the code-B reading only, and 8 U.S.C. 1612(a) has no module. That is narrower than the siblings' blockers but recorded the same way.
    • Verbatim law. I checked these quotes against the live sources: 205-10, 425-11's SNAP section, 205, R414-306-6(2)-(3), and Manual 661 with its popup text.
    • Required outputs. Eight rows: the DWS amounts, DWS eligibility, the DWS payment, the SNAP exemption, the $15 parameters, $15 eligibility, the $15 payment and the total.
    • Companion tests A–AE come from the sources. Three are marked "Reading" (R, AA and AC), and every one maps to a PolicyEngine case by number.
    • The conflicts comment covers the SNAP exemption and the single person living with others. Each names the reading the PR takes and the cases that pin it.
  • Matches the head:
    • the variable and parameter names and dates;
    • the 8 / 11 / 15 / 6 case counts;
    • the code-B couple mapping;
    • the over-income and take-up readings.
  • If Suggestion 1 or 2 lands: add the 2014–2025 amounts and the new pinned cases to Update Missouri tax rules for 2022 #1838.

CI status

All 27 checks pass (gh pr checks 10170, rechecked at the end of the review). The three "skipping" entries belong to the superseded run 39398181716.

  • The run. Run 39398371554 (pull_request) on head a77c52db80, created 2026-10-20 09:07 UTC and completed 12:32 UTC.
  • Quick Feedback ran the four Utah files: integration.yaml 6, ut_ssp.yaml 15, ut_dws_ssp.yaml 8 and ut_dws_ssp_eligible.yaml 11, all passed.
  • The rest. All 11 Baseline shards, the nine Contrib shards, Microsimulation, both Rest (Python) jobs, Package and compatibility, PR validation and Household API Partners pass.
  • Main since then. main's two newer commits (Encode the published 2027 state paid leave premiums (CO, WA, NY, NJ) and cite the unchanged 2027 rates #10295, paid leave premiums, and a version bump) touch none of the files this PR reads or edits.
  • Local runs. Because CI is green, I ran only two small probes at the head (policyengine-core 3.32.29), for the calculation-order, backdating and couple findings above.

Branch status

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.

Requesting changes for 1 should item; details in the report above. Utah law checks out: the DWS 205-10 amounts for January 1, 2026, R414-306-6 and Manual 661, the 425-11 SNAP exemption and the 205 must-apply rule. Both source conflicts are documented and pinned by tests. rulespec-us#1838 is valid, the NH-sibling bug doesn't occur here, 19 expectations were hand-checked, and CI is green. Should 1 is a population-level bias. The over-income payment path has no take-up, and the PR's own microsim pays 244,694 Utahns $9.36M, against SSA's ~2,414 recipients (about 100x). Remedies: add a data-side take-up or population of the input, document the limitation, or accept it if it's quantified and small. Two optional suggestions are in the report (pre-2026 DWS amounts and two couple readings).

hua7450 and others added 3 commits October 20, 2026 16:06
- programs.yaml notes that the over-income path has no take-up, so
  microsimulation pays far more people than the program reaches.
- Pin a couple with one spouse in a facility where Medicaid pays half or less.
- Note that each spouse's half follows their own living arrangement.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450
hua7450 requested a review from DTrim99 October 21, 2026 15:56
@hua7450

hua7450 commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

Thanks, David. This round's changes are in 164b245, with main merged.

Should 1, the over-income path without take-up: documented (remedy b).

  • The programs.yaml notes, which feed the coverage page, now say the over-income path has no take-up, so microsimulation pays far more people than the program reaches. The code NOTE in ut_dws_ssp_eligible already says so, and the PR body gives the figures (244,694 people, $9.36 million a year).
  • A real take-up needs an input assigned in the microdata, which the batch doesn't add, so I didn't add an input that nothing would populate.

Suggestion 1, the 2014–2025 DWS amounts: not taken. The batch keeps earlier years out of scope; the body records that the obsolete editions were read.

Suggestion 2:

CI: both red jobs come from one test, test_conflict_sounding_comments_do_not_grow; the second job's own shard passes, and it fails only on shard 1's result. The test flags main's Florida and South Dakota LIHEAP files, not this PR's. Main fixed it in #10334, so I'll merge main again after your review.

41 Utah SSP cases pass locally.

@DTrim99 DTrim99 mentioned this pull request Oct 21, 2026
4 tasks done
@DTrim99

DTrim99 commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

PR Review (round 2): Add Utah state supplementation for 2026

PR #10170 (author: hua7450). This round reviews head 164b2450bc; round 1 reviewed a77c52db80. The branch is 11 commits ahead of main and 4 behind. Three commits landed since round 1:

  • 60014e2d33, "Document Utah's DWS take-up gap and pin the facility-spouse couple" (3 files, +41/−1). It does the following:
    • adds two sentences to the Utah programs.yaml notes: "The over-income path has no take-up, so microsimulation pays far more people than the program reaches.";
    • adds ut_dws_ssp.yaml Case 9, a couple with one spouse in a facility where Medicaid pays half or less of the cost;
    • adds a NOTE in ut_dws_ssp.py saying each spouse's half follows that spouse's own living arrangement.
  • c67b5ce2cc, a merge of main at 07eba1aeea with four hand-resolved blocks: HUD unearned, SNAP unearned, programs.yaml and spm_unit_benefits.py.
  • 164b2450bc, a clean merge of main at 1f678c72cd. It brings in Tie source-conflict markers to the register shared with Axiom #10287 (the source-conflict guard) and the LIHEAP wave.

Summary

Ziming closed the round-1 should item with remedy (b), documentation, which round 1 offered as enough on its own. He fixed one suggestion and gave reasons for declining the other two parts, and I accept both.

  • Should 1 (the over-income path has no take-up). It is now documented in three places:
    • the programs.yaml notes, which feed the coverage page;
    • the code NOTE in ut_dws_ssp_eligible;
    • the PR body, which gives the figures: 244,694 Utahns from 146 records, $9.36 million a year, of which 228,388 people and $8.59 million come only through the over-income path.
  • Is the size acceptable? Yes, with documentation.
    • In dollars it is small: $46.92 a year for a single person, $69 for a couple ($146.28 in the household of another), and about $9 million a year statewide.
    • SNAP doesn't count the DWS supplement. HUD counts it, but 30% of $46.92 is about $14 a year in assistance.
    • So household net income, poverty and other programs barely move. Only the program's own caseload and cost are overstated, and those are now flagged where users see them.
  • Suggestion 2(a) is fixed: Case 9 pins the facility-spouse couple at [3.91, 0], and Update Missouri tax rules for 2022 #1838 records it as case AF.
  • Declined with reasons (accepted):
    • Suggestion 1, the DWS amounts for 2014–2025. The PR claims only 2026, as the batch does, and the body records that the obsolete editions were read.
    • Suggestion 2(b), spouses with different household-of-another inputs. It now has a NOTE, which round 1 allowed as the fix.

Merge resolutions. All four hand-resolved blocks keep both sides.

  • Against the merge base, each shared list gains only Utah's line, once.
  • No sibling line is dropped. New Jersey, Pennsylvania, Wyoming, North Carolina, Nevada, Montana, Oklahoma, New York, Rhode Island, South Dakota and Virginia are all present, with the same counts as on main.

The wage lesson (NH #10156 round 3, OK #10165) finds nothing here.

  • Both Utah payments are state-administered, but neither computes its own countable income.
  • The DWS supplement turns on SSI receipt or "SSI criteria other than income". Income matters only for deciding whether SSA would pay SSI, which is SSI's own test, including the cafeteria-plan exclusion.
  • The $15 payment has "no income calculations" and keys on the SSI payment.
  • No rule counts gross wages, so reading ssi_earned_income's net figure is right. The hand trace is below.

Other checks.

  • NH Add New Hampshire state supplementation for 2026 #10156: nothing found. This round adds no variable.
  • Microsimulation default: the DWS over-income path is still on in microsimulation, now documented and acceptable (above). The $15 payment is $0 there, because its facility inputs aren't in the microdata. One optional suggestion is to say both things in the registry notes.

Every new expectation checks by hand (1 case, 3 outputs, 6 values).

CI and branch.

Prior findings status

Finding Status Evidence
Should 1: the over-income path has no take-up, so microsimulation overstates the DWS supplement about 100-fold Fixed (remedy (b), documentation); size judged acceptable The registry. programs.yaml:1260-1273, Utah notes: "The over-income path has no take-up, so microsimulation pays far more people than the program reaches." These notes feed the coverage page, which was the gap round 1 named for remedy (b). The code. The NOTE at ut_dws_ssp_eligible.py:39-41 is unchanged and still accurate: the path "reaches every eligible non-recipient who does not live alone". The body. Its coverage limits give 244,694 Utahns (146 records) and $9.36 million a year: 16,306 SSI recipients account for $0.77 million, and 228,388 people qualify only through the over-income path, for $8.59 million. It sets these against SSA's 2,414 recipients in January 2011. Size, reasoned from the code. The DWS amount is $3.91 a month for a single person, or $5.75 a month for a couple living together. ut_dws_ssp reaches only ut_ssp (and from there household_state_benefits and spm_unit_benefits) and the HUD unearned list. SNAP leaves it out under 425-11. It isn't an SSI income source, and no tax or Medicaid income definition reads it (I grepped the head for every consumer). So a recipient's net income rises by $46.92 a year for a single person, or $69 for a couple ($146.28 in the household of another), and HUD assistance falls by about 30% of that. Remedy (a) needs a take-up value assigned in the microdata, which no model PR can supply. An input gate like Ohio's certification would trade the overstatement for $0 on this path. Ziming declined to add an input that nothing populates. Round 1 listed documentation as a remedy on its own, so I don't reopen this.
Suggestion 1: encode the DWS amounts for 2014–2025 Declined, with a documented deferral (accepted) The three DWS amount files still start at 2026-01-01. The body says "Earlier years use parameter backfilling and are unverified historical estimates; no historical coverage is claimed. The obsolete editions of 205-10 for 2014 to 2025 were read but aren't encoded." programs.yaml claims verified_years: "2026", and #1838 lists history as out of scope. This matches the batch (#10164 Suggestion 1, #10174 Suggestion 1).
Suggestion 2(a): a spouse in a facility where Medicaid pays half or less was not pinned Fixed ut_dws_ssp.yaml:268-300, Case 9, pins my round-1 probe household: SSI [745.50, 745.50], ut_dws_ssp_eligible [true, false], ut_dws_ssp [3.91, 0]. The case comment gives the reading, as does the body's coverage limits. #1838's "Interpretations and gaps" adds it to the living-alone entry, and companion test AF ("Reading") maps to Case 9. It agrees with the variable's documentation, which says such a resident "is judged by household membership like anyone else".
Suggestion 2(b): spouses with different household-of-another inputs get a total that matches neither couple amount Declined, documented (accepted) Round 1's fix allowed "leave it documented". ut_dws_ssp.py:45-48 now says: "Each spouse's half follows that spouse's own living arrangement, as SSI's couple rate does. Household-of-another inputs set for only one spouse give a total that matches neither published couple amount." The documentation still asks for the inputs on both spouses. #1838 has an "Each spouse's arrangement" interpretation, and the body lists it among the coverage limits.

New findings

Critical (must fix)

None.

Should address

None.

Suggestions

1. In the registry notes, give the size of the overstatement and say the $15 payment is $0 in microsimulation (optional).

  • Where: the Utah notes at programs.yaml:1267-1273.
  • Why.
    • The notes say microsimulation "pays far more people than the program reaches" but give no size. The body's figures would let a coverage-page reader judge it: 244,694 people and $9.36 million a year, of which 228,388 people and $8.59 million come through the over-income path, against 2,414 recipients when SSA paid the supplement (January 2011).
    • The $15 payment needs ssi_lives_in_medical_treatment_facility and ssi_medicaid_pays_majority_of_care. Both are boolean inputs that default to false, so microsimulation pays none of it. The NOTE at ut_dhhs_ssp_eligible.py:26-28 says so ("reaches household calculations only"), but the notes don't.
  • Precedent. Ohio's notes say "microsimulation pays no RSS" (Add Ohio state supplementation for 2026 #10164 round 2), and Oregon's round 3 Suggestion 1 asks for the same sentence.
  • Fix (optional). For example: "In microsimulation the over-income path reaches about 228,000 Utahns ($8.6 million a year), against 2,414 recipients in January 2011; the $15 payment's facility inputs aren't in the microdata, so it pays $0 there."

Verified

  • Merge resolutions (c67b5ce2cc). There are four hand-resolved blocks; each keeps both sides.

    • HUD annual_income/sources/unearned.yaml. Main's mt_ssp, ok_ssp, ny_ssp, ri_ssp, sd_ssp and va_ag are kept, and ut_dws_ssp follows va_ag, once (line 33).
    • SNAP income/sources/unearned.yaml. The Utah comment and ut_dhhs_ssp sit between tx_ssi_state_supplement and main's va_ag (lines 60-65). ut_dhhs_ssp appears once, and ut_dws_ssp stays off the list.
    • programs.yaml. Main's Montana, Oklahoma, New York, Rhode Island, South Dakota and Virginia entries are kept, and Utah follows Virginia, once (line 1260), with the round-2 notes. The registry tests pass in CI.
    • spm_unit_benefits.py. "mt_ssp" through "va_ag" are kept, and "ut_ssp" follows "va_ag", once (line 35).
    • Overall.
      • Against the merge base 1f678c72cd, all 21 changed files show additions only, apart from the one-line docstring edit in medicaid_enrolled_for_ssi_state_supplement.py (+1,416/−1).
      • ut_ssp appears in all four household_state_benefits.yaml year blocks (lines 88, 197, 317, 438).
      • In each of the five shared files, every sibling's count matches main: nj_ssp, pa_ssp, wy_ssp, nc_sa/nc_sa_countable_for_hud, nv_oss, mt_ssp, ok_ssp, ny_ssp, ri_ssp, sd_ssp and va_ag.
      • The second merge, 164b2450bc, had no hand-resolved files.
  • The wage lesson, against both Utah rules.

    • The DWS supplement. 205-10 sets no state income count: "Customers who are receiving Supplemental Security Income (SSI) or who meet SSI criteria other than income are eligible".
      • Income enters the model only through the 205 take-up reading (ut_dws_ssp_eligible.py:42-44). There, uncapped_ssi > 0 without SSI receipt refuses the supplement. That asks whether SSA would pay SSI, so SSI's own countable income, with POMS SI 00820.102 C.2's salary-reduction exclusion (Document disjoint health premium inputs and correct consumer treatment #10046), is the right test.
      • Neither 205-10 nor 205 mentions gross wages or payroll deductions.
    • The $15 payment. R414-306-6(2) applies to a resident "who receives a Supplemental Security Income (SSI) payment". Manual 661 says "There are no income calculations that reduce the $15 amount." The model keys on ssi, the SSA-computed payment.
    • Worker with pre-tax premiums, traced by hand. Take an aged Utahn living with a daughter (code A), with wages of $2,100 a month, $200 a month of pre-tax premiums, no other income, and SSI not taken up.
      • ssi_earned_income is 2,100 − 200 = 1,900. Countable income is (1,900 − 20 − 65) / 2 = 907.50, so uncapped_ssi is 994 − 907.50 = 86.50, which is above 0. The 205 reading refuses the supplement, so ut_dws_ssp_eligible is false.
      • Counting gross wages would give (2,100 − 85) / 2 = 1,007.50, above $994. That would wrongly put the person on the over-income path and pay $3.91.
      • SSA would pay this person $86.50, because it excludes the premiums. So 205's "must apply for other ... benefits" applies, and the model's result is right.
      • With SSI taken up, the person gets SSI of 86.50 and $3.91.
  • The NH Add New Hampshire state supplementation for 2026 #10156 check: nothing found.

    • This round adds no variable. The Utah-gated variables are still two bools and three floats, and none keys a parameter or breakdown.
    • The only enum read, the federal ssi_federal_living_arrangement, is compared with ==. Parameters are read by attribute.
    • ut_ssp.yaml Case 15 still runs Utah and Massachusetts in one simulation. In CI, Microsimulation passes, and the Rest (Python) shards fail only on the ratchet test.
  • The source-conflict guard (Tie source-conflict markers to the register shared with Axiom #10287). The head contains Tie source-conflict markers to the register shared with Axiom #10287 (ce9377ee80), and CI's guard run on this head lists no Utah file. So the new NOTE, the SNAP comment and the code NOTEs add nothing to the ratchet. The PR only adds lines to shared files, so no KNOWN_UNMARKED count can drop. main's Count the FL and SD LIHEAP comments in the source-conflict ratchet baseline #10334 touches only the test's baseline, so the tree merged with main adds nothing either.

  • Hand check of every new expectation (ut_dws_ssp.yaml Case 9, 2026-01; 2026 couple FBR $1,491):

    • ssi [745.50, 745.50]. ssi_medicaid_pays_majority_of_care is false, so person1 isn't MEDICAL_TREATMENT_FACILITY. Neither spouse has household-of-another inputs, so both are in their own household. Both are aged with no income, so 1,491 / 2 = 745.50 each. This is the federal SSI model's existing output, and the PR doesn't change SSI.
    • ut_dws_ssp_eligible [true, false].
      • Both receive SSI. Neither is in a Medicaid institution or incarcerated.
      • housemate is [false, true], because person1 is in a facility, so the household sum is 1.
      • Person1: 1 − 0 = 1, so person1 doesn't live alone. Person2: 1 − 1 = 0, so person2 lives alone.
    • ut_dws_ssp [3.91, 0]. The marital-unit sum of eligibility is 1, not 2, so person1 gets individual (3.91). Person2 fails defined_for, so gets 0.
  • Batch cross-cutting checks (one line each):

    # Check Verdict
    1 Axiom line Valid, rulespec-us#1838 queued; see below
    2 House-template descriptions Unchanged since round 1; all five follow it
    3 Backdating Documented deferral (prior Suggestion 1, accepted); the $15 and $1.00 parameters start in 2008
    4 tx_rebate.py copy Still deferred to Keep one spm_unit_benefits list so reforms that add a benefit stop dropping baseline programs #10226 (open), as for the siblings
    5 Aggregate wiring Complete and unchanged; no double count with ssi
    6 Income attribution Facility-spouse couple now pinned (Case 9); mixed-arrangement spouses documented
    7 Sibling conflicts Branch note only (see Branch status)
    8 CI Two known main-caused failures, no Utah file (see CI status)
    9 State law Unchanged since round 1; the new reading is documented and pinned
  • The PR body.

    • It claims "41 Utah SSP YAML cases", which matches CI's 6 + 15 + 9 + 11.
    • Its coverage limits now cover the take-up gap with figures, the facility-spouse couple (Case 9) and the mixed-arrangement spouses.
    • Its axiom line is unchanged.
  • Unchanged since round 1 and still correct:

    • the amounts ($3.91, $12.19 and $5.75; $15 with the $1.00 floor);
    • the exclusions, the code-B mapping, the SNAP exemption under 425-11 and the HUD split;
    • the Medicaid dependency;
    • the changelog fragment changelog.d/ut-ssp-2026.added.md.

    The PR touches no partner test files, and Household API Partners passes.

Axiom line assessment

Valid: axiom: Utah Admin. Code R414-306-6; Utah Medicaid Policy Manual 661; Utah DWS Eligibility Manual 205, 205-10, 425-11 TheAxiomFoundation/rulespec-us#1838 queued.

  • Issue state.
    • Update Missouri tax rules for 2022 #1838 is open and labelled pe-parity. It was last updated on 2026-10-21 at 04:58 UTC, after 60014e2d33 (2026-10-20 20:06 UTC).
    • rulespec-us main (5796861e58, 2026-10-20) still has no module for R414-306-6, Manual 661, 205-10 or 425-11 under us-ut/. So queued is still the right form.
  • Dispatch-ready.
    • The module paths, corpus citations, verbatim law, required outputs and the "Needs ingest" blocker (code B reading only) are as round 1 confirmed.
    • The tests line now says 41 cases: ut_dws_ssp.yaml (9), ut_dws_ssp_eligible.yaml (11), ut_ssp.yaml (15) and integration.yaml (6).
    • Companion tests now run A to AF. AF ("Reading") is the facility-spouse couple and maps to Case 9.
    • "Interpretations and gaps" covers the facility resident's living-alone reading (case AF), the per-spouse arrangement, and "the over-income path has no take-up".
  • Matches the head: the case counts, the Case 9 values and both new interpretations.
  • If Suggestion 1 lands, nothing in Update Missouri tax rules for 2022 #1838 needs to change.

CI status

25 pass, 2 fail, 0 pending (gh pr checks 10170, rechecked at the end of the review). The run is 39545898846 (pull_request) on head 164b2450bc; it started 2026-10-21 04:46 UTC and finished 09:14 UTC.

  • The two failures are the known main-caused ratchet failure, not a finding.
    • "Full Suite - Rest (Python, shard-1 + variables)" fails one test: test_source_conflicts.py::test_conflict_sounding_comments_do_not_grow (1 failed, 2,499 passed, 11 skipped).
    • Its grown set lists only Florida and South Dakota LIHEAP files: fl_liheap_eligible.py, fl_liheap_income_limit.py, fl_liheap.py, fl/.../payment/base_amount.yaml and sd/.../limits/table/in_effect.yaml. No Utah file is among them.
    • "Full Suite - Rest (Python + variables)" passes all its own tests (60, 55, 1,767 and 980). It fails only because it aggregates the shards: "Rest shards did not all succeed: shard-1=failure, shard-2=success".
    • Count the FL and SD LIHEAP comments in the source-conflict ratchet baseline #10334 (fec98b87c8) fixed the baseline on main at 13:24 UTC, after this run began. Merge main and re-run. Ziming says he will do that after this review.
  • Passed.
    • Quick Feedback ran all four Utah files: integration.yaml 6, ut_ssp.yaml 15, ut_dws_ssp.yaml 9 and ut_dws_ssp_eligible.yaml 11, all passed.
    • The rest. All 11 Baseline shards, all 9 Contrib shards, Microsimulation, Household API Partners, Package and compatibility, and PR validation pass.
  • Local runs: none. CI covers every touched file, and the traces above are by hand.

Branch status

Verdict: APPROVE

@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: the microsim overcount item is resolved by documentation (244,694 people, $9.36M/yr). At $47-146 a year per recipient, with SNAP excluding it, the household and poverty effects are negligible, so I accept it. Suggestion 2(a) is fixed. The four hand-resolved merge blocks keep every sibling's line and add Utah's once. The two red checks are the known FL/SD LIHEAP ratchet failure from before #10334, so merge main and re-run. One optional suggestion. Full report in the comment above.

hua7450 and others added 2 commits October 21, 2026 21:18
Each sibling SSP PR adds its line to the same unsorted lists, so the
entries now sit at different anchors and the PRs merge without conflicts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450
hua7450 merged commit eb8a7f5 into main Oct 22, 2026
27 checks passed
@hua7450
hua7450 deleted the ut-ssp-2026 branch October 22, 2026 04:52
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.

2 participants