DualInbound
data class DualInbound(val child: GroupId, val incumbent: AttachmentId, val rejected: AttachmentId) : ControlConflict
An ControlCommand.Activate that would give child a second live inbound generation: incumbent is already live (ACTIVE/CLOSING) in the log-order state when the log reached rejected. This is the overlapping-reshape loser — the log picked incumbent, so rejected is refused (design §5.2, §10.11). Because the decision reads log-order state, every peer derives it identically, so the rejected generation never enters any peer's replicated ledger.