Skip to content

registry: remove tools with zero users#9725

Merged
jdx merged 4 commits into
mainfrom
registry/remove-unused-tools
May 9, 2026
Merged

registry: remove tools with zero users#9725
jdx merged 4 commits into
mainfrom
registry/remove-unused-tools

Conversation

@jdx

@jdx jdx commented May 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • Removes 49 registry entries with zero recorded users
  • Users can still install any of these via explicit backend syntax (e.g. mise use aqua:cloudfoundry/uaa-cli, mise use github:exaloop/codon) — only the registry shorthand is being dropped
  • Skipped 6 tools added in 2026 (mysql-client, dependency-check, neo4j, codon, wasm-tools, code-review-graph) — too new to judge by user count

Removed tools

bosh-backup-and-restore (bbr), brig, btrace, carp, clarinet, cli53, concourse, conduit, copper, credhub, datree, djinni, dome, draft, dtm, envcli, esy, glen, grain, inlets, kcctl, ki, kpack (kp), krab, kube-credential-cache, kubefedctl, kubefirst, kubemqctl, kwt, lab, lane, levant, melt, opsgenie-lamp, pachctl, psc-package, purerl, redo, rke, sinker, soracom, starboard, sver, terradozer, titan, uaa (uaa-cli), wasm4, wren (wren-cli), zbctl

Test plan

  • CI build passes (registry is generated from registry/ at build time, so removing files just drops them from the generated map)

🤖 Generated with Claude Code


Note

Medium Risk
Moderate risk because it changes CI gating/conditions for test-tool, which could accidentally skip registry validation if the diff detection is wrong. Functional impact is limited to workflow behavior and removal of registry entries.

