Repository navigation
Conversation
…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
marked this pull request as ready for review
October 12, 2026 10:47
…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>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
20 CFR 416.1163(b) deducts an allocation for each ineligible child from an ineligible spouse's income before it is deemed to an SSI claimant. 416.1160(d) defines an ineligible child as "your natural child or adopted child, or the natural or adopted child of your spouse ... who lives in the same household with you, and is not eligible for SSI benefits". PolicyEngine-US summed the allocations over the claimant's tax unit, with an ineligible child defined as anyone under 18 who is not aged, blind or disabled. As a result:
This PR sums the allocations over the couple's co-resident children. It also brings the child test and the allocation amount into line with the regulation.
What changes
ssi_spousal_deeming_child_allocations(Person, infrom_ineligible_spouse/). For each person, it sumsssi_ineligible_child_allocationover the members of their household who are their child or their co-resident spouse's child. The person and their spouse are excluded. The spouse comes from the SSI spouse test_ssi_spouse_index(_ssi_spouses.py).parent_1_id,parent_2_id): counts when an id names the person or the spouse among the household's members. Ids include step parents, which covers "the natural or adopted child of your spouse". An id naming a parent who lives elsewhere does not resolve, so a child living elsewhere never counts._parent_links.pyapplies. The child counts when they are in the person's or the spouse's tax unit and live in the person's household. In a household where anyone has ids, the child also needs the person or the spouse to be an unlinked parent: a parent some of whose children no id names. Without ids, a grandchild in that tax unit still cannot be told apart from a child; the docstring and a YAML case say so.ssi_earned_income_deemed_from_ineligible_spouse,ssi_unearned_income_deemed_from_ineligible_spouseread that total instead ofadd(person.tax_unit, ...). The earned side no longer multiplies the allocations by the person's ownis_ssi_aged_blind_disabled. See "The earned-side ABD flag" below.is_ssi_ineligible_childapplies 416.1856 (via 416.1101), which 416.1160(d) uses for "child".gov.ssa.ssi.eligibility.child.student_age_limit(22; 42 U.S.C. 1382c(c)).is_ssi_eligible_individualdoes. The income and resource tests are not read: they depend on deemed income and so on these allocations.ssi_ineligible_child_allocation:ssi_receives_public_income_maintenance, which defaults to false.main, a child with a $20,000 business loss got a $25,964 allocation, above the $5,964 maximum, and negative unearned income raised the allocation or offset wages. Earned and unearned income are now each floored at zero.The earned-side ABD flag
mainmultiplied the child allocations by the person's own aged/blind/disabled flag on the earned side only. That changes no benefit:is_ssi_spousal_deeming_appliesandssi_income_deemed_from_ineligible_spouse, bothdefined_for = "is_ssi_eligible_individual", which requires aged, blind or disabled status. Whenever SSI uses the values, the flag is 1.is_ssi_ineligible_spouse. Onmainthat test uses tax roles, so in a couple where neither is aged, blind or disabled each carries the other's income as "deemed" (Apply 416.1163(e)(2) to deemed SSI and identify SSI couples by marriage, not tax roles #10141 replaces that test).is_ssi_eligible(CT,ct_ssp_categorically_eligible) and on aged, blind or disabled status (MN,mn_msa_eligible_person).I checked this directly. For a couple in CT, MN and TX where neither spouse is aged, blind or disabled, earning $24,000 and $30,000 with unearned income of $1,200 and $600 and two children:
mainto $18,672 and $13,272 here, and CT'sct_ssp_gross_incomeandct_ssp_countable_incomechange with them.ssi,ct_ssp,mn_msa_personandmn_msa_guardian_feeare identical on both: all zero.The symmetric version follows 416.1163(b)(3): allocations come out of unearned income first, then earned.
Worked cases
All amounts are annual model outputs for the claimant. Each row is a YAML case with expectations from the regulation, POMS or SSA's rate tables.
main_parent_links.pycontractis_ssi_ineligible_child.yamlandssi_ineligible_child_allocation.yamladd the 416.1856 cases (21-year-old student, 22-year-old student, 16-year-old household head, married 17-year-old, disabled undocumented child). They also add the allocation cases:Run against
mainwith the new variables stripped, 14 of the first 26 new YAML cases fail. The 416.1163(g) and POMS examples pass on both, as they should.Invariants
policyengine_us/tests/core/test_ssi_spousal_deeming_child_allocations.pyruns three derandomized Hypothesis batches of 30 random households each. A household has a married couple and up to five others: children of either or both spouses, grandchildren of a co-resident adult, unrelated children and other adults. Some live elsewhere and are filed in assorted tax units, and parent ids are given to everyone, no one or some people.A second test checks each child's
ssi_ineligible_child_allocationagainst a month-by-month oracle of 416.1163(b)(1)-(2) and 416.1161(c), on three batches of 60 random children. It also checks that allocations are never negative, never exceed 12 × $497, and never rise with income.Mutation check: 5 of 6 seeded bugs fail the test:
The survivor removes the
child != spouseguard. It is equivalent: a co-resident spouse is married, sois_ssi_ineligible_childis false for them. The guard stays as a statement of the rule. The month-by-month test fails on the earlier annual computation of the allocation.Tests run locally
Validated for review r4 at
9968f387224e43cec90e17d6546cfb57ee352ea5. 20 YAML files, 182 cases passed, plus 2 property tests passed. This includes every changed test file and every file from the round-2 table. Every file ran alone, serially, in the foreground, using the assigned interpreter and local PYTHONPATH, with OMP, OpenBLAS, MKL, VECLIB and NumExpr threads capped at four and OMP_WAIT_POLICY=PASSIVE.make formatandgit diff --checkpass. No folder suite or microsimulation was run.policy/baseline/gov/ssa/ssi/eligibility/income/deemed/ssi_unearned_income_deemed_from_ineligible_parent.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_income_deemed_from_ineligible_spouse.yamlpolicy/baseline/gov/ssa/ssi/eligibility/status/is_ssi_ineligible_child.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/ssi_ineligible_child_allocation.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_spousal_deeming_child_allocations.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_parent.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/ssi_income_deemed_from_ineligible_spouse.yamlpolicy/baseline/gov/ssa/ssi/ssi_countable_income.yamlpolicy/baseline/gov/ssa/ssi/ssi_amount_if_eligible.yamlpolicy/baseline/gov/ssa/ssi/ssi_if_takes_up.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/ism/ssi_in_kind_support_and_maintenance.yamlpolicy/baseline/gov/ssa/ssi/eligibility/resources/deemed/ssi_resources_deemed_from_ineligible_parent.yamlpolicy/baseline/gov/ssa/ssi/integration_tests.yamlpolicy/baseline/gov/hhs/medicaid/income/deemed/from_ineligible_spouse/medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse.yamlpolicy/baseline/gov/hhs/medicaid/income/deemed/from_ineligible_parent/medicaid_optional_senior_or_disabled_unearned_income_deemed_from_ineligible_parent.yamlpolicy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yamlpolicy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yamlpolicy/baseline/gov/states/ca/chhs/wdp/eligibility/ca_wdp_eligible.yamlpolicy/baseline/gov/states/ca/chhs/wdp/eligibility/ca_wdp_ssi_ssp_income_eligible.yamlcore/test_ssi_spousal_deeming_child_allocations.pyKnown limitations
ssi_earned_incomeandssi_unearned_incomeless the student exclusion. The other 416.1161(a) items are not removed separately.Impact
Rerun at the current head (2026-10-20). Main
1661d715bdagainst head66bbf518d4(2026) gives the same figures as the earlier run at47f4a1a770, shown below:The CI repair didn't change the microsimulation paths, so the earlier figures stand; an earlier note here wrongly said they were probably affected.
Impact (hub, 2026-10-19). A real microsimulation on the default dataset for 2026, main at the merge base
f9b55fc4ddagainst head47f4a1a770, under the shared heavy lock. Sums are weighted.ssihousehold_benefitshousehold_net_incomeincome_taxstate_income_taxSSI rises by $12.1M on 3 records (12,165 weighted), and household benefits and net income rise by the same amount. Federal and state income tax don't change.
Intermediate deeming variables. These are weighted sums over all records, so they aren't program dollars:
ssi_countable_incomessi_income_deemed_from_ineligible_spousessi_unearned_income_deemed_from_ineligible_spousessi_earned_income_deemed_from_ineligible_spousessi_unearned_income_deemed_from_ineligible_parentssi_ineligible_child_allocationis_ssi_ineligible_childis_ssi_spousal_deeming_appliesmedicaid_income_deemed_from_parentsis not a variable on either side, so it wasn't compared. Comparison file:~/reviews/us-hub/fixes/10146-impact/compare.2026.json.Review r2: responses
All six executed review scenarios were rerun on merged head
ff19c9dee1before formula fixes; each reproduced the reported defect. The ordinary YAML runs recorded two parent, two status, and two spousal-budget failures. The later net-loss clamp did not address these nonnegative-income cases.Authorities: 416.1165(b), (e)(2), 416.1856(b), 416.1806(a)(1), POMS SI 01310.115 A.3, 416.1163(d), (e)(2). Medicaid's separate child immigration categories follow 42 U.S.C. 1396b(v); MSP income uses SSI methodology under 42 U.S.C. 1396d(p)(1)(B).
Merge with main
Merged
gh/mainatf9b55fc4dd05f1bed921a4dd06cb8c81f6ceb2c7using merge commitff19c9dee1. The sole conflict wasssi_ineligible_child_allocation.yaml; both sides' cases were preserved. Main's pretax-premium fixtures now explicitly set nonstudent status to isolate that rule from this PR's student exclusion; their expected amounts are unchanged.Read-only inspection confirms #10159 at
c7fa16172c90388404a173cce6f0c2350b54a62calready restricts parental allocations by co-residence and applies SSI immigration status. This PR has standalone fixes. The trialgit merge-treereports two content conflicts, in the SSI and Medicaid parent-income formulas; no add/add conflict occurs. Resolution must retain #10159's parent-pool grouping together with this PR's monthly units and Medicaid-specific recipient mask. The stacked branch was not changed. A suggested integration patch is retained as untracked hub evidence; it is not a tested combined head.Review r3: responses
Starting PR head was
204532dad75f84002e7e1f07958407e34e4f89ba, as requested.git merge gh/mainreported “Already up to date” atf9b55fc4dd05f1bed921a4dd06cb8c81f6ceb2c7; no new conflict or resolution was needed. The earlier round-2 merge/resolution above remains part of this branch.($2,000-$20-$994)*12. SSI's student allocation remains $5,964.e9794af1c0fa25ee8ed1bcd1e315d581f8921754, and the current corpus-admission/signed-encoder blockers. No encoding run or PR comment/review request was made.The fail-before YAML run reports:
The same Missouri witness passes after the correction. The final parent file, including the added state controls, passes all seven scenarios.
State allocation scope checked
The formula's callers and parameters route it across all 50 states and DC; it is not a Missouri/Connecticut-only formula. The review was expanded accordingly. Confirmed outer age ceilings now constrain SSI allocation candidates before the shared deduction:
income/deeming/ineligible_child_age_limit.yaml; NC IV.A, FL 2240.0606.03, TX G-2312FL, LA, NY, VA and WIadditionally require allocation children to be nonblind/nondisabled, independently of immigration eligibility. The two mixed-state scenarios are named Review r3 state age ceilings exclude adult students from Medicaid parental allocations. and Review r3 state allocation definitions preserve eligible students and exclude disabled children. They assert unchanged SSI allocations alongside Medicaid outputs, so a Medicaid-only filter cannot silently change SSI.Other jurisdictions checked: AK, AL, AR, AZ, CO, CT, DC, DE, GA, HI, IA, IL, IN, KS, KY, MA, MD, ME, MN, MS, ND, NE, NH, NM, NV, OK, OR, PA, RI, SC, SD, TN, UT, VT, WA, WV, WY. Available official manuals, rules, state plans and source excerpts were inspected; these checks did not establish a new narrower parental allocation age ceiling beyond those implemented. Some sources instead establish a different pre-existing budget structure, while some current manual/route bindings remain unresolved. Those cases are expressly not treated as verification of the shared SSI budget.
Broader pre-existing differences found include CT's AFDC tax-dependent needs budget, CA's maintenance-need family budget, AZ allocations for other eligible children, state application/receipt predicates, and TX/ID/MT allocations for nonstudents 18–20. Those broader definitions/amounts have not been rebuilt in this response. Primary-source access or interpretation gaps remain for AK's current manual, CO's current consolidated rule and the binding of its unemancipated-child definition to allocation children, IN's age-21 wording, ME's full current manual, OK's current parental allocation-age binding, and some programme-to-formula bindings. State ceilings use the shared income model's existing 2015 coverage baseline; the parameter dates do not claim a legal change in 2015. Validation here is for the 2026 witnesses, not a complete historical state-law audit.
For the hub to queue for Max, proposed follow-up title: Rebuild and verify state-specific ABD Medicaid parental allocation budgets.
Reconcile family-needs amounts, nonstudent adult-child allocations, application/receipt predicates and state recipient rules with each programme's manual.
Complete unresolved current-source and programme-to-formula checks before claiming full all-state parity; no public issue was opened.
Methodology — for the hub to queue for Max
The seven review choices are recorded below. Choices 1–6 retain their behaviors; choice 7 records the remaining Wisconsin completion proxy after replacing tax dependency with the education condition. “Pre-existing” refers to the main merge base; new applications of an older proxy are called out separately.
is_full_time_studentfor regularly attending school.is_in_secondary_school(including equivalent-level vocational/technical training) andis_full_time_student, regardless of tax role. Full-time secondary enrollment proxies expected completion before 19 because the model has no expected-completion or remaining-credit input.All seven remain for the hub to queue for Max.
Review r4: responses
Starting PR head was
e9794af1c0fa25ee8ed1bcd1e315d581f8921754, matching the assignment.git merge gh/mainreported “Already up to date” atf9b55fc4dd05f1bed921a4dd06cb8c81f6ceb2c7; no conflict or new resolution was required.is_in_secondary_school(which includes equivalent-level vocational/technical training), andis_full_time_student; retain the minor exception and existing under-19 ceiling. Tax role does not determine Wisconsin's education condition.Authorities: MEH 1.1.3.3 defines dependent 18-year-olds through full-time secondary/equivalent attendance and expected completion before 19; MEH 15.1.2 applies that definition to allocation children; MEH 15.5.8 supports excluding the seniors' $9,000 earnings. The hand calculation is
($2,000 - $497 - $20 - $994) * 12 = $5,868.Fail-before (new legal-condition YAML expectations, unchanged formula):
Pass-after (same file and expectations):
Review r4 validation reran all 20 YAML files / 182 cases in the table above and 2 property tests. Every file ran in its own process, serially and in the foreground with the assigned Python interpreter, local
PYTHONPATH, all five thread caps at four, andOMP_WAIT_POLICY=PASSIVE.make formatandgit diff --checkpass. One property-test import was interrupted while diagnosing a slow WDP invocation; the direct retry passed both tests and is the result counted here. No microsimulation was run. No PR comment or review request was made.Review r5: responses
P2: Wisconsin now accepts
is_in_secondary_school | is_in_k12_schoolinside the age-18/full-time gate, so younger K–12 pupils cannot enter this extension; both original r4 witnesses retainis_in_k12_schoolwithoutis_in_secondary_schooland change $11,832 → $5,868, while college controls remain $11,832. The unchanged witness passes 2/2; Medicaid parent-income and SSI parent/spouse deeming pass 10 + 3 + 11 = 24 cases, each file alone in the foreground with thread caps at four;make formatpasses.CI regressions: responses
Validation boundary: the complete 230-file / 2,122-test sweep and the original nine-file comparison below were completed before merging current main, at
9dabd073bf99f0c2989def4678b6ec894baca3be(222 YAML files / 1,979 cases and eight Python files / 143 tests). They are historical pre-merge results; they do not claim a complete sweep on the merged head. Completed validation after the merge is reported separately below.Confirmed the original PR head
47f4a1a770260db71a0473e76ffd5c6e20c2b87aagainst clean mainf9b55fc4dd05f1bed921a4dd06cb8c81f6ceb2c7. All nine files passed on main; the original head failed 26 of 126 cases. Every existing numerical expected value remains unchanged; six monthly assertion targets in two PR-added witnesses were renamed as listed below.ssi_countable_income: 60was read as $60/month instead of $5/month; Connecticut read annual spouse amounts of $7,200 and $3,600 as monthly, raising countable income from $155.50 to $8,405.50. The PMV/spouse witness likewise read $2,160 instead of $180 and raised SSI countable income from $411.67 to $2,391.67.is_ssi_spousal_deeming_appliesflag. Separate internal*_monthlyvariables retain monthly exclusions, floors, allocations, thresholds and benefit caps. Route monthly state supplement, Medicaid/MSP, SSI benefit and resource consumers directly through those monthly budgets.The living-arrangement witness also exposed the same input-contract issue in
is_ssi_spousal_deeming_applies: a scalar override in a January fixture affected only January after that public flag became monthly, so an annual PMV calculation used it for only one twelfth of the year. Its public input is annual again; monthly benefit calculations readis_ssi_spousal_deeming_applies_monthly, while a calculated public annual flag keeps the original PR stock semantics by returning December's value. The shared annual-input helper records the input-presence dependency so Core invalidates cached monthly budgets when a branch supplies its first annual override. It honors annual neutralization/abolition and keeps the existing override-branch fallback for older supported Core versions. The Python API regression has 25 cases: annual and monthly-period input overrides for 11 currency inputs and the flag, plus branch/cache isolation using a calculated $10,800 annual aggregate with distinct $1,000 January and $800 July budgets. The monthly budgets remain distinct after the annual cache is populated.Annual currency interfaces:
ssi_countable_income,ssi_unearned_income_deemed_from_ineligible_parent,ssi_earned_income_deemed_from_ineligible_spouse,ssi_unearned_income_deemed_from_ineligible_spouse,ssi_income_deemed_from_ineligible_spouse,ssi_ineligible_child_allocation,ssi_in_kind_support_and_maintenance,ssi_pmv_amount,medicaid_optional_senior_or_disabled_countable_income,medicaid_optional_senior_or_disabled_unearned_income_deemed_from_ineligible_parent,medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse. Annual status input:is_ssi_spousal_deeming_applies.Test-only witness target renames are limited to the two PR-added cases in
policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/deemed/from_ineligible_spouse/medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse.yaml:0, October0, and November580now assertmedicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse_monthly; annual1,160remains asserted on the public annual name.0, April0, and May580now assert that same*_monthlyvariable; annual4,640remains asserted on the public annual name.These are six assertion-target renames across two new witnesses. Every input and numerical expected amount is unchanged; no test inherited from main was modified. The source audit found zero pre-existing nested-month assertions on the affected public interfaces across 218 main-existing surface files, and all 94 legacy scalar assertions remain unchanged. The monthly targets preserve the allocation and deeming threshold checks required by 20 CFR 416.1163(b), (d), and (g). The pre-merge production implementation was
9d5777d3ccb5de922f5c47824d046321c5408ece; no Core monkeypatch was introduced.Per-file comparison below uses passed / failed; each file ran alone in each state.
policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yamlpolicy/baseline/gov/states/la/hhs/oss/la_oss.yamlpolicy/baseline/gov/ssa/ssi/ssi_living_arrangement_integration.yamlpolicy/baseline/gov/states/ms/dom/hmw/eligibility/ms_hmw_income_eligible.yamlpolicy/baseline/gov/states/in/fssa/ssp/integration.yamlpolicy/baseline/gov/states/fl/dcf/oss/fl_oss.yamlpolicy/baseline/gov/states/fl/dcf/oss/fl_oss_eligible.yamlpolicy/baseline/gov/states/fl/dcf/oss/edge_cases.yamlpolicy/baseline/gov/states/ct/dss/ssp/income/ct_ssp_countable_income.yamlReviewed witnesses rerun: 20 YAML files / 184 cases passed, plus 2 allocation property tests passed. This includes absent students, immigration/divisor agreement, married children, historical student ages, the $1,000/$2,600 monthly cap witnesses, Missouri and all 14 state ceilings, Wisconsin's age-18 education rule and both unchanged r4/r5 K–12 witnesses, pretax premiums, and California's annual WDP screen.
Full affected surface, counting unique files across the focused and remaining-surface phases on pre-merge production code (unchanged-file results reused after the test-only refactor): 222 YAML files / 1,979 cases passed: 36 SSI files, 161 state-program files (direct SSI income/deeming and supplement-helper readers plus SSI benefit consumers), 21 Medicaid-category files, and 4 Medicaid/MSP income witness files. All 8 Python files passed (143 tests). No files in that pre-merge sweep were left unfinished; that complete sweep was not repeated in full on the merged head.
policyengine_us/tests/core/test_ssi_spousal_deeming_child_allocations.pycore/test_ssi_resource_deeming_invariants.pycore/test_ssi_state_supplement_medicaid_dependency.pycore/test_ssi_disability_criteria_inputs.pyunit/test_medicaid_abd_ssi_rate_standard_properties.pyutilities/test_ssi_payment_timing.pycore/test_medicaid_household_income_invariants.pycore/test_ssi_annual_income_inputs.pyThe new API file uses 29 production classes (five dependencies plus 12 public/monthly pairs), passed 25 tests, and measured 30.78s wall time / 1.18 GiB peak RSS for its standalone process, including country import. It uses one small Core system with production variable classes and shared read-only country parameters; it runs in the existing Rest/core group. No CI runner was added.
All validation ran one file per foreground process, serially, with OMP, OpenBLAS, MKL, VECLIB and NumExpr capped at four threads and
OMP_WAIT_POLICY=PASSIVE. No microsimulation was run.make formatpassed. At the current head,git diff --checkflags one trailing space atssi_income_deemed_from_ineligible_spouse_monthly.py:19, a docstring line copied verbatim from main. Numerical expectation changes made by this CI repair: none. Six monthly assertion targets in two PR-added witnesses were renamed as detailed above; no inherited main tests were modified.Main merge and post-merge validation
Merged current main
05b9da3e9283160355b41614d36422f6111a7540(advanced fromf9b55fc4dd05f1bed921a4dd06cb8c81f6ceb2c7) into the repaired branch at merge commite5d2604aa3efb61f8b4cc5c4e7af95c8a5539c29. That validation ran at8573f6ada38a3ac51e59fed709ad780a0fdeff3f, which has since been superseded: the current head is66bbf518d4, after the North Carolina revert and a main merge. The prior complete sweep was on9dabd073bf99f0c2989def4678b6ec894baca3be. Completed results below belong to the serial post-merge validation phase, with no claim that the complete earlier sweep was repeated after each follow-up commit.The Colorado conflict retains main's new
co_state_supplement_countable_incomehelper, which counts each AND-CS client's own income rather than half the couple's pooled SSI income. Four references were then routed to the extracted monthly calculations: Colorado's new helper readsssi_in_kind_support_and_maintenance_monthlyandssi_countable_income_monthly; Texas eligibility readsssi_countable_income_monthlyandssi_income_deemed_from_ineligible_spouse_monthly. New Mexico's SSI-receipt gate remains as merged from main. Public annual input interfaces are preserved.Expectation changes inherited from upstream are separate from this CI repair: main corrected Colorado couple eligibility and own-income treatment, New Mexico's separate benefit groups for spouses receiving SSI, and Texas's reduced-facility-rate and personal-needs rules. The corresponding CO/NM/TX tests and Colorado partner-contract expectations were imported from current main without local expectation edits. Their sources are 9 CCR 2503-5, §§3.546–3.549, 8.106.400.10(C) NMAC, 8.106.500.10 NMAC, 1 TAC 358.381(c)(2), and HHSC H-6000.
The original CI repair changed no numerical expected values; separate post-merge corrections and their validation status are listed below. Its original witness adaptations remain the six assertion-target renames in the two PR-added Medicaid monthly-cap cases, preserving January/October/November
0/0/580, January/April/May0/0/580, and public annual totals1,160/4,640. Those extracted monthly targets preserve the same allocation/deeming rules under 20 CFR 416.1163. The original nine regression files retain all numerical expected values.Completed post-merge results recorded at 2026-10-19 17:53:21 UTC: 35 fully passing files / 531 passed cases/tests (26 YAML files / 356 cases; 9 Python files / 175 tests). These counts come only from complete successful records in
postmerge/results.jsonl,postmerge-nc/results.jsonl; unrecorded or failing files are not credited as passing. A file present in multiple phases is counted once using its latest selected record.The targeted post-merge plan contains 77 files: 42 have no completed result record and 0 have a latest nonpassing/unparseable record. The complete affected surface was not rerun on the merged head; 199 of 234 full-surface/additional checks lack a complete successful merged-head record.
Original nine-file comparison uses passed / failed. The pre-merge columns retain the completed historical comparison; the last column reports only completed merged-head reruns.
policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yamlpolicy/baseline/gov/states/la/hhs/oss/la_oss.yamlpolicy/baseline/gov/ssa/ssi/ssi_living_arrangement_integration.yamlpolicy/baseline/gov/states/ms/dom/hmw/eligibility/ms_hmw_income_eligible.yamlpolicy/baseline/gov/states/in/fssa/ssp/integration.yamlpolicy/baseline/gov/states/fl/dcf/oss/fl_oss.yamlpolicy/baseline/gov/states/fl/dcf/oss/fl_oss_eligible.yamlpolicy/baseline/gov/states/fl/dcf/oss/edge_cases.yamlpolicy/baseline/gov/states/ct/dss/ssp/income/ct_ssp_countable_income.yamlCompleted successful merged-head files:
policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yamlpolicy/baseline/gov/states/la/hhs/oss/la_oss.yamlpolicy/baseline/gov/ssa/ssi/ssi_living_arrangement_integration.yamlpolicy/baseline/gov/states/ms/dom/hmw/eligibility/ms_hmw_income_eligible.yamlpolicy/baseline/gov/states/in/fssa/ssp/integration.yamlpolicy/baseline/gov/states/fl/dcf/oss/fl_oss.yamlpolicy/baseline/gov/states/fl/dcf/oss/fl_oss_eligible.yamlpolicy/baseline/gov/states/fl/dcf/oss/edge_cases.yamlpolicy/baseline/gov/states/ct/dss/ssp/income/ct_ssp_countable_income.yamlpolicy/baseline/gov/states/co/ssa/state_supplement/co_state_supplement.yamlpolicy/baseline/gov/states/co/ssa/state_supplement/co_state_supplement_countable_income.yamlpolicy/baseline/gov/states/co/ssa/state_supplement/co_state_supplement_eligible.yamlpolicy/baseline/gov/states/nm/hca/ssi_supplement/integration.yamlpolicy/baseline/gov/states/nm/hca/ssi_supplement/nm_ssi_state_supplement.yamlpolicy/baseline/gov/states/nm/hca/ssi_supplement/nm_ssi_state_supplement_eligible.yamlpolicy/baseline/gov/states/nm/hca/ssi_supplement/nm_ssi_state_supplement_historical.yamlpolicy/baseline/gov/states/tx/hhsc/ssi_state_supplement/integration.yamlpolicy/baseline/gov/states/tx/hhsc/ssi_state_supplement/tx_ssi_state_supplement_eligible.yamlpolicy/baseline/partners/analytics_coverage/edge_cases/state/co/state_supplement.yamlcore/test_ssi_state_supplement_couple_invariants.pypolicy/baseline/parameters/test_uprating_extensions.pycore/test_ssi_annual_income_inputs.pypolicy/baseline/gov/hhs/medicaid/eligibility/categories/medicaid_category.yamlpolicy/baseline/gov/states/in/fssa/ssp/medicaid_snap_cycle.yamlpolicy/baseline/gov/states/ks/kdhe/sspp/medicaid_snap_cycle.yamlpolicy/baseline/gov/states/mo/dss/ssp/mo_ssp_eligible.yamlpolicy/baseline/gov/states/mo/dss/ssp/mo_ssp_immigration_status_eligible.yamlpolicy/baseline/gov/states/nc/ncdhhs/sa/nc_sa.yamlcore/test_ssi_spousal_deeming_child_allocations.pycore/test_ssi_resource_deeming_invariants.pycore/test_ssi_state_supplement_medicaid_dependency.pycore/test_ssi_disability_criteria_inputs.pypolicy/baseline/gov/states/nc/ncdhhs/sa/nc_sa_rate.yamlunit/test_medicaid_abd_ssi_rate_standard_properties.pyutilities/test_ssi_payment_timing.pyNorth Carolina: this PR no longer changes North Carolina. Commit
9852fb964aremoves the 2027 Special Assistance rate update that8573f6ada3had added, because #10288 sets those rates to the approved COLA ($1,447 / $1,857, G.S. 108A-42.1) and #10279 already updated main's Case 37. At head66bbf518d4, every North Carolina SA parameter and test file is identical to main. The two NC rows in the table above are from the earlier head.RuleSpec: the SSI allocation and deeming work remains queued under the existing issue; no new public issue was opened.
Targeted checks without a completed merged-head record:
core/test_medicaid_household_income_invariants.pypolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_parent.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_income_deemed_from_ineligible_spouse.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_spousal_deeming_child_allocations.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/ssi_income_deemed_from_ineligible_spouse.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/ssi_ineligible_child_allocation.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/deemed/ssi_unearned_income_deemed_from_ineligible_parent.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/is_ssi_blind_or_disabled_working_student_exclusion_eligible.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/ism/ssi_in_kind_support_and_maintenance.yamlpolicy/baseline/gov/ssa/ssi/eligibility/income/ssi_blind_or_disabled_working_student_exclusion.yamlpolicy/baseline/gov/ssa/ssi/eligibility/resources/deemed/is_ssi_spousal_resource_deeming_applies.yamlpolicy/baseline/gov/ssa/ssi/eligibility/resources/deemed/ssi_resources_deemed_from_ineligible_parent.yamlpolicy/baseline/gov/ssa/ssi/eligibility/resources/deemed/ssi_resources_deemed_from_ineligible_spouse.yamlpolicy/baseline/gov/ssa/ssi/eligibility/resources/meets_ssi_resource_test.yamlpolicy/baseline/gov/ssa/ssi/eligibility/ssi_marital_both_eligible.yamlpolicy/baseline/gov/ssa/ssi/eligibility/status/is_ssi_ineligible_child.yamlpolicy/baseline/gov/ssa/ssi/eligibility/status/ssi_federal_living_arrangement.yamlpolicy/baseline/gov/ssa/ssi/income/ssi_earned_income.yamlpolicy/baseline/gov/ssa/ssi/income/ssi_engaged_in_sga.yamlpolicy/baseline/gov/ssa/ssi/income/ssi_marital_earned_income.yamlpolicy/baseline/gov/ssa/ssi/income/ssi_marital_unearned_income.yamlpolicy/baseline/gov/ssa/ssi/income/ssi_unearned_income.yamlpolicy/baseline/gov/ssa/ssi/integration_tests.yamlpolicy/baseline/gov/ssa/ssi/is_ssi_aged_blind_disabled.yamlpolicy/baseline/gov/ssa/ssi/is_ssi_disabled.yamlpolicy/baseline/gov/ssa/ssi/is_ssi_eligible.yamlpolicy/baseline/gov/ssa/ssi/is_ssi_qualified_noncitizen.yamlpolicy/baseline/gov/ssa/ssi/meets_ssi_disability_criteria.yamlpolicy/baseline/gov/ssa/ssi/ssi.yamlpolicy/baseline/gov/ssa/ssi/ssi_amount_if_eligible.yamlpolicy/baseline/gov/ssa/ssi/ssi_claim_is_joint.yamlpolicy/baseline/gov/ssa/ssi/ssi_countable_income.yamlpolicy/baseline/gov/ssa/ssi/ssi_couple_computation_applies.yamlpolicy/baseline/gov/ssa/ssi/ssi_if_takes_up.yamlpolicy/baseline/gov/ssa/ssi/uncapped_ssi.yamlpolicy/baseline/gov/hhs/medicaid/income/deemed/from_ineligible_spouse/medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse.yamlpolicy/baseline/gov/hhs/medicaid/income/deemed/from_ineligible_parent/medicaid_optional_senior_or_disabled_unearned_income_deemed_from_ineligible_parent.yamlpolicy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yamlpolicy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yamlpolicy/baseline/gov/states/ca/chhs/wdp/eligibility/ca_wdp_eligible.yamlpolicy/baseline/gov/states/ca/chhs/wdp/eligibility/ca_wdp_ssi_ssp_income_eligible.yamlaxiom: 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