toChannelReplacementPlan
fun ChannelSet.toChannelReplacementPlan(currentSettings: List<ChannelSettings>, fallbackLoraConfig: Config.LoRaConfig?, requirePrimary: Boolean = false): ChannelReplacementPlan(source)
Produces the canonical authoritative replacement plan used by every full channel-set import path.
Normalization runs before the firmware-slot bound is checked, allowing padded exports to shed blank or duplicate secondaries before validation. requirePrimary lets profile installation reject an empty decoded set while the explicit QR replacement flow retains its existing ability to clear every slot.
Parameters
currentSettings
The destination's current settings. Only the size is used when deciding which trailing slots must be disabled.
fallbackLoraConfig
LoRa config used for semantic identity when this channel set does not carry one.
requirePrimary
Whether an empty normalized set must be rejected.