Skip to content

Correct Minnesota UI taxable wage bases for 2014-2026 - #10319

Merged
MaxGhenis merged 4 commits into
mainfrom
mn-ui-taxable-wage-base
Oct 23, 2026
Merged

MaxGhenis merged 4 commits into
mainfrom
mn-ui-taxable-wage-base

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

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:

  • Minnesota UI taxable earnings: 13 passed, 1 warning; exit 0.
  • Existing Minnesota paid leave: 3 passed, 1 warning; exit 0.

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) and ruff check . passed.

The hub ran the impact; results are below.

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: TheAxiomFoundation/rulespec-us#1858 queued. Minn. Stat. 268.035 subds. 23-24, Laws 2021 ch. 2 s. 3 and DEED's UI tax rate history are in no axiom-corpus scope (ingestion: TheAxiomFoundation/axiom-corpus#916); the signed encoder runs after ingestion and a re-pin.

Hub microsimulation impact (current head)

A real microsimulation on the default dataset, main at the merge base 461f78e1ee against this PR's head de2cde6b01, for 2025 and 2026. The runs went one at a time under the shared heavy-job lock. Sums are weighted.

Output 2025 change 2026 change 2025 records changed (weighted) 2026 records changed (weighted)
mn_employer_state_unemployment_tax +14.62M +30.24M 932 (1,624,759) 979 (1,725,626)
employer_state_unemployment_tax +14.62M +30.24M 932 (1,624,759) 979 (1,725,626)
employer_state_payroll_tax +14.62M +30.24M 932 (1,624,759) 979 (1,725,626)
employer_payroll_tax +14.62M +30.24M 932 (1,624,759) 979 (1,725,626)
employer_cost_of_employment +14.62M +30.24M 932 (1,624,759) 979 (1,725,626)
state_income_tax +0 +0 0 (0) 0 (0)
income_tax +0 +0 0 (0) 0 (0)
household_net_income +0 +0 0 (0) 0 (0)
household_benefits +0 +0 0 (0) 0 (0)

Employer-side only: no household variable reads the Minnesota UI tax, so household net income is unchanged. The base rises from a flat $42,000 to DEED's figure for 2026 ($44,000); for 2025 ($43,000) it also rises.

Comparison files are in fixes/10319-impact/ on the hub host.

@MaxGhenis
MaxGhenis marked this pull request as ready for review October 21, 2026 00:31
@MaxGhenis MaxGhenis closed this Oct 21, 2026
@MaxGhenis MaxGhenis reopened this Oct 21, 2026
@DTrim99

DTrim99 commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Correct Minnesota UI taxable wage bases for 2014-2026

PR #10319 (author: MaxGhenis), head 1fb60e8a5f. This is a first review. The PR replaces Minnesota's flat $42,000 employer UI taxable wage base with DEED's published figure for each year from 2014 to 2026. It also adds a 13-case test file and a changelog fragment, and it rewrites the references. The PR has no comments or reviews yet. It touches no partner test file.

Path prefixes:

  • P/ = policyengine_us/parameters/gov/states/mn/tax/payroll/unemployment/
  • T/ = policyengine_us/tests/policy/baseline/gov/states/mn/tax/payroll/unemployment/

Sources read for this review (all fetched 2026-10-21):

Summary

What is right. All 13 annual values match DEED's table exactly.

  • 2014–2024: $29,000; $30,000; $31,000; $32,000 (2017 and 2018); $34,000; $35,000 (2020 and 2021); $38,000; $40,000; and $42,000.
  • 2025 and 2026: $43,000 and $44,000. The $42,000 figure is 2024's. DEED's 2025 row reads 43,000, so the PR's 2025 value is right.
  • Statute. DEED's figures follow the statute's formula: 60% of the state's average annual wage, rounded to the nearest $1,000. The average annual wage is calculated by June 30 and applies to the following calendar year (subd. 23(b)).
  • What the fix changes. main caps 2025 wages at $42,000 instead of $43,000 and 2026 wages at $42,000 instead of $44,000. It also over-caps 2014–2023. Example: in 2026, a worker earning $45,000 at the 0.9% default rate owes $378 on main and $396 at the head.
  • Tests. I hand-checked all 13 cases and all 6 employer-tax outputs. CI passed the 13 cases on the merge with current main.
  • Batch checks. The PR's comments pass the source-conflict ratchet. No state-gated key or income-source list is involved.

