All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.1.0 - 2026-09-07
Initial release.
Added
Mutare.Oban.WorkerReturn(:oban_worker_return) — swapsperform/1return values for other valid Oban returns (:ok/{:ok, v}→{:error, :mutare};{:error, reason}→:ok/{:cancel, reason};{:cancel, reason}→{:error, reason}/:ok;{:snooze, s}→:ok; legacy{:discard, reason}→:ok/{:cancel, reason}and bare:discard→:ok). Behaviour-gated: fires only insideOban.Worker/Oban.Pro.Workermodules, and reaches branch tails viareturn_replacements. Declaresrequired_modules/0, so a run where Oban is not loadable aborts loudly instead of silently producing no mutants.Mutare.Oban.Enqueue(:oban_enqueue) — rewritesMyWorker.new(args, opts)enqueue options (direct, aliased, or piped):max_attempts: n→1(n ≠ 1), and dropsunique:,schedule_in:, andscheduled_at:.- Report notes on every mutant naming what a survivor leaves unasserted.
- Ignore-variant labels on both families, so
# mutare:ignore[oban_worker_return:ok]/# mutare:ignore[oban_enqueue:unique]can suppress one kind of mutant. Mutare.Oban.all/0for splicing both families into a:mutatorslist.