MGS3035: tool unprobeable
A spell declares a version probe for every tool its ops drive, and the answer is part of every cache key those ops write. This tool is present and runs, but the probe fails:
[MGS3035] go:golangci-lint runs in /repo/api but cannot say which build it is,
so no cache key could tell its upgrades apart: version probe golangci-lint
[--version] in /repo/api: exit status 3: panic: runtime error
The last part is the tool's own words, quoted from its output.
Why it is an error
The ops can still pass. A key recording a placeholder in place of the version would then replay those passes after the tool is upgraded, because nothing in the key moved. magus will not write a key that cannot tell two builds apart, so the run stops here, before any target runs.
An absent tool is not this
A tool that is not there gets a warning, not this error, and its key records
UNPROBED:
- the probe's binary is not on PATH (MGS3003);
- mise is on PATH but selects no version of the tool for the directory;
- a tool a package manager runs from its install (
pnpm exec tsc) is missing from that install. The warning names the cause: nonode_modules, an install that never finished, or an install that does not ship the tool, along with the command that fixes it, such asmagus run install console.
UNPROBED is honest there because nothing that drives an absent tool can pass,
so no result is ever recorded under it that a later run could wrongly replay.
Installing the tool moves the key. The absence is cached like a version, so it
costs one probe and one warning per change to the probe's inputs, not one per
invocation.
Resolution
- Run the probe yourself in the directory the message names. The quoted line is usually enough to say what broke.
- Fix the tool: reinstall it, or repair the configuration it reads at startup.
- Fix the probe: if the tool does not understand the argv its spell
declares, correct the
probein the spell'smgs_getTools.
Graph reads
magus status, magus refs and the other graph reads do not fail over one
project's tool, because a read runs no tool and writes no cache entry. The
project's symbol index reports unvouched with this message, and the other
projects answer as usual.