Neither host-setup/linux/install-tools.sh nor the new host-setup/windows/install-tools.ps1 manages markdownlint, cspell, actionlint, editorconfig-checker, shellcheck, PSScriptAnalyzer or ruff, and nothing in the tree states that as a decision. A reader can only reach it by inference.
The reasoning is sound and currently lives nowhere durable. Every one of those runs as a pinned container image, or through uvx for the Python toolchain, which is what keeps a local run and CI the same check: the image tag fixes the version. Installing native copies through apt or winget would put a second, unpinned version of each on the host, and a local run would then differ from CI, which is the exact property the pinned images exist to guarantee. So the only host requirements the whole linter surface creates are docker and uv, and docs/host-setup.md already carries both.
host-setup/windows/README.md now states this under "Why There Is No Linter Category", but it states it for Windows only. The question is whether it belongs in docs/host-setup.md as a fleet fact instead, so the Linux tooling is covered by the same sentence rather than by silence, and so a future contributor adding a "linters" category to install-tools.sh finds the answer before writing it rather than after.
Either outcome closes this. What should not persist is the current state, where the absence is correct and undocumented.
Raised while building the Windows host tooling, where the same absence had to be justified from scratch because nothing recorded the existing justification.
Neither
host-setup/linux/install-tools.shnor the newhost-setup/windows/install-tools.ps1managesmarkdownlint,cspell,actionlint,editorconfig-checker,shellcheck,PSScriptAnalyzerorruff, and nothing in the tree states that as a decision. A reader can only reach it by inference.The reasoning is sound and currently lives nowhere durable. Every one of those runs as a pinned container image, or through
uvxfor the Python toolchain, which is what keeps a local run and CI the same check: the image tag fixes the version. Installing native copies throughaptorwingetwould put a second, unpinned version of each on the host, and a local run would then differ from CI, which is the exact property the pinned images exist to guarantee. So the only host requirements the whole linter surface creates aredockeranduv, anddocs/host-setup.mdalready carries both.host-setup/windows/README.mdnow states this under "Why There Is No Linter Category", but it states it for Windows only. The question is whether it belongs indocs/host-setup.mdas a fleet fact instead, so the Linux tooling is covered by the same sentence rather than by silence, and so a future contributor adding a "linters" category toinstall-tools.shfinds the answer before writing it rather than after.Either outcome closes this. What should not persist is the current state, where the absence is correct and undocumented.
Raised while building the Windows host tooling, where the same absence had to be justified from scratch because nothing recorded the existing justification.