Skip to content

Limit SSI spousal-deeming child allocations to the couple's co-resident children - #10146

Open
MaxGhenis wants to merge 48 commits into
mainfrom
ssi-ineligible-child-allocation-scope
Open

MaxGhenis wants to merge 48 commits into
mainfrom
ssi-ineligible-child-allocation-scope

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Limit SSI spousal-deeming allocations to the claimant's or spouse's co-resident children under 20 CFR 416.1160(d) and 416.1163(b).

The child test includes unmarried students under the dated deeming age limit and excludes household heads. Allocations exclude public income-maintenance recipients, apply the student earned-income exclusion monthly, and floor each month's allocation at zero.

Behavior at c1ac59c97a99f9b9ffe5eaedaa186ccb279d92a9

  • Resolve the couple's children through explicit parent links. When links are absent, retain the documented tax-unit fallback and household safeguards.
  • Keep annual public interfaces while calculating completed monthly SSI, Medicaid and supplement budgets. Preserve supplied annual overrides, abolition and neutralization.
  • Preserve main's changes through merge de616c8bd164b6bd13c00c10800aa566459b0a35. Monthly California supplement readers use monthly SSI income and in-kind support.
  • Compute CAPI parental deeming for its own recipient set, including children who qualify for CAPI but fail SSI's immigration test.
  • Exclude blind or disabled children from Oklahoma parental and spousal child allocations, regardless of citizenship.
  • Retain New Hampshire's under-18 allocation and its under-20 full-time secondary-school extension. Date both age parameters from April 4, 2012.
  • Retain modeled stricter optional-Medicaid child definitions in Missouri and Virginia. Store their ages and Virginia's disability exclusion in state parameters.
  • Use WDP's annual deeming helper when choosing its couple standard. Keep completed monthly Medicaid income totals and annual eligibility comparisons.
  • Align monthly-ISM checks with monthly twins. Pin dated Medicaid budgets, New Hampshire's calendar-2012 inputs, New York's parent links and Mississippi's one-cent float tolerance.

Source-conflict rulings for the hub

Apply 42 USC 1396a(r)(2) over narrower non-209(b) manual definitions for this optional ABD pathway. Record the sources and decision in the source-conflict candidate.

This reverses the earlier state-age interpretation for CA, FL, ID, LA, MI, MT, NC, NJ, NY, OH, TX and WI. Wisconsin's secondary-school completion proxy no longer affects this pathway. The hub must confirm the ruling before landing.

The inherited us:ssi-spousal-deeming-child-scope candidate also remains unreviewed. Retain couple-child spousal allocations while the hub reconciles the general regulatory definition with POMS's separate couple-household scope. This round leaves that core scope unchanged.

Remaining conventions for the hub

  • Use full-time attendance as the regular-attendance proxy.
  • Use the guarded tax-unit relationship fallback when parent links are absent.
  • Omit income and resource eligibility from recipient classification to avoid a deemed-income dependency cycle.
  • Apply the June 16, 2008 age change through the parameter value at each month's start.
  • Calculate parental and spousal deemed income from the current month. Retain main's separate ISM payment timing.
  • Preserve California WDP's annual deeming comparison.
  • Preserve Medicaid's annual eligibility comparison against the completed monthly income totals.
  • Keep the computed public annual spousal-deeming flag as December status. Use the annual helper for Medicaid and WDP annual screens.

Monthly float32 sums can exceed an exact annual income limit by less than one cent. Defer rounding across the eleven annual currency wrappers to a separate change because that would change their aggregation contract.

Validation

The required final-head CI matrix passed: 55 YAML files with 917 cases and five Python files with 203 tests. The local matrix completed two of 60 files. CAPI-person and Oklahoma SSP file invocations timed out without test results; 56 files were not attempted locally. The isolated source-conflict guard passed 103 tests in 471.01 seconds.

Controlled baselines passed ten YAML cases, six Medicaid-scope vectors and the historical NH result. Eight distinct reversals failed across nine capped processes: eight policy assertions, including S1 twice, and one historical parameter lookup inside the NH formula. The scratch targets were restored.

