Skip to content

Add Nevada optional state supplementation for 2026 - #10001

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

hua7450 merged 6 commits into
mainfrom
nv-ssp-2026

Conversation

@hua7450

@hua7450 hua7450 commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

What and why

Nevada's optional SSI supplement was missing from PolicyEngine-US. Add nv_oss with verified 2026 state-only rates for independent living, another person's household, and state-certified domiciliary care. Reuse the federal SSI eligibility, income exclusions, resources, and couple calculations; add Nevada's care-setting distinctions and payment tables.

The calculation uses the shared SSI state supplement helper (_ssi_state_supplement.py, identical to the copy in the sibling state SSP PRs) for mixed-category couples, spouse-to-spouse deeming, cent rounding, and the $1 minimum positive payment. It permits state-only payments after federal SSI is exhausted: for example, an aged individual with $1,030 monthly Social Security has $1,010 countable income, receives no federal SSI, and receives $20.40 Nevada OSS. Add the supplement to household/SPM benefit totals and to SNAP and HUD unearned income. The supplement follows SSI eligibility and take-up, because SSA pays it with the federal benefit.

References

Coverage limits

The registry marks Nevada as partial, verified for 2026. This implements optional supplementation; it does not implement individualized minimum-income protection for recipients converted in December 1973. It inherits the existing federal SSI eligibility and income framework. Earlier years use parameter backfilling and are unverified historical estimates; no historical rate coverage is claimed.

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

Test plan

  • 73 Nevada YAML cases: every published individual/couple rate, age and resource boundaries, income phaseout, state-only payments, minimums and rounding, spouse deeming, facility exclusions, multiple households, a blind child with working parents, and annual benefit/SNAP/HUD integration. Expected rates come from SSA's table; income cases show independent arithmetic.
  • After merging main: the 73 Nevada cases and 243 federal SSI cases pass locally, and the aggregate list integrity and program registry tests pass (677 passed, 10 skipped).
  • Existing default-dataset microsimulation test passed for 2024–2026 (1,000-household subsample).
  • make format and git diff --check.
  • Changelog fragment in changelog.d/.

axiom: POMS SI 01415.058 I; POMS SI SF01415.300; NRS 422A.070 TheAxiomFoundation/rulespec-us#1767 queued

hua7450 and others added 3 commits October 7, 2026 16:26
- Gate the supplement on SSI take-up, as every other batch supplement does
- Key the one-third reduction on the federal living arrangement
- Add nv_oss to HUD income; shorten the programs.yaml note
- Make minimum_payment.yaml identical to the other batch PRs; normalize payment YAML
- Lowercase POMS anchors; document the couple-split limitation
- Add take-up and household-of-another deeming cases

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

DTrim99 commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Add Nevada optional state supplementation for 2026

PR #10001 (author: hua7450, head cc8928bc07, merge-base 8766516a18). 17 files (+1,986/−0), 3 commits.

Summary

The PR adds Nevada's federally administered Optional State Supplementation (OSS):

  • Parameters, all dated 2026-01-01:
    • gov.states.nv.dwss.oss.payment.individual and .couple, broken down by nv_oss_living_arrangement × ssi_category:

      Arrangement Individual aged / blind Same-category couple aged / blind
      Independent living (OS A) 36.40 / 109.30 74.46 / 374.60
      Household of another (OS B) 24.27 / 213.96 49.64 / 531.94
      Domiciliary care (OS C) 391 / 391 881 / 881
      Disabled, or NONE (OS Z) 0 0
    • A new federal gov.ssa.ssi.state_supplement.minimum_payment of $1. It is byte-identical to the copy in five sibling PRs.

  • Variables (all Person, MONTH):
    • nv_oss_care_setting: an input enum (domiciliary care, uncertified medical facility, public emergency shelter, NONE).
    • nv_oss_living_arrangement (defined_for = StateCode.NV) maps the federal arrangement and the care setting to OS A, B, C or NONE. Medicaid-majority facilities, uncertified facilities, shelters and children in domiciliary care all map to NONE.
    • nv_oss_payment_standard (NV-gated) gives the individual rate, or the mean of both members' half-couple rates for a joint couple.
    • nv_oss (NV-gated) is the rate less countable income above the federal rate. It applies the SI 01320.430 spouse-deeming minimum, SSA cent rounding and the $1 minimum. It is gated on is_ssi_eligible and SSI take-up.
  • Aggregates and registry:
    • nv_oss is added to household_state_benefits (all four year blocks), spm_unit_benefits, SNAP unearned income and HUD unearned income.
    • There is a programs.yaml entry (partial, verified_years: "2026").
  • Tests: 71 YAML cases: 35 in nv_oss.yaml, 21 in nv_oss_payment_standard.yaml, 9 in nv_oss_living_arrangement.yaml and 6 in integration.yaml.

The 2026 policy content is right:

  • Amounts. All 9 individual and 15 couple cells, including the mixed-category couples, match POMS SI 01415.058 I.2.a–b (January 2026). The averaging rule reproduces every published mixed-category total.
  • Living arrangements. The OS A/B/C/Z mapping follows SI 01415.058 I.1 and the Nevada regional POMS SI SF01415.300 A–E. The aged-or-blind-only scope matches NRS 422A.070.
  • Computation. The excess-income reduction, the zero at FBR + OSS, the $1 minimum, the cent rounding, the joint couple computation with equal division, and the deeming computation all follow federal administration rules: 20 CFR 416.2025(b), 416.2020(c), SI 02001.010, SI 02005.030 G.1 and SI 01320.430 D. SI 01320.430 C.7 names Nevada as a by-category state.
  • Tests. All 71 expectations check by hand. They pass at the head, and on a trial merge with current main.
  • CI and branch. CI is green (26/26), and the branch merges cleanly with main. All three formula variables carry a StateCode gate, so the Add South Dakota state supplementation for 2026 #10169-style list guard passes (22 passed on the merged tree).

