Skip to content

V10.5.1/due diligence pack#158

Merged
gimlichael merged 10 commits intomainfrom
v10.5.1/due-diligence-pack
Apr 16, 2026
Merged

V10.5.1/due diligence pack#158
gimlichael merged 10 commits intomainfrom
v10.5.1/due-diligence-pack

Conversation

@gimlichael
Copy link
Copy Markdown
Member

This pull request focuses on improving CI workflow security and maintainability, as well as updating documentation to reflect dependency upgrades. The main changes include conditional execution of privileged jobs in the CI pipeline for increased security, dynamic handling of build parameters, and updated release notes to communicate dependency updates.

CI pipeline improvements:

  • Added an init job to .github/workflows/ci-pipeline.yml that calculates workflow variables and determines if privileged jobs should run, based on whether the workflow is triggered by a fork or the main repository. This helps prevent privileged operations from running on untrusted code.
  • Updated dependent jobs (build, integration_test, sonarcloud, codecov, codeql) to use outputs from the init job, conditionally skipping privileged jobs when run from forks. [1] [2] [3] [4]
  • Made build parameters such as strong-name-key-filename and build-switches dynamic, based on the context provided by the init job. [1] [2] [3]

Documentation and dependency updates:

  • Updated release notes for all NuGet packages to version 10.5.1, noting that dependencies have been upgraded to the latest compatible versions for all supported target frameworks. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]

Other updates:

  • Updated the NGINX base image version in .docfx/Dockerfile.docfx from 1.29.5-alpine to 1.30.0-alpine.

@gimlichael gimlichael self-assigned this Apr 16, 2026
Copilot AI review requested due to automatic review settings April 16, 2026 19:45
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@qodo-code-review
Copy link
Copy Markdown

Review Summary by Qodo

Kernel refinement, XML serialization improvements, and comprehensive test expansion for v10.5.1

✨ Enhancement 🧪 Tests 🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Relocate IConfigurable and Configurable from Core to Kernel assembly
  - Maintain backward compatibility via TypeForwardedTo attributes
• Add comprehensive XML serialization converter test coverage
  - Tests for DefaultXmlConverter, ExceptionConverter, FailureConverter, DynamicXmlConverter
  - Test assets LinkResponse and WrapperResponse for validation
• Fix XML serialization edge cases and simplify collection logic
  - Add XmlRootAttribute fallback when MemberReference is null
  - Simplify XmlConverterDecoratorExtensions collection writing logic
• Enhance CI pipeline security with fork-aware privileged job execution
• Update all package dependencies to latest compatible versions
Diagram
flowchart LR
  Core["Cuemon.Core<br/>IConfigurable<br/>Configurable"]
  Kernel["Cuemon.Kernel<br/>IConfigurable<br/>Configurable"]
  TypeForward["TypeForwardedTo<br/>Attributes"]
  XmlTests["Comprehensive<br/>XML Tests"]
  XmlFix["XML Serialization<br/>Bug Fixes"]
  CI["CI Pipeline<br/>Fork Security"]
  Deps["Dependency<br/>Updates"]
  
  Core -- "Move types" --> Kernel
  Kernel -- "Backward compat" --> TypeForward
  XmlFix -- "Improve robustness" --> XmlTests
  CI -- "Conditional execution" --> Deps
Loading

Grey Divider

File Changes

1. src/Cuemon.Core/Configuration/Configurable.cs Refactoring +0/-34

Remove Configurable class from Core assembly

src/Cuemon.Core/Configuration/Configurable.cs


2. src/Cuemon.Core/Configuration/IConfigurable.cs Refactoring +0/-15

Remove IConfigurable interface from Core assembly

src/Cuemon.Core/Configuration/IConfigurable.cs


3. src/Cuemon.Core/Properties/AssemblyInfo.cs ⚙️ Configuration changes +2/-0

Add TypeForwardedTo attributes for configuration types

src/Cuemon.Core/Properties/AssemblyInfo.cs


View more (67)
4. src/Cuemon.Kernel/Configuration/Configurable.cs ✨ Enhancement +33/-0

Add Configurable class to Kernel assembly

src/Cuemon.Kernel/Configuration/Configurable.cs


5. src/Cuemon.Kernel/Configuration/IConfigurable.cs ✨ Enhancement +14/-0

Add IConfigurable interface to Kernel assembly

src/Cuemon.Kernel/Configuration/IConfigurable.cs


6. src/Cuemon.Xml/Extensions/HierarchyDecoratorExtensions.cs 🐞 Bug fix +5/-3

Add XmlRootAttribute fallback to InstanceType

src/Cuemon.Xml/Extensions/HierarchyDecoratorExtensions.cs


7. src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs ✨ Enhancement +3/-5

Simplify collection writing logic in enumerable converter

src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs


8. test/Cuemon.Xml.Tests/Assets/LinkResponse.cs 🧪 Tests +21/-0

