Skip to content

Add Wyoming state supplementation for 2026 - #10174

Merged
hua7450 merged 6 commits into
mainfrom
wy-ssp-2026
Oct 16, 2026
Merged

hua7450 merged 6 commits into
mainfrom
wy-ssp-2026

Conversation

@hua7450

@hua7450 hua7450 commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

What and why

Implements Wyoming State Supplemental Payment for researched 2026 coverage, with state-specific eligibility, payment rules, and integration into benefit totals and SNAP/HUD income.

Models the flat payment and sole-income test using the model's SSI cash-income sources. Noncash support and income sources absent from the federal SSI income model are not separately evaluated.

Parameter backfilling does not establish verified historical coverage.

Related: #9066; historical backdating remains separate. #10226 tracks the reform copies of spm_unit_benefits (such as the Texas rebate's), which this PR leaves unchanged.

References

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

Test plan

  • 16 source-based YAML cases (13 in wy_ssp.yaml, 3 in integration.yaml) pass locally after merging main, along with the Texas rebate tests and the aggregate list integrity test.
  • Synthetic national simulation: 153 households, 204 people, all 50 states and DC; finite nonnegative benefit and income aggregates.
  • make format, reference/registry checks, and git diff --check.
  • State changelog fragment.

axiom: W.S. 42-2-103(d); Wyoming EOM M1804 TheAxiomFoundation/rulespec-us#1766 queued

hua7450 and others added 3 commits October 12, 2026 14:40
- Replace builtin sum() over entity calls with an explicit loop (code-health rule)
- Gate on (ssi > 0) | receives_ssi
- Registry placement and comments, SNAP reference title, shorter programs.yaml note
- Cite W.S. 42-2-103(d) and the 2026 budget authority
- Loss-floor and reported-receipt cases; realistic households in Cases 2, 3 and 8

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
@DTrim99

DTrim99 commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Add Wyoming state supplementation for 2026

PR #10174 (author: hua7450, head 34ba99fefa, merge-base 2e9eea7e6e). 11 files (+264/−4), 3 commits.

Summary

The PR adds Wyoming's State Supplemental Payment (SSP):

  • Parameter. gov.states.wy.health.ssp.amount is $20 a month from 2021-07-01.
  • Eligibility. wy_ssp_eligible (Person, MONTH, defined_for = StateCode.WY) requires SSI receipt, read as ssi > 0 or the reported receives_ssi. It also requires that no SSI earned or unearned income source is positive in the month.
  • Benefit. wy_ssp adds the parameter under defined_for = "wy_ssp_eligible".
  • Aggregates. The payment is added to household_state_benefits (all four year blocks), spm_unit_benefits, SNAP unearned income and HUD unearned income.
  • Registry and tests. There is a programs.yaml entry (partial, verified_years: "2026") and 13 YAML cases.

The policy content is right for 2026:

  • The $20 amount, the "no other income" rule, Wyoming residence and automatic state issuance all match W.S. 42-2-103(d) and the Wyoming Eligibility Online Manual (EOM) M1804.
  • Paying each person, including each member of a couple, and not treating in-kind support as disqualifying are both supported by the pre-2021 budget schedule. That schedule paid "each member of a couple" and paid a higher rate "for an individual living in the household of another".
  • All 13 expectations check by hand and pass at the head.
  • The code follows the established SSP patterns (ks_sspp, ga_ssp_person). CI is green and the branch merges cleanly with main.

Two should-fix items remain:

  • The PR body's axiom: needed isn't a valid form for a staff PR.
  • The parameter description doesn't follow the house template.

Critical (must fix)

None.

Should address