One should-fix item remains: the axiom: needed line isn't valid for a staff PR that adds a program. This is the same finding as in every sibling review.

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>."
    • needed is reserved for external contributors who can't complete the Axiom work, and the author is PolicyEngine staff.
    • CONTRIBUTING.md#axiom-parity covers "a new program", and none of the n/a grounds applies.
  • Nothing to point to yet.
    • On rulespec-us main, us-nv/ holds only:
      • policies/cms/ (CHIP and Medicaid levels)
      • policies/income_tax/
      • policies/dwss/eligibility-payments/a-600/page-38 (the TANF $10 minimum benefit)
    • There is no SSP module, and no us-nv/policies/ssa/poms/si-01415-058/ tree like the existing DC and DE ones.
    • Issue searches for "Nevada supplement", "Nevada SSP", "Nevada optional", "Nevada OSS", "Nevada State Supplementary", "422A.070", "SF01415.300", "01320.430" and "us-nv" find no SSP issue. The SSP pe-parity issues cover California (Update IRS tax parameters for 2023 #1450), New Mexico (DC CDCC #1708) and Texas (DC standard deduction #1709).
  • 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: POMS SI 01415.058 I; POMS SI SF01415.300; NRS 422A.070 TheAxiomFoundation/rulespec-us#NNNN queued. The issue needs:
    • Module paths, following the DC precedent (us-dc/policies/ssa/poms/si-01415-058/2026/...):
      • us-nv/policies/ssa/poms/si-01415-058/2026/nv-oss-individual-state-supplement-levels.yaml
      • us-nv/policies/ssa/poms/si-01415-058/2026/nv-oss-couple-state-supplement-levels.yaml
      • us-nv/policies/ssa/poms/si-01415-058/2026/nv-oss-living-arrangement-variations.yaml, for codes A/B/C/Z
      • us-nv/statutes/422a/422a-070.yaml for the aged-or-blind scope
    • Corpus citations, plus the blocker if a source isn't in the corpus yet.
    • Verbatim law: the I.1 / I.2 and SF01415.300 passages and the 20 CFR 416.2025(b) text quoted under Verified correct.
    • Required outputs (Person, monthly):
      • The Money parameters (the 24 cells above).
      • A Judgment for the OS code: aged or blind; FLA A, or a blind child in FLA C, gives A; FLA B gives B; state-certified domiciliary care gives C; disabled, Medicaid > 50%, an uncertified private medical facility or a full month in a public emergency shelter gives Z.
      • A Money output: max(0, rate − max(0, countable income − FBR)). Fractional cents are raised to the next cent, and a positive amount below $1 is paid as $1. A couple is computed jointly and halved, with mixed categories averaged. Under deeming, it is the lesser of the individual and couple computations.
    • Companion tests from the same sources, not from PolicyEngine output:
      • Aged, own household, no income: 36.40 (I.2.a).
      • Blind, household of another: 213.96.
      • Aged or blind in domiciliary care: 391.
      • Disabled: 0 (code Z).
      • Aged/blind couple, own household: 224.53 total (I.2.b).
      • Aged person with $1,030 of Social Security: 36.40 − (1,010 − 994) = 20.40 (416.2025(b)(3)).
      • Countable income of 1,030.40 or more: 0 (416.2025(b)(4)).
      • Computed amount of $0.10: $1 (416.2020(c)).
      • Medicaid paying more than 50%: 0 (code Z).
      • Blind person with an ineligible spouse who has $1,850 of Social Security: min(109.30, 374.60 − (1,830 − 1,491)) = 35.60 (SI 01320.430 D.3.b).

Suggestions

  1. Earlier years (deferral documented in the PR body: "no historical rate coverage is claimed").
    • Same-category rates are right back to 2015.
      • Every January table from SI 01415.047 (2015) through SI 01415.058 (2026) shows the same Nevada amounts: 36.40 / 109.30 / 391 / 24.27 / 213.96, and couples 74.46 / 374.60 / 881 / 49.64 / 531.94.
      • So the backward carry of the 2026-01-01 values is correct for individuals and same-category couples, and the PR could claim those years.
    • The mixed-category couple rows are not stable.
      • The 2015, 2016 and 2024–2026 tables average the couple rates (aged/blind A 224.53, aged/disabled A 37.23, and so on).
      • The January 2017–2023 tables (SI 01415.049–.055) instead give the higher category's full couple rate:
        • code A: aged/blind 374.60, aged/disabled 74.46, blind/disabled 374.60
        • code C: every mixed couple 881
        • code B: aged/blind 531.94, aged/disabled 49.64, blind/disabled 531.94
    • Probe at the head (2023-01):
      • An aged/disabled couple gets [18.62, 18.62] (37.24), against 74.46 in the 2023 table.
      • An aged/blind couple gets [112.27, 112.27] (224.54), against 374.60.
    • Fix: date the payment cells to 2015-01-01 (or the earliest verified table), citing SI 01415.047. Then either encode the 2017–2023 mixed-couple rows or note in couple.yaml that SSA's tables for those years disagree with the averaging rule. The minimum-income-level (MIL) carve-out stays as documented.
  2. The Texas rebate reform's copy of spm_unit_benefits now omits nv_oss.
    • Where: policyengine_us/reforms/states/tx/rebate/tx_rebate.py:45-127 redefines spm_unit_benefits nationwide with a hard-coded list. It already lacks ca_state_supplement, and after this PR it also lacks nv_oss.
    • Probe at the head: a Nevada aged single with no other income in 2027 has spm_unit_benefits of 12,698.81 at baseline and 12,262.01 under the reform. The drop is exactly the $436.80 annual nv_oss. household_net_income is unchanged.
    • Fix: insert "nv_oss", # Nevada benefits after "ne_aabd", at line 76, as spm_unit_benefits.py does. Add ca_state_supplement while there, consistent with Add Wyoming state supplementation for 2026 #10174.
  3. The computation duplicates the sibling shared helper.
  4. A child in domiciliary care gets $0 rather than the code A rate.
    • Where: nv_oss_living_arrangement.py:33-36 puts DOMICILIARY_CARE & is_child in excluded, and nv_oss_living_arrangement.yaml:68 (Case 9) pins NONE.
    • The sources:
      • SF01415.300 E lists only four no-supplement groups: disabled individuals, Medicaid paying more than 50%, an uncertified private medical facility, and a public emergency shelter.
      • SF01415.300 A.2: "Absent evidence to the contrary, an aged or blind individual ... determined to be in FLA A or a blind child in FLA C will be determined to eligible for OSS A."
      • The "adult" wording in the code C definition limits which facilities qualify. It doesn't remove the child's supplement.
    • Probe at the head: a blind 17-year-old in FLA A gets nv_oss 0 with nv_oss_care_setting: DOMICILIARY_CARE, and 109.30 without it.
    • Fix: drop the child clause from excluded, and keep DOMICILIARY_CARE for adults only, so a child falls through to the federal mapping (A). Or document the reading in the variable. The input combination is unlikely in practice.
  5. Assert the HUD wiring and the parental-household path.
    • HUD. The integration cases check household_state_benefits, spm_unit_benefits and SNAP unearned income, but not HUD. Removing nv_oss from hud/annual_income/sources/unearned.yaml would pass every test.
      • Probe at the head, an aged single in 2026: hud_annual_income is 12,364.80 (994 × 12 + 436.80).
      • Fix: add hud_annual_income: 12_364.8 to an annual integration case.
    • Parental household. nv_oss.yaml Case 4's "blind child" has no parents in the unit, so it runs through FLA A. The FLA C → OS A path is covered only by a direct ssi_federal_living_arrangement input (living-arrangement Case 2).
      • Fix (optional): add a blind child with parents whose deemed income is positive, and assert both the arrangement and the reduced payment.
  6. Cite Nevada's statute.
    • No reference in the PR cites Nevada law. NRS 422A.070: "'State Supplementary Assistance' means the program established to provide state assistance to persons who are aged or blind in connection with the Supplemental Security Income Program."
    • NRS 422A.338(6) directs the Department to "Make such agreements with the Federal Government as may be necessary to carry out the Supplemental Security Income Program."
    • Fix: add NRS 422A.070 to nv_oss.py and to both payment files. It is the legal basis for the zero DISABLED rows. Optionally, name the statutory program ("State Supplementary Assistance") in the documentation alongside SSA's "Optional State Supplementation".
  7. Polish.

Verified correct

  • Administration. POMS SI SF01415.300 (Nevada Optional State Supplementation, effective 10/20/2022 to present): "By agreement, SSA administers both mandatory and optional state supplementation payments for Nevada."
    • SI 01415.058 A (TN 95, January 2026) lists Nevada among the federally administered optional supplements.
    • So the SSA rounding and the $1 floor apply.
  • Who qualifies. NRS 422A.070 limits the program to "persons who are aged or blind". SF01415.300 E.1 pays no supplement to "Disabled individuals or disabled members of a couple". That matches the zero DISABLED cells (Cases 19–21 of the payment-standard file).
  • Living arrangements, SI 01415.058 I.1 and SF01415.300:
    • Code A: "Lives in their own household as defined for Federal living arrangement A purposes"; "Is a patient in a certified private medical facility where Title XIX does not pay more than 50 percent of the cost of care"; "Is a blind child under age 18 ... living in a parent's household". These match the OWN_HOUSEHOLD and CHILD_IN_PARENTAL_HOUSEHOLD mapping (living-arrangement Cases 1–2) and nv_oss.yaml Case 10 (36.40). The 2015–2025 tables also show a "C | A | Blind | 109.30" row.
    • Code B: "Aged or blind recipients who are subject to a one-third reduction (VTR) of their Federal SSI payment are eligible for optional supplement B because the criteria for this supplement level are the same as for Federal code B." That matches ANOTHER_PERSONS_HOUSEHOLD (Case 3).
    • Code C: "aged or blind recipients who the State has certified to live in a private non-medical facility or, a residential facility serving 16 or fewer persons that provides personal care and services to aged, infirm, or handicapped adult persons". Facility status is an input, as it should be (Case 4). The tables pair code C with federal code A (FBR 994), which matches Case 6 of the integration file.
    • Code Z: Medicaid paying more than 50%, an uncertified private medical facility, and "residing throughout a month in publicly operated emergency shelters". These match Cases 5–7 and nv_oss.yaml Cases 9, 11 and 12.
  • Concurrent categories. I.1 NOTE: "Nevada is a concurrent category State and permits SSI recipients to receive the highest categorical supplement for which they can qualify."
    • ssi_category selects blind before aged, and Nevada's blind cell is at least the aged cell in every arrangement (109.30 ≥ 36.40, 213.96 ≥ 24.27, 391 = 391).
    • So an aged blind person gets the highest supplement (nv_oss.yaml Case 3, 109.30).
  • Amounts. SI 01415.058 I.2.a and I.2.b, "effective January 1, 2026":
    • Individuals: A aged 36.40, A blind 109.30, C aged/blind 391.00, B aged 24.27, B blind 213.96, disabled and D 0.00.
    • Couples:
      • code A: aged/aged 74.46, blind/blind 374.60, aged/blind 224.53, aged/disabled 37.23, blind/disabled 187.30
      • code C: 881.00 for aged/aged, blind/blind and aged/blind; 440.50 for either disabled mix
      • code B: aged/aged 49.64, blind/blind 531.94, aged/blind 290.79, aged/disabled 24.82, blind/disabled 265.97
    • Every mixed cell equals the mean of the two same-category couple rates. For example, (74.46 + 374.60) ÷ 2 = 224.53 and (49.64 + 531.94) ÷ 2 = 290.79. So the couple.yaml method reproduces all 10 mixed totals (payment-standard Cases 1–18).
  • Income reduction. 20 CFR 416.2025(b):
    • "(2) If countable income is equal to or less than the amount of the Federal benefit rate, the full amount of the State supplementary payment ... will be made."
    • "(3) If countable income exceeds the amount of the Federal benefit rate, the State supplementary benefit will be reduced by the amount of such excess."
    • "(4) No State supplementary payment will be made where countable income is equal to or exceeds the sum of the Federal benefit rate and the State supplementary payment rate."
    • These match excess_income and the state-only payments (Cases 14–19, integration Cases 2 and 6).
  • Minimum and rounding.
    • 20 CFR 416.2020(c): "optional supplementary payment amounts of less than $1 will be raised to a dollar". That is the floor (Cases 16 and 22).
    • SI 02001.010 A:
      • "If a payment includes a fraction of a cent, raise it to the next higher cent ... Do not round up the fourth digit"
      • for couples, "divide, then round the payment for each member"
      • "Round Federal and State benefits separately"
    • np.ceil(np.floor(payment * 1_000) / 10) / 100 truncates past the third decimal, then raises to the cent. That gives 17.765 → 17.77, 18.615 → 18.62 and 146.6267 → 146.63.
  • Couples. SI 02005.030 G.1: "We compute OSS eligibility and payment amounts jointly, and we divide the payment due the couple by 2 ... For multi-category or multi-living arrangement couples living together, average their individual OSS payment (unless the State provides specific couples multi-category levels)."
    • The per-member formula equals (couple total − combined excess) ÷ 2 (Cases 20–23, integration Case 3).
    • The disabled member of a mixed couple receives half, consistent with Add Pennsylvania state supplementation for 2026 #10167 Suggestion 3.
    • One spouse in a Medicaid facility goes to individual computation under 20 CFR 416.414(b)(3) (Case 29: [36.40, 0]).
  • Spouse deeming. SI 01320.430:
    • C.7: "the ineligible spouse is considered to be in the same category ... (Currently, four States vary their payment rates by category: California, Iowa, Massachusetts, and Nevada.)"
    • D.1: the individual computation, with own income against the individual FBR.
    • D.2.c–d: the couple computation, with the "full OSS for a couple who are both aged, both blind, or both disabled".
    • D.3.b: "The State supplement amount is the lesser of" the two.
    • The code uses p.couple[arrangement][category] for the eligible member's category. Its own-income cap uses the individual FBR, with the VTR in code B. Cases 25–28 and 35 and integration Case 4 reproduce this (109.30, 35.60, 43.30, 0, 146.63). 416.2025(b)(3) states the same rule.
  • Kept out of SSI income. 20 CFR 416.1124(c)(2) excludes "State supplementation of Federal SSI benefits". nv_oss isn't in the SSI income sources, so there is no circularity. It holds only the state amount, so summing it with ssi doesn't double-count.
  • Counted for SNAP and HUD. 7 CFR 273.9(b)(2)(i) counts "other assistance programs based on need". The HUD addition follows the batch convention. Nevada CCDP exempts SSI (MS 306.40 note in its sources file), and Nevada TANF's unearned list has no SSI, so no other Nevada program needs nv_oss.
  • Code:
    • Vectorized throughout (where, select, max_, min_, marital-unit sums).
    • Periods are correct. The YEAR flows (ssi_countable_income, the deemed spouse income) use period and are divided by 12. The YEAR flags and enums (ssi_category, is_ssi_spousal_deeming_applies, takes_up_ssi_if_eligible, is_child) use period.this_year.
    • No hard-coded policy values. The rounding constants are mechanics, identical to the sibling helper.
    • StateCode gates. nv_oss, nv_oss_payment_standard and nv_oss_living_arrangement carry defined_for = StateCode.NV. test_aggregate_list_integrity.py gives 22 passed on the merged tree.
    • Callers. nv_oss is referenced only in the five lists this PR edits, including all four household_state_benefits blocks.
    • Take-up gate. SSI non-take-up gives 0, even with receives_ssi reported (Case 34, plus a probe). That is the batch convention for SSA-administered rows.
  • Hand checks: all 71 expectations. The 2026 FBR is $994 individual, $1,491 couple and $662.67 with the VTR.
    • nv_oss.yaml:
      • Cases 1–13: 36.40; 0 (age 64); 109.30 (blind priority); 109.30 (blind child); resources of 2,000 → 36.40 and 2,001 → 0; 0 for an undocumented person, California, a Medicaid facility, an uncertified facility and a shelter; 36.40 for a certified facility and for an SE loss.
      • Case 14: 1,000 − 20 = 980; SSI 14; OSS 36.40.
      • Case 15: 1,030 − 20 = 1,010; 36.40 − 16 = 20.40.
      • Case 16: 1,050.30 − 20 = 1,030.30; 36.40 − 36.30 = 0.10, paid as 1.
      • Cases 17 and 18: excess 36.40 and 37, so 0.
      • Case 19: (2,100 − 85) ÷ 2 = 1,007.50; 36.40 − 13.50 = 22.90.
      • Case 20: combined 1,680 − 1,491 = 189; 112.265 − 94.50 = 17.765 → 17.77 each.
      • Case 21: 1,510 − 1,491 = 19; 18.615 − 9.50 = 9.115 → 9.12 each.
      • Case 22: 1,563.80 − 1,491 = 72.80; 37.23 − 36.40 = 0.83 → 1 each.
      • Case 23: 1,565.46 − 1,491 = 74.46 → 0.
      • Case 24: [36.40, 0].
      • Case 25: couple path 374.60 − 89 = 285.60; own path 109.30 → 109.30.
      • Case 26: 374.60 − 339 = 35.60.
      • Case 27: couple path 374.60 − 169 = 205.60; own path 109.30 − 66 = 43.30 → 43.30.
      • Case 28: excess 389 → 0.
      • Case 29: [36.40, 0].
      • Cases 30 and 31: resources of 3,000 → 37.23 each; 3,001 → 0.
      • Case 32: 12 × 36.40 = 436.80.
      • Case 33: [109.30, 17.77, 17.77, 0].
      • Case 34: 0.
      • Case 35: deemed (1,040 − 65) ÷ 2 = 487.50; countable 1,217.50; couple path 531.94 − 223.50 = 308.44; own path 213.96 − (730 − 662.67) = 146.63 → 146.63.
    • Payment-standard Cases 1–21: the published cell ÷ 2 per member for couples (for example, 290.79 ÷ 2 = 145.395 → 145.40), and the individual cells for Cases 19–21.
    • Integration:
      • Case 1: SNAP 994 + 36.40 = 1,030.40; SPM 11,928 + 436.80 = 12,364.80.
      • Case 2: 20.40 × 12 = 244.80; SPM 12,360 + 244.80 = 12,604.80.
      • Case 3: 35.54 × 12 = 426.48; SNAP 1,700 + 35.54 = 1,735.54.
      • Case 4: 35.60; SNAP 1,885.60; SPM 22,627.20.
      • Case 5: 662.67 + 213.96 = 876.63; SPM 7,952 + 2,567.52 = 10,519.52.
      • Case 6: 391 − (1,180 − 994) = 205.
  • Changelog: changelog.d/nv-ssp-2026.added.md is top-level, typed added, and accurate.
  • Registry:
    • The programs.yaml entry sits under ssi_state_supplement.state_implementations, between NM and SC, with the batch's fields.
    • partial fits the unmodeled MIL. parameter_prefix resolves.
    • test_programs_registry.py gives 655 passed, 10 skipped on the merged tree.

Batch checks

  1. Axiom line: SHOULD (Should 1). axiom: needed is invalid for a staff PR. rulespec-us has no Nevada SSP module or issue, so a dispatch-ready pe-parity issue and a queued line are needed.
  2. Parameter descriptions: pass. Both Nevada files follow "Nevada provides this ... under the Optional State Supplementation program." The federal minimum_payment.yaml matches the siblings (polish note in Suggestion 7).
  3. Backdating: SUGGESTION (Suggestion 1).
    • Same-category rates are unchanged in every January table from 2015 to 2026, so the carry-back is correct for them.
    • The mixed-couple rows in the 2017–2023 tables give the higher category's full rate. The model's 2023 aged/blind couple is 224.54 against 374.60.
    • The PR claims only 2026 and documents the deferral.
  4. tx_rebate.py copy: SUGGESTION (Suggestion 2). nv_oss is missing, which costs $436.80 of SPM benefits in 2027. ca_state_supplement is still missing too.
  5. Aggregate wiring: complete, with no double count.
    • nv_oss is in spm_unit_benefits, all four household_state_benefits blocks, HUD unearned, SNAP unearned and programs.yaml, and it holds only state amounts.
    • All three formula variables are NV-gated, so the guard passes.
    • HUD isn't asserted in tests (Suggestion 5).
  6. Income attribution: matches federal administration.
    • Correctly pinned: the joint couple computation with equal division and mixed-category averaging (SI 02005.030 G.1), deeming as the lesser of the two computations with the same-category couple rate (SI 01320.430 C.7, D.3.b), the ineligible spouse without income, one spouse in a facility, and state-only payments after federal SSI ends.
    • To revisit: a child in domiciliary care gets $0 (Suggestion 4), and the parental-household path is pinned only by a direct input (Suggestion 5).
    • Documented limitations: couples living apart in different Nevada arrangements, and the MIL.
  7. Sibling conflicts (branch note):
  8. CI: all 26 checks pass on head cc8928bc07. There are no failing jobs to classify.
  9. State law first: done.
    • Read: NRS 422A.070 and 422A.338; POMS SI 01415.058 A and I (January 2026) and the prior January tables SI 01415.047–.057 (2015–2025); SI SF01415.300; 20 CFR 416.2020 and 416.2025; SI 01320.430; SI 02005.030 G–H; SI 02001.005; and SI 02001.010.
    • Every 2026 cell, the federal administration and the effective date check out.
    • All 71 expectations check by hand.

Axiom line assessment

Invalid (Should 1).

CI status

All 26 checks pass (gh pr checks 10001). Three "skipping" entries belong to the superseded run 38356298361.

  • The run. Run 38367897034 (pull_request, 2026-10-13 08:14 UTC) on head cc8928bc07. The Rest job took 1h28m9s and passed.
  • Main since the merge-base. main has gained 178 commits. Among the files this PR depends on, three changes landed:
  • Local runs with policyengine-core 3.33.3:
    • At the head, the four new YAML files: 71 passed.
    • On the trial merge with current main: 71 passed, plus test_aggregate_list_integrity.py (22 passed) and test_programs_registry.py (655 passed, 10 skipped).
  • Partner tests. The PR touches none, and the Household API Partners job passes.

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: axiom: needed is reserved for external contributors, and rulespec-us has no Nevada SSP module or issue. Please file a dispatch-ready pe-parity issue for POMS SI 01415.058 (2026) and switch the PR body to a queued line. The 2026 policy is correct: all 24 cells match POMS SI 01415.058 I.2.a-b, and all 71 tests pass. The 7 suggestions are optional; details are in the full report above.

hua7450 and others added 2 commits October 14, 2026 14:05
…nd tests

- Compute nv_oss with the shared SSI state supplement helper (identical to the
  copy in the sibling SSP PRs) and drop nv_oss_payment_standard; every Nevada
  couple rate is at least the individual rate, so results are unchanged.
- A child in domiciliary care keeps the federal living arrangement mapping
  (SF01415.300 A.2 and E) instead of being excluded.
- Cite NRS 422A.070 and point the payment references at SI 01415.058 I.2.a/b.
- Assert HUD annual income, and add a blind child with working parents whose
  income is deemed to the child; fold the payment-level cases into nv_oss.yaml.

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 c3b9a0b, followed by a merge of main (6906d93), which brings in SSI resource deeming.

On the merged head, these pass locally: the 73 Nevada cases, 243 federal SSI cases, and the aggregate list integrity and program registry tests (677 passed, 10 skipped).

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

DTrim99 commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

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

PR #10001 (author: hua7450). This round reviews head 6906d938be; round 1 reviewed cc8928bc07. Two commits landed in between: the review-response commit c3b9a0b7f8 (10 files, +887/−836) and a merge of main at 8ae01aa3cb with no hand-resolved conflicts.

Summary

Round 1's should item is fixed. The axiom line now cites rulespec-us#1767, which is open, labelled pe-parity, dispatch-ready and consistent with the head. nv_oss now calls the shared ssi_state_supplement helper, which is byte-identical in all seven sibling PRs and keeps every round-1 rule and result. Five suggestions are fixed and two are documented deferrals (history, and tx_rebate.py via #10226). All 73 cases check by hand and pass, both locally and in CI. No CI job has failed; two full-suite jobs were still running at review time.

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: POMS SI 01415.058 I; POMS SI SF01415.300; NRS 422A.070 TheAxiomFoundation/rulespec-us#1767 queued. #1767 is open and labelled pe-parity. It has module paths, corpus citations (confirmed in the axiom-corpus manifests), verbatim law (checked against the live sources), required outputs and companion tests A–N. Its values match the head. See the Axiom line assessment.
Suggestion 1: earlier years (same-category rates stable since 2015; the 2017–2023 tables give mixed couples the higher full rate) Declined with a reason (documented deferral) Reason: Ziming keeps history out of the SSP batch in case a state changed its rules in a year that needs new code. The PR body still says "no historical rate coverage is claimed", and #1767 records the 2017–2023 finding under "History (out of scope)". Still the case: both payment files hold only 2026-01-01 values, so the same-category cells carry back correctly, but the 2017–2023 mixed-couple rows still read the averaged amounts (for example, a 2023 aged/blind couple gets 224.54 against 374.60 in that year's table). Unlike Wyoming (#9066), no policyengine-us issue tracks Nevada's history.
Suggestion 2: the spm_unit_benefits copy in tx_rebate.py omits nv_oss Declined with a reason (deferred to #10226) Reason: rather than patch each of the 16 SSP PRs, Ziming filed #10226 (open). It proposes one shared list that reforms append to, covers the Texas rebate and the three Tlaib copies, and lists #10001 among the PRs that rely on it. Still the case: at the head, tx_rebate.py goes straight from "ne_aabd" (line 76) to its California block (line 77), where spm_unit_benefits.py has "nv_oss" (line 36). So a Nevada recipient still loses the $436.80 a year of SPM resources under the Texas-only reform until #10226 lands. The only change to that file since round 1 is main's total_unemployment_compensation rename.
Suggestion 3: the computation duplicates the sibling shared helper Fixed nv_oss.py:24-41 now returns ssi_state_supplement(person, period, parameters, p.individual[arrangement][category], p.couple[arrangement][category]). nv_oss_payment_standard and its test file are deleted, and nothing at the head references them. The helper's blob 5e0c84da3f is identical at the current heads of #10157, #10158, #10167, #10168, #10171, #8017 and #8233. The line-by-line review is under Verified.
Suggestion 4: a child in domiciliary care gets $0 Fixed nv_oss_living_arrangement.py:29-39 drops the child clause from excluded and applies DOMICILIARY_CARE only when ~is_child, so a child falls through to the federal mapping. That matches SF01415.300 E, whose four no-supplement groups don't include children, and A.2 ("a blind child in FLA C will be determined to eligible for OSS A"). Living-arrangement Case 9 now expects INDEPENDENT_LIVING, and new nv_oss Case 36 pays 109.30. The variable's comment documents the reading, and #1767 records the literal code C reading (391) as the alternative.
Suggestion 5: assert the HUD wiring and the parental-household path Fixed HUD: integration Case 1 asserts hud_annual_income of 12,364.80, so removing nv_oss from the HUD list now fails a test. Parental household: new Case 37 is a blind 10-year-old with two working parents. It asserts federal code C mapped to OS A, $955.67 deemed, countable income of $935.67, SSI of $58.33 and nv_oss of 109.30, checked by hand under Verified.
Suggestion 6: cite Nevada's statute Fixed NRS 422A.070 is in the nv_oss.py reference tuple and in both payment files ("NRS 422A.070, State Supplementary Assistance defined"). The wording matches the live NRS 422A page.
Suggestion 7: polish Anchors and PR body fixed; minimum_payment.yaml declined with a reason Anchors: #i2a and #i2b now land on "a. Recipient payment levels for Nevada" and "b. Couple payment levels for Nevada". PR body: it now gives 73 cases, the SNAP and HUD wiring and the take-up gate. minimum_payment.yaml: unchanged, because it must stay identical across the PRs that add it. Eight PRs now carry the same blob 1d3e6e2e6b (this one, the five helper siblings, #8017 and #8233), so that is accepted.

New findings

Critical: none.

Should: none.

Suggestions: none.

The review-response commit refactors onto the helper without changing any result. It also fixes the child mapping the way round 1 proposed, and adds tests and citations. The main merge changes no Nevada result (see Verified).

Verified

  • The shared helper, line by line (policyengine_us/variables/gov/ssa/ssi/_ssi_state_supplement.py), against the round-1 verified rules:
    • Couples (lines 20-22). standard is the marital-unit sum of each member's half same-category couple rate, halved for a joint computation. That is SI 02005.030 G.1 ("compute OSS eligibility and payment amounts jointly, and we divide the payment due the couple by 2"), and averaging reproduces every 2026 mixed cell in SI 01415.058 I.2.b. It is the deleted nv_oss_payment_standard formula, unchanged.
    • Excess-income reduction and state-only pay (lines 23-26). payment = max_(standard − max_(countable − ssi_amount_if_eligible, 0), 0) is 20 CFR 416.2025(b)(2)–(4): the full rate at or below the FBR, reduced by the excess above it, and zero once countable income reaches FBR + rate. The gate (lines 44-46) is is_ssi_eligible (no income test) and take-up, not a positive federal payment, so the state-only payments of Cases 15, 16 and 19 and integration Cases 2 and 6 survive.
    • Deeming (lines 28-42). The own-income path uses the individual rate and the individual FBR, with the one-third reduction in federal code B (SI 01320.430 D.1). The deemed path subtracts the couple-FBR excess from max_(couple_rate, individual_rate) (D.2.c–d, C.7's "greater of", and 416.2025(b)(3)'s "the higher of the State supplementary rates for an eligible couple or an eligible individual"). The payment is the lesser of the two (D.3.b).
    • Rounding and the $1 floor (lines 47-53). np.ceil(np.floor(payment * 1_000) / 10) / 100 drops digits past the third decimal and raises to the cent, per member and separately from federal SSI (SI 02001.010 A.1–A.3). A positive amount below $1 becomes $1 (20 CFR 416.2020(c); SI 02001.005 A.2, B.2). nv_oss uses the default federal_payment_rules=True, which fits an SSA-administered supplement (SI 01415.058 A; SF01415.300).
    • Two differences from round 1's inline code, neither of which changes a Nevada result:
      • The own-income cap uses individual_rate where round 1 used standard. They differ only when deeming and a joint computation apply together. That can't happen: deemed spouse income exists only for an ineligible spouse, and a joint claim needs both spouses to be aged, blind or disabled.
      • The deemed path uses max_(couple_rate, individual_rate) where round 1 used the couple rate. Every Nevada couple cell is at least its individual cell: 74.46 ≥ 36.40, 374.60 ≥ 109.30, 49.64 ≥ 24.27, 531.94 ≥ 213.96, 881 ≥ 391, and 0 ≥ 0.
  • Gating. The helper has no state logic. Its only caller at the head is nv_oss (defined_for = StateCode.NV), and nv_oss_living_arrangement is NV-gated too, so a non-Nevada person gets 0 (Case 8, and person4 of Case 33). The _-prefixed module under variables/ defines no Variable, which follows main's precedent (_apply_ssi_exclusions.py, _ssi_spouses.py). test_aggregate_list_integrity.py (including the StateCode-gate check) and test_programs_registry.py give 677 passed, 10 skipped at the head, the same as round 1's 22 + 655. CI's Rest (Python, shard-1 + variables) job shows the same on Linux: 22 aggregate-list tests passed, including test_members_are_state_gated[gov/household/household_state_benefits.yaml], and 655 registry tests passed.
  • Same results as round 1. Every round-1 nv_oss expectation is still in the files with the same value: Cases 1–35, the 21 published-level cases (now Cases 38–58) and integration Cases 1–6. The only assertions removed are those on the deleted variable: 21 in its file, 6 in integration.yaml and 3 in nv_oss.yaml. Living-arrangement Case 9 changed by design (Suggestion 4).
  • Moved Cases 38–58 still check every rate cell. Old Cases 1–21 map to new Cases 38–58 with identical nv_oss values.
    • Couples: Cases 38–55 cover all 15 published couple cells in codes A, B and C, plus the disabled/disabled zero in each.
    • Individuals: Cases 56–58 cover aged, blind and disabled in codes A, B and C. Case 9 covers D/Z.
    • What was lost: only the unrounded per-member levels (such as 112.265). The paid amounts still pin each same-category parameter cell exactly and each derived mixed cell to within a cent.
  • New and changed expectations, checked by hand (2026 FBR: $994 individual, $1,491 couple, $662.67 with the one-third reduction):
    • Case 36: blind, 17, no parents, so federal code A. The child is excluded from code C, so the code is INDEPENDENT_LIVING and the payment is the blind A rate, 109.30.
    • Case 37:
      • Parents: $29,870 × 2 = $59,740 a year, or $4,978.33 a month, all earned.
      • Deemed: ($4,978.33 − $20 − $65) × ½ = $2,446.67, less the $1,491 two-parent allocation, leaves $955.67.
      • Child: $955.67 − $20 = $935.67 countable, so SSI is $994 − $935.67 = $58.33.
      • OSS: $935.67 is below $994, so there is no excess and the child gets the full 109.30.
    • Living-arrangement Case 9: the same inputs as Case 36 give INDEPENDENT_LIVING.
    • Integration Case 1: hud_annual_income = 994 × 12 + 36.40 × 12 = 11,928 + 436.80 = 12,364.80.
    • Case 38: 74.46 ÷ 2 = 37.23 each.
    • Case 40: (74.46 + 374.60) ÷ 2 = 224.53; ÷ 2 = 112.265, paid as 112.27.
    • Case 41: (74.46 + 0) ÷ 2 = 37.23; ÷ 2 = 18.615, paid as 18.62.
    • Case 42: (374.60 + 0) ÷ 2 = 187.30; ÷ 2 = 93.65.
    • Case 45: 531.94 ÷ 2 = 265.97.
    • Case 46: (49.64 + 531.94) ÷ 2 = 290.79; ÷ 2 = 145.395, paid as 145.40.
    • Case 47: 49.64 ÷ 2 = 24.82; ÷ 2 = 12.41.
    • Case 48: 531.94 ÷ 2 = 265.97; ÷ 2 = 132.985, paid as 132.99.
    • Cases 50–52: 881 ÷ 2 = 440.50 each.
    • Cases 53 and 54: 881 ÷ 2 = 440.50; ÷ 2 = 220.25.
    • Cases 43, 49 and 55: 0.
    • Cases 56–58: [36.40, 109.30, 0, 0], [24.27, 213.96, 0, 0] and [391, 391, 0, 0]. Person4 has no SSI category.
    • The wage input. BLS blocks automated requests, so I couldn't confirm Case 37's OEWS figure. It is internally consistent ($14.36 × 2,080 = $29,868.80, and BLS rounds annual wages to $10), and the expected values follow from the input either way.
  • The main merge and SSI resource deeming (Deem SSI resources from ineligible spouses and parents (20 CFR 416.1202) #10040):
    • What changed. meets_ssi_resource_test now adds resources deemed from an ineligible spouse or parent to a non-joint claimant's own, and uses the $3,000 couple limit under spousal deeming (20 CFR 416.1202, 416.1205).
    • No Nevada case changes. Only Cases 5, 6, 30 and 31 set resources: two singles and two joint couples, none of which deeming touches. In the spousal-deeming cases (24–28, 35 and integration Case 4) and in Case 37, every spouse and parent has $0 of resources, so $0 is deemed. The claimant now tests $0 against $3,000 instead of $2,000 and stays eligible. All 73 cases pass at the head.
    • Where it does reach nv_oss. A probe at the head:
      • Case 26's household with $2,500 of resources on the ineligible spouse still pays 35.60, which is under the $3,000 limit; with $3,500 it pays 0.
      • Case 37's household with $5,000 of parental resources deems $2,000 and still pays 109.30; with $6,000 it deems $3,000 and pays 0.
      • That is the federal eligibility rule flowing through is_ssi_eligible, as it should for a supplement paid only to SSI-eligible people.
    • Other merged changes. Document disjoint health premium inputs and correct consumer treatment #10046 (pretax premiums in ssi_earned_income) doesn't affect any Nevada case, since none has premiums. Integrate modeled state unemployment insurance into income flows #9558's rename in the HUD and SNAP lists merged without hand edits.
  • Callers and wiring at the head are the same as in round 1: all four household_state_benefits year blocks, HUD unearned income, SNAP unearned income, spm_unit_benefits.py and programs.yaml (partial, verified_years: "2026"). nv_oss is still not an SSI income source (20 CFR 416.1124(c)(2)), so there is no circularity or double count.
  • Code-health scans at the head. I ran the guards that scan parameter and variable files: parameter YAML keys, person adds, reference URLs, built-in sum over entity calls, in-place writes to cached arrays, uprating placement, input-variable definitions, and the all-states read-only-cache simulation.
    • Result: 188 passed and 2 failed under Windows' default codec.
    • The two failures are a local encoding artifact. Both scans call read_text() and stop on a UTF-8 byte in main's county enum file before reaching any PR file.
    • In UTF-8 mode (Linux CI's default) they pass, 5 of 5. CI's Rest (Python, shard-1 + variables) job passes both scans too. So the helper passes the in-place-write and entity-sum guards, and the new NRS references pass the URL checks.
  • Tests:
    • Locally (policyengine-core 3.32.29): the three Nevada files at the head pass, 73 of 73 (58 + 9 + 6).
    • In CI (policyengine-core 3.33.3): Quick Feedback ran the same files (58, 9 and 6 passed), and so did Baseline states-shard-3 (in a batch of 271 passed).

Axiom line assessment

Valid: axiom: POMS SI 01415.058 I; POMS SI SF01415.300; NRS 422A.070 TheAxiomFoundation/rulespec-us#1767 queued.

  • Issue state.
    • The PR author filed CalWORKS (TANF) childcare #1767 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 Nevada SSP module. us-nv/policies/ holds only cms, dwss and income_tax, so encoded-correct isn't available and queued is the right form.
  • Dispatch-ready on the Add AMT parameters for 2020-2023 #1467 model:
    • Module paths: four under us-nv/policies/ssa/poms/si-01415-058/2026/ (living-arrangement variations, individual levels, couple levels, and the payment computation), plus us-nv/statutes/422a/422a-070.yaml. That follows the DC layout round 1 proposed.
    • Corpus citations, confirmed on axiom-corpus main (60a3f1d055):
      • manifests/us-ssa-poms-si-2026-09-10.yaml lists ssa-poms-si-01415-058 (citation path us/manual/ssa/poms/si/01415.058, expression date 2026-08-28) and ssa-poms-si-sf01415-300 (us/manual/ssa/poms/si/sf01415.300, expression date 2022-10-20).
      • It also lists SI 02001.005, 02001.010, 02005.030 and 01320.430.
      • The SSI agent queue has the title-20-part-416 extraction scope and a Nevada row.
      • NRS 422A.070 is marked "needs ingest". That is the recorded blocker for the statute module.
    • Verbatim law, checked against the live sources:
      • 25 sampled passages of SI 01415.058 I.1–I.2, SF01415.300 A–E, SI 01320.430 C.7 and D, SI 02005.030 G.1, SI 02001.010 A and SI 02001.005 A.2/B.2 match word for word. That includes the source's own "Apply No Supplement code Y" and "$1,00" typos, which the issue marks (sic) or quotes as printed.
      • Every Nevada table value appears in the live table. SI 01415.058 is TN 95, effective 08/28/2026, as the issue says.
      • 20 CFR 416.2025(b)(3)–(4) and 416.2020(c) match the eCFR text, and NRS 422A.070 matches the NRS page.
    • Required outputs:
      • the 9 individual and 18 couple rows of I.2.a–b as Money parameters, with the 9 mixed cells to be encoded as published;
      • the monthly OS-code Judgment (Z, Y, C, B, A, with the highest-category rule);
      • the monthly payment formula: the 416.2025(b) reduction, the joint couple computation divided by 2, the deeming lesser-of with the higher rate, third-decimal rounding and the per-member $1 minimum.
    • Companion tests A–N take their expected values from POMS, the CFR and the NRS, not from PolicyEngine output. They cover all ten cases round 1 proposed and add K–N.
  • Matches the head.
    • Parameters and variables: the parameter paths, variable names, entities and periods all match. So do the case counts (58 + 9 + 6 = 73) and Cases 38–58 as the published-level cases.
    • Test mapping: each companion test maps to a PR case with the same value:
      • A → Case 1 and integration Case 1 (36.40)
      • B → integration Case 5 and Case 57 (213.96)
      • C → Case 58 (391 each)
      • D → Case 56 (0)
      • E → Case 40 (112.27 each)
      • F → Case 15 and integration Case 2 (20.40)
      • G → Case 17 (0)
      • H → Case 16 (1.00)
      • I → Case 9 (0)
      • J → integration Case 4 and Case 26 (35.60)
      • K → Case 41 (18.62 each)
      • L → Case 20 and integration Case 3 (17.77 each)
      • M → Case 37 (109.30)
      • N → Case 3 (109.30)
    • Interpretations: "Interpretations and gaps" records the PR's readings as modelling choices: the child in domiciliary care (both readings), code Z for a disabled-only person applied through the zero category cells, the mixed-cell derivation, couples living apart, the take-up gate, the federal code C amount, and the per-member $1 minimum for couples (Case 22).

CI status

25 pass, 0 fail, 2 still running (gh pr checks 10001; run 38612539489 on head 6906d938be, started 18:07 UTC, snapshot at 19:18 UTC).

  • Passed, among others:
    • PR validation (lock, guard tests, lint, changelog)
    • Package and compatibility
    • Quick Feedback (the three Nevada files)
    • Microsimulation
    • Household API Partners
    • Baseline states-shard-3 (the Nevada files)
    • Rest (Python, shard-1 + variables), which ran the aggregate-list guard, the registry tests and the code-health scans
    • all four Baseline states shards
  • Still running: Contrib states-shard-3 and Python tests Rest (Python + variables).
  • Action: confirm the last two jobs finish green before merging.
  • 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. The should item is fixed: rulespec-us#1767 is open, pe-parity and ready for the encoder, with 25 verbatim POMS passages and companion tests A–N matched to the PR's cases. The shared ssi_state_supplement helper keeps every round-1 rule (416.2025(b), 416.2020(c), SI 02001.010, SI 02005.030 G.1, SI 01320.430 D), and it is byte-identical in the seven sibling PRs. A child in domiciliary care now gets the federal mapping (Case 36 pays $109.30). The HUD wiring and the blind-child deeming case check by hand. Every round-1 expectation is unchanged, and main's resource deeming changes no case. 73 of 73 tests pass. The history (2017–2023 mixed couples) and tx_rebate (#10226) deferrals are reasonable. Two CI jobs (Contrib states-shard-3 and Rest) were still running when I posted; please confirm they finish green before merging.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hua7450
hua7450 merged commit 39c7fff into main Oct 16, 2026
27 checks passed
@hua7450
hua7450 deleted the nv-ssp-2026 branch October 16, 2026 10:54
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