Skip to content

v3.6.0: silent hook loss on native-coreutils Windows fixed, /plan-doctor self-check

Choose a tag to compare

@OthmanAdi OthmanAdi released this 18 Jul 09:54

v3.6.0

The headline: plan resolution and hook injection could go silently dark on Windows

A machine with a native Windows coreutils build on PATH (winget coreutils, uutils, and similar installs) gives Git Bash sessions a realpath that prints C:\-style backslash paths. The containment guard in resolve-plan-dir.sh and inject-plan.sh compares canonical paths with a forward-slash prefix pattern, so every comparison failed. The consequence: the resolver resolved nothing, injection emitted nothing, every hook exited 0, and nothing printed an error. The mechanisms this skill is built on were fully disabled on such machines with no visible symptom, and Linux CI could not reproduce it.

v3.6.0 backslash-normalizes canonical paths before comparison (pure shell, no extra process), canonicalizes the resolver root via . and candidates through their cwd-relative form (healing the 8.3 short-path mismatch that v3.2.0 fixed only in inject-plan.sh), and adds regression tests that reproduce the Windows path shape on every platform via a stub realpath, so ubuntu CI now guards this class.

Side effects of the same work: the long-standing local test_ledger.py hang on Windows is gone, and per-candidate grep/basename forks were replaced with shell builtins. One hook fire measures 289ms on the machine that measured 2.0 to 2.4s at v3.4.0.

New: /plan-doctor

Failures in this class are silent by design, so a broken install looks identical to "no plan yet". sh scripts/plan-doctor.sh (or /plan-doctor on the plugin route) reports in one pass: plan resolution, injection output, canonicalizer path shape, attestation state, install surfaces on the machine, and per-fire hook latency.

Docs

docs/installation.md now carries the install-route matrix (the plugin route ships commands/ and reliable hook registration; npx skills add and manual copies do not), the project-trust prerequisite that silently gates project-level skills, and a one-line CLAUDE.md trigger snippet: the July 2026 benchmark measured unforced skill engagement at 60 to 67% while always-loaded rules lines engaged 100%. The README gains a plan-mode handoff FAQ and updates the supported-agents answer to the 2026 .agents/skills standard landscape.

Full details in the CHANGELOG.