Conversation
поправил readme статусы тесты добавил до 100% покрытия
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e6080064c5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| /// <summary> | ||
| /// Gets additional machine-readable error details. | ||
| /// </summary> | ||
| public IReadOnlyDictionary<string, object?> Metadata { get; } |
There was a problem hiding this comment.
Preserve value semantics for Error metadata
Declaring Error as a record implies value-based equality, but Metadata is an IReadOnlyDictionary<string, object?> backed by a new ReadOnlyDictionary per instance, and the synthesized record comparer will compare that property by reference. As a result, two logically identical errors (e.g., two separate Error.Validation("x") instances) compare unequal, which can silently break deduplication and hash-based lookups that rely on record equality.
Useful? React with 👍 / 👎.
| return Result.Failure(result.Errors); | ||
| } | ||
|
|
||
| return bind(result.Value); |
There was a problem hiding this comment.
Reject null continuation results in Bind
This overload returns bind(result.Value) without validating the returned Result, so a continuation that accidentally returns null (still possible at runtime despite nullable annotations) causes the API itself to return null even though its return type is non-nullable. That pushes the failure to later fluent calls as a NullReferenceException, making the root cause harder to diagnose; add a null check and throw immediately with a clear exception.
Useful? React with 👍 / 👎.
No description provided.