Skip to content

V10.5.5/service update - #167

Merged
gimlichael merged 15 commits into
mainfrom
v10.5.5/service-update
Jul 16, 2026
Merged

V10.5.5/service update#167
gimlichael merged 15 commits into
mainfrom
v10.5.5/service-update

Conversation

@gimlichael

@gimlichael gimlichael commented Jun 21, 2026

Copy link
Copy Markdown
Member

This pull request updates dependencies across multiple packages to their latest compatible versions and makes several improvements to the CI/CD pipeline configuration. The main changes include dependency upgrades for all supported target frameworks, enhancements to deployment job conditions, and updates to permissions and secrets in the CI workflow.

Dependency Upgrades:

  • All PackageReleaseNotes.txt files for the Cuemon packages have been updated to version 10.5.5, noting that dependencies are now upgraded to the latest compatible versions for all supported target frameworks (TFMs). This affects core, ASP.NET Core, authentication, data, diagnostics, and various extension packages. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]

CI/CD Pipeline Improvements:

  • The deployment job condition in .github/workflows/ci-pipeline.yml is now more robust, ensuring deployments only proceed if all required jobs succeed and preventing optional skipped jobs from blocking deployment.

Other Changes:

  • The NGINX_VERSION argument in .docfx/Dockerfile.docfx was updated to use version 1.31-alpine instead of 1.31.1-alpine for improved compatibility.

Deploy was being skipped when optional test_mac matrix was disabled in workflow_dispatch,
due to skipped-ancestor propagation. Now explicitly gate deploy on direct dependency
success only, so both manual workflow runs trigger deployment regardless of macOS
test matrix configuration.
@gimlichael gimlichael self-assigned this Jun 21, 2026
@greptile-apps

greptile-apps Bot commented Jun 21, 2026

Copy link
Copy Markdown

Greptile Summary

This PR is a v10.5.5 service update that bumps 45+ NuGet dependencies to their latest patch versions, tightens CI/CD deployment conditions, and adds NET9-specific string-processing fast paths to Cuemon.Kernel.

  • Dependency upgrades: All Directory.Packages.props entries are advanced one patch (e.g., 10.0.9 → 10.0.10, 9.0.17 → 9.0.18), covering Microsoft.Extensions., Microsoft.Data., and internal Codebelt.* tooling packages.
  • CI/CD changes: The deploy job condition now uses always() and explicit per-job result == 'success' guards instead of a bare github.event_name != 'pull_request' check; repository write permission is downgraded from contents: write to contents: read; and the Dockerfile NGINX tag is relaxed from 1.31.1-alpine to the floating 1.31-alpine.
  • Core library improvements: Condition.cs gains a bitmap-based HasDifferenceCore for NET9+, replaces LINQ Any/All/Except with explicit loops for IsBinaryDigits, IsWhiteSpace, and IsHex, and switches IsEnum from Enum.Parse inside a try-catch to Enum.TryParse; Validator.cs extracts repeated validation boilerplate into ContainsInterfaceCore / ContainsTypeCore helpers and refactors ContainsAny with span-based fast paths for NET9+.

Confidence Score: 5/5

Safe to merge — changes are routine dependency upgrades, CI condition hardening, and well-tested performance optimisations with no altered public API contracts.

All source-level changes in Condition.cs and Validator.cs are demonstrably equivalent rewrites: the Enum.TryParse substitution is verified by a legacy-equivalence matrix test, the LINQ-to-loop transformations preserve identical exit conditions, and the HasDifferenceCore bitmap path is guarded behind a compile-time NET9_0_OR_GREATER preprocessor symbol. The CI permission reduction (contents: write → read) is correct for a NuGet-only deploy job. Dependency upgrades are patch-level with no API surface changes.

No files require special attention. The CI pipeline condition change is the most structurally significant edit but is logically sound given that run-privileged-jobs is only false for fork pull requests, which are already excluded from deployment by the github.event_name != 'pull_request' guard.

Important Files Changed

