Twinned from https://github.com/cfsh/ninefold/issues/504 by tools/beads/import_github.py's reconcile pass.
Found while running ./presubmit.py --all for #503. Filed unclaimed.
``` ── shellcheck ─── ShellCheck over every tracked script shellcheck not installed — 15 shell script(s) UNCHECKED ○ shellcheck skip 0.0s ```
But it *is* installed, exactly where CLAUDE.md says:
``` $ ls C:/Tools/shellcheck/ LICENSE.txt shellcheck.exe ```
The directory is not on git-bash's PATH. CLAUDE.md claims the opposite — *"with that directory on the user PATH"* … *"the sandbox box has it, so the lane really gates there"*. It does not.
The lane is optional by design so a box without ShellCheck degrades to a loud skip rather than a hard failure. That is the right call. But the same design means a box that *should* gate and silently stopped is indistinguishable from one that never had it — and presubmit.py is the only gate in this repo (no CI, design 001 §7). merge_pr.sh runs --all and merges on a PASS that skipped a third of the lanes.
Same shape as #389: nothing ran the check, so nobody noticed it had stopped running.
--doctor distinguish "absent" from "present but unreachable." It already runs python3/python behaviourally rather than guessing by path; the same treatment here would have said *"shellcheck.exe exists at C:/Tools/shellcheck but is not on PATH"* instead of "not installed". That is the durable half.rebuild_f5.py falls back to C:/Tools/Godot for the console exe. There is precedent in the tier for a known-install-path fallback.The second and third are not exclusive; the second is what stops the next tool inheriting the same blind spot.
Related: #389 (a gate that rotted unnoticed), design 001 §5.1.
None.
No comments.