1. axiom: needed isn't valid here, and this PR adds a program.

  • Where: the last line of the PR body, axiom: needed.
  • The rule. main's CLAUDE.md, "Axiom Parity (required for policy changes)":
    • "Put one line in the PR body: axiom: <legal id> encoded-correct | <rulespec PR> encoded | <rulespec issue> queued | n/a: <reason>."
    • "If you are an external contributor and cannot complete the Axiom work, use axiom: needed; a maintainer will follow up."
    • The author is PolicyEngine staff. The same CLAUDE.md names @hua7450 as the approver for partner-test edits. So needed doesn't apply.
    • CONTRIBUTING.md#axiom-parity: "That covers a new program, a parameter or threshold update, an eligibility rule and a bug fix." This PR adds a new program, and none of the n/a grounds applies.
  • Nothing to point to yet.
    • rulespec-us main has no module for this. us-wy/ holds only policies/cms/ (CHIP and Medicaid levels) and policies/dfs/snap-power-policy-manual/.
    • Issue searches for "Wyoming supplemental", "42-2-103", "Wyoming SSP" and "us-wy" find nothing covering it.
  • Precedent.
  • Fix: file a dispatch-ready pe-parity issue on the Add AMT parameters for 2020-2023 #1467 / DC CDCC #1708 model, then add a line such as axiom: W.S. 42-2-103(d); Wyoming EOM M1804 TheAxiomFoundation/rulespec-us#NNNN queued. The issue needs:
    • Module paths, for example us-wy/statutes/42/42-2-103.yaml (subsection (d)) and us-wy/policies/wdh/eligibility-online-manual/m1804-state-supplemental-payments.yaml for the $20 amount.
    • Corpus citations and the blocker.
    • Verbatim law: the (d) text and the EOM M1804 criteria quoted under Verified correct.
    • Required outputs (Person, monthly):
      • a Money parameter of $20
      • a Judgment: receives a federal SSI payment in the month AND has no other income in the month AND is a Wyoming resident
      • a Money output: $20 or 0, paid to each member of an eligible couple
    • Companion tests from the same sources:
      • SSI only: 20
      • SSI plus wages: 0
      • no SSI: 0
      • eligible couple with no other income: 20 each
      • $30 institutional SSI only: 20 (EOM living arrangement code D)
  • The batch. The sibling SSP PRs (Add New Hampshire state supplementation for 2026 #10156–Add Wisconsin state supplementation for 2026 #10173, Add Nevada optional state supplementation for 2026 #10001, Add Montana state supplementation for 2026 #8233, Add Iowa state supplementation for 2026 #8017) all carry axiom: needed and need the same fix.

2. The parameter description doesn't follow the house template.

  • Where: policyengine_us/parameters/gov/states/wy/health/ssp/amount.yaml:1: "Wyoming provides this monthly State Supplemental Payment to residents whose only income is SSI."
  • The template: "one sentence, spell the program out fully (no acronyms), [State] [verb] ... under the [Full Program Name] program."
    • This sentence uses the acronym "SSI" and has no "this amount ... under the ... program" clause.
    • The sibling SSP amounts on main follow the template. For example, ks/kdhe/sspp/payment/amount.yaml: "Kansas provides this amount as the monthly cash payment under the State Supplemental Payment Program." And ga/dhs/ssp/amount.yaml: "Georgia provides this amount as the monthly supplement under the State Supplementary Payment program."
  • Fix: description: Wyoming provides this amount as the monthly payment under the State Supplemental Payment program. The sole-income condition already lives in wy_ssp_eligible.

Suggestions

  1. Amounts before July 2021 (deferral documented in the PR body).
    • The leak. amount.yaml:3 has only 2021-07-01: 20, so backdating copies $20 to 2015. The probe at the head gives 2015-01, 2018-01, 2020-01 and 2021-06 a wy_ssp of 20 each.
    • The law before July 2021 was a four-tier schedule. 2016 Budget Act SF0001 (Ch. 31), Section 048, footnote 2 (PDF p. 20; the footnote opens on p. 19) sets, for July 1, 2016 through June 30, 2018:
      • "(i) Twenty-five dollars ($25.00) for an individual living in his own household"
      • "(ii) Twenty-seven dollars and eighty cents ($27.80) for each member of a couple living in their own household"
      • "(iii) Twenty-eight dollars and seventy-two cents ($28.72) for an individual living in the household of another"
      • "(iv) Thirty dollars and fifty-seven cents ($30.57) for each member of a couple living in the household of another"
    • When it changed. The 2021 HB0001 (PDF p. 27) strikes the same four amounts for "the period beginning July 1, 2020 and ending June 30, 2022". It substitutes "the lowest amount required under federal law in order to remain eligible for funding under Title XIX". That matches EOM M1804's "Current Policy Effective Date: July 1, 2021".
    • Scope of the follow-up. Wyoming SSP 2017, 2018, 2019 #9066 (open) is titled "Wyoming SSP 2017, 2018, 2019". The four-tier schedule actually covers at least July 2016 to June 2021. The model understates it by $5.00 to $10.57 a month per person.
    • Fix: widen Wyoming SSP 2017, 2018, 2019 #9066 to 2015 through June 2021. Encoding it needs a living-arrangement tier: ssi_federal_living_arrangement == ANOTHER_PERSONS_HOUSEHOLD, and couple status.
  2. The Texas rebate reform's copy of spm_unit_benefits now omits wy_ssp.
    • Where: policyengine_us/reforms/states/tx/rebate/tx_rebate.py:53-122 redefines spm_unit_benefits nationwide with a hard-coded list that mirrors the baseline. It has every baseline SSP except ca_state_supplement (a pre-existing gap) and, after this PR, wy_ssp.
    • Probe at the head: a Wyoming aged SSI-only single in 2027 has spm_unit_benefits of 13,202.26 at baseline and 12,962.26 under the Texas-only reform. spm_unit_net_income falls by the same $240. household_net_income is unchanged because the reform appends to the parameter list.
    • Why it isn't caught. tests/test_aggregate_list_integrity.py checks reform copies only for contrib entries.
    • Fix: insert "wy_ssp", # Wyoming benefits after "fl_oss", at line 65, as spm_unit_benefits.py does, and add ca_state_supplement while there. The sibling SSP PRs have the same gap.
  3. Write down and pin the income-attribution readings.
    • The rule is person-level. It checks only the person's own sources. A couple, a spouse and a deemed child each show what that means:
      • Eligible couple where only spouse A has $1,200 a year of Social Security. Probe at the head: SSI is 705.50 each and wy_ssp is [0, 20].
      • Eligible individual with an ineligible spouse earning $12,000. Probe: SSI is [994, 0] and wy_ssp is [20, 0].
      • Case 8 (wy_ssp.yaml:113-115). It pays a child with $561.08 of deemed parental income, on the reasoning that deemed income is "not one of" the child's sources.
    • The federal rule leans the other way on deeming. 20 CFR 416.1160(a) (LII): "We use the term deeming to identify the process of considering another person's income to be your own."
    • The state material neither confirms nor rules out the PR's reading.
      • The statute leaves "income" undefined.
      • EOM M1804 lists child-claim record codes M, F and P and living arrangement C, "Parent's household (child cases only)", among those "used to determine the pay rate". That suggests deeming cases are paid.
    • Fix: state the deemed-income and couple readings as assumptions in the wy_ssp_eligible.py:18-22 comment, next to the existing noncash-support NOTE. Add the two cases above to wy_ssp.yaml so the chosen behavior is pinned.
  4. Assert the new aggregate wiring.
    • The integration file checks SNAP and household_state_benefits but not spm_unit_benefits or HUD income. Removing wy_ssp from either list would pass every test.
    • Probe at the head, aged SSI-only single in 2026: hud_annual_income is 12,168 (994 × 12 + 240).
    • Fix: add hud_annual_income: 12_168 to an annual integration case, or assert wy_ssp inside a spm_unit_benefits difference.
  5. Polish.
    • Blank lines. The PR adds a stray blank line before metadata: in household_state_benefits.yaml (after ny_child_care_subsidies) and in hud/annual_income/sources/unearned.yaml. Neither relates to Wyoming.
    • Case count. The PR body says "11 source-based YAML cases". The PR has 13: 11 in wy_ssp.yaml and 2 in integration.yaml.

Verified correct

  • Statute. W.S. 42-2-103(d) (PDF p. 7): "The department of health shall, by rule, administer a state supplemental security income program entitling any individual receiving payments under the federal supplemental security income program with no other income during any one (1) calendar month, to a payment for each month the condition exists. The monthly payment under this subsection shall be established by the legislature within the department of health's biennial budget appropriation, which shall not be less than the required payment under applicable federal law."
    • The person-level, monthly, receipt-gated design matches it.
  • Agency manual. EOM M1804 ("Current Policy Effective Date: July 1, 2021"):
    • Criteria: "Clients must meet all of the following criteria to be eligible: Client's sole source of income is an SSI payment. Client is a Wyoming resident."
    • Amount: "State Supplements Payments are $20.00 Monthly"
    • Issuance: "Eligibility for State Supplemental payments is determined by using the information SSA provides through an interface between the SDX and WES. Payments are directly deposited into the account the client uses for their SSI payment."
    • No separate take-up. Processing is automatic, so following SSI receipt is right.
    • The state issues the payment, so it doesn't go through SSA's federal SSI amounts. POMS SI DEN01415 has no Wyoming optional-supplement section; only .010 (Montana) resolves.
  • Budget authority. Both budget acts set the amount to "the lowest amount required under federal law in order to remain eligible for funding under Title XIX of the Social Security Act, as amended":
    • 2024 HB0001 (Enrolled Act No. 50), Section 048, footnote 2 (PDF p. 21), for July 1, 2024 – June 30, 2026
    • 2026 SF0001 (Enrolled Act No. 27), footnote 2 (PDF p. 21, continued on p. 22), for July 1, 2026 – June 30, 2028
    • The EOM supplies the $20 figure, so 2026 is covered on both sides of the July 1 biennium boundary.
  • Per person, and in-kind support doesn't disqualify.
    • The pre-2021 schedule paid "each member of a couple" and paid a higher rate to "an individual living in the household of another". That supports $20 per spouse (integration Case 2) and leaving in-kind support out of the other-income test (PR NOTE).
    • Probe: a person in another's household gets SSI 662.67 and wy_ssp 20.
  • Institutional SSI. EOM code "D Title XVI institution" supports Case 6, $30 SSI plus $20.
  • Kept out of SSI income. 20 CFR 416.1124(c)(2) (LII) excludes "Assistance based on need which is wholly funded by a State ... includes State supplementation of Federal SSI benefits". The PR rightly leaves wy_ssp out of the SSI unearned sources, so there is no circularity.
  • Counted for SNAP. 7 CFR 273.9(b)(2)(i) (LII) counts "supplemental security income (SSI) ... or other assistance programs based on need". So does the SNAP list entry.
    • SNAP reference. The PR consolidates the SNAP list's two 7 CFR 273.9 references into one entry, which follows main's one-entry-per-document rule.
  • HUD list. Adding wy_ssp to HUD unearned income matches the batch convention: every sibling SSP PR adds its SSP there.
  • Code:
    • The adds-a-parameter pattern matches ks_sspp.py and ga_ssp_person.py.
    • The (ssi > 0) | receives_ssi gate matches ks_sspp_eligible.py and the Medicaid SSI-recipient variables.
    • The source loop is vectorized (| over arrays) and counts only positive amounts, so a loss can't offset another source.
    • No hard-coded policy values, and the periods are correct: YEAR flows ÷12 into MONTH, and the MONTH benefit sums to 240 a year.
    • References are one entry per document, and the anchors open the cited text:
      • 42-2-103(d) on p. 7
      • footnote 2 on p. 21
      • the 2026 title is quoted and ends #page 21-22, as main's CLAUDE.md requires
    • Callers. wy_ssp is referenced only in the lists this PR edits. It appears in all four household_state_benefits year blocks (2023–2026), so the integrity guard passes.
  • Hand checks: all 13 expectations. The 2026 federal benefit rate is $994 for an individual and $1,491 for a couple (gov.ssa.ssi.amount).
    • Case 1: SSI 994 and wy_ssp 20.
    • Case 2: $5.55 / 12 = $0.4625 of interest. That is inside the $20 exclusion, so SSI is 994. It is positive income, so wy_ssp is 0.
    • Case 3: $8,580 / 12 = $715; ($715 − $20 − $65) × 0.5 = $315 countable; $994 − $315 = 679. wy_ssp is 0.
    • Cases 4 and 5: no take-up gives 0; Utah gives 0.
    • Case 6: a Medicaid facility pays $30 SSI, and wy_ssp is 20.
    • Case 7: $120 / 12 = $10 of Social Security is positive, so wy_ssp is 0, despite the self-employment loss.
    • Case 8:
      • parents: ($4,189.17 − $20 − $65) × 0.5 = $2,052.08, less $1,491, leaves $561.08 deemed
      • child: $561.08 − $20 = $541.08 countable, so SSI is $994 − $541.08 = 452.92
      • wy_ssp is [0, 0, 20]
    • Case 9: 12 × 20 = 240.
    • Case 10: −$1,000 a month isn't above 0, so SSI is 994 and wy_ssp is 20.
    • Case 11: reported receipt with $0 modeled SSI gives 20.
    • Integration Case 1: SNAP unearned income is 994 + 20 = 1,014, and household_state_benefits is 20.
    • Integration Case 2: 1,491 / 2 = 745.50 SSI each, wy_ssp 20 each, and a household total of 40.
  • Extra probe: with reported receipt plus $15,000 of Social Security, SSI is 0 and wy_ssp is 0. The receipt override doesn't bypass the income test.
  • Changelog: changelog.d/wy-ssp-2026.added.md is top-level, typed added, and accurate.
  • Registry:
    • The programs.yaml entry sits under ssi_state_supplement.state_implementations.
    • Its fields match the WA and MO entries. partial fits the unmodeled pre-2021 schedule.
    • parameter_prefix resolves.

Axiom line assessment

Invalid (Should 1).

CI status

All 26 checks pass (gh pr checks 10174). Three "skipping" entries belong to a superseded earlier run.

  • The run. Run 38367949183 (pull_request, 2026-10-13 08:14 UTC) on head 34ba99fefa.
  • Main since then. main has since gained 23 commits. Of the files this PR depends on, only programs.yaml changed (+3 lines, the California entry). The SSI sources, the aggregate lists, spm_unit_benefits and tx_rebate.py are untouched.
  • Local run. The two new test files at the head with policyengine-core 3.33.2: 13 passed.
  • Partner tests. The PR touches none, and the Household API Partners job passes.

Branch status

  • Position: 23 commits behind main, 3 ahead.
  • Merge: git merge-tree --write-tree PolicyEngine/main 34ba99fefa is clean (tree 3bf5e94084).
  • Sibling conflicts. The sibling SSP PRs insert lines at the same places, in household_state_benefits.yaml, hud/.../unearned.yaml, snap/.../unearned.yaml, programs.yaml and spm_unit_benefits.py.

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.

The $20 amount, the sole-income rule, residence and automatic state issuance all match W.S. 42-2-103(d) and EOM M1804, and all 13 expectations check by hand. Two should items (see the comment above): (1) 'axiom: needed' isn't available for staff PRs, and this adds a program; rulespec-us has nothing for W.S. 42-2-103(d), so file a dispatch-ready pe-parity issue and add a queued line (precedent #9709 → rulespec-us#1450). The sibling 2026 SSP PRs need the same. (2) The amount.yaml description doesn't follow the template.

hua7450 and others added 2 commits October 14, 2026 13:34
…and HUD test

- Use the parameter description template for the Wyoming amount.
- Document that only the person's own income sources count, and pin it with
  a couple case and an ineligible-spouse deeming case.
- Assert the supplement's HUD annual income wiring in an annual integration case.

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

hua7450 commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator Author

Thanks, David. The fixes are in 0dd7cd2, followed by a merge of main (2182a77).

  • Should 1 (Axiom line): filed Encode Wyoming's State Supplemental Payment (W.S. 42-2-103(d), EOM M1804): $20 a month to each SSI recipient with no other income (PE-US PR 10174) TheAxiomFoundation/rulespec-us#1766 (pe-parity). It has:

    • the module paths and corpus citations;
    • the verbatim text of W.S. 42-2-103(d), EOM M1804 and the 2026 budget-act footnote;
    • the required outputs, and companion tests A to G, each mapped to an existing case.

    The axiom line now reads W.S. 42-2-103(d); Wyoming EOM M1804 TheAxiomFoundation/rulespec-us#1766 queued.

  • Should 2 (description): amount.yaml now reads "Wyoming provides this amount as the monthly payment under the State Supplemental Payment program."

  • Suggestion 1 (history): still out of scope here. The July 2016 to June 2021 schedule needs a living-arrangement tier and couple rates. We're keeping history out of these SSP PRs in case a state changed its rules in a year that needs new variables or code.

  • Suggestion 2 (Texas rebate copy): I read Add Texas $1,500 per-household rebate as a contributed reform #9037.

    • spm_unit_benefits keeps its list in Python rather than in a parameter, so the reform replaces the variable with a copy of the baseline list plus tx_rebate.
    • With the reform on, that copy applies to every household, so anything added to the baseline later (ca_state_supplement already, and each new SSP) drops out unless it is copied in too. The three Tlaib reforms have older copies with the same problem.
    • Rather than adding a line to tx_rebate.py in each of the 16 SSP PRs, I filed Keep one spm_unit_benefits list so reforms that add a benefit stop dropping baseline programs #10226 to keep the list in one place and have each reform append only its own program. That fixes California and the Tlaib copies at the same time, and this PR leaves tx_rebate.py unchanged.
  • Suggestion 3 (income attribution): the own-sources reading is now a NOTE in wy_ssp_eligible. Two new cases pin it:

    • Case 12: a couple where one spouse has $100 a month of Social Security, giving wy_ssp of [0, 20].
    • Case 13: a recipient with an ineligible spouse earning $12,012 a year, giving SSI of 994 and wy_ssp of [20, 0].

    EOM M1804's pay-rate codes include "Individual (with or without ineligible spouse)", which fits Case 13.

  • Suggestion 4 (HUD wiring): integration Case 3 is annual and asserts hud_annual_income of 12,168.

  • Suggestion 5 (polish): I kept the blank lines before metadata:; they come from our formatting pass and are harmless. The PR body now gives 16 cases.

All 16 Wyoming cases, the Texas rebate tests and the aggregate list integrity test pass locally on the merged head.

@hua7450
hua7450 requested a review from DTrim99 October 14, 2026 17:37
@DTrim99

DTrim99 commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

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

PR #10174 (author: hua7450). This round reviews head 2182a772c8; round 1 reviewed 34ba99fefa. Two commits landed in between: the review-response commit 0dd7cd2774 (4 files, +68/−1) and a merge of main at 8ae01aa3cb with no hand edits.

Summary

Both round-1 should items are fixed:

  • Axiom line. It now cites rulespec-us#1766, which is open, labelled pe-parity, dispatch-ready and consistent with the head.
  • Description. amount.yaml now uses the house template.

Three suggestions are fixed: the own-income NOTE with Cases 12 and 13, the HUD assertion, and the case count. The other two are documented deferrals, and the blank-line nit was declined with a reason. All 16 cases check by hand and pass, both locally and in CI. The one red check is a runner shutdown (exit 143), not a test failure.

Round-1 findings status

Finding Status Evidence
Should 1: axiom: needed isn't valid for a staff PR that adds a program Fixed The PR body now reads axiom: W.S. 42-2-103(d); Wyoming EOM M1804 TheAxiomFoundation/rulespec-us#1766 queued. #1766 is open and labelled pe-parity. It has module paths, corpus citations, verbatim law, required outputs and companion tests A–G, and its values match the head. See the Axiom line assessment.
Should 2: amount.yaml description is off-template Fixed amount.yaml:1 now reads "Wyoming provides this amount as the monthly payment under the State Supplemental Payment program." That is the wording round 1 proposed, and it matches the Kansas and Georgia amounts.
Suggestion 1: $20 backdates to before July 2021, when a four-tier schedule applied Declined with a reason (documented deferral) Reason: Ziming keeps history out of the SSP batch because the July 2016 – June 2021 schedule needs a living-arrangement tier and couple rates. The PR body still links #9066, and #1766 records the four amounts and their sources. Still the case: amount.yaml has only 2021-07-01: 20, so 2015 through June 2021 read $20. #9066 is still titled "Wyoming SSP 2017, 2018, 2019", though the schedule covers at least July 2016 – June 2021.
Suggestion 2: the spm_unit_benefits copy in tx_rebate.py omits wy_ssp Declined with a reason (deferred to #10226) Reason: rather than patching each of the 16 SSP PRs, Ziming filed #10226 (open). It proposes one shared list, with each reform appending only its own program. That covers the Texas rebate and the three Tlaib copies. Still the case: at the head, tx_rebate.py still goes from fl_oss (line 65) to ks_sspp (line 66). Under the Texas-only reform, a Wyoming SSP recipient still loses $240 of SPM resources until #10226 lands. The main merge only renamed unemployment_compensation in that file.
Suggestion 3: write down and pin the income-attribution readings Fixed NOTE: added at wy_ssp_eligible.py:23-27. Case 12 (wy_ssp.yaml:151) pins [0, 20] for an eligible couple where one spouse has Social Security. Case 13 (wy_ssp.yaml:176) pins SSI [994, 0] and wy_ssp [20, 0] for a recipient whose ineligible spouse has wages. The hand checks and documentation review are under Verified.
Suggestion 4: assert the aggregate wiring Fixed Integration Case 3 (integration.yaml:32-40, period 2026) asserts hud_annual_income: 12_168. Removing wy_ssp from the HUD list now fails a test. Round 1 offered either this or a spm_unit_benefits assertion, so this closes it.
Suggestion 5: polish Case count fixed; blank lines declined with a reason Case count: the PR body now says 16 cases (13 + 3), which is right. Blank lines: the ones before metadata: in household_state_benefits.yaml and hud/annual_income/sources/unearned.yaml stay. Ziming calls them a harmless artifact of his formatting pass, and every sibling SSP PR has them. They're harmless, so this is accepted.

New findings

Critical: none.

Should: none.

Suggestions: none.

The review-response commit adds only a description fix, a code comment and three test cases. The main merge doesn't change any of this PR's results (see Verified).

Verified

  • New expectations, checked by hand. The 2026 federal benefit rates are $994 for an individual and $1,491 for a couple (gov.ssa.ssi.amount).

    • Case 12:
      • SSI: $1,200 / 12 = $100 a month of Social Security for person1. The couple's countable income is $100 − $20 = $80, so SSI is ($1,491 − $80) / 2 = $705.50 each.
      • wy_ssp: person1's social_security is a positive SSI unearned source, so person1 gets 0. person2 receives SSI and has no income of their own, so person2 gets 20. The result is [0, 20].
    • Case 13:
      • Wages: $16.50 × 14 × 52 = $12,012 a year, or $1,001 a month for the spouse.
      • Deeming: $1,001 is above $1,491 − $994 = $497, so deeming applies (is_ssi_spousal_deeming_applies).
      • SSI: ($1,001 − $20 − $65) × 0.5 = $458, and $1,491 − $458 = $1,033. The deeming cap in ssi_if_takes_up limits that to $994. person2 is 45 with no disability, so person2's SSI is 0.
      • wy_ssp: person1's own sources are $0, so 20. person2 has no SSI, so 0. The result is [20, 0].
    • Integration Case 3: hud_annual_income (SPM unit, year) is HUD earned income (0) plus HUD unearned income. The HUD unearned list includes ssi and wy_ssp, so the total is 994 × 12 + 20 × 12 = 11,928 + 240 = 12,168. wy_ssp is 240.
    • Round-1 cases: the 13 cases from round 1 are unchanged; the commit only appends.
  • New documentation (wy_ssp_eligible.py:23-27):

    • What it says. Only the person's own sources count. Income deemed from a parent or an ineligible spouse doesn't count as the person's "other income", and neither does the other spouse's income in an eligible couple.
    • It matches the code. The formula tests person(source, period) > 0 over the person's own SSI earned and unearned sources only.
    • Against 20 CFR 416.1160(a) (LII): "We use the term deeming to identify the process of considering another person's income to be your own." That is the federal SSI rule. The NOTE adopts a different, labelled reading for the state's "no other income" test, as round 1 asked, and doesn't misstate the federal rule.
    • "The statute does not define 'income'": correct.
      • W.S. 42-2-103(d) (PDF p. 7) says only "with no other income during any one (1) calendar month".
      • The chapter's definitions, W.S. 42-2-102(a)(i)–(ix) (PDF p. 2, continued on p. 3), cover commodities, coupons, electronic benefit transfer, SNAP benefits, performance payments, public assistance, public welfare benefits, social services and approved educational programs. They don't define income.
    • "EOM M1804 lists child cases in a parent's household (living arrangement C) among its pay-rate codes": correct.
      • EOM M1804 says "The following living arrangements and Record Identification Codes are used to determine the pay rate". It lists living arrangement "C Parent's household (child cases only)".
      • Its record identification codes include "I Individual (with or without ineligible spouse)", "C Couple (eligible individual with eligible spouse)" and the M, F and P child claims.
      • Ziming's reply cites code I for Case 13. That also checks.
  • main merge. main gained 59 commits since round 1. Two of them touch this PR's inputs:

    • Integrate modeled state unemployment insurance into income flows #9558 replaced unemployment_compensation with total_unemployment_compensation:

      • in the SSI unearned sources, which wy_ssp_eligible loops over;
      • in the HUD, SNAP, household_benefits, spm_unit_benefits and tx_rebate.py lists.

      total_unemployment_compensation is the reported amount, falling back to modeled state unemployment insurance. The modeled amount is 0 without the state wage and weeks inputs. So the sole-income test now also catches modeled unemployment insurance, which is correct, and no case changes.

    • Document disjoint health premium inputs and correct consumer treatment #10046 made ssi_earned_income exclude pretax health premiums. wy_ssp_eligible reads the raw source variables, not ssi_earned_income, so it is unaffected.

    • The merge itself. It kept both wy_ssp and total_unemployment_compensation in the HUD list and changed no Wyoming file.

  • Callers and wiring at the head. wy_ssp appears in the same places as in round 1:

    • all four household_state_benefits year blocks (2023–2026)
    • HUD unearned income and SNAP unearned income
    • spm_unit_benefits.py
    • programs.yaml

    It is still not an SSI income source (20 CFR 416.1124(c)(2)), so it creates no circularity or double count.

  • Tests:

    • Locally: the two Wyoming test files at the head pass, 16 of 16 (policyengine-core 3.32.29).
    • In CI: Baseline states-shard-1 passes all 13 cases in wy_ssp.yaml and all 3 in integration.yaml.

Axiom line assessment

Valid: axiom: W.S. 42-2-103(d); Wyoming EOM M1804 TheAxiomFoundation/rulespec-us#1766 queued.

  • Issue state.
    • The PR author filed Add SSDI Into MO Pension/SS/SSD Part C Formula #1766 on 2026-10-14. It is open, labelled pe-parity, and the only rulespec-us issue for this program.
    • rulespec-us main (172bf04e4d) still has no Wyoming SSP module. us-wy/ holds only policies/cms and policies/dfs/snap-power-policy-manual. So encoded-correct isn't available, and queued is the right form.
  • Dispatch-ready on the Add AMT parameters for 2020-2023 #1467 / DC CDCC #1708 model:
    • Module paths: us-wy/statutes/42/42-2-103.yaml (subsection (d)) and us-wy/policies/wdh/eligibility-online-manual/m1804-state-supplemental-payments.yaml.
    • Corpus citations, confirmed on axiom-corpus main:
      • us-wy/statute/title-42-pdf is in manifests/us-wy-tanf-ccdf-w6-statute.yaml (expression date 2026-05-08).
      • us-wy/manual/wdh/medicaid/m1800-other-programs-m1804-state-supplemental-payments is in manifests/us-wy-medicaid-eligibility-manual.yaml (as of 2026-09-15).
      • The 2024 and 2026 budget-act footnotes are marked "needs ingest". That is the recorded blocker for the co-cited amount sources.
    • Verbatim law: each quote matches its source word for word:
      • the 42-2-103(d) text, against Title 42 PDF p. 7;
      • the EOM M1804 criteria, amount, issuance and pay-rate codes, against the live M1804 page;
      • 2026 SF0001 footnote 2, against pp. 21–22.
    • Required outputs:
      • the $20 Money parameter from 2021-07-01;
      • the monthly Person-level Judgment: receives SSI AND has no other income AND is a Wyoming resident;
      • the payment of $20 or 0 to each eligible person, including each member of a couple.
    • Companion tests A–G take their expected values from 42-2-103(d) and EOM M1804, the same sources the YAML cites, not from PolicyEngine output.
  • Matches the head.
    • Parameters and variables: the parameter path and value, the variable names, and the entity and period all match.
    • Test mapping: each companion test maps to a PR case:
      • A → Case 1
      • B → Case 3 ($715 of wages)
      • C → Case 4
      • D → Case 5
      • E → integration Case 2
      • F → Case 6
      • G → Case 9
    • Interpretations: its "Interpretations and gaps" section records the own-income reading with Cases 8, 12 and 13, matching the new NOTE.

CI status

25 pass, 1 fail, 1 pending (gh pr checks 10174; run 38608194607 on head 2182a772c8).

  • The failure is infrastructure.
    • What failed: Baseline (household) stopped at 19 minutes with "The runner has received a shutdown signal" and "Process completed with exit code 143".
    • Every test it reached passed. That includes household_state_benefits.yaml (7) and spm_unit_benefits.yaml (6), and batches 1–3 exited 0.
    • Not caused by the PR. The same shard passed in round 1, and since then only Wyoming files and the main merge changed.
    • Action: re-run that job before merging.
  • Microsimulation passes.
  • Pending at review time: Python tests: Rest (Python + variables). Its sibling job, Rest (Python, shard-1 + variables), passes.
  • Partner tests: the PR touches none, and the Household API Partners job passes.

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.

Approving round 2; details in the report above. Both should items are fixed. The axiom line now points to rulespec-us#1766, which is open, pe-parity and ready for the encoder with verbatim law and companion tests A–G. The description follows the house template. The income-attribution readings are documented and pinned by Cases 12–13, and the HUD wiring is asserted (12,168). All 16 tests pass. The earlier-years schedule (#9066) and the tx_rebate list (#10226) are reasonable deferrals. One CI note: the Baseline (household) failure is a runner shutdown (exit 143), not a test failure, so re-run that job before merging.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450
hua7450 merged commit 8af83dc into main Oct 16, 2026
27 checks passed
@hua7450
hua7450 deleted the wy-ssp-2026 branch October 16, 2026 07:18
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