Skip to content

fix(ci): add uv to root tools so semgrep installs via uvx (#320)#321

Draft
theagenticguy wants to merge 2 commits into
mainfrom
fix/320-mise-uv-pipx-backend
Draft

fix(ci): add uv to root tools so semgrep installs via uvx (#320)#321
theagenticguy wants to merge 2 commits into
mainfrom
fix/320-mise-uv-pipx-backend

Conversation

@theagenticguy

Copy link
Copy Markdown
Contributor

Summary

Adds uv = "latest" to the root mise.toml [tools] so semgrep installs via the uvx backend instead of classic pipx.

Fixes the persistently-red upgrade-main workflow (3/3 runs, see #320) and pre-empts the same break in security.yml.

Why

mise 2026.6.2 (jdx/mise#10279) turned on a built-in default minimum_release_age = "24h" for timestamp-capable backends including pipx. With semgrep = "latest", that activates a date-cutoff install path that first upgrades the tool's shared pip venv — the step that fails on the GitHub runner:

mise semgrep@1.165.0  [1/3] pipx install semgrep==1.165.0
Failed to upgrade shared libraries
mise ERROR pipx failed

mise's pipx.uvx setting defaults to true and routes pipx tools through uv tool install when uv is on PATH — but uv was only declared in agent/mise.toml, not the root mise.toml that jdx/mise-action provisions at the repo root. So root-level semgrep fell back to classic pipx → the failing path.

build.yml dodges this today by skipping semgrep via MISE_DISABLE_TOOLS; upgrade-main (new in #309) and security.yml don't, so they hit the break on a cold mise-action cache.

This is a mise backend regression, not a semgrep version issue — pinning semgrep would not help. Declaring uv is the root-cause fix and keeps the 2026.6.2 supply-chain release-age protection intact.

Verification

Reproduced under the exact CI mise binary (2026.6.3), isolated HOME, with uv + semgrep both in [tools]:

mise uv@0.11.20        ✓ installed
mise semgrep@1.165.0   [1/3] uv tool install semgrep==1.165.0
   Built semgrep==1.165.0
Installed 2 executables: pysemgrep, semgrep
mise semgrep@1.165.0   ✓ installed   (exit 0)

mise resolves uv before semgrep automatically when both are declared, so no explicit ordering step is needed.

Test plan

  • upgrade-main scheduled/dispatched run goes green (mise install → mise run upgrade → patch/PR).
  • security.yml provisions semgrep without "Failed to upgrade shared libraries" on a cold cache.

Closes #320


Drafted by Bonk during the ABCA nightly review; opened via Laith's account.

The upgrade-main workflow (and any cold-cache security.yml run) fails at
the mise-action Install step because mise 2026.6.2+ enabled a default
minimum_release_age for the pipx backend, which triggers a shared-pip
venv upgrade that fails on the runner ("Failed to upgrade shared libraries").

mise's pipx.uvx setting defaults to true and routes pipx tools through
`uv tool install` when uv is on PATH — but uv was only declared in
agent/mise.toml, not the root mise.toml that mise-action provisions at
the repo root. Declaring uv here puts it on PATH before semgrep resolves,
so semgrep installs via uvx and bypasses the broken classic-pipx path.

Verified locally under the exact CI mise 2026.6.3: with uv in [tools],
`mise install` runs `uv tool install semgrep==1.165.0` and succeeds.
Preserves the 2026.6.2 supply-chain release-age protection.

Refs #320
No-op content change to route this branch through the freshly installed
prek pre-commit/pre-push hooks, which were missing from the local clone
when 16b0ab6 was created.

Refs #320
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.

fix(ci): upgrade-main fails — mise 2026.6.x release-age default breaks pipx semgrep install

1 participant