By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Update sydtest and keep the mutation check passing on the new engine The upgraded sydtest mutation engine adds the SwitchFunctionArguments, RemoveClause, ElideCall and TupleSwap operators (plus control-group mutations). Cover the genuinely-killable new mutants with tests and mark the equivalent ones with DisableMutation annotations: * Strengthen the wrapper specs (AmountOf/AccountOf/ConversionRateOf) and the Multi*, Account, Amount, ConversionRate and DecimalLiteral specs so the new mutants no longer slip through the `Nothing`-guarded branches. * Annotate the equivalent mutants (commutative add/compose swaps, redundant optimisation clauses, the fromDouble exponent short-circuit, symmetric sign-routing tuple swaps in rate/multiply, the empty-string sign, S.insert in the repetend check, and uncoverable diagnostic messages), each with a rationale. Where a mutant marked genuinely redundant or dead code rather than an intentional optimisation or safety guard, simplify the code instead of annotating it (behaviour-preserving, and the freed-up mutants are now killed by the existing tests): * Account.distribute: drop the no-op `abs` on the `Word16` chunk count and collapse the unreachable zero-account branches. * Amount.fraction: drop the redundant zero-fraction clause (the `Amount 0` clause stays, as it guards the `0 % 0` crash). * DecimalLiteral.toRational/fromRatio: drop redundant always-Nothing/sign plumbing. Bump really-safe-money to 0.0.0.1 and add a changelog.