ffef44f7bb
Tests cover all Send() code paths: - Nil TTS synthesizer returns tts-not-wired error - Nil sessions registry returns sessions-not-wired error - No live session returns delivery.ErrVoiceNoSession (dispatcher reroutes) - With session: pushes audio_nudge frame with correct kind, rule_name, text, PCM16kMono format, non-empty audio bytes - Empty Body falls back to Summary text - TTS synthesize error propagates with 'synthesize:' prefix - Invalid audio format rejects with 'refuse to ship' error Uses net.Pipe() for real voice.Sessions integration, tts.Stub for deterministic synthesis, and fake synthesizers for error paths.