Filename Overview
.github/workflows/ci-pipeline.yml Deploy job condition rewritten with always() and per-job success guards; contents permission reduced to read; a commented rationale is present but slightly misleading (references macOS skips, not the external-service jobs that are actually gated)
src/Cuemon.Kernel/Condition.cs NET9+ bitmap fast-path for HasDifference, Enum.TryParse substitution for Enum.Parse, and LINQ-to-loop rewrites for IsBinaryDigits/IsWhiteSpace/IsHex; all appear behaviorally equivalent to the replaced code and are thoroughly tested
src/Cuemon.Kernel/Validator.cs ThrowIfContainsInterface / ThrowIfNotContainsInterface / ThrowIfContainsType families refactored to share ContainsInterfaceCore / ContainsTypeCore helpers; ContainsAny gains span-based NET9 fast-path; behavior is preserved including null/non-interface validation
Directory.Packages.props Routine patch-version bumps across Microsoft.Extensions., Microsoft.Data., Codebelt.Extensions.*, and BenchmarkDotNet tooling; no structural changes
test/Cuemon.Kernel.Tests/ConditionTest.cs Comprehensive matrix tests for IsEnum (legacy equivalence, negative/unsigned/flags/overflow cases), HasDifference (null-as-empty, deduplication order, subset semantics) — coverage for all changed Condition methods
.docfx/Dockerfile.docfx NGINX tag relaxed from pinned 1.31.1-alpine to floating 1.31-alpine; intentional per PR description but reduces build reproducibility
tuning/Cuemon.Kernel.Benchmarks/ValidatorCoreBenchmark.cs New BenchmarkDotNet harness for all Validator throw-if methods; clean setup with no issues

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[push / workflow_dispatch] --> B[init]
    B --> C[build]
    B --> D[prepare_test]
    C --> E[pack]
    C --> F[test_linux]
    C --> G[test_windows]
    C --> H[test_mac\noptional]
    F & G & H --> I[test_qualitygate]
    I --> J[sonarcloud\nrun-privileged-jobs=true]
    I --> K[codecov\nrun-privileged-jobs=true]
    I --> L[codeql\nrun-privileged-jobs=true]
    C & E & I & J & K & L --> M{deploy condition\nalways + all == success\n+ not pull_request}
    M -->|all success| N[deploy → NuGet push]
    M -->|any skipped/failed| O[deploy skipped]

    style H fill:#ffe4b5
    style J fill:#d4edda
    style K fill:#d4edda
    style L fill:#d4edda
    style N fill:#c3e6cb
    style O fill:#f8d7da
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[push / workflow_dispatch] --> B[init]
    B --> C[build]
    B --> D[prepare_test]
    C --> E[pack]
    C --> F[test_linux]
    C --> G[test_windows]
    C --> H[test_mac\noptional]
    F & G & H --> I[test_qualitygate]
    I --> J[sonarcloud\nrun-privileged-jobs=true]
    I --> K[codecov\nrun-privileged-jobs=true]
    I --> L[codeql\nrun-privileged-jobs=true]
    C & E & I & J & K & L --> M{deploy condition\nalways + all == success\n+ not pull_request}
    M -->|all success| N[deploy → NuGet push]
    M -->|any skipped/failed| O[deploy skipped]

    style H fill:#ffe4b5
    style J fill:#d4edda
    style K fill:#d4edda
    style L fill:#d4edda
    style N fill:#c3e6cb
    style O fill:#f8d7da
Loading

Reviews (5): Last reviewed commit: "✨ add tests for hasDifference with non-A..." | Re-trigger Greptile

Comment thread .github/workflows/ci-pipeline.yml
Comment thread .github/workflows/ci-pipeline.yml
gimlichael and others added 13 commits June 21, 2026 15:59
Update package versions across all target frameworks: Codebelt extensions to 11.1.1, Microsoft.NET.Test.SDK to 18.8.1, and framework-specific packages to latest patch versions. Maintains compatibility across net9.0, net10.0, and netstandard2.0.
Align DocFX build infrastructure with latest tooling requirements and best practices.
Introduce net9.0+ optimizations using Span<char> and System.Buffers.Text.Base64 for improved performance on modern runtimes. Refactor algorithms to eliminate allocations in hot paths: IsWhiteSpace, IsBinaryDigits, and IsHexadecimal now use direct iteration. Optimize HasDifference with bitmap-based character tracking for net9.0+ while maintaining netstandard2.0 compatibility. Update corresponding tests to verify optimizations.
Extract interface and type validation logic into dedicated helper methods (ContainsInterfaceCore, ContainsTypeCore) to reduce method overhead. Optimize ContainsAny with net9.0+ Span-based optimizations for string searching with case-insensitive comparisons. Inline null and flag validation checks into helpers to eliminate redundant calls. Restructure error-handling deferred-evaluation patterns to compute error messages only when exceptions are thrown. Update tests to verify optimization and refactoring correctness.
Introduce Cuemon.Kernel.Benchmarks project with dedicated performance measurement suites for core validation and condition utilities: HasDifferenceBenchmark, ValidatorCoreBenchmark, ValidatorFormatBenchmark, ValidatorMiscBenchmark, ValidatorStringBenchmark, and ValidatorTypeBenchmark. Add benchmark project reference to solution. Benchmarks follow repository conventions with namespace matching Cuemon.Kernel and class names ending with Benchmark.
Extend Condition.IsEnum coverage with exhaustive test matrix for diverse enum types including negative values, [Flags] attributes, and non-enum comparisons. Added ValidatorTest enhancements for edge case validation. Tests ensure new Enum.TryParse implementation maintains backward compatibility with legacy Enum.Parse semantics across int, byte, long, and signed variants.
Add [WarmupCount(3)] attribute to all validator benchmarks (HasDifference, ValidatorCore, ValidatorFormat, ValidatorMisc, ValidatorString, ValidatorType) to stabilize measurement accuracy and reduce noise in micro-benchmark results. Include generated GitHub-compatible benchmark reports documenting optimization baseline metrics.
Updated all per-package release notes documenting version 10.5.5 with dependency upgrades to latest compatible versions across all supported target frameworks and new Kernel module benchmarking infrastructure.
Added comprehensive changelog entry for version 10.5.5 documenting new Cuemon.Kernel.Benchmarks infrastructure, performance optimizations in Condition and Validator classes, dependency upgrades across all packages, DocFX tooling updates, and CI/CD pipeline security improvements.
@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.21%. Comparing base (c99288b) to head (ea6aea2).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #167      +/-   ##
==========================================
+ Coverage   94.19%   94.21%   +0.01%     
==========================================
  Files         602      602              
  Lines       19186    19283      +97     
  Branches     2009     2032      +23     
==========================================
+ Hits        18073    18167      +94     
- Misses       1049     1052       +3     
  Partials       64       64              

☔ 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
gimlichael merged commit fb5b172 into main Jul 16, 2026
315 checks passed
@gimlichael
gimlichael deleted the v10.5.5/service-update branch July 16, 2026 22:09
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