chore(mise): 13 phantom tools, a no-op [alias] block, and no Elixir#646
Merged
Conversation
`mise.toml` emitted ~25 warning lines on every shell entry in this repo
while installing none of the tools it warned about. Three faults.
## 1. Thirteen tool names that do not exist in the mise registry
denojs, pip, cargo, go-task, gofmt, isort, git, gnu-sed, gnu-grep,
gnu-tar, vitest, pytest, jest — every one failed to resolve, so every
one was pure noise. Grouped by why:
- already provided by a listed tool: cargo (rust), gofmt (go), pip (python)
- project deps, not system tools: vitest, jest, pytest, isort
- base system binaries: git, gnu-sed, gnu-grep, gnu-tar
- simply misnamed: denojs -> deno
go-task is dropped rather than renamed. NB the bare name `task` does not
work either: `mise registry` LISTS it as `aqua:go-task/task`, but
resolving `task@latest` still fails — appearing in registry output is not
sufficient to conclude a name resolves. `just` is listed instead, which
is what this repo actually drives everything through.
## 2. erlang and elixir were missing entirely
Elixir is the language of lib/ and all 71 test files, and it was not in
the toolchain manifest at all. Now pinned to erlang 27.0 / elixir 1.17 —
the same versions .github/workflows/tests.yml passes to erlef/setup-beam,
so a local `mix test` runs on the same toolchain as CI.
## 3. The [alias] block never did anything
[alias]
build = "cargo build --release || npm run build || go build"
test = "cargo test || npm test || go test ./..."
mise's `[alias]` maps an alias to a TOOL PLUGIN; it does not define
tasks, so none of these ever ran (mise also warns it is deprecated in
favour of `[tool_alias]`). Not re-added as `[tasks]`: the Justfile
already defines build, test, fmt, fmt-check, lint, doctor and heal
properly, for the languages this repo actually uses. Two task runners
sharing verb names — one of which silently falls through `||` chains
into a different language's build — is worse than one.
## Verified, not asserted
Controlled comparison on one machine, one shell, both files read
(this fixed copy in a worktree, the unfixed copy in the parent):
warnings citing the FIXED file : 0
warnings citing the UNFIXED file : 14
Every retained name checked with `mise ls-remote` — resolution, not mere
presence in `mise registry` output, which is what missed `task`.
Remaining expected output is `mise WARN missing: erlang@27.0 elixir@1.17`
until someone runs `mise install`. That one is correct and actionable —
it reports a real local/CI toolchain gap rather than an unfixable typo.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
hyperpolymath
marked this pull request as ready for review
July 21, 2026 13:05
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.
Context
mise.tomlprinted roughly 25 warning lines on every shell entry in this repo, whileinstalling none of the tools it warned about. It is developer-ergonomics only — CI does not
consume it — but it made every command in this repo, human or bot, arrive buried in noise.
Three faults
1. Thirteen tool names that do not exist in the mise registry.
denojs,pip,cargo,go-task,gofmt,isort,git,gnu-sed,gnu-grep,gnu-tar,vitest,pytest,jest. Every one failed to resolve, so every one was purenoise. Removed, grouped by reason in the file itself:
cargo(rust),gofmt(go),pip(python)vitest,jest,pytest,isortgit,gnu-sed,gnu-grep,gnu-tardenojs→denogo-taskis dropped, not renamed. The bare nametaskdoes not work either:mise registrylists it asaqua:go-task/task, buttask@lateststill fails to resolve.That is a trap worth recording — appearing in
mise registryoutput is not sufficient toconclude a name resolves. I initially "verified" all names against registry listing and it
passed
task; only running mise caught it.2.
erlangandelixirwere absent entirely — despite Elixir being the language oflib/and all 71 test files. Now pinned to erlang 27.0 / elixir 1.17, matching whattests.ymlpasses toerlef/setup-beam, so localmix testand CI run the same toolchain.3. The
[alias]block never did anything.mise's
[alias]maps an alias to a tool plugin — it does not define tasks, so none ofthese ever ran (mise also warns it is deprecated in favour of
[tool_alias]). Deliberatelynot re-added as
[tasks]: theJustfilealready definesbuild,test,fmt,fmt-check,lint,doctorandhealproperly for the languages this repo actually uses.Two task runners sharing verb names — one of which silently falls through
||chains into adifferent language's build — is worse than one.
Verification
Controlled comparison, one machine, one shell, both files read (the fixed copy in a
worktree, the unfixed copy in the parent checkout):
Every retained name re-checked with
mise ls-remote— resolution, not registry listing.Expected remaining output
until someone runs
mise install. That warning is correct and actionable — it reports agenuine local/CI toolchain gap, unlike the previous unfixable typos.
Acceptance criteria
mise.tomlparses as valid TOMLmise ls-remote[alias]sectiongo-taskis acceptable (nothing in-repo invokestask)Model tier
Haiku/Sonnet — a single config file, no code paths, fully mechanical once the registry
facts are established. Recorded here so the pattern can be reused: several other estate
repos carry the same copied
mise.toml.Related
tests.yml(separate concern, separate branch)