Root cause: OSStatus 561145187 (!rec) - AVAudioSession was not in .playAndRecord mode when VoiceProcessingIO tried to start. Two changes: 1. Activate session BEFORE rust.connect() so it's ready when auto-join runs 2. Defensive activation in Connected handler as backup This fixes both the !rec error and the subsequent 'voice_in already taken' error that occurred after auto-join consumed voice_in on failure.