getGroupDmTargetOrigins() returned undefined for 1-on-1 DMs, which queueOutboxEvent() treated as 'broadcast to all existing peers'. When no peers existed, nothing was queued and no handshake was ever triggered. Now always computes target origins from DM participants so the pending placeholder creation path runs, enabling ensurePeered() → peer/accept → approval queue flow.