Add LinkResponse test asset with XmlRoot attribute

test/Cuemon.Xml.Tests/Assets/LinkResponse.cs


9. test/Cuemon.Xml.Tests/Assets/WrapperResponse.cs 🧪 Tests +22/-0

Add WrapperResponse test asset with collection property

test/Cuemon.Xml.Tests/Assets/WrapperResponse.cs


10. test/Cuemon.Xml.Tests/Extensions/Serialization/Converters/XmlConverterDecoratorExtensionsTest.cs 🧪 Tests +435/-0

Add comprehensive tests for XML converter decorator extensions

test/Cuemon.Xml.Tests/Extensions/Serialization/Converters/XmlConverterDecoratorExtensionsTest.cs


11. test/Cuemon.Xml.Tests/Extensions/Serialization/XmlSerializerOptionsDecoratorExtensionsTest.cs 🧪 Tests +62/-0

Add tests for XmlSerializerOptions decorator extensions

test/Cuemon.Xml.Tests/Extensions/Serialization/XmlSerializerOptionsDecoratorExtensionsTest.cs


12. test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs 🧪 Tests +309/-0

Add comprehensive tests for DefaultXmlConverter functionality

test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs


13. test/Cuemon.Xml.Tests/Serialization/Converters/ExceptionConverterTest.cs 🧪 Tests +170/-0

Add comprehensive tests for ExceptionConverter serialization

test/Cuemon.Xml.Tests/Serialization/Converters/ExceptionConverterTest.cs


14. test/Cuemon.Xml.Tests/Serialization/Converters/FailureConverterTest.cs 🧪 Tests +149/-0

Add comprehensive tests for FailureConverter serialization

test/Cuemon.Xml.Tests/Serialization/Converters/FailureConverterTest.cs


15. test/Cuemon.Xml.Tests/Serialization/Converters/XmlConverterTest.cs 🧪 Tests +102/-0

Add base tests for XmlConverter capabilities

test/Cuemon.Xml.Tests/Serialization/Converters/XmlConverterTest.cs


16. test/Cuemon.Xml.Tests/Serialization/DynamicXmlConverterTest.cs 🧪 Tests +191/-0

Add comprehensive tests for DynamicXmlConverter factory

test/Cuemon.Xml.Tests/Serialization/DynamicXmlConverterTest.cs


17. test/Cuemon.Xml.Tests/Serialization/DynamicXmlSerializableTest.cs 🧪 Tests +93/-0

Add tests for DynamicXmlSerializable factory methods

test/Cuemon.Xml.Tests/Serialization/DynamicXmlSerializableTest.cs


18. test/Cuemon.Xml.Tests/Serialization/Formatters/XmlFormatterTest.cs 🧪 Tests +27/-0

Add test for WrapperResponse XML serialization

test/Cuemon.Xml.Tests/Serialization/Formatters/XmlFormatterTest.cs


19. test/Cuemon.Xml.Tests/Serialization/XmlConvertTest.cs 🧪 Tests +72/-0

Add tests for XmlConvert default settings functionality

test/Cuemon.Xml.Tests/Serialization/XmlConvertTest.cs


20. test/Cuemon.Xml.Tests/Serialization/XmlQualifiedEntityTest.cs 🧪 Tests +128/-0

Add comprehensive tests for XmlQualifiedEntity constructors

test/Cuemon.Xml.Tests/Serialization/XmlQualifiedEntityTest.cs


21. test/Cuemon.Xml.Tests/Serialization/XmlSerializerOptionsTest.cs 🧪 Tests +82/-0

Add tests for XmlSerializerOptions configuration

test/Cuemon.Xml.Tests/Serialization/XmlSerializerOptionsTest.cs


22. test/Cuemon.Xml.Tests/Serialization/XmlSerializerTest.cs 🧪 Tests +191/-0

Add comprehensive tests for XmlSerializer functionality

test/Cuemon.Xml.Tests/Serialization/XmlSerializerTest.cs


23. test/Cuemon.Xml.Tests/XmlConvertDefaultSettingsCollection.cs 🧪 Tests +9/-0

Add test collection for XmlConvert default settings

test/Cuemon.Xml.Tests/XmlConvertDefaultSettingsCollection.cs


24. .docfx/Dockerfile.docfx Dependencies +1/-1

Upgrade nginx base image to 1.30.0-alpine

.docfx/Dockerfile.docfx


25. .github/workflows/ci-pipeline.yml ✨ Enhancement +35/-5

Add init job for fork-aware privileged job execution

.github/workflows/ci-pipeline.yml


26. .nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt


27. .nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt


28. .nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt


29. .nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt


30. .nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt


31. .nuget/Cuemon.Core.App/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Core.App/PackageReleaseNotes.txt


32. .nuget/Cuemon.Core/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Core/PackageReleaseNotes.txt


33. .nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt


34. .nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt


35. .nuget/Cuemon.Data/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Data/PackageReleaseNotes.txt


36. .nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt


37. .nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt


38. .nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt


39. .nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt


40. .nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt


41. .nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt


42. .nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt


43. .nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt


44. .nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt


45. .nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt


46. .nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt


47. .nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt


48. .nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt


49. .nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt


50. .nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt


51. .nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt


52. .nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt


53. .nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt


54. .nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt


55. .nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt


56. .nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt


57. .nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt


58. .nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt


59. .nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt


60. .nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt


61. .nuget/Cuemon.IO/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.IO/PackageReleaseNotes.txt


62. .nuget/Cuemon.Kernel/PackageReleaseNotes.txt 📝 Documentation +10/-1

Update release notes for v10.5.1 with kernel features

.nuget/Cuemon.Kernel/PackageReleaseNotes.txt


63. .nuget/Cuemon.Net/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Net/PackageReleaseNotes.txt


64. .nuget/Cuemon.Resilience/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Resilience/PackageReleaseNotes.txt


65. .nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt


66. .nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt


67. .nuget/Cuemon.Threading/PackageReleaseNotes.txt 📝 Documentation +7/-1

Update release notes for v10.5.1

.nuget/Cuemon.Threading/PackageReleaseNotes.txt


68. .nuget/Cuemon.Xml/PackageReleaseNotes.txt 📝 Documentation +11/-1

Update release notes for v10.5.1 with bug fixes

.nuget/Cuemon.Xml/PackageReleaseNotes.txt


69. CHANGELOG.md 📝 Documentation +30/-0

Add v10.5.1 release notes and version links

CHANGELOG.md


70. Directory.Packages.props Dependencies +25/-25

Upgrade all NuGet package dependencies to latest versions

Directory.Packages.props


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented Apr 16, 2026

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (5) 📎 Requirement gaps (0)

Grey Divider


Action required

1. Block-scoped namespaces in tests 📘 Rule violation ✧ Quality
Description
Several newly added C# test files declare block-scoped namespaces (eg, namespace X { ... })
instead of file-scoped namespaces. This violates the requirement that new C# files use file-scoped
namespaces, and increases boilerplate and indentation churn.
Code

test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[R11-13]

