Steps are in send order (idx ascending); empty for a sequence with no messages yet, which enrolls fine and completes immediately.
List<Step> steps;