Skip to content

V6.0.0/double digits - #64

Open
gimlichael wants to merge 36 commits into
mainfrom
v6.0.0/double-digits
Open

gimlichael wants to merge 36 commits into
mainfrom
v6.0.0/double-digits

Conversation

@gimlichael

Copy link
Copy Markdown
Member

This pull request moves Savvy I/O to .NET 10 and .NET 11 and replaces its assembly discovery and configured-options implementations with Cuemon APIs. It also updates CI and release automation, documents the breaking migration, and applies repository-wide source formatting conventions.

Framework support and dependencies:

  • Add net11.0 and remove net9.0 across packages and tests, with framework-specific .NET 11 release-candidate dependencies and updates to AWS, DapperExtensions, and coverage tooling.
  • Remove the .NET 9-only async LINQ dependency because both supported frameworks provide the required APIs.

Cuemon integration:

  • Replace Savvyio.Reflection.AssemblyContext with Cuemon.Reflection assembly discovery for dispatchers, handlers, and cloud-event converters, explicitly excluding Savvyio core from scans.
  • Remove Savvyio's AddConfiguredOptions API in favor of Cuemon.Extensions.DependencyInjection. Direct options and IOptions.Value now share one instance and the Microsoft configuration and validation pipeline, with setup deferred until materialization and the first registration retained.
  • Update consumer call sites and regression coverage for assembly filtering, reference traversal, shared options, deferred validation, and configuration composition.

CI and release automation:

  • Provision preview SDKs, run CI tests on .NET 11, move Linux runners to Ubuntu 26.04, and require tracked text files to use LF endings through the test quality gate.
  • Preserve pending major and minor release versions and avoid duplicate pending package release-note blocks; remove the legacy test Dockerfile.

Documentation and code consistency:

  • Update package READMEs, release notes, contributor guidance, and framework availability documentation for the new baseline and describe the breaking API migration in the changelog.
  • Convert source and test namespaces to file-scoped declarations, enforce that style, and normalize UTF-8 text and LF endings with related formatting cleanup.
  • Render namespace type summaries as definition lists and remove the obsolete benchmark-generation prompt.

aicia-bot and others added 24 commits October 24, 2026 04:28
Moves the shared build baseline from net9.0 and net10.0 to net11.0 and net10.0, including the test target selection in CI. The net9.0-only System.Linq.Async reference in Savvyio.Messaging is removed because both remaining targets provide async LINQ.
Adds net11 package versions for the Entity Framework Core, SQLite, logging, and cryptography dependencies, moves the net9-specific pins out, and refreshes AWS SDK, Dapper, and Coverlet versions to their latest stable releases.
The CI pipeline now installs preview .NET SDKs so the net11.0 target can build and test before it is generally available across all runners.
The service update automation now keeps an explicitly planned TBD minor or major version instead of resetting it to the next patch, and avoids duplicating an existing pending release block in PackageReleaseNotes.txt.
The Dockerfile used to run tests against the .NET 10 SDK with a .NET 9 runtime, which is no longer needed once net9.0 support is dropped.
Updates the modern availability include to .NET 11 and .NET 10, and renders namespace child types as definition lists so each type summary reads as a single entry.
The root README and agent guidance describe the library as targeting .NET 10 and .NET 11, matching the new target framework baseline.
Documents the .NET 11 baseline change, the removal of .NET 9 support, and the service automation changes in the changelog, and updates contributor guidance to list net11.0 as the CI target.
Adds a 6.0.0 release notes block to each package describing the .NET 11 target addition and the .NET 9 removal, so consumers see the breaking framework baseline in NuGet package notes.
Package README files now describe the supported runtime as .NET 10 and .NET 11 instead of .NET 9 and .NET 10, so the NuGet landing pages match the new target framework baseline.
Namespace declarations across the solution now use file-scoped syntax, matching the repository style. This is a mechanical change with no behavior impact, and it prepares the codebase for enforcing the rule in .editorconfig.
The namespace rule is now an error instead of a suggestion, and the note that existing block-scoped files should be left alone is removed. The codebase is converted in the previous commit, so the rule can be enforced without new violations.
Remove the UTF-8 byte order mark and normalize line endings to LF so the files match the charset and end_of_line rules in .editorconfig.
Apply formatting-only cleanups to the NATS, RabbitMQ, and messaging code and tests, including target-typed new expressions and collection expression spacing. No behavior changes.
Tracked text files were stored with mixed CRLF line endings and a UTF-8 byte order mark. Normalize them to LF without a BOM so diffs only show real changes and the new line ending check passes.
The new line_endings job fails the test quality gate when tracked text files are not stored with LF line endings. The CI jobs move from ubuntu-24.04 to ubuntu-26.04 to match the current runner image.
Savvyio's own AssemblyContext duplicated the scanning logic now provided by Cuemon. The dispatcher, handler, and cloud event converters use Cuemon's implementation and exclude the Savvyio core assembly from brute-force scanning.
Assembly scanning now uses Cuemon's AssemblyContext, so the Savvyio.Reflection copy is no longer needed. Its tests are rewritten against the Cuemon implementation.
Configured options are now provided by Cuemon's AddConfiguredOptions, so these test files import Cuemon.Extensions.DependencyInjection instead of relying on the Savvyio copy that is being removed.
AddConfiguredOptions now comes from Cuemon.Extensions.DependencyInjection, which shares one options instance across TOptions and IOptions<TOptions>. Removing the Savvyio copy is a breaking change for callers that used it from this package.
The Cuemon configured options share one instance between direct options and IOptions<TOptions>.Value, and defer setup until materialization. The tests now assert that behavior instead of the previous eager, separate instance.
Documents the .NET 11 baseline, the removal of .NET 9 support, and the move of configured options to Cuemon so consumers can see the breaking changes in the release notes.
The benchmark fixture prompt is removed from the repository prompts folder, so benchmark guidance is no longer generated from this file.
@gimlichael gimlichael self-assigned this Oct 24, 2026
@greptile-apps

