Skip to content

Include farm and partnership earnings in SSI and correct loss netting - #10532

Open
MaxGhenis wants to merge 3 commits into
mainfrom
ssi-earned-farm-partnership
Open

MaxGhenis wants to merge 3 commits into
mainfrom
ssi-earned-farm-partnership

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Fixes #10531

What and why

A Texas senior aged 67 with $60,000 of Schedule C profit receives no SSI or MSP Part B coverage. On base 8b17892d2cba99a82961ea32fbaf9d69c6ba73d6, putting that profit in farm operations or partnership SECA earnings instead produces $11,928 SSI and $2,434.80 MSP Part B coverage. Both cases are now treated like Schedule C: SSI $0, MSP Part B coverage $0, and personal Part B premium $2,434.80.

Add the disjoint farm_operations_income (active Schedule F) and partnership_self_employment_net_earnings (the K-1 Box 14 SECA component) once to SSI earned sources, and correct “unearned” to “earned” in the description. Do not add passive farm rent, all partnership_income, or total_self_employment_income, which would duplicate or misclassify income. The tax-base formula applies its NESE adjustment to the partnership input, confirming that the input is pre-adjustment despite its name.

The required loss-rule review also exposed existing errors. Keep signed individual earnings for own-income readers, but apply a spouse's excess business loss to the other spouse's earned SSI/MSP/optional-Medicaid budget, using the existing co-resident spouse identification. Prevent negative earned balances from increasing child allocations or creating negative student exclusions. CT and MN readers combine the same loss-adjusted own earnings with deemed earnings so the loss is deducted once. MN restores pretax premiums only after covering any otherwise unabsorbed business loss, preventing false positive gross income. NH uses its own raw self-employment list because its law forbids business losses offsetting wages. KY uses its own list and floors each modeled business source separately; its full spouse/parent methodology remains an existing limitation.

Governing text and the four questions

  • (a) Classification. 20 CFR 416.1110(b): “Net earnings also include your share of profit or loss in any partnership to which you belong.” 404.1080 includes “Your distributive share (whether or not actually distributed)”; 404.1095 covers an “agricultural trade or business”; POMS SI 00820.200 says “NESE also includes any profit or loss in a partnership.” Active farm and qualifying partnership earnings are earned.
  • (b) Adjustment. POMS SI 00820.210 A.3: “net profit is multiplied by .9235 to determine NESE.” It excludes the deduction for losses, below-$400 adjusted NESE, or when Social Security tax was not paid; Schedule SE amounts already incorporate it. SI 00820.220 C.2.e: “unless you have evidence that Social Security taxes were paid on the NESE.” 42 USC 411(a)(11): “there shall be allowed a deduction equal to the product of”, using half the combined payroll rates. The existing raw Schedule C treatment is retained and both added raw inputs follow it. Applying taxable SE income directly would erase small profits and losses. Hub statute/model-input question: what filing/tax-paid evidence assumption should the model make for these raw inputs? This PR does not infer that evidence or apply an unconditional adjustment.
  • (c) Losses. 404.1081(c): “A loss in one trade or business you carry on offsets the income from another trade or business.” Subsection (d) combines partnership and other NESE. Under 416.1111(b), losses offset earned income, including wages, never unearned income. POMS .210 B.2.c applies a loss to the person's earnings first, then the spouse's earnings, including eligible/ineligible spouses. The signed source sum already handled own-business/wage netting; this PR fixes the remaining spouse/allocation/exclusion paths.
  • (d) Monthly allocation. 416.1111(b): “divide the total of these earnings equally among the months in the taxable year”; “we deduct them only from your other earned income”. The model already divides annual earnings by 12 before monthly exclusions; seasonal or partial-year work is not prorated only over months worked. Short taxable years remain an annual-input limitation.

