v1.31.0 ✅

  • Result.WithLogger(ILogger, string) / LogOnFailure(ILogger, string) — Tap-style ILogger integration; Debug on success, Warning on domain failure, Error on ExceptionError; structured log properties (result.outcome, result.error.type, result.error.message); Task extensions with CancellationToken
  • Result.Recover() / RecoverAsync() — railway recovery; transforms any failure into a new Result<T> (success or failure) via a fallback func; error list passed to recovery func for context-aware branching; both Result and Result<T>; Task extensions
  • Result.Filter() / FilterAsync() — convert success to failure when a predicate fails; Func<T, IError> error factory enables value-dependent contextual messages; 3 sync overloads (factory / static IError / string); async predicate variant; Task extensions
  • 114 features across 11 categories
  • 3,591 tests