Repository navigation
Conversation
PR Review: Correct Minnesota UI taxable wage bases for 2014-2026PR #10319 (author: MaxGhenis), head Path prefixes:
Sources read for this review (all fetched 2026-10-21):
SummaryWhat is right. All 13 annual values match DEED's table exactly.
There are no critical findings and one should-address item:
There are also three suggestions: the pre-2014 $42,000 fallback, indexing after 2026, and the "WIP" body. Status.
Critical (must fix)None. Should addressS1. The Axiom line
|
| Year | DEED | Head | Year | DEED | Head | |
|---|---|---|---|---|---|---|
| 2014 | 29,000 | 29,000 | 2021 | 35,000 | 35,000 | |
| 2015 | 30,000 | 30,000 | 2022 | 38,000 | 38,000 | |
| 2016 | 31,000 | 31,000 | 2023 | 40,000 | 40,000 | |
| 2017 | 32,000 | 32,000 | 2024 | 42,000 | 42,000 | |
| 2018 | 32,000 | 32,000 | 2025 | 43,000 | 43,000 | |
| 2019 | 34,000 | 34,000 | 2026 | 44,000 | 44,000 | |
| 2020 | 35,000 | 35,000 |
The page header separately confirms "The Taxable wage base for 2026 is $44,000." In 2021, the base and the experience-rating period (7/1/2015–6/30/2019) were both unchanged from 2020.
Effective dates. January 1 of each year is correct. The base applies to each calendar year (subd. 24(a)), using the average wage calculated the year before (subd. 23(b)).
References (P/taxable_wage_base.yaml:23-27):
- Both anchors resolve:
#stat.268.035.24is the subd. 24 element on the Revisor page, and#toggle-4is the "History of tax rate factors" accordion on the DEED page. - The DEED reference shows every value. The statute reference gives the rule.
- Each reference is a single source with no page text in the title.
- Dropping the DOL CY2024 "Significant Measures" reference loses nothing, since it only showed 2024.
Consumers:
- The parameter is read only through
select_state_unemployment_tax_parameter(..., "taxable_wage_base")intaxable_earnings_for_state_unemployment_tax. That variable takesmin_(payroll_tax_gross_wages, wage_base)for Minnesota, the default branch. - The result feeds
mn_employer_state_unemployment_tax(rate × taxable earnings), thenemployer_state_unemployment_tax,employer_state_payroll_taxandemployer_payroll_tax. - MN Paid Leave doesn't read this parameter.
mn_paid_leave_taxable_wagescaps wages at the Social Security base rounded to the nearest $1,000 (Minn. Stat. 268B.01), so the paid-leave tests and thetest_payroll_contributions.pyMN cases are unaffected. - No other test pins Minnesota UI earnings above $42,000.
Hand-checks (all 13 cases, 19 expectations). The rate is employer_state_unemployment_tax_rate_override (default −1), so the 0.009 default applies.
- 2014–2024 (
T/taxable_earnings_for_state_unemployment_tax.yaml, cases at lines 3–83). Each case is min(100,000, base) and equals that year's DEED figure: 29,000; 30,000; 31,000; 32,000; 32,000; 34,000; 35,000; 35,000; 38,000; 40,000; 42,000. - 2025 (line 91). Wages [0, 42,000, 43,000, 44,000] give taxable earnings [0, 42,000, 43,000, 43,000]. The tax is 0.009 × those amounts: [0, 378, 387, 387].
- 2026 (line 100). Wages [0, 43,000, 44,000, 45,000] give taxable earnings [0, 43,000, 44,000, 44,000] and tax [0, 387, 396, 396].
- Boundaries. 2025 and 2026 each test zero wages and wages below, at and above the cap. The cap is inclusive (
min_).
Changelog. changelog.d/mn-ui-taxable-wage-base.fixed.md is a top-level fragment, and fixed is the right type.
Batch lessons:
- Source-conflict ratchet (Tie source-conflict markers to the register shared with Axiom #10287). The two new comments ("Legacy fallback before the cited DEED history begins in 2014." and "Annual wage bases from Minnesota DEED's History of tax rate factors:") match no
CONFLICT_COMMENT_REalternative. The ratchet also passed in CI on the merge with currentmain. - NH Add New Hampshire state supplementation for 2026 #10156 (state-gated keys): not applicable.
mn_employer_state_unemployment_taxis gated to MN but is not used as a parameter key, and the selector comparesstate_code_str. - Integrate modeled state unemployment insurance into income flows #9558, Document disjoint health premium inputs and correct consumer treatment #10046 and OK Add Oklahoma state supplementation for 2026 #10165: not applicable. The PR changes no income-source list or wage definition.
payroll_tax_gross_wagesis unchanged and shared by every default-branch state. - Partner tests: untouched. The Household API Partners check passed.
Axiom line assessment
Invalid: axiom: pending: hub files parity (S1).
- Recommended form:
axiom: TheAxiomFoundation/rulespec-us#<n> queued, with a new open,pe-parity-labelled, dispatch-ready issue for Minn. Stat. 268.035 subds. 23–24 and DEED's annual figures. The required contents are listed under S1. Alternatively, cite an encoder PR asencoded. - Not
n/a. This is a statutory provision, and the PR changes Minnesota employer UI tax for every worker above the cap in 2014–2023, 2025 and 2026. - Not
encoded-correct. rulespec-usmain(5796861e5) has no Minnesota chapter-268 module, and no matching issue exists.
CI status
27 pass, 3 skipping, 0 pending, 0 failed. I re-checked gh pr checks 10319 at the end of this review.
- The green run. Run 39608187729 (
pull_request, created 2026-10-21 13:27 UTC) tested merge commit99b32069, which merges head1fb60e8a5fintofec98b87c8, currentmainafter Count the FL and SD LIHEAP comments in the source-conflict ratchet baseline #10334. - The skipped run. The three skipped checks are the umbrella jobs of the earlier run 39517389189 (2026-10-20 23:48 UTC) at the same head.
- Where the Minnesota tests ran. Baseline states-shard-1, batch 7/14 (
states/mn), passed all 13 cases ofT/taxable_earnings_for_state_unemployment_tax.yamland the three paid-leave cases. Quick Feedback selected and passed the same file. - Guards. Rest (Python, shard-1 + variables) passed
test_source_conflicts.py, includingtest_conflict_sounding_comments_do_not_grow. - Known main-caused failure. Not applicable: the run started after 13:24 UTC on 2026-10-21, and the ratchet passed.
- Locally: I ran no tests or model probes. The CI run is green at the current head, and every expectation was hand-checked.
Branch status
- Position: 2 commits ahead of
main(328d1721e2) and 18 behind. The merge base is461f78e1ee. - Merge: clean.
git merge-tree --write-tree PolicyEngine/main 1fb60e8a5fexits 0 (treeead0f6b5f5). The PR's three files are untouched onmainsince the merge base.
0 critical, 1 should and 3 suggestions are open at this head.
Verdict: REQUEST_CHANGES
DTrim99
left a comment
There was a problem hiding this comment.
All 13 annual values match DEED's history table (29k in 2014 through 43k in 2025 and 44k in 2026), the statute anchors resolve, and all 19 expectations hand-check. One should-address item: 'axiom: pending: hub files parity' isn't a valid axiom line. This is statutory (Minn. Stat. 268.035 subds. 23-24) and changes employer UI tax, so please file a dispatch-ready pe-parity issue and mark it queued. Three suggestions, including indexing past 2026. Full report in the comment above.
…eholder DTrim99's review G1: $42,000 is DEED's 2024 figure, and no modeled year (2015 onward) reads it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
WIP: Correct Minnesota's unemployment insurance taxable wage base from a flat $42,000 to DEED's published annual figures for 2014–2026, including $43,000 in 2025 and $44,000 in 2026.
The annual entries cite Minnesota DEED's History of tax rate factors. Minn. Stat. 268.035, subd. 24 sets the taxable wage base at 60% of the state average annual wage, rounded to the nearest $1,000. Sources read October 20, 2026.
Adds annual capped-earnings regressions and 2025/2026 cases with zero wages and wages below, at, and above each cap. At the model's existing 0.9% default rate, maximum employer UI liability is $387 in 2025 and $396 in 2026.
Plan:
Validation:
Both YAML files ran one at a time in separate foreground processes with the requested thread caps: 16 passed across 2 files.
ruff format .(7,395 files unchanged) andruff check .passed.The hub will run the impact.
Limitation: the existing $42,000 pre-2014 fallback remains to preserve compatibility with the common UI selector, which reads every jurisdiction's parameter. This change verifies annual figures from 2014 onward; it does not verify earlier values.
axiom: pending: hub files parity