You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
The Claude Code hooks run an okl whose path contains a space (#140). Both hooks cut
the path to okl at its first space, so an okl in a virtualenv under a project folder
with a space in its name, or installed under a folder like Application Support, could
not be run. With no other okl on PATH, the prompt hook then blocked every prompt,
blaming a file that existed, and the Stop hook skipped its question without saying so.
Both now keep the path whole, as the pre-push hook already did. A pinned <python> -m okl is used only if that python can still import okl, so a venv whose okl
was uninstalled is skipped instead of run; with that form pinned, the check adds about
60 ms to each prompt and each stop. OKL_BIN and okl_bin now take only what okl init writes, as the pre-push hook already did: a path to okl, or <python> -m okl. A launcher with arguments, such as uv run okl, used to be split
into words and now is not; put it in a script and point OKL_BIN at that.
The Stop hook, /record and the encoding-loop skill no longer promise a gate a repo
may not have. They said a drift gate "goes red" when a lesson's code changes, which
was false in a repo set up with --no-git-hook and no --ci. They now say what
happens everywhere: the briefing and okl drift mark the lesson STALE until its check
passes again, and a drift gate, where the repo has one, fails. The README and the guide
said a lesson stays red "until someone re-runs" its check; they now say until it passes,
since a failing re-run leaves it red, or until the code is put back as it was when it
passed (drift compares content).