By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Group mutation alternatives and skip remaining on first failure When a mutation operator emits multiple alternatives at one source location (e.g. ListLit's drop-each variants on a 3-element list), all alternatives were previously tested independently. Now they are grouped: as soon as one alternative in a group fails (survives or is uncovered), the remaining alternatives are recorded as 'Skipped' without being run. The plugin's writer monad now accumulates [MutationGroup] (one group per applyAlts call). MutationManifest and AugmentedManifest carry list-of-groups; MutationRunReport replaces its flat survived/timed-out/ uncovered arrays with a single 'groups' field of [MutationGroupReport], each carrying a list of MutationOutcome (Killed/Survived/TimedOut/ Uncovered/Skipped). Timeouts do not trigger within-group skipping. The within-group skip is independent of --mutation-fail-fast, which still controls whether the whole run aborts.