There are no critical findings and one should-address item:

  • S1. Invalid Axiom line. axiom: pending: hub files parity is not one of the allowed forms. n/a doesn't fit either: the provision is statutory and the PR changes MN employer UI tax results. rulespec-us has no chapter-268 module and no matching issue. The PR needs a dispatch-ready pe-parity issue, with the line axiom: TheAxiomFoundation/rulespec-us#<n> queued, or an encoder PR.

There are also three suggestions: the pre-2014 $42,000 fallback, indexing after 2026, and the "WIP" body.

Status.

  • CI: 27 checks pass and 3 are skipped (the superseded 2026-10-20 run). None is pending or failed.
  • Branch: 2 commits ahead of main and 18 behind, and it merges cleanly.

Critical (must fix)

None.

Should address

S1. The Axiom line axiom: pending: hub files parity is not a valid form

  • Where: the last line of the PR body. The body's plan also leaves "Hub: file parity follow-up" unchecked.
  • The rule (CLAUDE.md, "Axiom Parity"): a PR that updates or fixes policy needs encoded-correct, <rulespec PR> encoded, <rulespec issue> queued or n/a: <reason>. pending is not one of them.
  • Why n/a doesn't fit:
    • Minn. Stat. 268.035 subd. 24(a) fixes the base by law: "'Taxable wages' means those wages paid to an employee in covered employment each calendar year up to an amount equal to 60 percent of the state's average annual wage, rounded to the nearest $1,000." DEED publishes the result of that calculation each year.
    • The PR changes household-level results. mn_employer_state_unemployment_tax feeds employer_state_unemployment_tax, then employer_state_payroll_tax, then employer_payroll_tax.
    • Precedent: New Jersey's commissioner-promulgated wage bases, the same statute-plus-agency-figure structure, were queued as pe-parity issues (rulespec-us#1623, Improve simultaneous-tax-equations calculation #1827).
  • Why encoded-correct isn't available:
    • rulespec-us main (5796861e5) has Minnesota statute modules only for chapter 290. It has none for chapter 268, and no DEED UI policy files.
    • gh search issues in rulespec-us for "268.035" and "Minnesota unemployment" returns nothing.
  • Severity: should. An invalid Axiom line is a merge blocker, not a model error.
  • Fix: file an open, pe-parity-labelled, dispatch-ready issue in TheAxiomFoundation/rulespec-us, modelled on Improve simultaneous-tax-equations calculation #1827 or Add AMT parameters for 2020-2023 #1467. Then change the line to axiom: TheAxiomFoundation/rulespec-us#<n> queued. Alternatively, run the signed encoder and cite the PR as encoded. The issue needs:
    • Target modules: a new-module request, for example us-mn/statutes/268/035.yaml, which follows the existing us-mn/statutes/290/0671.yaml layout. Add annual DEED guidance files if the encoder keeps published figures separately.
    • Corpus citations: Minn. Stat. 268.035 subds. 23–24 and the DEED "History of tax rate factors" table.
    • Verbatim law: subd. 24(a), quoted above, and subd. 23(a)–(b). Subd. 23(b) says the average annual wage "applies to the calendar year following the calculation".
    • Required outputs: the annual taxable wage base for 2014–2026 and per-employee taxable wages, min(wages, base).
    • Companion tests from DEED, not from PolicyEngine output: the 2025 ($43,000) and 2026 ($44,000) rows, plus DEED's own worked example on the same page. In that example, three employees each earn $50,000, "the first $44,000 of the $50,000 in wages they earned is taxable", and taxable wages are "$44,000 x 3 employees = $132,000".
    • Why queued: the blocker, such as the corpus scope, the signed release or billed-run approval.

Suggestions

