v1.42.0 ✅

  • ResultContext — pipeline context carrier embedded in Result<T>, Result<T,TError>, Result; carries Entity, EntityId, CorrelationId, OperationName, TenantId through the pipeline
  • Auto-seedingOk()/Fail() set Context.Entity = typeof(T).Name automatically; no user code needed
  • .WithContext(...) — fluent merge of runtime values (entityId, correlationId, operationName, tenantId); non-generic overload also accepts entity
  • Parent-wins propagation — all pipeline operators (Bind, Map, Ensure, Tap, Or, MapError) copy incoming Context to outgoing; Map/MapAsync additionally updates Entity = typeof(TOut).Name
  • Error auto-enrichment — on every produced error, ResultContext fields are injected as tags; factory-set tags are never overwritten (factory wins); DomainTags.CorrelationId/OperationName/TenantId new tag keys added
  • Typed pipeline propagation — same parent-wins rules for all 7 Bind overloads, Map, and 7+7 Ensure/EnsureAsync overloads on Result<T,TError>
  • REslava.Result.OpenTelemetry — new package; .WithOpenTelemetry() seeds CorrelationId/OperationName from Activity.Current; .WriteErrorTagsToSpan() writes error tags as span attributes on failure
  • ResultFlowWithContext classified as Invisible in both extractors; TryExtractContextHints extracts literal operationName/correlationId args and annotates the Mermaid diagram footer
  • Generator fixFluentValidateExtensionGenerator and ValidateExtensionGenerator updated to emit ValidationError.Field(...) instead of deprecated 2-arg constructor
  • 182 features, >4,400 tests