Invariants and intentional exceptions

  • Moving a fixed profit between Schedule C, active farming, and qualifying partnership earnings leaves ssi_earned_income unchanged; no added source is counted twice.
  • SSI does not rise when business profit rises.
  • With farm/partnership zero and nonnegative remaining business income, SSI, MSP, and all bounded state-reader outputs match main exactly. The property test uses a source-list reversion; the separate differential restores every changed variable class from the recorded git base.
  • Universal zero-farm equivalence would preserve the loss errors this assignment asks to correct. Signed-loss cases intentionally differ: spouse loss offsets earned income, child allocations cannot be increased by a net loss, student exclusions cannot be negative, MN gross income cannot become negative or resurrect unabsorbed losses through premium restoration, NH losses cannot reduce wages, and KY disallows one business loss offsetting another business. Exact before/after examples are recorded in validation below.

Reader audit

Each row checks that program's own law; qualifying active farm/partnership earnings count as earned in all audited readers. Classification sharing does not assert that tax net profit captures every program-specific expense or averaging adjustment.

Reader(s) Own law: farm and partnership earnings Disposition / qualification
ssi_earned_income; ssi_earned_income_after_spousal_loss; ssi_marital_earned_income 20 CFR 416.1110(b) includes any trade/business NESE and partnership profit/loss; 416.1112 applies couple exclusions; POMS .210 B.2.c applies own/spouse loss offsets. Shared raw SSI list; helper adjusts only SSI-style budgets, keeping SGA and own-income state readers raw.
ssi_earned_income_deemed_from_ineligible_spouse, ssi_income_deemed_from_ineligible_spouse, is_ssi_spousal_deeming_applies 416.1163(a), (d) first determines spouse earned/unearned income, then combines earnings under SSI exclusions. Shared SSI list via ssi_earned_income.
ssi_unearned_income_deemed_from_ineligible_parent, ssi_ineligible_child_allocation 416.1165(a)-(e) determines parental earned income and child allocations under SSI rules. Shared SSI list via ssi_earned_income.
ssi_blind_or_disabled_working_student_exclusion 416.1112(c)(3) applies to earned income generally, including NESE. Shared SSI list via ssi_earned_income.
ssi_engaged_in_sga 416.975(b)-(c) explicitly evaluates self-employed businesses and materially participating farm landlords. DI 10510.012 starts with NESE then work-value deductions. Inclusion correct. Existing income-only SGA approximation omits services/comparability tests; do not interpret this list addition as implementing those tests.
msp_countable_income (own earnings and spouse-deemed earnings) SSA 1905(p)(1)(B), (s)(2) determines QMB/QDWI income under SSI section 1612; 42 CFR 435.601 allows less restrictive state exclusions. Shared SSI list; state exclusions applied downstream.
medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse, medicaid_optional_senior_or_disabled_unearned_income_deemed_from_ineligible_parent 42 CFR 435.601(b)-(d) uses categorically related cash-assistance methodology, SSI for ABD, subject to 209(b)/state exceptions; 435.602 permits spouse/parent responsibility. Shared SSI earned classification; existing state methodology exceptions remain.
ca_wdp_gross_earned_income DHCS WDP criteria accept self-employment; 22 CCR 50503(a)(2), (8), 50505 in DHCS manual classify net self-employment profits and actively produced farm products as earned. Reads raw source list; inclusion correct. Existing state business-expense rules differ from tax NESE and remain a model-input limitation.
mn_msa_gross_income, mn_msa_net_income_eligible, mn_msa_person Minn. Stat. 256P.01 subd.3 includes net self-employment profits; CM 0017.15.33 explicitly includes sole proprietorships and partnerships and links farming. 256D.435 subds.4,4a,6 applies SSI deeming/exclusions. 256D.35 subd.10 defines gross income before disregards. Shared earned classification correct; premium restoration first absorbs otherwise unused losses. 256P.05 gives non-SSI recipients half-gross/taxable methods; SSI recipients exempt. Existing method choice requires separate inputs beyond this source fix.
nh_ssp_countable_income He-W 601.04(n), 654.01 treats self-employment work income minus business cost as earned. Own source list/computation implemented. 654.01(b)-(c) sets loss-making self-employment income to zero and forbids excess costs reducing other income. The implementation retains existing business-input aggregation, moving its floor before wages; business-by-business treatment remains a hub reading question.
wi_cts_gross_earned_income CTS Handbook 3.2.1 counts earned income from work and explicitly provides deductions for self-employed individuals; CTS uses historical AFDC definition in 45 CFR 233.20(a)(6)(iii)-(v), including farm, business and professional self-employment. Reads raw source list; inclusion correct. AFDC/state expense calculation differs from tax NESE, a preexisting input limitation.
ct_ssp_countable_income, ct_ssp_earned_income_disregard, ct_ssp_gross_income UPM 5000.01 definitions includes self-employment proceeds in earned income and defines gross earned from SE as income less SE expenses. Inclusion correct through ssi_earned_income_after_spousal_loss; CT UPM 5025.15 has partial-year averaging exceptions, a preexisting annual-input limitation.
co_state_supplement_countable_income, co_oap_own_countable_income, co_oap_deemed_income 9 CCR 2503-5 3.520.782-.783 counts self-employment net profits as earned and expressly counts annual farm net income as earned; 3.534 governs spouse deeming. Inclusion correct; CO excludes depreciation and has its own averaging, existing raw tax-profit approximation limitations.
va_ag_countable_income AG Manual Chapter A.4 and I.59 uses SSI policy; I.59 expressly classifies all-trade/business NESE and partnership profit/loss earned. Shared SSI classification. Non-SSI self-employment cases require an AG consultant under I.59.1; do not invent additional rule.
vt_aabd_ep_countable_income AABD rule 2786 adopts Reach Up income rules. P-2213C / rule2251.3 classifies self-employment earned and expressly recognizes farm expenses. Reads raw list; inclusion correct. Reach Up disallows prior-year losses, depreciation and other expenses; current annual farm/partnership profit input does not expose all adjustments (preexisting limitation).
_ok_ssp_income helper: ok_ssp_countable_income, ok_ssp_own_countable_income; ok_ssp_spouse_child_allocation OAC 317:35-5-42(b)(9)(B), (i)(4) includes trade/business and partnership profit/loss; explicitly averages crop-farm income over 12 months. Inclusion correct; helper already floors each raw source and keeps state rounding/exclusions. Subannual-business averaging differs from SSI; annual-input limitation remains.
or_ssp_countable_income OAR 461-145-0910 includes own business/trade; 461-145-0915 explicitly includes general partners; 461-150-0095 annual NESE/12 and net losses against other earned income. Inclusion correct. Existing own-only vs financial-group loss treatment documented in source remains.
nc_sa_countable_income NC SA-3210 III.C, IV.B.1 counts self-employment and farm profit as earned and combines with other earnings; qualifying partnership NESE inferred from general SE rule. Inclusion correct; expense calculation disallows depreciation (existing input limitation).
oh_rss_countable_income OAC 5160:1-1-01(B)(19),(85) and 5160:1-3-03.1(B)(4) include self-employment from any trade/business less allowable deductions. Inclusion correct; farm/qualifying partnership inference from general NESE definition.
sd_ssp_care ARSD 67:46:04:03 refers to SSI earned-income definition; 67:46:04:02 counts available income; 67:46:06:03 applies the provisions for care supplement payments. Inclusion correct; no separate SE-loss floor found.
sd_ssp_independent ARSD 67:12:14:03(2) ends optional supplementation when a recipient has other income beyond SSI; POMS SI DEN01415.011 B.5 likewise requires no other income. Positive farm/business or partnership NESE is other income. Shared raw source list is a source-presence inventory here. Each source stays floored independently; this reader does not apply SSI earned exclusions or loss netting.
wy_ssp_eligible W.S. 42-2-103(d) and EOM M1804 require the SSI payment to be the recipient's sole income. Positive farm/business or partnership NESE defeats that condition. Shared raw source list is a source-presence inventory here. Retain positive-only source checks, with no earned exclusions or loss offsets.
md_paa_countable_income COMAR 07.03.07.07 B(2) counts self-employment less essential production expenses; 07.03.07.08 A(1), (3) expressly treats income from .07 B(1)-(2) as earned. Farm and active partnership inclusion follows the general self-employment rule (inference). Reads SSI marital earnings plus parent/spouse deemed income. Shared source classification correct. State production-expense measure and separate income/disregard rules remain existing methodology constraints.
ky_ssp_earned_income, ky_ssp_countable_income 921 KAR 2:015 section 8(1), (3), (6), (8) adopts medically-needy income rules with state exceptions. Medicaid/State Supplementation MS2450 C, C(5) expressly treats active farming/self-employment as earned and divides jointly owned business profit; active partnership NESE inclusion is an inference from that rule. Own source list/computation implemented for own earnings. Positive farm/partnership profits are earned, but MS2450 C(8)(b) bars one-business losses reducing another's profit. Retained SSI student/unearned/deemed inputs do not implement all own-state rules: depreciation/prior losses are also disallowed; section 8(3), (6) has its own spouse allocations and pooling. State-tax-profit adjustment inputs and full deeming require follow-up; do not claim retained SSI deeming is Kentucky's full methodology.
tx_ssi_state_supplement_eligible Texas MEPD H-6000 states SSA determines SSI eligibility and institutional recipients qualify at SSI countable income of $30 or less. Federal 416.1110(b) therefore supplies the farm/partnership earned classification. Reads SSI countable income and removes spouse-deemed income for the institutional own-income test. Shared SSI earned classification correct.
mt_ssp, nv_oss, nj_ssp, vt_aabd_federal 20 CFR 416.2025(b) determines federally administered optional-supplement countable income by SSI methodology, including spouse deeming. Current POMS SI 01415.058 H, I, J, M identifies these four states' federally administered supplement programs. Thus the farm/partnership NESE classification in 416.1110(b) applies to each program. Shared SSI helper classification and spouse-loss budget are supported. This row covers Vermont's federal supplement, separately from Vermont's Reach Up-based essential-person payment audited above.
pa_ssp 55 Pa. Code 299.21(a)-(b) requires SSI eligibility except excess income; 299.36(a)(2)(iv) expressly applies 20 CFR Part 416 Subpart K income requirements to state-administered SSP-only cases. Federally administered care supplements are also identified in POMS SI 01415.058 K. Farm/partnership NESE counts as earned under the adopted SSI rules for both administration paths; shared helper appropriate for classification.
ny_ssp NY Social Services Law 208(6)-(8) defines countable income using federal/state exclusions and defines earned income to include self-employment. 209(4) computes additional payments from SSI plus countable income. Active farm/qualifying partnership NESE inclusion follows the general self-employment definition (inference). State administration does not change the earned classification. Existing New York-specific categories and payment rules remain in the wrapper.
ri_ssp 218-RICR-20-00-5.1.1(A)(1), 5.2(B)(2)-(3) applies Part 416 income eligibility, distinguishes SSA-administered Category D from state administration, and specifies countable-income calculations for state-only payments. Category D is identified in POMS SI 01415.058 L. SSI farm/partnership NESE classification applies; the state-only provision cross-references its Medicaid countable-income rules, without a separate exclusion of active farm/partnership earnings. Classification sharing is supported for both paths; administrative/payment differences remain in the wrapper.