G1. The pre-2014 $42,000 fallback

  • Where: P/taxable_wage_base.yaml:3-4 (# Legacy fallback before the cited DEED history begins in 2014. / 0000-01-01: 42_000).
  • What it does:
    • $42,000 is DEED's 2024 figure, and no reference supports it for any year before 2014.
    • It is unreachable in modeled years. FIRST_MODELED_YEAR is 2015 (policyengine_us/tools/parameters.py:9), and the 2014 entry covers every later year.
    • The PR body's compatibility reason holds. select_state_unemployment_tax_parameter reads every jurisdiction's parameter, and core's _get_at_instant returns None before a parameter's first value. Backdating would not fill the gap, because the 2014 entry already precedes 2015. Without a 0000 entry, a 2013 run would hand None to select.
  • Fix (optional): set the fallback to the earliest verified figure ($29,000). Or reword the comment to say the value is an unverified placeholder that no modeled year (2015 onward) reads.

G2. The base stays at $44,000 after 2026

  • The statute indexes the base to the state's average annual wage every year (subds. 23–24). The DEED figures rose by $1,000–$3,000 a year from 2021 to 2026.
  • The head holds $44,000 flat for 2027 onward. DEED normally mails the next year's rate determinations by mid-December ("on or before December 15, 2025" for 2026).
  • Fix (optional): add the 2027 figure when DEED publishes it. Or add uprating: gov.ssa.nawi with rounding to the nearest $1,000 as a placeholder until then. That index is already used in the tree.

G3. PR body housekeeping

  • The body opens with "WIP:" while the PR is not a draft. Two plan items are still unchecked: "Hub: run the impact analysis" and "Hub: file parity follow-up".
  • Fix: once the hub work is done, drop "WIP:" and tick the items. Or mark the PR as a draft until then. The parity item is S1.

Verified correct

  • Every annual value (P/taxable_wage_base.yaml:5-17) matches DEED's "History of tax rate factors" table, row by row:

    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.24 is the subd. 24 element on the Revisor page, and #toggle-4 is 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") in taxable_earnings_for_state_unemployment_tax. That variable takes min_(payroll_tax_gross_wages, wage_base) for Minnesota, the default branch.
    • The result feeds mn_employer_state_unemployment_tax (rate × taxable earnings), then employer_state_unemployment_tax, employer_state_payroll_tax and employer_payroll_tax.
    • MN Paid Leave doesn't read this parameter. mn_paid_leave_taxable_wages caps wages at the Social Security base rounded to the nearest $1,000 (Minn. Stat. 268B.01), so the paid-leave tests and the test_payroll_contributions.py MN 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:

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 as encoded.
  • 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-us main (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 commit 99b32069, which merges head 1fb60e8a5f into fec98b87c8, current main after 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 of T/taxable_earnings_for_state_unemployment_tax.yaml and the three paid-leave cases. Quick Feedback selected and passed the same file.
  • Guards. Rest (Python, shard-1 + variables) passed test_source_conflicts.py, including test_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 is 461f78e1ee.
  • Merge: clean. git merge-tree --write-tree PolicyEngine/main 1fb60e8a5f exits 0 (tree ead0f6b5f5). The PR's three files are untouched on main since the merge base.

0 critical, 1 should and 3 suggestions are open at this head.

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.

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>
Laws 2021, ch. 2, s. 3 fixes calendar year 2021 taxable wages at $35,000 notwithstanding Minn. Stat. 268.035, subd. 24. The value is unchanged.

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

Copy link
Copy Markdown
Contributor Author

Thanks for the review. Each item in turn:

  • S1 (axiom line). Filed TheAxiomFoundation/rulespec-us#1858, a dispatch-ready pe-parity issue for Minn. Stat. 268.035 subds. 23–24 and 268.051 subd. 1(a), with the DEED figures and companion rows. Its source ingestion is TheAxiomFoundation/axiom-corpus#916. The body's line now reads axiom: TheAxiomFoundation/rulespec-us#1858 queued.
  • G1 (pre-2014 fallback). The comment now says $42,000 is an unverified placeholder that no modeled year reads (b3cda47).
  • G2 (after 2026). No change. Subd. 24(a) indexes the base to the state's average annual wage, and a NAWI uprating would only approximate DEED's figure. The 2027 value will go in when DEED publishes it.
  • G3 (body). Dropped "WIP:" and ticked the parity item. The impact run is queued.
  • Also: the parameter now cites Laws 2021, ch. 2, s. 3, which sets 2021 at $35,000 "notwithstanding" subd. 24 (de2cde6). The value is unchanged.

@MaxGhenis
MaxGhenis requested a review from DTrim99 October 22, 2026 03:21
@DTrim99

DTrim99 commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator

PR Review (round 2): Correct Minnesota UI taxable wage bases for 2014-2026

PR #10319 (author: MaxGhenis), head de2cde6b01. Our last review was at 1fb60e8a5f. Since then the author has pushed two commits, b3cda476a1 and de2cde6b01. Together they change only P/taxable_wage_base.yaml, adding 6 lines and removing 1. There are no merge commits. The test file and changelog fragment are byte-identical to round 1, and no parameter value changed. The author answered each finding in a PR comment, edited the body and re-requested review. No partner test file is touched.

Path prefixes:

  • P/ = policyengine_us/parameters/gov/states/mn/tax/payroll/unemployment/
  • T/ = policyengine_us/tests/policy/baseline/gov/states/mn/tax/payroll/unemployment/

Summary

The round-1 should item is fixed, and so are two of the three suggestions. The third suggestion was declined with a sound reason.

  • S1, the Axiom line: fixed. The body now reads axiom: TheAxiomFoundation/rulespec-us#1858 queued.
    • rulespec-us#1858 is OPEN and labelled pe-parity.
    • It is dispatch-ready. It has target modules, proposed corpus citations, the verbatim text of subds. 23–24 and Laws 2021 ch. 2 s. 3, required outputs and companion tests from DEED. The tests include DEED's $44,000 × 3 = $132,000 worked example.
    • It matches the head and records its blocker, the corpus ingestion requested in axiom-corpus#916. That issue is also OPEN.
  • G1 and G3: fixed. G2: declined, with a reason that holds.
  • New in this round. The 2021 entry now cites Laws of Minnesota 2021, chapter 2, section 3. I read the session law. It sets calendar year 2021 at $35,000 "notwithstanding" subd. 24, which supports the unchanged value.
  • New findings: no critical and no should items. One optional suggestion: add a section anchor to the new reference.
  • CI: 27/27 checks pass at the current head, on a merge with recent main.
  • Branch: 4 commits ahead of main and 32 behind, and it merges cleanly.

Prior findings

Finding Status Evidence
S1. The Axiom line pending: hub files parity was invalid Fixed The body's last line is now axiom: TheAxiomFoundation/rulespec-us#1858 queued, and the line names the ingestion blocker, axiom-corpus#916. #1858 is OPEN, pe-parity-labelled and dispatch-ready, and it matches head de2cde6b01. Details are under "Axiom line assessment".
G1. The pre-2014 $42,000 fallback Fixed (the comment option) P/taxable_wage_base.yaml:3-5 now reads "Unverified placeholder ($42,000 is DEED's 2024 figure). No modeled year reads it: FIRST_MODELED_YEAR is 2015, and the 2014 entry covers every later year. It keeps the parameter defined before 2014, so state selection never reads None." Each claim checks out. FIRST_MODELED_YEAR = 2015 is at policyengine_us/tools/parameters.py:9, both at the head and on main. The 2014 entry precedes 2015. As established in round 1, the selector reads every jurisdiction's parameter. The body's "Limitation" paragraph says the same.
G2. The base stays flat at $44,000 after 2026 Declined with reason (accepted) The author's reason: "Subd. 24(a) indexes the base to the state's average annual wage, and a NAWI uprating would only approximate DEED's figure. The 2027 value will go in when DEED publishes it." That is a documented deferral. #1858 also tells the encoder to apply the subd. 24(a) formula from 2027 rather than copy PE's flat $44,000, so the parity record covers the gap. Not open.
G3. PR body housekeeping ("WIP:", unchecked items) Fixed "WIP:" is gone, the PR is not a draft, and "Hub: file parity follow-up" is ticked with links to #1858 and #916. One item is still unchecked: "Hub: run the impact analysis (queued)". It is labelled as queued hub work and doesn't affect the model change.

New findings

Critical

None.

Should address

None.

Suggestions

G4. Anchor the new session-law reference to section 3 (optional).

  • Where: P/taxable_wage_base.yaml:31-32. The title is "Laws of Minnesota 2021, chapter 2, section 3 (taxable wages for calendar year 2021)" and the href is https://www.revisor.mn.gov/laws/2021/0/2/.
  • Why: the Revisor page has a separate element for each section: laws.0.1.0, laws.0.2.0 and laws.0.3.0. The statute reference two entries up already anchors to its subdivision (#stat.268.035.24).
  • Impact: small. The page is short, it shows the $35,000 figure, and the title names the section.
  • Fix: change the href to https://www.revisor.mn.gov/laws/2021/0/2/#laws.0.3.0.

Verified

  • The new 2021 citation is accurate. I fetched the Revisor page on 2026-10-22. Chapter 2 is S.F. 192, "An act relating to unemployment insurance". Section 3 reads:

    Sec. 3. TAXABLE WAGES FOR CALENDAR YEAR 2021. Notwithstanding Minnesota Statutes, section 268.035, subdivision 24, for calendar year 2021, "taxable wages" means those wages paid to an employee in covered employment for up to an amount equal to $35,000.

    The governor signed it on January 29, 2021, and it took effect the next day. It applies to the whole of "calendar year 2021", so the 2021-01-01: 35_000 entry is correctly dated.

    • The new comment at line 14 states the law correctly: "Laws 2021, ch. 2, s. 3 sets 2021 at $35,000, notwithstanding subd. 24."
    • The reference is a single source, and its title carries no page text.
    • This also explains why DEED's 2021 row repeats 2020's base.
  • Hand-checks. No expectation is new or changed. T/taxable_earnings_for_state_unemployment_tax.yaml is identical to the version I checked case by case in round 1, and no parameter value moved.

    • I re-checked the one case the new citation touches: the 2021 case, wages $100,000 → min(100,000, 35,000) = 35,000. That now rests on the session law as well as DEED's table.
    • I also checked the arithmetic in Add ca_income_tax_before_refundable_credits variable #1858's companion tests:
      • DEED's worked example: 1.90% + 0.40% = 0.023; 0.023 × 44,000 = 1,012 per employee; 44,000 × 3 = 132,000; 132,000 × 0.023 = 3,036. These match DEED's figures.
      • The formula rows: 0.6 × 72,000 = 43,200 → 43,000; 0.6 × 74,200 = 44,520 → 45,000; and 0.6 × 60,000 = 36,000, which Laws 2021 ch. 2 s. 3 overrides to 35,000 for 2021.
      • The 2025 and 2026 boundary rows match the PR's YAML: 0, 378, 387 and 387, then 0, 387, 396 and 396.
  • Source-conflict ratchet (Tie source-conflict markers to the register shared with Axiom #10287). The PR adds four comment lines. Checked by hand against CONFLICT_COMMENT_RE on current main, none matches any alternative:

    • "Unverified placeholder …", "FIRST_MODELED_YEAR is 2015 …" and "the parameter defined before 2014 …" contain no conflict wording.
    • In "Laws 2021, ch. 2, s. 3 …", the plural "Laws" doesn't satisfy \blaw\s+, and no says/states/provides follows.
    • The file isn't in KNOWN_UNMARKED and stays at zero.
    • CI confirms it. test_conflict_sounding_comments_do_not_grow PASSED at this head on merge d8026142.
    • Since that CI base, main has changed source_conflicts/candidates.yaml but not the test file or its pattern, so the result holds for current main.
  • Unchanged since round 1, still correct.

Axiom line assessment

Valid: axiom: TheAxiomFoundation/rulespec-us#1858 queued. The body also records the blocker: the sources "are in no axiom-corpus scope (ingestion: TheAxiomFoundation/axiom-corpus#916); the signed encoder runs after ingestion and a re-pin."

  • rulespec-us#1858. OPEN, labelled pe-parity, opened 2026-10-22, with no later edits or comments. It is dispatch-ready against the Add AMT parameters for 2020-2023 #1467 model:
    • Module paths. It requests new modules us-mn/statutes/268/035.yaml and us-mn/statutes/268/051.yaml (subd. 1(a) only). It also requests a session-law module and a DEED guidance file at us-mn/policies/deed/ui-tax-rates.yaml. Each has a proposed corpus citation that follows existing patterns.
    • Verbatim law. It quotes subd. 24 and subd. 23(a)–(b), each wording with the editions it covers. It quotes Laws 2021 ch. 2 s. 3, 268.051 subd. 1(a) and DEED's page text. It notes that Laws 2022 ch. 50 has no taxable-wage provision.
    • Required outputs. mn_ui_taxable_wage_base, mn_ui_taxable_wages and mn_ui_tax_before_assessments, with leaf inputs, the out-of-scope items and invariants listed.
    • Companion tests from DEED, not PE output. All 19 rows of the PR's YAML, hand-computed from DEED's figures; DEED's worked example (44,000 per employee, 132,000 for three, 3,036 tax); and three formula rows.
    • Matches the head. It quotes the head's placeholder comment word for word and covers the new Laws 2021 citation. It says the YAML is unchanged since round 1, which is still true at de2cde6b01. It tells the encoder to follow the law where PE differs: the pre-2014 placeholder, the flat 2027 value and the per-employer cap.
    • Blocker recorded. "Queued, blocked on corpus ingestion … ingestion is requested in Ingest Minnesota UI taxable wage sources (Minn. Stat. 268.035, 268.051; Laws 2021, ch. 2; DEED UI tax rates) for rulespec-us pe-parity (PE-US #10319) TheAxiomFoundation/axiom-corpus#916." It confirms that no RuleSpec was hand-written and no encoder was run.
  • axiom-corpus#916. It exists and is OPEN, opened 2026-10-22. It requests ingestion of Minn. Stat. 268.035 (current, 2013 and 2016 editions), 268.051, Laws 2021 ch. 2 and a dated snapshot of the DEED page, with official URLs.
  • encoded-correct is still not available. rulespec-us main (1aaca12ed) us-mn/statutes/ holds only 290. A search of rulespec-us for "268.035" finds only Add ca_income_tax_before_refundable_credits variable #1858, and no rulespec-us PR references 10319.

CI status

27 pass, 0 pending, 0 failed, 0 skipped. I re-checked gh pr checks 10319 at the end of this review.

  • The run. Run 39716344164 (pull_request, created 2026-10-22 03:21 UTC) ran at head de2cde6b01. It tested merge d8026142, which merges the head into 6002522d2b.
  • Where the Minnesota tests ran. Baseline states-shard-1, batch 7/14 (states/mn): "exit 0 | passed". It includes all 13 cases of T/taxable_earnings_for_state_unemployment_tax.yaml and the three paid-leave cases.
  • The ratchet. Rest (Python, shard-1 + variables) passed test_source_conflicts.py in full, including test_conflict_sounding_comments_do_not_grow.
  • Known main-caused failure. Not applicable: the run started after the Count the FL and SD LIHEAP comments in the source-conflict ratchet baseline #10334 fix (2026-10-21 13:24 UTC).
  • Locally: I ran no tests or model probes. CI is green at the current head, and no expectation changed.

Branch status

  • Position: 4 commits ahead of main (86d3ae6c6d) and 32 behind. The merge base is 461f78e1ee.
  • Merge: clean. git merge-tree --write-tree PolicyEngine/main de2cde6b01 exits 0 (tree 14f9781927). Since the merge base, main hasn't touched the PR's three files or any Minnesota UI consumer.
  • Since the CI base: 10 commits have landed on main (SSP additions, Riverside GR, a certificate change, Medicare withholding and source_conflicts/candidates.yaml). None touches this PR's area.

0 critical, 0 should and 1 suggestion (G4, optional) are open at this head.

Verdict: APPROVE

@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.

Round 2: the axiom line is fixed. rulespec-us#1858 is open, pe-parity labelled, dispatch-ready and records its corpus blocker. G1 and G3 are fixed, and G2 is declined for a good reason. The new 2021 Laws ch. 2 s. 3 citation checks out. One optional anchor suggestion. Full report in the comment above.

@MaxGhenis
MaxGhenis merged commit 009a9b5 into main Oct 23, 2026
27 checks passed
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

US + core hub merge audit, us#10319 at de2cde6b015a5b4fdba36b41fbf0931e49a0ea12 (squash): Correct Minnesota UI taxable wage bases for 2014-2026.

@MaxGhenis
MaxGhenis deleted the mn-ui-taxable-wage-base branch October 23, 2026 19:36
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.

2 participants