---
name: v091-bugfix-sweep
description: v0.9.1 fixed 6 v0.9.0 bugs incl. the D1 env-file hook regression; lessons
metadata: 
  node_type: memory
  type: project
  originSessionId: 7a919ad5-82a3-4e01-8754-d635c0702c15
---

**v0.9.1 SHIPPED 2026-06-30** (perri) — fixed 6 operator-reported bugs in [[v090-d1-shipped]]. Live
tracking doc `BUGS-v091.md`. main @ 4968c3b; adapter release v0.9.1 + cplugs 0.1.9.

**The big one (D1 regression):** SessionStart `dispatch.sh` cached `SPTC_HOOK_BIN=<dir>/claude-spt
hook` UNQUOTED. CC sources `$CLAUDE_ENV_FILE` per Bash invocation → `VAR=val cmd` parse → ran the
bare `hook` token → `hook: command not found` on EVERY Bash command + the cached value lost.
**Lesson:** a `[strings]` value that becomes an env var must have NO unquoted space; write it QUOTED.
Fix: manifest `hook_cmd` = bare binary PATH (no ` hook`); dispatch caches QUOTED, strips a legacy
` hook` suffix (cross-version-safe), execs `"$bin" hook <event>`. **Test lesson:** the v0.9.0 dispatch
test only grepped that `SPTC_HOOK_BIN` is *mentioned* — never SOURCED a cached line, so the bug
sailed through. Regression now sources the line in-shell at the real seam (assert-on-behaviour).

Other 5: (#1) post_update runs `claude plugin marketplace update cplugs` before install (stale-cache
"Plugin sptc not found in marketplace cplugs"); (#2) post_update CAPTURES subprocess output so CC's
verbose line never leaks onto the `[update.post]` arbiter stdout (that leak was making CC's line the
"custom message") + reworded `✔ Claude Code plugin "sptc" updated from X to Y. Active sessions need
to run the /reload-plugins command.`; (#3) identity/live/live-ops briefs state `Your id is {id}`, drop
`spt whoami`; (#4) briefs say replies arrive automatically on the perch — never arm a second Monitor;
(#6) ccs profile `session.self`/`session.resume` carry the U6 `-n {id} --remote-control {id}` flags the
bare v0.8.0 override had dropped. 91 crate tests, all gates green.