NH's individual-level text clearly bars excess business costs from other income. This change retains the model's existing aggregation of business inputs and moves the self-employment floor ahead of wages; business-by-business versus aggregate-business treatment remains a hub statute-reading question. CT/MN own-and-deemed budgets now use the loss-adjusted helper consistently. Other state expense/partial-year conventions are existing input limitations, as the table states.

The static audit covers direct earned-source and earned-income readers, all direct consumers of the changed marital/deeming budgets, and their state function wrappers: 34 state outputs across 23 sampled states (including the new KY own-income helper). It excludes unbounded propagation through SSI as transfer income. The table distinguishes classification from program-specific expense/deeming rules.

Remaining hub readings/input questions: (1) conditional 92.35% tax-paid/filing evidence; (2) NH aggregate-business versus business-by-business losses; (3) KY section 8(3) spouse conservation versus section 8(6) combined-earnings ordering, plus its distinct parental methodology. KY own-source floors are corrected here, but retained SSI student/unearned/deemed inputs are an explicit approximation, not a claim of full state-methodology compliance. Raw business inputs also do not expose each business or state-disallowed depreciation.

Proposed separate follow-up (no issue created): Missouri SAB omits active partnership self-employment earnings from its earned source list.
Its own source list already contains farm income and is unaffected by the SSI-list change; the omission is independent. Review active partnership NESE against MO SAB Manual 0410.015.05, preserving passive investment treatment.

