Part of #77.
- channel_owner(conversation_id, member_slot, owner_session_id, token, epoch, heartbeat_at, ttl).
- session_presence per S0.0.
- Lease/heartbeat writes in a SEPARATE WAL file to avoid contention with the message store.
- Add and align busy_timeout across writers.
AC: migration applies cleanly; no overlap with message-store WAL hot path.
Part of #77.
AC: migration applies cleanly; no overlap with message-store WAL hot path.