Patch release. Two independent bug sources that survived the 0.13.1
`git_cmd` async migration are fixed here.
Fixed
* `git_cmd` / libgit2 — hang-proof timeout + spawn_blocking migration.
Two axes:
- Axis 1: subprocess timeout + process group. `kill_on_drop` alone
SIGKILLs the direct git child but not its grandchildren (pre-commit
hooks, gpg, pinentry, husky). A new `spawn_output` helper sets
`Command::process_group(0)` on Unix, captures the child pid, and on
timeout calls `libc::killpg(pid, SIGKILL)` so the whole group dies
together. `TIMEOUT_LOCAL` raised from 10s to 30s as a single-shot
ceiling. All five shell-out sites routed through the helper. New
dep: `libc = "0.2"` under `[target.'cfg(unix)'.dependencies]`.
- Axis 2: libgit2 to `spawn_blocking` (Isle pattern). `Repository::open`
and everything reachable from `git2::Repository` is synchronous
blocking C. `GitModule::status` / `log` / `diff` (and inline libgit2
fragments in `branch_status` / `worktree_state`) now run inside
`tokio::task::spawn_blocking` so a slow-disk libgit2 sweep never
occupies a tokio async worker thread and cascade-blocks other MCP
tool calls.
Changed
* `.worktrees` default subdir literal — single source of truth via
`lds_core::DEFAULT_WORKTREES_SUBDIR`. Const promoted to module scope
in `lds-session`, re-exported from `lds-core`. Duplicate literal sites
in doc comments / unit test / MCP tool description switched to
intra-doc links (or reworded, for the proc-macro attribute case).
* `SessionConfig::worktrees_dir` field doc reworded to drop an
agent-profiles-internal pipeline gate name from the public docs.rs
surface.
Verification
* `cargo test --workspace` — 219 pass, 0 fail.
* `cargo clippy --workspace --all-targets` — 0 warnings.
* Integration suite includes all 12 commit-path variants.
* Timeout literal message contract test exercises the new
`spawn_output` helper (process_group + killpg on Unix).
See CHANGELOG.md [0.13.2] for the full narrative.