The controlled checks supplied upstream statuses and source parameter histories. Earlier-head runs used selected production bytes proved identical at this head; final-head integration and WDP checks also passed. They do not establish full-country upstream eligibility.

Hand expectations remain $125.27 for the sole CAPI child and $618.27 when sharing the parental budget. The isolated Hypothesis file passed both tests in 139.79 pytest seconds. Its completed process took 319.91 seconds and peaked at 1,236.734375 MiB.

The final-head Pull request run completed successfully. At 18:33 UTC on November 13, all 36 jobs passed, with none failed, skipped or cancelled.

impact: pending a comparison at the final head.

axiom: TheAxiomFoundation/rulespec-us#1706 queued (SSI allocation/couple and parental deeming provisions already queued; POMS SI 01310.115 A.3 historical age limits; 20 CFR 416.1160(d), 416.1165; Medicaid recipient binding to 42 U.S.C. 1396b(v); state allocation-age and child-definition producers; extension TheAxiomFoundation/rulespec-us#1706 (comment); corpus admission and protected signed encoder blocked)

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits October 12, 2026 06:30
…nt children

20 CFR 416.1163(b) deducts an allocation for each ineligible child, which
416.1160(d) defines as the claimant's or the spouse's child who lives in the
same household and is not eligible for SSI. The allocations were summed over
the claimant's tax unit, so grandchildren and other relatives filed there
counted, the couple's children filed elsewhere did not, and tax-unit members
living in another household did.

- New ssi_spousal_deeming_child_allocations sums allocations over
  co-resident children whose parent ids name the claimant or the spouse.
  Without ids it keeps the tax-unit grouping (extended to a separately
  filing spouse), restricted to co-residents and, in households with
  links, to unlinked parents, as the parent-link contract requires.
- is_ssi_ineligible_child applies 416.1856 (under 18, or under 22 and a
  student; unmarried; not a household head) and treats aged, blind or
  disabled children without qualifying immigration status as ineligible.
- ssi_ineligible_child_allocation makes no allocation for a child receiving
  public income-maintenance payments (new input) and excludes a student
  child's wages up to the 416.1112(c)(3) amounts (416.1161(c)).
- Earned and unearned deeming now read the same allocation total; the
  earned side no longer multiplies it by the person's ABD flag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….400 Jack case

POMS SI 01310.115 A.3 and SI 01310.140 A limit spouse-to-spouse allocations
to children of either member of the couple; SI 01320.141 adds SNAP to the
public income-maintenance payments from 30 Sept 2024 and SI 01320.410 keeps
the allocation for a TANF family-cap child; SI 01320.185 applies the student
earned income exclusion to any student child.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits October 12, 2026 08:10
…clusion monthly

416.1163(b)(2) reduces each month's allocation by that month's income, and
the 416.1112(c)(3) student exclusion runs month by month until its yearly
limit is used up (POMS SI 00820.510). The annual computation let income left
over in months after the yearly limit ran out reduce the allocation for
earlier months. Add a month-by-month differential test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
416.1163(b)(1)-(2) caps the allocation at the couple rate less the individual
rate, reduced by the child's income. On main a child with a $20,000 business
loss got a $25,964 allocation, and negative unearned income raised it or
offset wages. Floor earned and unearned income at zero separately.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 23 commits October 19, 2026 01:42
#10288 sets North Carolina's 2027 Special Assistance rates to the approved COLA, and #10279 already updated main's Case 37. This PR is about SSI child allocations, so the North Carolina change belongs there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in main through 1661d71, including #10279's update to North Carolina SA Case 37.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main's #10364 made California's aged, blind and disabled disregard the $20
any-income deduction and moved the other $210 after the SSI exclusions, so
parental deeming now subtracts $20. With monthly budgets, ACWDL 20-24's
December 1, 2020 change applies in December 2020 itself, where the annual
budget read January 1 for the whole year. Each changed expectation shows
its arithmetic.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main added these monthly readers of annual SSI countable income, deeming,
allocation and in-kind support after this branch's review. Here the annual
values sum monthly budgets, so a monthly read got the yearly average:
Iowa SSA Case 81 counted 1,470 in April instead of that month's 1,680.
Read the monthly interfaces, as the NY, VA, OK and CO readers already do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main now counts SSI-methodology income for anyone aged, blind or disabled,
whatever their SSI noncitizen status: countable income, spousal deeming and
the Medicaid optional-pathway budget gate on is_ssi_aged_blind_disabled.
This branch computes those budgets monthly, with the annual variables
summing them, so the same gate goes into ssi_countable_income_monthly,
is_ssi_spousal_deeming_applies_monthly,
ssi_income_deemed_from_ineligible_spouse_monthly and the two Medicaid
monthly variables. Kentucky keeps the monthly deeming read with main's note.

