Prepare 6.0.0 release#408
Conversation
Bump the MaxMind.GeoIP2 dependency from 6.0.0-beta1 to 6.0.0 (now published as GA) and finalize the release notes. The dateless 6.0.0-beta1 heading was never tagged or published, so it is renamed to 6.0.0 with today's date and four post-beta1 changes are folded in: the required Tag property on TransactionReport, ReportAsync validation, Guid.Empty normalization on MinFraudId, and the missing ConfigureAwait(false). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request updates the MaxMind.GeoIP2 dependency to version 6.0.0 and finalizes the release notes for the 6.0.0 release. Key changes include making the Tag property required in TransactionReport, implementing validation for required identifiers in ReportAsync, normalizing Guid.Empty values to null, and fixing a potential deadlock by adding ConfigureAwait(false). The reviewer suggested marking the new validation logic in ReportAsync as a breaking change in the release notes to ensure users are properly alerted to the new exception behavior.
| - `ReportAsync` on `MaxMind.MinFraud.WebServiceClient` now validates that the | ||
| `TransactionReport` includes at least one of `IPAddress`, `MinFraudId`, | ||
| `MaxMindId`, or `TransactionId`, throwing `ArgumentException` if none are set. | ||
| Previously this check only ran in the (now obsolete) constructor. |
There was a problem hiding this comment.
Since ReportAsync now throws an ArgumentException where it previously did not (when using object initializers), this change is technically a behavior change that can impact existing code. Consider marking this entry as BREAKING to alert users to the new validation logic, consistent with other breaking changes listed for this release.
| - `ReportAsync` on `MaxMind.MinFraud.WebServiceClient` now validates that the | |
| `TransactionReport` includes at least one of `IPAddress`, `MinFraudId`, | |
| `MaxMindId`, or `TransactionId`, throwing `ArgumentException` if none are set. | |
| Previously this check only ran in the (now obsolete) constructor. | |
| - **BREAKING:** `ReportAsync` on `MaxMind.MinFraud.WebServiceClient` now | |
| validates that the `TransactionReport` includes at least one of `IPAddress`, | |
| `MinFraudId`, `MaxMindId`, or `TransactionId`, throwing `ArgumentException` if | |
| none are set. Previously this check only ran in the (now obsolete) | |
| constructor. |
There was a problem hiding this comment.
This may have made sense, but it is too late.
Summary
MaxMind.GeoIP2dependency from6.0.0-beta1to6.0.0(now GA on NuGet).## 6.0.0-beta1release-notes heading to## 6.0.0 (2026-05-22). Beta1 was never tagged or published, so collapsing it into the GA section avoids exposing an intermediate state no consumer experienced.required TagonTransactionReport(BREAKING),ReportAsyncargument validation,Guid.Empty→nullnormalization forMinFraudId, and a missing.ConfigureAwait(false)inReportAsync.<VersionPrefix>in the csproj is intentionally left at6.0.0-beta1—dev-bin/release.shrewrites it automatically based on the topmost dated heading inreleasenotes.mdat release time.Test plan
dotnet build MaxMind.MinFraud.sln— 0 warnings, 0 errors across net8.0/net9.0/net10.0/netstandard2.0/netstandard2.1dotnet test --project MaxMind.MinFraud.UnitTest/MaxMind.MinFraud.UnitTest.csproj— 540/540 pass on net8.0, net9.0, net10.0precious tidy --all— clean (one minor wrap adjustment folded in)🤖 Generated with Claude Code