Overview
Removes 49 registry/*.toml entries, dropping their shorthand names from the registry.

Updates the registry CI diff logic to treat only added/modified registry files as test candidates and introduces a skip-test-tool flag so deletion-only PRs skip test-tool and still pass the aggregate registry-ci gate cleanly.

Reviewed by Cursor Bugbot for commit 2991712. Bugbot is set up for automated code reviews on this repo. Configure here.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request removes a large collection of tool configuration files for various utilities such as BOSH Backup and Restore, Brigade, BTrace, Carp, and several Kubernetes-related tools. I have no feedback to provide.

@greptile-apps

greptile-apps Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR removes 49 registry shorthand entries for tools with zero recorded users, keeping them accessible via explicit backend syntax. It also updates the CI pipeline to handle deletion-only PRs gracefully by skipping the test-tool job when no registry files were added or modified.

  • Registry deletions: 49 registry/*.toml files are dropped; users can still install these tools via aqua:, github:, etc. explicit refs.
  • registry-diff action: adds --diff-filter=AM so deleted files are excluded from the list of tools to test.
  • registry.yml workflow: introduces a skip-test-tool output and short-circuits the test-tool job (and the final-check gate) when the diff contains only deletions.

Confidence Score: 5/5

Safe to merge — all changes are either file deletions or CI guard-rail additions with no risk to production behaviour.

The registry deletions are mechanical and reversible; users who depended on the shorthand can switch to the explicit backend syntax. The workflow changes correctly gate test-tool on the presence of added/modified files and handle the skipped state in final-check, so CI remains green for deletion-only PRs without weakening any required checks.

No files require special attention.

Important Files Changed

Filename Overview
.github/actions/registry-diff/action.yml Added --diff-filter=AM to exclude deleted registry files from the modified_tools list; correct and targeted fix.
.github/workflows/registry.yml Adds skip-test-tool output and short-circuits test-tool job for deletion-only PRs; final-check gate also updated to accept the skipped state.

Reviews (4): Last reviewed commit: "chore(ci): skip test-tool on deletion-on..." | Re-trigger Greptile

@github-actions

github-actions Bot commented May 8, 2026

Copy link
Copy Markdown

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.5.3 x -- echo 22.6 ± 1.0 20.4 29.1 1.00
mise x -- echo 24.1 ± 2.7 20.8 59.1 1.06 ± 0.13

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.5.3 env 22.6 ± 1.4 19.7 30.2 1.00
mise env 23.6 ± 3.9 20.6 62.1 1.04 ± 0.18

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.5.3 hook-env 23.9 ± 1.8 20.1 33.2 1.00
mise hook-env 24.5 ± 3.6 20.7 46.8 1.02 ± 0.17

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.5.3 ls 18.9 ± 1.8 16.1 35.0 1.00
mise ls 19.4 ± 1.1 16.2 25.0 1.02 ± 0.12

xtasks/test/perf

Command mise-2026.5.3 mise Variance
install (cached) 140ms 139ms +0%
ls (cached) 79ms 78ms +1%
bin-paths (cached) 88ms 88ms +0%
task-ls (cached) 720ms 708ms +1%

jdx and others added 3 commits May 8, 2026 17:28
These 55 tools have zero recorded users and are being removed from the
registry. Users can still install any of them via explicit backend syntax
(e.g. mise use aqua:cloudfoundry/uaa-cli, mise use github:exaloop/codon).

Removed: bosh-backup-and-restore (bbr), brig, btrace, carp, clarinet,
cli53, code-review-graph, codon, concourse, conduit, copper, credhub,
datree, dependency-check, djinni, dome, draft, dtm, envcli, esy, glen,
grain, inlets, kcctl, ki, kpack (kp), krab, kube-credential-cache,
kubefedctl, kubefirst, kubemqctl, kwt, lab, lane, levant, melt,
mysql-client, neo4j, opsgenie-lamp, pachctl, psc-package, purerl, redo,
rke, sinker, soracom, starboard, sver, terradozer, titan, uaa (uaa-cli),
wasm-tools, wasm4, wren (wren-cli), zbctl.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Six tools added this year (mysql-client, dependency-check, neo4j, codon,
wasm-tools, code-review-graph) — too soon to judge by user count.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The registry-diff action listed all changed files including deletions,
so removing a tool from the registry caused test-tool to fail with
'tools not found'. Filter to added/modified only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jdx jdx force-pushed the registry/remove-unused-tools branch from ea95809 to d870749 Compare May 8, 2026 17:28

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d870749. Configure here.

Comment thread .github/actions/registry-diff/action.yml
When all registry changes are deletions, registry-diff now produces an
empty modified_tools list, which previously fell through to the matrix
default and ran the entire registry across 8 tranches. Detect this case
explicitly and skip test-tool altogether.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jdx jdx merged commit 6f6e36c into main May 9, 2026
41 of 43 checks passed
@jdx jdx deleted the registry/remove-unused-tools branch May 9, 2026 12:29
mise-en-dev added a commit that referenced this pull request May 10, 2026
### 🚀 Features

- add --inactive option to outdated and upgrade commands for inactive
tools by @roele in [#9640](#9640)

### 🐛 Bug Fixes

- **(aqua)** resolve bin paths for prefixed v tags by @risu729 in
[#9759](#9759)
- **(bun)** create bunx alongside bun.exe on Windows install by
@JamBalaya56562 in [#9732](#9732)
- **(dotnet)** use shared prerelease tool option by @risu729 in
[#9720](#9720)
- **(node)** use matching node in npm shim by @jdx in
[#9749](#9749)
- **(task)** resolve bash deterministically on Windows to avoid WSL
launcher by @JamBalaya56562 in
[#9750](#9750)

### 📚 Documentation

- **(secrets)** clarify age strict mode default by @risu729 in
[#9737](#9737)
- **(tasks)** add bash shebang to conditional-dependencies example by
@JamBalaya56562 in [#9747](#9747)
- update backend tool option docs by @risu729 in
[#9738](#9738)

### 📦 Registry

- remove tools with zero users by @jdx in
[#9725](#9725)
- add scalafmt
([github:scalameta/scalafmt](https://github.com/scalameta/scalafmt)) by
@pokir in [#9757](#9757)
- remove flarectl by @risu729 in
[#9756](#9756)

### Chore

- **(release)** strip pre-existing sponsor block before appending
canonical one by @jdx in [#9745](#9745)

### New Contributors

- @pokir made their first contribution in
[#9757](#9757)
jdx pushed a commit that referenced this pull request May 11, 2026
## Summary
- remove unsupported `exe` options from GitHub/GitLab registry backend
options
- use `bin = "solc"` for Solidity because the selected Linux release
asset is named `solc-static-linux`, but users expect the command to be
installed as `solc`
- set Sourcery `format = "tar.gz"` because the Linux release asset is
gzip-compressed even though the uploaded filename ends in `.tar.xz`
- keep the newly discovered registry command checks as commented `# test
= ...` lines instead of active tests
- rebase onto current `main`; tools removed upstream by
#9725 are no longer part of this PR

## Popularity
No new registry tools are added in this PR. This only updates existing
registry entries, so new-tool popularity data is not applicable.

`flarectl` is no longer part of this PR.
#9756 has been merged to remove it from
the registry because the current `cloudflare/cloudflare-go` releases no
longer publish static binaries and mise versions shows very low usage.

## CI status
As of 2026-05-10, the rebased PR head is
`7117c21f1be582f0f4ed1e836498b7a7561a7020`.

A previous CI run passed at the old head
`891419410da51649a24c16f2d6015eef7f2aeef6`. The branch has since been
rebased onto current `main`, the CI-token commits were dropped because
they are already upstream, and the registry tests added by this PR were
commented out.

## Changed tools

| Tool | Opts/config added | Test status | Linux install works | Notes |
| --- | --- | --- | --- | --- |
| `astro` | none | existing `astro version` test kept | yes, existing
test covers install | removed unsupported `exe = "astro"` only |
| `babashka` | none | existing `bb --version` test kept | yes, existing
test covers install | removed unsupported `exe = "bb"` only |
| `codefresh` | none | no active test | latest no; prior `0.89.6` yes |
`1.1.4` installs but `codefresh version` fails with `Cannot find module
'/snapshot/cli/node_modules/generator-function/require.mjs'`; `0.89.6`
runs `codefresh version` and prints `client version: 0.89.6` |
| `coursier` | none | commented `cs --help` kept | yes, local `mise x
coursier@latest -- cs --help` passed | removed unsupported `exe = "cs"`
|
| `databricks-cli` | none | existing `databricks --version` test kept |
yes, existing test covers install | removed unsupported `exe =
"databricks"` only |
| `depot` | none | existing `depot --version` test kept | yes, existing
test covers install | removed unsupported `exe = "depot"` only |
| `doppler` | none | existing `doppler --version` test kept | yes,
existing test covers install | removed unsupported `exe = "doppler"`
only |
| `dynatrace-monaco` | none | commented `monaco version` kept | yes,
local `mise x dynatrace-monaco@latest -- monaco version` passed |
removed unsupported `exe = "monaco"` |
| `flatc` | none | existing `flatc --version` test kept | yes, existing
test covers install | removed unsupported `exe = "flatc"` only |
| `fluttergen` | none | existing `fluttergen --version` test kept | yes,
existing test covers install | removed unsupported `exe = "fluttergen"`
only |
| `gam` | none | commented `gam version` kept | yes, local `mise x
gam@latest -- gam version` passed | removed unsupported `exe = "gam"` |
| `glab` | none | existing `glab version` test kept | yes, existing test
covers install | removed unsupported `exe = "glab"` from both platform
backends |
| `graphite` | none | existing `gt --version` test kept | yes, existing
test covers install | removed unsupported `exe = "gt"` only |
| `jwtui` | none | commented `jwtui --version` kept | yes, local `mise x
jwtui@latest -- jwtui --version` passed | removed unsupported `exe =
"jwtui"` |
| `kube-controller-tools` | none | commented `controller-gen --version`
kept | yes, local `mise x kube-controller-tools@latest -- controller-gen
--version` passed | removed unsupported `exe = "controller-gen"` |
| `localstack` | none | existing `localstack --version` test kept | yes,
existing test covers install | removed unsupported `exe = "localstack"`
only |
| `micronaut` | none | commented `mn --version` kept | yes, local `mise
x micronaut@latest -- mn --version` passed | removed unsupported `exe =
"mn"` |
| `odin` | none | commented `odin version` kept | yes, local `mise x
odin@latest -- odin version` passed | removed unsupported `exe = "odin"`
|
| `openbao` | none | commented `bao version` kept | yes, local `mise x
openbao@latest -- bao version` passed | removed unsupported `exe =
"bao"` |
| `protoc-gen-js` | none | commented `protoc-gen-js --version` kept |
yes, local `mise x protoc-gen-js@latest -- protoc-gen-js --version`
passed | removed unsupported `exe = "protoc-gen-js"` |
| `purescript` | none | commented `purs --version` kept | yes, local
`mise x purescript@latest -- purs --version` passed | removed
unsupported `exe = "purs"` |
| `railway` | none | existing `railway --version` test kept | yes,
existing test covers install | removed unsupported `exe = "railway"`
only |
| `schemacrawler` | `depends = ["java"]` | commented `schemacrawler.sh
--version` kept | yes with Java explicit | `mise x schemacrawler@latest
-- schemacrawler.sh --version` did not put `java` on PATH locally; `mise
x java@26 schemacrawler@latest -- schemacrawler.sh --version` passed |
| `signadot` | none | existing `signadot --version` test kept | yes,
existing test covers install | removed unsupported `exe = "signadot"`
only |
| `soft-serve` | none | commented `soft --version` kept | yes, local
`mise x soft-serve@latest -- soft --version` passed | removed
unsupported `exe = "soft"` |
| `solidity` | `bin = "solc"` | commented `solc --version` kept | yes,
local `mise x solidity@latest -- solc --version` passed | default
selected Linux asset name is `solc-static-linux`; `bin = "solc"`
installs the expected `solc` command |
| `sourcery` | `format = "tar.gz"` | commented `which sourcery` kept |
yes, local `mise x sourcery@latest -- which sourcery` passed | Linux
asset filename says `.tar.xz`, but upstream workflow writes it with gzip
compression |
| `starknet-foundry-sncast` | none | commented `sncast --version` kept |
yes, local `mise x starknet-foundry-sncast@latest -- sncast --version`
passed | removed unsupported `exe = "sncast"` |
| `starknet-foundry` | none | commented `snforge --version` kept | yes,
local `mise x starknet-foundry@latest -- snforge --version` passed |
removed unsupported `exe = "snforge"` |
| `swiftgen` | none | no active test | left as-is | non-Linux tool in
practice; current GitHub release contains a Mach-O universal `swiftgen`
binary, so Linux execution is not expected to work |
| `tfswitch` | none | commented `tfswitch --version` kept | yes, local
`mise x tfswitch@latest -- tfswitch --version` passed | removed
unsupported `exe = "tfswitch"` |
| `transifex` | none | commented `tx --version` kept | yes, local `mise
x transifex@latest -- tx --version` passed | removed unsupported `exe =
"tx"` |
| `tsuru` | none | commented `tsuru version --help` kept | yes, local
`mise x tsuru@latest -- tsuru version --help` passed | removed
unsupported `exe = "tsuru"` |
| `weave-gitops` | none | no active test | latest no; prior `0.38.0` and
`0.37.0` yes | latest `0.39.1-rc.1` has no release assets, but older
Linux assets still work and `gitops version` reports the expected
versions |

## Rebased-away tools

- `carp`, `dtm`, and `kpack` were removed upstream by
#9725, so this branch no longer touches
them.
- I still checked `carp` with explicit backend syntax:
`github:carp-lang/Carp@0.6.0` fails because the latest release has no
assets, while `github:carp-lang/Carp@0.5.5 -- carp --help` installs and
runs.
- `dtm` is left alone because it is non-Linux-only in practice and has
already been removed upstream.
- `flarectl` was removed from this PR;
#9756 has been merged.

## Codefresh history

`codefresh` started as an asdf-only registry entry in the initial
cross-backend registry work. It was later migrated away from asdf by
adding `ubi:codefresh-io/cli[exe=codefresh]` in
#3202, then migrated from `ubi:` to
`github:` in #6232. Current `1.x` Linux
binaries are broken at runtime, but older `0.89.6` still works through
the GitHub backend, so I did not remove it here.

## Sourcery release format

The current Sourcery Ubuntu release workflow sets
`FILENAME="sourcery-${TAG}-${SUFFIX}.tar.xz"` and then creates it with
`tar -zcvf`, which produces gzip-compressed tar content despite the
`.tar.xz` filename:
https://github.com/krzysztofzablocki/Sourcery/blob/master/.github/workflows/release_ubuntu.yml#L43-L47

I did not find a Sourcery issue or PR that explicitly calls out the
gzip-vs-`.tar.xz` mismatch when searching their issues/PRs for `tar.xz`,
`gzip`, and `tar.gz`. The closest relevant release context is:
- release automation PR:
krzysztofzablocki/Sourcery#1254
- artifact structure issue:
krzysztofzablocki/Sourcery#1255
- Linux support PR:
krzysztofzablocki/Sourcery#1188

## Solidity binary name

The current Solidity release publishes the Linux CLI asset as
`solc-static-linux`:
https://github.com/argotorg/solidity/releases/tag/v0.8.35

Without `bin = "solc"`, the GitHub backend exposes the downloaded asset
name as the command name. The `bin` option renames/symlinks the
installed binary to the expected CLI command, `solc`, which matches
Solidity docs and existing user expectations.

## Testing
- `mise run build`
- `cargo test --all-features cli::args::backend_arg::tests::test_opts`
- `target/debug/mise registry | rg '^(flarectl|carp|dtm|kpack)\b' ||
true`
- local `target/debug/mise x ...` checks for all commented test commands
listed in the table
- version-specific checks for `codefresh@1.1.4`, `codefresh@0.89.6`,
`weave-gitops@0.39.1-rc.1`, `weave-gitops@0.38.0`,
`weave-gitops@0.37.0`, `github:carp-lang/Carp@0.6.0`, and
`github:carp-lang/Carp@0.5.5`
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.

1 participant