+namespace Cuemon.Xml.Serialization.Converters
+{
+    public class DefaultXmlConverterTest : Test
Evidence
PR Compliance ID 91343 requires file-scoped namespaces (namespace X;) in new C# files, but new
test files added in this PR use block-scoped namespace declarations with braces.

Rule 91343: Use file-scoped namespaces in new C# files
test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[11-13]
test/Cuemon.Xml.Tests/Extensions/Serialization/XmlSerializerOptionsDecoratorExtensionsTest.cs[4-8]
test/Cuemon.Xml.Tests/XmlConvertDefaultSettingsCollection.cs[3-6]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Newly added test files use block-scoped namespaces (`namespace X { ... }`) instead of the required file-scoped form (`namespace X;`).

## Issue Context
The repo is using `LangVersion=latest`, so file-scoped namespaces are supported. This rule applies to *new* C# files.

## Fix Focus Areas
- test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[11-13]
- test/Cuemon.Xml.Tests/Extensions/Serialization/XmlSerializerOptionsDecoratorExtensionsTest.cs[4-8]
- test/Cuemon.Xml.Tests/XmlConvertDefaultSettingsCollection.cs[3-6]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. using var in XML tests 📘 Rule violation ✧ Quality
Description
New/modified test code introduces using var declarations instead of using (...) { ... } blocks.
This violates the required disposal pattern and can widen resource lifetimes beyond the smallest
necessary scope.
Code

test/Cuemon.Xml.Tests/Serialization/Converters/ExceptionConverterTest.cs[R17-20]

+            var sut = new ExceptionConverter(includeStackTrace, includeData);
+            using var ms = new MemoryStream();
+            using var writer = XmlWriter.Create(ms, new XmlWriterSettings { OmitXmlDeclaration = true });
+            sut.WriteXml(writer, exception, null);
Evidence
PR Compliance ID 91365 explicitly flags using var/using declarations not followed by a block;
multiple new test files contain using var statements.

Rule 91365: Use using statements with explicit blocks instead of using declarations
test/Cuemon.Xml.Tests/Serialization/Converters/ExceptionConverterTest.cs[17-20]
test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[32-36]
test/Cuemon.Xml.Tests/Serialization/Converters/FailureConverterTest.cs[30-49]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Test code uses `using var` declarations instead of `using (...) { ... }` blocks.

## Issue Context
The compliance rule requires explicit `using` blocks to keep disposable lifetimes as small and obvious as possible.

## Fix Focus Areas
- test/Cuemon.Xml.Tests/Serialization/Converters/ExceptionConverterTest.cs[17-20]
- test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[32-36]
- test/Cuemon.Xml.Tests/Serialization/Converters/FailureConverterTest.cs[30-49]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Public test types lack XML docs 📘 Rule violation ✧ Quality
Description
New public test/asset types and members are missing required XML documentation comments. This
violates the rule requiring <summary> XML docs on all public/protected types and members in
changed files.
Code

test/Cuemon.Xml.Tests/Assets/LinkResponse.cs[R5-21]

+[XmlRoot("Link")]
+public record LinkResponse
+{
+    public LinkResponse(string href, string rel)
+    {
+        Href = href;
+        Rel = rel;
+    }
+
+    public string Href { get; set; }
+
+    public string Rel { get; set; }
+
+    public string Title { get; set; }
+
+    public string Hreflang { get; set; }
+}
Evidence
PR Compliance ID 91375 requires XML doc comments for public/protected declarations, but newly added
public records/classes/constructors/properties in test assets and test types lack /// <summary>...
documentation.

Rule 91375: Require XML documentation on all public and protected members
test/Cuemon.Xml.Tests/Assets/LinkResponse.cs[5-21]
test/Cuemon.Xml.Tests/Assets/WrapperResponse.cs[7-22]
test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[11-17]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New public/protected types and members in the change set are missing XML documentation comments.

## Issue Context
The compliance requirement expects `///` XML docs with at least `<summary>` (and appropriate `<param>`/`<returns>` where applicable) for public/protected declarations.

## Fix Focus Areas
- test/Cuemon.Xml.Tests/Assets/LinkResponse.cs[5-21]
- test/Cuemon.Xml.Tests/Assets/WrapperResponse.cs[7-22]
- test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[11-17]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (3)
4. TryGetXmlRootAttribute missing guard 📘 Rule violation ≡ Correctness
Description
TryGetXmlRootAttribute dereferences decorator without a top-of-method null guard, risking a
NullReferenceException. This violates the requirement to use guard clauses
(Validator.ThrowIfNull) for non-nullable parameters in modified methods.
Code

src/Cuemon.Xml/Extensions/HierarchyDecoratorExtensions.cs[R125-130]

        public static bool TryGetXmlRootAttribute(this IDecorator<IHierarchy<object>> decorator, out XmlRootAttribute xmlAttribute)
        {
-            xmlAttribute = decorator.Inner.HasMemberReference ? decorator.Inner.MemberReference.GetCustomAttribute<XmlRootAttribute>(true) : null;
+            xmlAttribute = decorator.Inner.HasMemberReference
+                ? decorator.Inner.MemberReference.GetCustomAttribute<XmlRootAttribute>(true)
+                : decorator.Inner.InstanceType.GetCustomAttribute<XmlRootAttribute>(true);
            return xmlAttribute != null;
Evidence
PR Compliance ID 91350 requires Validator.ThrowIfNull guard clauses at the top of methods for
parameters that must not be null; the modified method immediately uses decorator.Inner... without
validating decorator.

Rule 91350: Use guard clauses and Validator.ThrowIfNull for parameter validation
src/Cuemon.Xml/Extensions/HierarchyDecoratorExtensions.cs[125-130]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`TryGetXmlRootAttribute` uses `decorator.Inner` without validating `decorator` is non-null.

## Issue Context
This method was modified in the PR, so it must conform to the guard-clause requirement.

## Fix Focus Areas
- src/Cuemon.Xml/Extensions/HierarchyDecoratorExtensions.cs[125-130]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Unused using Cuemon.Diagnostics; 📘 Rule violation ✧ Quality
Description
XmlConverterDecoratorExtensionsTest.cs includes using Cuemon.Diagnostics; but does not reference
anything from that namespace. This violates the requirement to keep using directives minimal and
explicit.
Code

test/Cuemon.Xml.Tests/Extensions/Serialization/Converters/XmlConverterDecoratorExtensionsTest.cs[R5-7]

+using Codebelt.Extensions.Xunit;
+using Cuemon.Diagnostics;
+using Cuemon.Extensions.IO;
Evidence
PR Compliance ID 91364 requires using directives to be explicit and minimal; the file imports
Cuemon.Diagnostics but contains no usages of it.

Rule 91364: Keep using directives explicit and minimal; avoid global or implicit usings
test/Cuemon.Xml.Tests/Extensions/Serialization/Converters/XmlConverterDecoratorExtensionsTest.cs[1-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The test file imports `Cuemon.Diagnostics` but does not use it.

## Issue Context
Keeping usings minimal reduces noise and avoids misleading dependencies.

## Fix Focus Areas
- test/Cuemon.Xml.Tests/Extensions/Serialization/Converters/XmlConverterDecoratorExtensionsTest.cs[1-8]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. Double-wrapped primitive items 🐞 Bug ≡ Correctness
Description
In AddEnumerableConverter(flattenItems: true), primitive items are serialized inside a container
element named q, but each item is also wrapped in the same q again, yielding nested duplicate tags
(e.g., <Numbers><Numbers>1</Numbers>...</Numbers>). This is inconsistent with how
DefaultXmlConverter delegates element-wrapping responsibility to converters and can break consumers
expecting a stable XML shape.
Code

src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs[R141-151]

+                        w.WriteStartElement(q.Prefix, q.LocalName, q.Namespace);
                        foreach (var item in o)
                        {
                            if (item == null) { continue; }
                            var itemType = item.GetType();
                            if (Decorator.Enclose(itemType).IsComplex())
                            {
-                                Decorator.Enclose(w).WriteObject(item, itemType, opts => opts.Settings.RootName = qe);
+                                Decorator.Enclose(w).WriteObject(item, itemType);
                            }
                            else
                            {
Evidence
The flattened, non-dictionary enumerable writer unconditionally writes an outer element using q and,
for non-complex items, writes each item wrapped in q again (nested same-name elements).
DefaultXmlConverter explicitly avoids double-wrapping and relies on the converter to write the
correct element structure when a converter exists, making this duplication a likely bug.

src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs[141-157]
src/Cuemon.Xml/Serialization/Converters/DefaultXmlConverter.cs[346-366]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`AddEnumerableConverter(flattenItems: true)` currently writes a container element using `q` and then (for primitive/non-complex items) also wraps each item in the same `q`, producing nested duplicate element names (e.g., `<Numbers><Numbers>1</Numbers>...</Numbers>`). This is an inconsistent XML shape and contradicts the intent in `DefaultXmlConverter` that converters should avoid duplicate wrapping.

### Issue Context
- Flattened mode should still produce a consistent, non-duplicative structure for primitive collections.
- `DefaultXmlConverter.WriteXmlChildrenEncapsulated` does **not** write the property wrapper element when a converter exists; the converter must therefore avoid generating duplicate wrappers.

### Fix Focus Areas
- Update primitive-item handling to avoid using `q` for both the container and each item. Options include:
 - Keep the outer `q` container and serialize primitive items as `<Item>...</Item>` (or another distinct item name).
 - Or reintroduce the prior conditional wrapping strategy (only create the outer wrapper when `writer.WriteState == WriteState.Start`), so property serialization doesn’t create nested `q`.
- Add/adjust unit tests for `flattenItems: true` with an `IEnumerable<int>`/`List<int>` property to lock in the intended shape.

- src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs[141-157]
- src/Cuemon.Xml/Serialization/Converters/DefaultXmlConverter.cs[346-366]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

sut.WriteXml(writer, exception, null);
writer.Flush();
ms.Position = 0;
return new StreamReader(ms).ReadToEnd();
sut.WriteXml(writer, (object)exception, null);
writer.Flush();
ms.Position = 0;
var xml = new System.IO.StreamReader(ms).ReadToEnd();
sut.WriteXml(writer, failure, null);
writer.Flush();
ms.Position = 0;
var xml = new StreamReader(ms).ReadToEnd();
sut.WriteXml(writer, failure, null);
writer.Flush();
ms.Position = 0;
var xml = new StreamReader(ms).ReadToEnd();
sut.WriteXml(writer, failure, null);
writer.Flush();
ms.Position = 0;
var xml = new StreamReader(ms).ReadToEnd();
sut.WriteXml(writer, failure, null);
writer.Flush();
ms.Position = 0;
var xml = new StreamReader(ms).ReadToEnd();
sut.WriteXml(writer, failure, null);
writer.Flush();
ms.Position = 0;
var xml = new StreamReader(ms).ReadToEnd();
public void AddExceptionConverter_WithStackTrace_ShouldIncludeStack()
{
Exception caught = null;
try { throw new InvalidOperationException("Stack test"); } catch (Exception ex) { caught = ex; }
public void AddExceptionDescriptorConverter_ShouldSerializeDescriptorWithError()
{
Exception caught = null;
try { throw new InvalidOperationException("Descriptor error"); } catch (Exception ex) { caught = ex; }
public void AddExceptionDescriptorConverter_ShouldSerializeFailureWhenRequested()
{
Exception caught = null;
try { throw new InvalidOperationException("With failure"); } catch (Exception ex) { caught = ex; }
Comment on lines +11 to +13
namespace Cuemon.Xml.Serialization.Converters
{
public class DefaultXmlConverterTest : Test
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Block-scoped namespaces in tests 📘 Rule violation ✧ Quality

Several newly added C# test files declare block-scoped namespaces (eg, namespace X { ... })
instead of file-scoped namespaces. This violates the requirement that new C# files use file-scoped
namespaces, and increases boilerplate and indentation churn.
Agent Prompt
## Issue description
Newly added test files use block-scoped namespaces (`namespace X { ... }`) instead of the required file-scoped form (`namespace X;`).

## Issue Context
The repo is using `LangVersion=latest`, so file-scoped namespaces are supported. This rule applies to *new* C# files.

## Fix Focus Areas
- test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[11-13]
- test/Cuemon.Xml.Tests/Extensions/Serialization/XmlSerializerOptionsDecoratorExtensionsTest.cs[4-8]
- test/Cuemon.Xml.Tests/XmlConvertDefaultSettingsCollection.cs[3-6]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +17 to +20
var sut = new ExceptionConverter(includeStackTrace, includeData);
using var ms = new MemoryStream();
using var writer = XmlWriter.Create(ms, new XmlWriterSettings { OmitXmlDeclaration = true });
sut.WriteXml(writer, exception, null);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

2. using var in xml tests 📘 Rule violation ✧ Quality

New/modified test code introduces using var declarations instead of using (...) { ... } blocks.
This violates the required disposal pattern and can widen resource lifetimes beyond the smallest
necessary scope.
Agent Prompt
## Issue description
Test code uses `using var` declarations instead of `using (...) { ... }` blocks.

## Issue Context
The compliance rule requires explicit `using` blocks to keep disposable lifetimes as small and obvious as possible.

## Fix Focus Areas
- test/Cuemon.Xml.Tests/Serialization/Converters/ExceptionConverterTest.cs[17-20]
- test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[32-36]
- test/Cuemon.Xml.Tests/Serialization/Converters/FailureConverterTest.cs[30-49]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +5 to +21
[XmlRoot("Link")]
public record LinkResponse
{
public LinkResponse(string href, string rel)
{
Href = href;
Rel = rel;
}

public string Href { get; set; }

public string Rel { get; set; }

public string Title { get; set; }

public string Hreflang { get; set; }
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

3. Public test types lack xml docs 📘 Rule violation ✧ Quality

New public test/asset types and members are missing required XML documentation comments. This
violates the rule requiring <summary> XML docs on all public/protected types and members in
changed files.
Agent Prompt
## Issue description
New public/protected types and members in the change set are missing XML documentation comments.

## Issue Context
The compliance requirement expects `///` XML docs with at least `<summary>` (and appropriate `<param>`/`<returns>` where applicable) for public/protected declarations.

## Fix Focus Areas
- test/Cuemon.Xml.Tests/Assets/LinkResponse.cs[5-21]
- test/Cuemon.Xml.Tests/Assets/WrapperResponse.cs[7-22]
- test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[11-17]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines 125 to 130
public static bool TryGetXmlRootAttribute(this IDecorator<IHierarchy<object>> decorator, out XmlRootAttribute xmlAttribute)
{
xmlAttribute = decorator.Inner.HasMemberReference ? decorator.Inner.MemberReference.GetCustomAttribute<XmlRootAttribute>(true) : null;
xmlAttribute = decorator.Inner.HasMemberReference
? decorator.Inner.MemberReference.GetCustomAttribute<XmlRootAttribute>(true)
: decorator.Inner.InstanceType.GetCustomAttribute<XmlRootAttribute>(true);
return xmlAttribute != null;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

4. trygetxmlrootattribute missing guard 📘 Rule violation ≡ Correctness

TryGetXmlRootAttribute dereferences decorator without a top-of-method null guard, risking a
NullReferenceException. This violates the requirement to use guard clauses
(Validator.ThrowIfNull) for non-nullable parameters in modified methods.
Agent Prompt
## Issue description
`TryGetXmlRootAttribute` uses `decorator.Inner` without validating `decorator` is non-null.

## Issue Context
This method was modified in the PR, so it must conform to the guard-clause requirement.

## Fix Focus Areas
- src/Cuemon.Xml/Extensions/HierarchyDecoratorExtensions.cs[125-130]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +5 to +7
using Codebelt.Extensions.Xunit;
using Cuemon.Diagnostics;
using Cuemon.Extensions.IO;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

5. Unused using cuemon.diagnostics; 📘 Rule violation ✧ Quality

XmlConverterDecoratorExtensionsTest.cs includes using Cuemon.Diagnostics; but does not reference
anything from that namespace. This violates the requirement to keep using directives minimal and
explicit.
Agent Prompt
## Issue description
The test file imports `Cuemon.Diagnostics` but does not use it.

## Issue Context
Keeping usings minimal reduces noise and avoids misleading dependencies.

## Fix Focus Areas
- test/Cuemon.Xml.Tests/Extensions/Serialization/Converters/XmlConverterDecoratorExtensionsTest.cs[1-8]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +141 to 151
w.WriteStartElement(q.Prefix, q.LocalName, q.Namespace);
foreach (var item in o)
{
if (item == null) { continue; }
var itemType = item.GetType();
if (Decorator.Enclose(itemType).IsComplex())
{
Decorator.Enclose(w).WriteObject(item, itemType, opts => opts.Settings.RootName = qe);
Decorator.Enclose(w).WriteObject(item, itemType);
}
else
{
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

6. Double-wrapped primitive items 🐞 Bug ≡ Correctness

In AddEnumerableConverter(flattenItems: true), primitive items are serialized inside a container
element named q, but each item is also wrapped in the same q again, yielding nested duplicate tags
(e.g., <Numbers><Numbers>1</Numbers>...</Numbers>). This is inconsistent with how
DefaultXmlConverter delegates element-wrapping responsibility to converters and can break consumers
expecting a stable XML shape.
Agent Prompt
### Issue description
`AddEnumerableConverter(flattenItems: true)` currently writes a container element using `q` and then (for primitive/non-complex items) also wraps each item in the same `q`, producing nested duplicate element names (e.g., `<Numbers><Numbers>1</Numbers>...</Numbers>`). This is an inconsistent XML shape and contradicts the intent in `DefaultXmlConverter` that converters should avoid duplicate wrapping.

### Issue Context
- Flattened mode should still produce a consistent, non-duplicative structure for primitive collections.
- `DefaultXmlConverter.WriteXmlChildrenEncapsulated` does **not** write the property wrapper element when a converter exists; the converter must therefore avoid generating duplicate wrappers.

### Fix Focus Areas
- Update primitive-item handling to avoid using `q` for both the container and each item. Options include:
  - Keep the outer `q` container and serialize primitive items as `<Item>...</Item>` (or another distinct item name).
  - Or reintroduce the prior conditional wrapping strategy (only create the outer wrapper when `writer.WriteState == WriteState.Start`), so property serialization doesn’t create nested `q`.
- Add/adjust unit tests for `flattenItems: true` with an `IEnumerable<int>`/`List<int>` property to lock in the intended shape.

- src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs[141-157]
- src/Cuemon.Xml/Serialization/Converters/DefaultXmlConverter.cs[346-366]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR delivers a 10.5.1 “due diligence” update that tightens CI security (skip privileged jobs on fork PRs), refines kernel layering by relocating configuration abstractions into Cuemon.Kernel with type-forwarding for compatibility, and expands/updates XML serialization tests and release documentation.

Changes:

  • Harden CI by introducing an init job that computes outputs and conditionally disables privileged jobs for fork-based PRs.
  • Relocate IConfigurable<> / Configurable<> into Cuemon.Kernel and preserve backwards compatibility via type forwarding in Cuemon.Core.
  • Expand XML serialization test coverage and update changelog / package release notes + dependency versions.

Reviewed changes

Copilot reviewed 70 out of 70 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
test/Cuemon.Xml.Tests/XmlConvertDefaultSettingsCollection.cs Adds a non-parallelized xUnit collection for tests mutating global XML defaults.
test/Cuemon.Xml.Tests/Serialization/XmlSerializerTest.cs Adds unit tests for XmlSerializer behaviors (defaults, converters, reader/writer settings).
test/Cuemon.Xml.Tests/Serialization/XmlSerializerOptionsTest.cs Adds unit tests validating XmlSerializerOptions defaults and mutability.
test/Cuemon.Xml.Tests/Serialization/XmlQualifiedEntityTest.cs Adds unit tests for XmlQualifiedEntity constructors and attribute handling.
test/Cuemon.Xml.Tests/Serialization/XmlConvertTest.cs Adds unit tests for XmlConvert.DefaultSettings behavior and integration with XmlSerializer.Create.
test/Cuemon.Xml.Tests/Serialization/Formatters/XmlFormatterTest.cs Extends formatter coverage with wrapper-response serialization assertions.
test/Cuemon.Xml.Tests/Serialization/DynamicXmlSerializableTest.cs Adds unit tests for DynamicXmlSerializable delegate behavior and exceptions.
test/Cuemon.Xml.Tests/Serialization/DynamicXmlConverterTest.cs Adds unit tests for DynamicXmlConverter capabilities, conversion, and root name behavior.
test/Cuemon.Xml.Tests/Serialization/Converters/XmlConverterTest.cs Adds unit tests for base converter behaviors and object overload delegation.
test/Cuemon.Xml.Tests/Serialization/Converters/FailureConverterTest.cs Adds serialization tests for FailureConverter across sensitivity modes.
test/Cuemon.Xml.Tests/Serialization/Converters/ExceptionConverterTest.cs Adds round-trip and inclusion tests for exception XML conversion.
test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs Adds broad coverage for DefaultXmlConverter serialization/deserialization paths.
test/Cuemon.Xml.Tests/Extensions/Serialization/XmlSerializerOptionsDecoratorExtensionsTest.cs Tests applying options to XmlConvert.DefaultSettings via decorator extension.
test/Cuemon.Xml.Tests/Extensions/Serialization/Converters/XmlConverterDecoratorExtensionsTest.cs Adds tests for converter list decorator extensions and common converters.
test/Cuemon.Xml.Tests/Assets/WrapperResponse.cs Adds test asset model used to validate collection flattening/structure.
test/Cuemon.Xml.Tests/Assets/LinkResponse.cs Adds test asset record with XmlRoot("Link") to validate element naming.
src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs Simplifies enumerable converter writing logic (notably for flattened output).
src/Cuemon.Xml/Extensions/HierarchyDecoratorExtensions.cs Fixes TryGetXmlRootAttribute to fall back to InstanceType when MemberReference is absent.
src/Cuemon.Kernel/Configuration/IConfigurable.cs Introduces IConfigurable<> in kernel layer.
src/Cuemon.Kernel/Configuration/Configurable.cs Introduces Configurable<> base class in kernel layer with option validation.
src/Cuemon.Core/Properties/AssemblyInfo.cs Adds type-forwarding entries for IConfigurable<> / Configurable<>.
src/Cuemon.Core/Configuration/IConfigurable.cs Removes old IConfigurable<> definition (now in kernel).
src/Cuemon.Core/Configuration/Configurable.cs Removes old Configurable<> definition (now in kernel).
Directory.Packages.props Bumps various package versions to newer compatible releases.
CHANGELOG.md Adds 10.5.1 release entry and compare link updates.
.nuget/Cuemon.Xml/PackageReleaseNotes.txt Updates package release notes to 10.5.1 and describes XML-related fixes/changes.
.nuget/Cuemon.Threading/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Resilience/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Net/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Kernel/PackageReleaseNotes.txt Updates package release notes to 10.5.1 and notes kernel surface additions.
.nuget/Cuemon.IO/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Data/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Core/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.Core.App/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt Updates package release notes to 10.5.1 noting dependency upgrades.
.github/workflows/ci-pipeline.yml Adds init job, derives dynamic build parameters, and gates privileged jobs on trusted contexts.
.docfx/Dockerfile.docfx Updates NGINX base image version used in docfx container build.

Comment on lines +5 to +7
[CollectionDefinition(nameof(XmlConvertDefaultSettingsCollection), DisableParallelization = true)]
public sealed class XmlConvertDefaultSettingsCollection : ICollectionFixture<XmlConvertDefaultSettingsCollection>
{
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This collection definition declares itself as its own ICollectionFixture<T>, but the type is only used to group tests and disable parallelization (no fixture instance is consumed by tests). Consider removing : ICollectionFixture<XmlConvertDefaultSettingsCollection> (or introducing a separate fixture type) to avoid confusion about the collection vs. fixture roles.

Copilot uses AI. Check for mistakes.
Comment on lines +9 to +15
namespace Cuemon.Xml.Serialization
{
public class XmlSerializerTest : Test
{
public XmlSerializerTest(ITestOutputHelper output) : base(output)
{
}
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test class mutates the global static XmlConvert.DefaultSettings in multiple tests, but it is not part of the non-parallelized XmlConvertDefaultSettingsCollection. That can cause flaky tests when xUnit runs test classes in parallel. Add [Collection(nameof(XmlConvertDefaultSettingsCollection))] to this class (or otherwise ensure these tests are serialized).

Copilot uses AI. Check for mistakes.
Comment thread CHANGELOG.md
Comment on lines +15 to +17
- `IConfigurable` and `Configurable` types relocated from `Cuemon.Core` to `Cuemon.Kernel` for improved architectural layering; `Cuemon.Core` maintains backward compatibility through `[TypeForwardedTo]` attributes,
- `XmlConverterDecoratorExtensions` class in the Cuemon.Extensions.Xml.Serialization.Converters namespace with simplified collection writing logic for improved maintainability,
- All package dependencies updated to latest compatible versions.
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changelog entry refers to XmlConverterDecoratorExtensions as being in the Cuemon.Extensions.Xml.Serialization.Converters namespace, but the updated code is in Cuemon.Xml.Serialization.Converters (see src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs). Please update the namespace in this release note to avoid confusing consumers.

Copilot uses AI. Check for mistakes.
Update test expectation in AssemblyDecoratorExtensionsTest to reflect the correct count of threading types in the Cuemon.Threading namespace. Changed from 2 to 4 and updated variable naming for clarity.
@sonarqubecloud
Copy link
Copy Markdown

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.90%. Comparing base (8cddd70) to head (d1a3a07).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #158      +/-   ##
==========================================
+ Coverage   82.30%   82.90%   +0.60%     
==========================================
  Files         602      602              
  Lines       19157    19157              
  Branches     2004     2001       -3     
==========================================
+ Hits        15767    15882     +115     
+ Misses       3328     3215     -113     
+ Partials       62       60       -2     

☔ View full report in Codecov by Sentry.
📢 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 gimlichael merged commit 7f0e015 into main Apr 16, 2026
315 checks passed
@gimlichael gimlichael deleted the v10.5.1/due-diligence-pack branch April 16, 2026 21:28
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.

3 participants