D081 -
run checks the machine before it tries anything
decided · 2026-08-19 · at the user's direction
doctor is now a dependency of the commands that need a
toolchain, not a thing to remember to run. A missing requirement
surfaces as one clear line before any work starts, rather than as a
build error three steps in that a reader has to trace back.
Silent when it passes. A full report before every debug run is noise, and noise before every run is noise people learn to scroll past - at which point the check may as well not be there. It speaks only when something is actually wrong, and then it says what and where to go next.
One list, two consumers. The requirements live in a
single function that both doctor and the preflight read, so
the verbose report and the blocking check cannot come to different
conclusions about whether this machine is usable. Two copies of that
list would eventually disagree, and the disagreement would be discovered
by somebody whose build was refused for a reason doctor
said was fine.
doctor prints the exact install command for anything
absent rather than naming the tool and leaving the reader to work it
out, and doctor --fix runs it.
--fix covers the optional tools and the git
hook, never the toolchain. Installing Rust is a machine-wide
decision that belongs to the person, not to a script they ran to ask a
question. The distinction is between finishing a setup somebody already
chose and making that choice for them.