plano/crates/brightstaff
Spherrrical 53a23ec8f9 refactor(claude-cli): make session bookkeeping sync, drop lock-across-await
- Convert ClaudeProcess::last_used from tokio::sync::Mutex<Instant> to
  std::sync::Mutex<Instant>: the critical section is one Copy read/write
  with no .await, so a sync mutex lets SessionManager iterate sessions
  without holding the map lock across an await point. Fixes the
  lock-across-await pattern in lru_session_id and evict_idle.
- Simplify SessionManager::get_or_spawn to a single map-lock acquisition
  on the fast path; only release the lock for the rare case where we
  need to await a victim shutdown before spawning.
- Replace the hand-rolled "deterministic UUID via DefaultHasher" with a
  real UUIDv5 over the OID namespace (uuid feature `v5`). Stable across
  Rust toolchain versions, unlike SipHash, and matches what the doc on
  the helper claimed all along.
- Introduce ProcessError::MissingStdio { which } so spawns where
  Stdio::piped() somehow returned None surface as their own programmer-
  error variant rather than masquerading as ExitedEarly.
- Delete the dead is_zero() helper.
2026-05-04 13:35:11 -07:00
..
src refactor(claude-cli): make session bookkeeping sync, drop lock-across-await 2026-05-04 13:35:11 -07:00
tests feat(claude-cli): add local Claude Code CLI provider bridge 2026-05-04 12:57:53 -07:00
Cargo.toml refactor(claude-cli): make session bookkeeping sync, drop lock-across-await 2026-05-04 13:35:11 -07:00