Main's California state supplement and Maryland PAA imputed-SSI changes
read SSI countable income, spousal deeming and its flag inside monthly
budgets. Here the annual flag is December's and the annual amounts are
yearly sums, so those reads use the monthly interfaces, as CAPI already
does. Both sides' new spousal-deeming YAML cases are kept.

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

Copy link
Copy Markdown
Contributor Author

Picking this up for the US hub, continuing an earlier session's work on this brief (its commits a6a8e49 through 59d85ed). I'll post a hand-off comment here when it's ready.


Generated by Claude Code

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Ready for hub review

Head: 0b6e566ff4d3de8de5fc31f7dbd3007e54f606aa

This continues an earlier session that stopped without a hand-off. I checked each of its five commits against Sol's delta review before building on them.

The earlier session's commits

Commit What it did Verdict
a6a8e493ec Merged main (#10360 MSP exclusions, #10364 Medicaid ABD premiums and disregards) into the monthly budgets Kept. The PR diff against main has no changes under .github/ or tests/policy/baseline/partners/.
a7eb5cb4cc Per-state ineligible-child allocation for NH and OK Kept. Hand-checked below.
b092f10a53 Changelog line Kept.
51aba69a28 Recomputed CA Medicaid expectations moved by #10364 Kept. Each case carries its own arithmetic.
59d85ede22 Iowa SSA and CA CAPI moved to the monthly SSI interfaces Kept. CI was green at this head (run 41421307931, success).

Sol's items

  1. New Hampshire.
    • nh_ssp_countable_income.py:65 now reads nh_ssp_unearned_income_deemed_from_ineligible_parent.
    • That variable (:31) passes SSI's monthly allocation masked by nh_ssp_ineligible_child: under 18, or under 20 while a full-time student in secondary school (is_in_secondary_school).
    • Both feed the shared helper _ssi_parental_deemed_income.py:12. SSI calls the helper with its own allocations, so the federal path is unchanged.
    • The fixture at nh_ssp_countable_income.yaml:1-64 now expects NH SSP $0. The PR body's $12 claim was corrected to $0.
  2. Oklahoma.
    • _ok_ssp_income.py:40 now reads ok_ssp_unearned_income_deemed_from_ineligible_parent, whose allocation is masked by ok_ssp_ineligible_child: under 18 and SSI-ineligible.
    • ok_ssp_spouse_child_allocation uses the same definition, and its under-22 documentation is corrected.
    • Case 21 (ok/dhs/ssp/integration.yaml:624) now expects $0.
  3. Boundary cases.
    • NH: 19 in secondary school (:66, SSP $12), 19 in college (:1, $0), 20 in secondary school (:120, $0).
    • OK: Case 23, age 17 ($40); Case 24, age 18 ($0); Case 25, a spousal allocation with a 19-year-old college student ($0).

Hand computations

All in January 2026: the parent earns $2,600 a month, and the student's $2,000 is excluded under the $2,410 monthly student limit.

Case With the $497 allocation Without an allocation SSP
NH 19 in secondary school (2,600 − 497 − 85)/2 − 994 = 15; NH countable 15 + 994 − 13 = 996 — 1,008 − 996 = 12
NH 19 in college; NH 20 federal deeming still 15, SSI $994 (2,600 − 85)/2 − 994 = 263.50; 263.50 + 994 − 13 = 1,244.50 > 1,008 0
OK 17 (Case 23) deeming 15; max(15 − 20, 0) + 994 = 994 — min(1,034 − 994, 40) = 40
OK 18 (Case 24), OK 19 (Case 21) federal deeming 15 263.50 − 20 + 994 = 1,237.50 > 1,034 0

Case 25: 41,600/12 = 3,466.67.

  • Federal: (3,466.67 − 2 × 497 − 85)/2 = 1,193.83, so SSI = 1,491 − 1,193.83 = 297.17.
  • Oklahoma: (3,467 − 498 − 85)/2 = 1,442; combined 1,442 + 297.17 = 1,739.17 > 1,532, so SSP is $0.
  • With the old under-22 rule, the combined figure was 1,193 + 297.17 = 1,490.17, which paid $40.

What I did: a second merge with main (0b6e566ff4)

Main did not merge cleanly: there were 6 conflicts. Main now gates SSI-methodology income on aged, blind or disabled status rather than SSI eligibility (the noncitizen change). Its first-parent history runs through a new root commit, so the change came in as one block. On this branch the annual variables sum the monthly budgets, so I ported the gate into the monthly ones:

  • ssi_countable_income_monthly.py:88
  • is_ssi_spousal_deeming_applies_monthly.py:49
  • ssi_income_deemed_from_ineligible_spouse_monthly.py:68
  • medicaid_optional_senior_or_disabled_countable_income_monthly.py:140, plus the 42 CFR 435.601 reference
  • medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse_monthly.py:92

Kentucky keeps the monthly deeming read and gains main's note.

Judgment call: monthly reads in main's new readers. Main's new California state supplement mixed-couple budget and Maryland PAA reported-SSI imputation read annual SSI interfaces inside monthly budgets. On this branch the annual deeming flag is December's, and the annual amounts are yearly sums, so I switched them to the monthly interfaces, as 59d85ede22 did for CAPI:

  • ca_state_supplement.py:78
  • md_paa_imputed_federal_ssi.py:60,64

Two reads stay on annual amounts divided by 12, the same mix ca_capi_person already uses: California's own-income term, and md_paa_countable_income, which is an annual variable.

YAML conflicts. Both sides added cases to the two spousal-deeming YAML files; I kept all of them. No expected value changed in this merge.

Tests

70 files passed, one per process, three processes at a time; I ran no full suites and no microsimulation.

  • 66 YAML files, 963 cases: NH, OK, NY, VA AG and CO SSP/OAP; all SSI deeming files; Medicaid income; CA state supplement and CAPI; KY SSP; MD PAA; IA SSA.
  • 4 Python files, 56 tests. test_ssi_spousal_deeming_child_allocations.py first failed to import hypothesis, which the default uv sync here doesn't install; with uv run --with hypothesis it passes, 2 tests.
  • ruff format --check and ruff check pass on the changed Python files.

No mutants were run for this item; the brief didn't ask for them. The boundary cases separate the federal and state allocation rules in both directions.

CI: Pull request run 41731277634 at 0b6e566ff4: completed, success.

Sources

  • He-W 600 (gc.nh.gov) and law.cornell.edu were unreachable from this session (proxy 403).
  • The NH "under the age of 20 if a full-time student in a secondary school" quote comes from Sol's review.
  • The under-18 base limit for NH (ineligible_child/age_limit.yaml) is unverified: the earlier session set it, and I couldn't read He-W 652.03(h)(1) to confirm it.
  • The OK definition quote is from Sol's review of OAC 340:15-1-2.

Proposed follow-up

Move Maryland PAA and California's own-income terms to monthly SSI budgets. md_paa_countable_income is annual, and California's own-income term divides annual income by 12, so months with uneven income use the yearly average. Converting both would make every state supplement reader monthly end to end.


Generated by Claude Code

@DTrim99

DTrim99 commented Nov 5, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Limit SSI spousal-deeming child allocations to the couple's co-resident children

Summary

The core SSI change is right. Allocations under 20 CFR 416.1163(b) now go only to the co-resident children of the claimant or the spouse. The SSI ineligible-child test now follows 416.1856 and POMS SI 01310.115 A.3, including the age-21 limit before June 16, 2008. Child income now follows 416.1161(c), with the student exclusion applied month by month. I checked the regulation and POMS text myself and hand-checked 14 expectations. A household with two SSI couples allocates correctly with and without parent ids, and CI is green (36/36).

Two changes break programs that reuse SSI's machinery:

  • SSI parental deeming now gives no deemed income to an aged, blind or disabled child who fails SSI's noncitizen test, so California CAPI children no longer have their parents' income counted.
  • is_ssi_ineligible_child now includes blind or disabled children who fail that test. Oklahoma's new definition is built on it, so Oklahoma now allocates for a disabled sibling, which OAC 340:15-1-2 rules out.

Separately, the new state Medicaid allocation ceilings make the optional-pathway budget more restrictive than SSI methodology in states that are not 209(b) states. 42 USC 1396a(r)(2) forbids that, and the choice is not recorded as a source conflict. The branch also conflicts with current main in three files.

Critical (must fix)

C1. California CAPI children lose parental deeming (a regression against main).
_ssi_parental_deemed_income.py:25-28, 84. eligible_child now requires citizenship or SSI qualified-noncitizen status, and the helper returns 0 for every other child. ca_capi_eligible_person is exactly "aged/blind/disabled, not a citizen and not an SSI qualified noncitizen". So every CAPI child now has $0 of parental income deemed through ssi_countable_income_monthly, which ca_capi_person reads.

  • CAPI deems a parent's income to a minor:
    • MPP 49-035.722: "Ineligible parent(s) who is living in the same household as the minor applicant or recipient".
    • MPP 49-005(i)(1): "Ineligible parent" means a parent "who is not eligible for CAPI or SSI/SSP and lives with a minor child who is the CAPI applicant or recipient".
    • MPP 49-035.12: "Detailed income rules are found in 20 CFR, Part 416, Subpart K".
    • Source: CDSS CAPI regulations, PDF pages 4, 25 and 30.
  • The change also contradicts the head's own convention in ssi_countable_income_monthly: "SSI's noncitizen test is applied in is_ssi_eligible, so it does not zero the income that Medicaid and state programs count with SSI methodology."
  • Reproduced in CA 2026: a parent with $24,000 of unearned income and an undocumented disabled child aged 10.
main head
Child's ssi_unearned_income_deemed_from_ineligible_parent (annual) $11,832 $0
ssi_countable_income (annual) $11,592 $0
ca_capi_person, January $125.27 $1,091.27

Main's figures check by hand: ($2,000 − $20 − $994) = $986 a month; $1,091.27 − ($986 − $20) = $125.27.

  • The PR's own CA case ("Medicaid uses California's broader immigration eligibility…") puts a CAPI-eligible sibling in exactly this position, but asserts no CAPI value.
  • Fix:
    • Keep the SSI-eligible divisor for SSI.
    • Compute CAPI's parental deeming with CAPI's recipient set (children eligible for CAPI or SSI). Do it through the shared helper with a recipients argument, the way NH and OK pass their own allocations.
    • Add a CAPI YAML case expecting $125.27 a month for the household above.

C2. Oklahoma allocates for a blind or disabled noncitizen sibling (a regression against main).
ok_ssp_ineligible_child.py:25-26. OAC 340:15-1-2 defines an ineligible child as "A child younger than 18 years of age who is not blind or disabled" (OAC 340:15-1-2).

  • The formula is is_ssi_ineligible_child & age < 18. At this head, is_ssi_ineligible_child is true for a disabled child who fails SSI's citizenship or qualified-noncitizen test.
  • The comment says it "already excludes children who are blind or disabled and so eligible for SSI". That excludes only SSI-eligible ones.
  • On main, is_ssi_ineligible_child was ~is_ssi_aged_blind_disabled & is_child, so such a sibling got no Oklahoma allocation.
  • Reproduced in OK, January 2026: a parent with $24,000 of unearned income, a disabled citizen claimant aged 10 and an undocumented disabled sibling aged 12.
    • ok_ssp_ineligible_child for the sibling is true.
    • Oklahoma deemed income is $489 = $2,000 − $497 − $20 − $994.
    • ok_ssp is $40.
  • Under OAC there is no allocation:
    • Deemed income is $2,000 − $20 − $994 = $986.
    • Oklahoma countable income is ($986 − $20) + $525 SSI = $1,491, which is above $1,034.
    • SSP is $0.
  • ok_ssp_spouse_child_allocation reads the same variable, so the spousal budget is affected too.
  • Fix: add & ~person("is_ssi_aged_blind_disabled", period.this_year) (or the blind and disabled flags), correct the comment, and add a YAML case expecting SSP $0 for the household above.

Should address

S1. State Medicaid allocation ceilings contradict 42 USC 1396a(r)(2), and the choice is not recorded.
medicaid_optional_senior_or_disabled_unearned_income_deemed_from_ineligible_parent_monthly.py:70-105 and ineligible_child_age_limit.yaml.

  • The governing statute for the optional aged/disabled pathway, 42 USC 1396a(r)(2)(A), covers groups under subsection (a)(10)(A)(ii), which includes (ii)(X). Their methodology "may be less restrictive, and shall be no more restrictive, than the methodology— (i) in the case of groups consisting of aged, blind, or disabled individuals, under the supplemental security income program".
  • Subsection (r)(2)(B) calls a methodology no more restrictive only if "no individuals who are otherwise eligible are made ineligible".
  • Removing SSI's allocation for a student aged 18-21 always deems more parental income, so it is more restrictive.
  • The ceilings apply in MI, NJ, NY and OH (under 18), in CA, FL, ID, LA, MT, NC and TX (under 21), and in WI (19, with the age-18 schooling rule). The nonblind/nondisabled exclusion applies in FL, LA, NY and WI. None of these states is a 209(b) state; MO and VA are (POMS SI 01715.020).
  • The PR's own "Review r3 state age ceilings…" scenario shows the size: the NY 18-year-old student keeps a $5,964 SSI allocation, but Medicaid deems $11,832 instead of the $5,868 SSI methodology gives.
  • The spousal Medicaid budget still uses SSI's wider child scope, so the two Medicaid deeming budgets now disagree within the same state.
  • CLAUDE.md says to follow the statute over manuals and to record each such choice. There is no # Source conflict marker and no candidates.yaml entry.
  • Fix: limit the ceilings and definitions to states whose rules can lawfully be stricter (209(b) states such as MO and VA), or drop them. If the manual reading is kept, register the conflict, mark the deciding lines and get a project-lead decision.

S2. State rules are hard-coded in the Medicaid formula (same file, lines 76, 85, 95, 102).

  • The literal state list np.isin(state, ("FL", "LA", "NY", "VA", "WI")).
  • The literal age == 18 and age < 18 for Wisconsin, and state != "WI".
  • The loop over the private age_limits._children, which relies on zero-filled breakdown entries as a sentinel.
  • Fix:
    • Move the nonblind/nondisabled requirement into a boolean parameter broken down by state.
    • Move Wisconsin's dependent-18 age into a parameter.
    • Read age_limits[state] in one vectorized step, with an explicit no-limit default instead of the zero sentinel.

S3. Two additions are not pinned by any test (deleting either fails no test).

  • parameters/gov/ssa/ssi/eligibility/child/student_age_limit.yaml (22) is new, and nothing in the repository reads it. Only deeming_student_age_limit is used, and the is_ssi_ineligible_child.yaml comment refers to a "separate student age limit" that has no effect. Delete it, or use it where 416.1856's general child definition is applied.
  • _annual_input.py:22-27: no test exercises the is_neutralized / abolished branch. test_ssi_annual_income_inputs.py covers supplied inputs and caches only. Add a case that abolishes or neutralizes one annual interface (for example ssi_countable_income) and asserts that its _monthly twin returns 0.

S4. References in ineligible_child_age_limit.yaml do not follow the CLAUDE.md rules.

  • Several cited multi-page PDFs have no #page= anchor:
    • CA 22 CCR 50030 (50101.pdf; the rulespec extension itself cites page 7).
    • NY MRG income.pdf (Allocation is printed page 233; it needs the matching file page).
    • MT CMA 603-1.
  • The description is two sentences and does not follow the house template.
  • Fix: add file-page anchors and a one-sentence description.

S5. The axiom issue does not match the head.
rulespec-us#1706 is OPEN and labelled pe-parity, its blockers are recorded (see below), and its format is dispatch-ready. But its #10146 extension is pinned to e9794af1c0, and the code has changed since:

  • The Wisconsin companion rows ("dependency proxy true / false") describe the tax-dependency proxy that rounds r4 and r5 replaced. The head now uses age 18 with full-time secondary or K-12 enrollment.
  • New Hampshire's He-W 652.03(h)(1) sibling producer and Oklahoma's OAC 340:15-1-2 producer are not queued. These are nh_ssp_ineligible_child, ok_ssp_ineligible_child and the Oklahoma spousal allocation. The extension even says Oklahoma is excluded.

Post an extension pinned to the final head. It should add the NH and OK producers with verbatim text and companion cases, correct the Wisconsin rows, and reflect the C1, C2 and S1 resolutions.

Suggestions

  • SNAP as public income maintenance. Since 9/30/2024, 416.1142(a) lists SNAP, so a child in a SNAP household gets no allocation (416.1163(b); POMS SI 01320.400). ssi_receives_public_income_maintenance defaults to false, so allocations stay overstated for those children; main had the same gap. Open a tracking issue. A reported-SNAP input could break the SSI→SNAP cycle.

  • Historical age-limit reference. Add 73 FR 28033 (May 15, 2008, effective June 16, 2008) to deeming_student_age_limit.yaml. It is the rule that raised the deeming student age from 21 to 22.

  • New Hampshire parameter dates. Both parameters start on 2026-01-01, but He-W 652.03 was last superseded effective 4-4-12 (Count dependents' MAGI in ACA and Medicaid household income only when they must file #10108). Backward extrapolation makes the date moot, but it should match the source.

  • CI cost. Report elapsed time and peak memory for the Hypothesis file. Its three batches of 30 households and three of 60 children each build Simulations; only the annual-input file was measured, as CLAUDE.md "Test design and CI cost" asks for both.

  • PR body. About 500 lines, much of it stale:

    • impact figures from earlier heads;
    • a list of "targeted checks without a merged-head record" that this head's CI supersedes;
    • an internal ~/reviews/... path.

    Trim it to the current head, and state plainly that impact is pending.

Verified correct

  • 416.1160(d) relationship scope. The claimant's or spouse's natural, adopted or step child, living in the same household, counts. Spouse-to-spouse deeming excludes the claimant's siblings, per POMS SI 01310.115 A.3 and SI 01310.140 A. Parent ids resolve only among household members, so an absent child never counts. The no-ids tax-unit proxy and its grandchild limitation are documented and tested.
  • Historical limit. 73 FR 28033 (effective 2008-06-16) changed the deeming student limit from under 21 to under 22, so the 21→22 parameter is correct. Applying it at the start of each month is documented as choice 4.
  • 416.1163(b). No allocation for a child receiving public income-maintenance payments, confirmed by POMS SI 01320.400. The allocation is the couple rate less the individual rate. It is reduced by the child's income after the 416.1161(c) student exclusion, floored at zero, and taken from unearned income first.
  • He-W 652.03(h)(1) reads "Under the age of 18, or under the age of 20 if a full-time student in a secondary school or the equivalent level of vocational or technical training". This confirms both New Hampshire limits, including the under-18 base the hand-off called unverified. OAC 340:15-1-2's under-18 limit is also correct.
  • Two SSI couples in one TX household (grandparents, plus son and daughter-in-law with their child), run at the head:
    • Grandparents: allocation $0, deemed $7,200, deeming applies, SSI $10,932.
    • Son's couple: allocation $5,964, deemed $1,236, no deeming, SSI $11,928.
    • Results are identical with and without parent ids.
  • Hand checks (14):
    • Todds: $2,016 allocation, $1,008 unearned, no deeming.
    • Joneses: $2,784 deemed, SSI $3,264 = ($504 − $232) × 12.
    • Public income-maintenance case: $3,024 / $2,784.
    • Grandchild: ($600 − $20) × 12 = $6,960; SSI ($1,491 − $580) × 12 = $10,932.
    • 19-year-old student: ($600 − $497) × 12 = $1,236; SSI $11,928.
    • Two children: ($1,500 − ($994 − $200)) × 12 = $8,472; ($706 − $85) / 2 × 12 = $3,726.
    • Jack (2024): $472 allocation, $495 countable, SSI $11,040.
    • Absent student: $11,832 deemed, SSI $336.
    • Immigration sibling: $5,868 deemed, SSI $6,300.
    • CA Medicaid: ($24,000 − $240 − $11,928) / 2 = $5,916.
    • Student allocation: $4,700 = 9 × $497 + $227, and $1,228 = 4 × $307.
    • Medicaid monthly-cap months: 0 / 0 / 580, annual $1,160 and $4,640.
    • 1986 age-21 student: SSI $3,264.
    • Oklahoma Case 25: (3,466.67 − 994 − 85) / 2 = 1,193.83; SSI $297.17; Oklahoma 1,442 + 297.17 = 1,739.17 > 1,532, so SSP $0.
    • New Hampshire 19-year-old in secondary school: (2,600 − 497 − 85) / 2 − 994 = 15; 1,008 − 996 = $12.
  • Reuse. The PR uses _ssi_established_spouse_indices, _parent_links and the student-exclusion parameters; no existing variable is reinvented. The family-level is_married cannot express 416.1856 marriage across households, so _ssi_is_married is justified.
  • Monthly rerouting. The NY, VA, CO, IA, CAPI, MD PAA and CA supplement readers are consistent with the annual-sum design.
  • Housekeeping.
    • The changelog fragment is valid.
    • Tests sit in variable-named YAML files, and the test churn is additive (+4,257 / −17 across 21 files). The 88 production files are mostly mechanical monthly rerouting.
    • No partner-contract files are touched.
    • The new state-gated variables are booleans, so the NH Add New Hampshire state supplementation for 2026 #10156 parameter-key pattern does not arise.

Axiom line assessment

axiom: TheAxiomFoundation/rulespec-us#1706 queued (…). The issue is OPEN and labelled pe-parity. The blocker is recorded:

  • the selected signed release excludes the part-416 corpus scope;
  • 416.1165, the POMS source and the state manuals still need ingesting and admitting;
  • the protected signed encoder is unavailable, and a billed run needs separate approval.

The format is dispatch-ready (modules, citations, verbatim law, outputs, companion cases). It does not match the head (S5).

CI status

36/36 checks pass at 0b6e566ff4 (run 41731277634), re-checked at the end of this review. None are pending.

Branch status

The branch is 39 commits ahead of main and 35 behind; GitHub reports it as conflicting. git merge-tree against main gives three content conflicts:

Main's new monthly ca_state_supplement_person reads annual ssi_countable_income (line 93) and annual in-kind support (line 87). After the merge, line 93 would pick up the yearly average of this branch's monthly budgets. Route it to the _monthly interfaces while resolving, as was done for CAPI and Iowa.

Sibling branch notes:

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 per the review above: 2 critical (California CAPI children lose parental deeming; Oklahoma SSP allocates for a blind or disabled noncitizen sibling — both regressions against main), 5 should, 5 suggestions.

MaxGhenis and others added 9 commits November 13, 2026 10:24
Preserve monthly budgets, annual overrides, marriage-based spouse lookup and the SSI deeming cap.
Keep California supplement readers monthly and retain annual Medicaid couple comparisons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Use CAPI recipients when dividing parental income while preserving SSI's recipient pool and annual inputs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Apply Oklahoma's blindness and disability restriction regardless of a child's SSI immigration eligibility.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Retain stricter child definitions only in Missouri and Virginia and record the source-conflict ruling for review.
Move state restrictions into parameters with an unlimited default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove the unused student age parameter, date New Hampshire's limits from the rule's effective date and cite the historical federal age change.
Cover an abolished annual income interface in a CAPI budget.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Convert the vectorized state parameter before applying the disability mask.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep the monthly Medicaid income calculation and include premiums for
unmarried dependents across marital units and separate tax returns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Select the WDP couple standard from annual residual spouse income while
preserving supplied annual deeming flags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Preserve monthly budget totals and supply explicit parent links in the
New York allocation case. Allow one cent for float32 annual sums.

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

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants