From the #103 coverage discussion. Manager-created sessions construct real providers, so manager.handle() paths that dispatch into a session (send/idempotency-dedupe, attach passthrough) can't be integration-tested — driving them would spawn a real Claude Code subprocess (works on dev boxes, which is worse than failing). The idempotency guard's 9 manager lines shipped covered only at Session level.
Fix: inject a provider factory into SessionManager (defaulting to the real one), letting tests run manager-level flows against MockSessionProvider. Unlocks true end-to-end handler tests for existing verbs and everything the conductor adds.
From the #103 coverage discussion. Manager-created sessions construct real providers, so
manager.handle()paths that dispatch into a session (send/idempotency-dedupe, attach passthrough) can't be integration-tested — driving them would spawn a real Claude Code subprocess (works on dev boxes, which is worse than failing). The idempotency guard's 9 manager lines shipped covered only at Session level.Fix: inject a provider factory into
SessionManager(defaulting to the real one), letting tests run manager-level flows againstMockSessionProvider. Unlocks true end-to-end handler tests for existing verbs and everything the conductor adds.