greptile-apps Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[High impact] The changes appear safe to merge, with all previous findings addressed and no new blocking issue established.

Summary

This PR moves Savvy I/O to .NET 10 and .NET 11 and replaces its assembly discovery and configured-options APIs with Cuemon implementations.

  • Savvy I/O packages now target .NET 10 and .NET 11.
  • Savvy I/O discovers handlers and message types through Cuemon.Reflection.
  • Direct options and IOptions<TOptions>.Value now share one configured instance.
  • Repository files and generated documentation follow updated conventions.

Reviews (3) · Last reviewed commit: "📝 clarify which files in bot folder are..." · Reviewed by Greptile

Comment thread CHANGELOG.md Resolved
Comment thread CHANGELOG.md Resolved
PublishAsync now checks the cancellation token before serializing and sending, so a cancelled publish no longer reaches the NATS server. The test asserts the bus publishes nothing and surfaces the original cancellation token.
The schema comparison now normalizes line endings and trims trailing whitespace before matching, so the assertion does not fail on whitespace differences in the EF Core model output.
The single Docker test environment is split into separate net10.0 and net11.0 runners, each using its matching testrunner image. The Ubuntu WSL distribution is also moved to Ubuntu-26.04.
Comment thread testenvironments.json Resolved
@codecov

codecov Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.73810% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 98.63%. Comparing base (8d9f9b1) to head (cdfa292).

Files with missing lines Patch % Lines
src/Savvyio.Core/Domain/DomainException.cs 0.00% 7 Missing ⚠️
...rc/Savvyio.Core/Messaging/AcknowledgedEventArgs.cs 42.85% 4 Missing ⚠️
src/Savvyio.Core/SavvyioOptionsExtensions.cs 87.50% 3 Missing ⚠️
src/Savvyio.Domain/ValueObject.cs 91.30% 2 Missing ⚠️
src/Savvyio.Core/MetadataFactory.cs 92.85% 1 Missing ⚠️
src/Savvyio.Core/SavvyioOptions.cs 97.77% 1 Missing ⚠️
src/Savvyio.Extensions.Dapper/DapperDataSource.cs 96.87% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #64      +/-   ##
==========================================
- Coverage   98.70%   98.63%   -0.08%     
==========================================
  Files         177      176       -1     
  Lines        3643     3589      -54     
  Branches      327      318       -9     
==========================================
- Hits         3596     3540      -56     
- Misses         46       48       +2     
  Partials        1        1              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

gimlichael and others added 9 commits November 1, 2026 15:52
Aligns the central NuGet versions with the latest stable and release-candidate listings for .NET 10 and .NET 11, including the pinned System.Security.Cryptography.Pkcs baseline, so the test and build matrix runs against current packages.
File-scoped namespaces are mandatory for C# files in this repository. Setting IDE0161 to error makes the analyzer enforce the rule at build time instead of only flagging it as a suggestion.
Trims trailing spaces in comments of the .gitattributes file. The change has no effect on Git behavior and keeps the file clean for future diffs.
Contributors read this guide to learn which frameworks and test environments CI covers. The targets are listed in sorted order, the CI description no longer claims a specific local framework split, and the issue template now names the Docker-Ubuntu environment.
The .bot folder is local-only by default, but this README is intentionally tracked. Stating that exception keeps future contributors from ignoring or moving it by mistake.
@sonarqubecloud

sonarqubecloud Bot commented Nov 1, 2026

Copy link
Copy Markdown

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants