TagKey<T> — typed accessor into ImmutableDictionary<string, object> Tags; abstract record TagKey(string Name) + sealed record TagKey<T>(string Name) : TagKey(Name); record equality and value semantics
DomainTags — predefined typed domain tag keys: Entity, EntityId, Field, Value, Operation; used by NotFoundError, ConflictError, ValidationError auto-tags
SystemTags — predefined typed integration tag keys: HttpStatus, ErrorCode, RetryAfter, Service; shared contract between core and Http/AspNetCore packages
WithTag<T>(TagKey<T>, T) — typed fluent tag overload on all Reason<T> subclasses; writes using key.Name as string key; null guard included
ReasonTagExtensions — TryGet<T>(this IReason, TagKey<T>, out T?) + Has<T>(this IReason, TagKey<T>) typed tag reads on any IReason; null-safe
REslava.Result.Flow Gap 1 — lambda body method name extraction: .Bind(x => SaveUser(x)) now renders step label "SaveUser" instead of "Bind" in generated diagrams
REslava.Result.Flow Gap 3 — variable initializer resolution: var r = FindUser(); return r.Bind(...) now correctly seeds the chain root from FindUser instead of failing to detect the pipeline
REslava.Result.Flow — Mermaid node correlation block — %% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) --- block emitted at the end of every generated diagram; pairs diagram nodes with runtime ReasonMetadata.NodeId values