Open-PR overlap

Checked git merge-tree --write-tree at branch HEAD 6cb74d7c4ee2a566a30712673200a6aa371d3f69 against the current GitHub heads below, refreshed 2026-10-29 13:19:24 UTC. Current main is 1b52a6d7c08574c47aa87d762efc996f55a0ff58; this branch merges cleanly with it.

Exit 1 below denotes a hypothetical merge conflict. Exact common/conflict files and semantic integration requirements follow; raw command logs remain untracked locally for the hub.

PR / current head Final merge-tree Common files Semantic overlap / integration requirement
Current main 1b52a6d7c08574c47aa87d762efc996f55a0ff58 Exit 0; clean No common changed files since our base 8b17892d2c Main added the owners-draw reform (#10483) and its version update. The reform is off by default. Final HEAD merges cleanly with current main; the original base is recorded above.
#10146 6559b7c3358e935951799543890a6bbbef30d8f4 Exit 1; 12 conflicted files 16 files: MSP formula/YAML; optional Medicaid spouse-deeming formula; SSI spouse earned/income-deeming formulas; SSI child-allocation formula/YAML; CT SSP countable/disregard/gross formulas; KY SSP countable formula; MN MSA net-eligibility/gross/person formulas; NH SSP countable formula/YAML Replaces annual SSI/Medicaid budgets with monthly consumers and changes child-allocation scope. Preserve this PR's ssi_earned_income_after_spousal_loss routing and nonnegative child-earned contribution in the new monthly formulas. Keep CT/MN own/deemed earnings consistent, including MN gross-premium restoration. Preserve KY's separate positive-business source computation when adapting its monthly budget. Combine NH's add/add test cases and preserve its separate self-employment loss rule.
#10141 a53311ad7b201b8f9aa7b37185fbde55b34b4382 Exit 1; 2 conflicted files SSI spouse-earned-deeming and marital-earned formulas (conflicts); MN MSA net-eligibility and person formulas (automatic merge) Replaces marital-unit assumptions with actual spouse indices and changes SSI couple/deeming caps. Retain the normalized earned-budget input when adopting its spouse selection. Its changes to _ssi_spouses.py also affect both this PR's new SSI loss helper and MN gross-premium restoration, which import that shared spouse-index function, although there is no common spouse-helper-file edit.
#10360 7291aa771386606c03e87ce736fd07007da6350a Exit 1; MSP YAML conflict only msp_countable_income.py and msp_countable_income.yaml; formula auto-merges Adds state MSP exclusions after the same earned-income budget. Preserve the loss-adjusted source before applying its state exclusions and combine both YAML additions.
#10483 b5fb5cabb2227fab8e00d40a9fc3bb964768f0cd (merged) Exit 0; clean No common files Now merged into main. Reads partnership SE earnings as an already-SE subset to remove from its optional owners-draw residual; reform is off by default. This PR counts that existing partnership component once and adds no owners-draw source. No conflicting baseline change.

#10146 exact conflict files

  • policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml
  • policyengine_us/tests/policy/baseline/gov/states/nh/dhhs/ssp/nh_ssp_countable_income.yaml (add/add)
  • policyengine_us/variables/gov/hhs/medicaid/income/deemed/from_ineligible_spouse/medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse.py
  • policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py
  • policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_earned_income_deemed_from_ineligible_spouse.py
  • policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_income_deemed_from_ineligible_spouse.py
  • policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/ssi_ineligible_child_allocation.py
  • policyengine_us/variables/gov/states/ct/dss/ssp/income/ct_ssp_countable_income.py
  • policyengine_us/variables/gov/states/ct/dss/ssp/income/ct_ssp_earned_income_disregard.py
  • policyengine_us/variables/gov/states/ky/dcbs/ssp/ky_ssp_countable_income.py
  • policyengine_us/variables/gov/states/mn/dhs/msa/eligibility/mn_msa_net_income_eligible.py
  • policyengine_us/variables/gov/states/mn/dhs/msa/mn_msa_person.py

#10146 other common files, merging automatically

  • policyengine_us/tests/policy/baseline/gov/ssa/ssi/eligibility/income/deemed/ssi_ineligible_child_allocation.yaml
  • policyengine_us/variables/gov/states/ct/dss/ssp/income/ct_ssp_gross_income.py
  • policyengine_us/variables/gov/states/mn/dhs/msa/income/mn_msa_gross_income.py
  • policyengine_us/variables/gov/states/nh/dhhs/ssp/nh_ssp_countable_income.py

Other exact conflict files

#10141:

  • policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_earned_income_deemed_from_ineligible_spouse.py
  • policyengine_us/variables/gov/ssa/ssi/eligibility/income/marital/ssi_marital_earned_income.py

Automatically merged common files for #10141:

  • policyengine_us/variables/gov/states/mn/dhs/msa/eligibility/mn_msa_net_income_eligible.py
  • policyengine_us/variables/gov/states/mn/dhs/msa/mn_msa_person.py

#10360:

  • policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml

Automatically merged common file for #10360:

  • policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py

#10483: none.

Validation

  • YAML: 117 distinct cases across 15 files passed, including all nine unchanged Kansas partner cases. Minnesota's 18 person cases were rerun after its gross-income correction.
  • Python: four tests passed: Hypothesis profit repartition, SSI monotonicity, zero-farm/partnership list-reference equivalence on the nonnegative-business domain, and a seeded 200-household comparison.
  • Actual-main differential: 200 households, 377 people, 23 states, 113 existing outputs exactly match base 8b17892d2cba99a82961ea32fbaf9d69c6ba73d6 with farm/partnership zero and nonnegative Schedule C/SSTB. Restored 15 exact base variable classes, rather than only reverting the source list.
  • Mutants: all three killed by assertion failures under 2 GB/900s; positive control passed under the same cap (0.761 GiB local peak). No RSS/timeout kill was counted as a semantic kill.
YAML file Cases Process wall, seconds Peak RSS, GiB
gov/ssa/ssi/income/ssi_earned_income.yaml 14 434 2.193
gov/ssa/ssi/ssi.yaml 7 465 2.646
gov/ssa/ssi/income/ssi_earned_income_after_spousal_loss.yaml 4 366 2.371
gov/ssa/ssi/income/ssi_marital_earned_income.yaml 6 582 2.154
gov/ssa/ssi/eligibility/income/deemed/ssi_ineligible_child_allocation.yaml 5 561 2.130
gov/ssa/ssi/eligibility/income/ssi_blind_or_disabled_working_student_exclusion.yaml 11 352 2.179
gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml 7 261 2.140
gov/states/nh/dhhs/ssp/nh_ssp_countable_income.yaml 5 255 2.090
gov/states/ct/dss/ssp/income/ct_ssp_countable_income.yaml 11 266 2.108
gov/states/mn/dhs/msa/mn_msa_person.yaml 18 259 2.280
partners/analytics_coverage/edge_cases/state/ks/tanf.yaml 9 466 2.365
gov/states/sd/dss/ssp/sd_ssp_independent.yaml 2 168 2.084
gov/states/wy/health/ssp/wy_ssp_eligible.yaml 2 106 2.083
gov/states/ky/dcbs/ssp/ky_ssp_countable_income.yaml 12 137 2.152
gov/states/mn/dhs/msa/income/mn_msa_gross_income.yaml 4 272 2.088
Mutant Observed Schedule C / farm / partnership earned income Result
drop-farm [60000.0, 0.0, 60000.0] versus [60000, 60000, 60000] killed
drop-partnership [60000.0, 60000.0, 0.0] versus [60000, 60000, 60000] killed
double-farm [60000.0, 120000.0, 60000.0] versus [60000, 60000, 60000] killed

The following signed-loss cases intentionally change even with farm/partnership zero. Each was run against the actual recorded base and the fixed policy; amounts are annual except MSP/NH/KY/MN monthly values.

Intentional correction Output Main Fixed
spouse_business_loss_offsets_applicant_wages msp_countable_income@2026-01 [457.5, 0.0] [249.1666717529297, 0.0]
spouse_business_loss_offsets_applicant_wages ssi@2026 [6438.0, 0.0] [8938.0, 0.0]
spouse_business_loss_offsets_applicant_wages ssi_countable_income@2026 [5490.0, 0.0] [2990.0, 0.0]
child_business_loss_cannot_reduce_unearned_income ssi_ineligible_child_allocation@2026 [0.0, 8364.0] [0.0, 5364.0]
student_exclusion_cannot_be_negative ssi_blind_or_disabled_working_student_exclusion@2026 [-3000.0] [0.0]
new_hampshire_business_loss_cannot_offset_wages nh_ssp_countable_income@2026-01 [360.5] [860.5]
kentucky_business_loss_cannot_offset_wages ky_ssp_countable_income@2026-01 [217.5] [467.5]
minnesota_gross_earnings_cannot_be_negative mn_msa_gross_income@2026-01 [-66.66667175292969] [0.0]

New Python-file measurement: 153 seconds including startup; pytest reported 45.25s; process peak 2.404 GiB. These are local macOS measurements, not whole-group or Linux CI benchmarks. The base has no corresponding property file.

All tests ran as single-file foreground processes with the numeric thread caps, load gate <=100, and 4 GB/1800s process-group cap; each mutant used 2 GB/900s. No suites, folder runs, microsimulations, or partner-file edits. make format and git diff --check passed. Evidence remains untracked.

The new Python file uses vectorized cases and a shared read-only country model for source repartition, monotonicity, and exact cross-output comparisons that YAML cannot enumerate. It follows the existing core test selection; no runner changes. Whole-group before/after and Linux CI benchmarks are unavailable within this single-file validation scope; local measurements are reported above.

  • Externally sourced YAML expectations from the cited federal and state program rules.
  • No new statute-versus-agency conflict reading chosen; conditional NESE evidence question left for the hub.
  • make format (ruff formatting and lint).
  • Changelog fragment.

impact: pending (hub)

axiom: n/a

The complete rulespec-us main tree has no 20 CFR 416.1110 encoding; no RuleSpec authored or encoder run.

🤖 Generated with Claude Code

MaxGhenis and others added 3 commits October 29, 2026 07:33
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gets

Net excess losses between co-resident spouses before SSI, MSP and Medicaid exclusions. Keep Connecticut and Minnesota own/deemed budgets consistent, prevent negative child/student exclusions, and isolate New Hampshire self-employment losses from wages. Add vectorized property and differential coverage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Use Kentucky's own business-source floors and preserve Minnesota gross-income premium restoration without resurrecting losses. Add SD and WY source-presence regressions and complete direct reader coverage across 23 states, including loss-to-profit monotonicity.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 29, 2026 14:42

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.

SSI earned income leaves out farm and partnership self-employment earnings (20 CFR 416.1110(b))

1 participant