Repository navigation
Conversation
MaxGhenis
marked this pull request as ready for review
October 27, 2026 08:44
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.
Add an opt-in contributed reform that taxes eligible pass-through owners' draws under SECA OASDI, with configurable phase-in, HI inclusion, deduction, benefit credit, and cap treatment. The reform is disabled by default. Based directly on upstream main
d453360635e358531059e510c227e84a3986348b, which contains required SECA-room fixb32fa449e93f72f385f92d3c3cd3c2e986482b67(#10380).Design
T = s_corp_income + partnership_income, passive subset Q, and already-SE partnership subset K. The active residual isG = T - Q - K_active. When Q and K are both nonzero, require a validated disjoint-subset assertion or a supplied signed intersection. Net the owner's entity profits/losses before flooring; residual losses do not offset wages or existing SE earnings. Nonpassive income proxies for material participation. Source income remains in gross income once.q = 1 - employer_share * (SE_OASDI_rate + SE_HI_rate)follows rate changes; an explicit override is available. The adjusted planned draw independently meets the existing $400 SE reporting floor before reclassification.room_cap_basis = 0uses a current-law cap copied before user reforms;1imposes no draw ceiling. Under the default basis, wages have priority, then the existing adjusted/capped SE base, thenmin(N_D, max(cap - wages - existing_SE_base, 0)).draw_oasdi_base / q; HI-on excludes all actual D. Beyond-room profits remain in the active residual when HI is off. Undrawn and floor-rejected profits remain in either mode. Already-SE gross active income requires its separate exclusion. Active NIIT is absent from main and is not implemented here.ss_aimehistory helper before its annual wage-base cap, with no tax effect and preserved positivess_aime_inputprecedence. Reported benefits are unchanged. The bridge inherits main's lookback/age rules and separategov.ssa.social_security.wage_basepath (last authored for 2026), without synchronizing it to the tax cap. A complete annual ledger and mini-PIA integration remain separate work; population scoring uses the tax side only.The default capped configuration preserves nonnegative draw bases bounded by room, adjusted earnings, and gross draw; total otherwise-capped OASDI earnings stay within the cap. Tax is monotone in the phase-in share, already-SE income is removed before the draw, and a reform disabled for all earning years preserves baseline outputs. Turning it off later preserves previously credited earnings in benefit history. The explicit no-ceiling option permits earnings above the current-law cap. Details:
docs/contributed_reforms/owners_draw.md.Data and sources
The intended data contract has separate entity totals and a combined passive subset subtracted once. Current exports force S-corporation income to zero, combine nonpassive donor income in partnership income, and lack the passive column; calibration can overstate the active residual. Current-data scoring may proceed with this provisional caveat. Nonprovisional results require a pinned artifact containing Microcosm #1251 and #1261, plus a column-contract check.
Validation and CI cost
time -l's sysctl; the process ran under the monitored 4 GB cap.policyengine_core.tools.test_runner.run_testson an initialized PE-US system, preserving the YAML assertions and Core pytest plugin while avoiding duplicate CLI baseline initialization. All 26 passed; completed split-run whole-process wall time totaled 4763.86 seconds.impact: the hub will measure
axiom: n/a: contributed reform, not enacted law