v0.8.0
doctor --json now emits the community dsh-doctor/v1 envelope (deepseek-harness#1719), so CI and support flows can consume a doctor run from any conforming implementation.
npx dsh-win32 doctor --jsonThe skip status is new to the contract and came from this plugin. The vocabulary had pass / warn / fail. A check like git_bash is none of those on Linux, it does not apply, so a platform-scoped implementation had to either report pass (a lie) or fail (poisoning any cross-platform CI run). A fourth status with a mandatory reason, counting as neither pass nor fail, was accepted into v1.1. This is the first implementation where it actually fires, since every check here except node is win32-scoped.
Also in this release.
- Checks carry the vocabulary names (
node,git_bash,powershell,koffi,sandbox_shell), so a consumer asserts on name plus status and never parsesdetail. - Exit codes follow the contract, 0 all pass, 1 any warn, 2 any fail. This is a breaking change if you run
doctorinside a script. Treat exit 1 as informational and gate on exit 2. Exit codes apply to a directdoctorrun only, sosetupstill decides for itself whether a finding is fatal. - The standing "mode matters" warning became a real
sandbox_shellcheck. It reports pass once the busybox variant is installed instead of nagging unconditionally. - The
noderange is now anchored to the deepseek-harness rootpackage.json, which declares^22.19.0 || >=24.0.0, rather than to an observed failure. Three doctor implementations had three different floors before this was found. - Fix. The Git Bash wrapper check was inverted.
Git\usr\bin\bash.exeis the real shell andGit\bin\bash.exeis the 47KB wrapper, but both end in\bin\bash.exe, so a correctly installed Git Bash was reported as the wrapper. Caught by Windows CI before release.
49 unit tests, 3-OS CI matrix. The envelope is asserted on every push on all three systems, including that every skip carries a reason and that the summary adds up.