Skip to content

atualiza todos os pacotes possíveis.#134

Merged
frigini merged 8 commits intomasterfrom
update-packages-refactor-tests
Feb 18, 2026
Merged

atualiza todos os pacotes possíveis.#134
frigini merged 8 commits intomasterfrom
update-packages-refactor-tests

Conversation

@frigini
Copy link
Owner

@frigini frigini commented Feb 17, 2026

Summary by CodeRabbit

  • Chores

    • Broad dependency refresh: many platform and library packages (EF Core, ASP.NET Core, OpenAPI/Swagger, Serilog, Refit, Npgsql, Azure, OpenTelemetry, testing tools, etc.) updated to newer patch/minor releases.
    • Added editor/build tooling configuration to improve local development experience.
  • Bug Fixes

    • Clarified resilience logging to indicate retry/failure thresholds reached.
    • Improved HTTP 503 messaging to state temporary unavailability and reconnection attempts.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 17, 2026

📝 Walkthrough

Walkthrough

Central package pins in Directory.Packages.props were bumped and many project packages.lock.json files regenerated to reflect updated resolved versions; a Tailwind VS extension config was added; two log/response strings in PollyLoggingHandler.cs were edited. No public API signatures or functional control-flow changes.

Changes

Cohort / File(s) Summary
Central package pins
Directory.Packages.props
Patch/minor bumps applied across many families (Microsoft.Extensions/, ASP.NET Core/OpenApi, EF Core, Swashbuckle, Refit, Serilog, IdentityModel/System.IdentityModel.Tokens.Jwt, coverlet.collector, Aspire., Npgsql, OpenTelemetry, etc.).
Regenerated lockfiles (many projects)
src/**/packages.lock.json, src/Aspire/.../packages.lock.json, src/Modules/**/.../packages.lock.json, src/Shared/packages.lock.json, src/Web/.../packages.lock.json
Lockfiles refreshed to match central pins (e.g., 10.0.2→10.0.3, Swashbuckle 10.1.0→10.1.3, Refit 9.x→10.0.1, Identity 8.15→8.16, coverlet 6→8, Aspire 13.1.0→13.1.1, Npgsql 10.0.0→10.0.1). Changes are version/resolution and contentHash updates only.
Tailwind VS extension config
tailwind.extension.json
New file added with schema, BuildFiles mapping, CustomRegexes, and UseCli flag for the Tailwind extension.
Minor logging/response text
src/Web/MeAjudaAi.Web.Admin/Services/Resilience/Http/PollyLoggingHandler.cs
Updated BrokenCircuitException log message to mention retries/failures threshold and reworded HTTP 503 response content. No signature changes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 I hopped through pins and hashes bright,
I nudged each package up at night,
Lockfiles shimmered, tidy and neat,
A tailwind file and a log-line sweet,
Tiny rabbit hops — updates complete!

🚥 Pre-merge checks | ❌ 3

❌ Failed checks (2 warnings, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request description is completely empty, violating the repository's required template which specifies sections for Summary, Problem, Solution, Changes, Impact, Testing, Checklist, and Related links. Complete the PR description using the provided template, including the Summary of package updates, the Problem being addressed, the Solution approach, detailed Changes list, expected Impact, Testing methodology, and all required checklist items.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'atualiza todos os pacotes possíveis' is vague and generic, using non-descriptive language that does not clearly convey the specific changes made in this comprehensive dependency update. Provide a more specific title that describes the main change, such as 'Bump NuGet packages to 10.0.3, 10.1.3, and other latest patch versions' to clarify the scope and intent of these widespread package updates.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch update-packages-refactor-tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
src/Modules/Locations/Infrastructure/packages.lock.json (1)

16-35: ⚠️ Potential issue | 🟠 Major

Update HealthChecks package versions for consistency with .NET 10.0 baseline.

SDK 10.0.101 is properly pinned and all projects consistently target net10.0. However, the lockfile contains a version mismatch: Microsoft.Extensions.Diagnostics.HealthChecks and Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions are pinned to 8.0.11 (.NET 8), while all other Microsoft.Extensions.* packages (18 of them) are at 10.0.3. The EF Core and Serilog upgrades to 10.0.3 and 4.3.1 respectively are confirmed.

Update the HealthChecks packages to 10.0.3 to align with the rest of the ecosystem. After alignment, run smoke tests (startup, DB migrations, health endpoints) to ensure compatibility.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/Locations/Infrastructure/packages.lock.json` around lines 16 -
35, The lockfile has Microsoft.Extensions.Diagnostics.HealthChecks and
Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions stuck at 8.0.11 while
other Microsoft.Extensions.* packages are 10.0.3; update those two entries in
packages.lock.json to "10.0.3" (matching the resolved/version used for packages
like Microsoft.Extensions.Logging and Microsoft.Extensions.Caching.Memory), then
run dotnet restore and rebuild, apply DB migrations and run smoke tests (app
startup, /health endpoints) to verify compatibility.
src/Shared/packages.lock.json (1)

103-153: ⚠️ Potential issue | 🟡 Minor

Shared lockfile: good central alignment; floating-range pattern is universal across all 2543 dependencies—ensure lockfile is locked and committed everywhere.

Direct deps like Microsoft.AspNetCore.OpenApi, Microsoft.EntityFrameworkCore, Microsoft.Extensions.Caching.Hybrid, and Serilog are resolved correctly to their intended versions. However, all 2543 entries use the requested: "[x.y.z, )" floating-range pattern—not just a subset. This systematically introduces version drift risk; reproducibility is guaranteed only if the lockfile is committed, used consistently across all environments, and never regenerated without explicit approval.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Shared/packages.lock.json` around lines 103 - 153, The lockfile currently
uses floating requested ranges ("[x.y.z, )") across all entries which risks
version drift; fix by committing and enforcing the packages.lock.json as the
single source of truth and enabling locked restores: ensure packages.lock.json
is committed to the repo, add/enable RestorePackagesWithLockFile (set
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile> in
Directory.Build.props or the relevant MSBuild config) so dotnet uses the lock
file, and add a CI check that runs dotnet restore --use-lock-file (or runs
restore and fails if packages.lock.json is modified) to prevent unapproved
regenerations; also consider pinning direct PackageReference entries (e.g.,
Microsoft.AspNetCore.OpenApi, Microsoft.EntityFrameworkCore,
Microsoft.Extensions.Caching.Hybrid, Serilog) to exact versions if you want
stricter reproducibility.
src/Modules/Locations/Application/packages.lock.json (1)

149-200: ⚠️ Potential issue | 🔴 Critical

Lockfile not enforced in CI/CD; version float ranges allow non-deterministic restores.

RestoreLockedMode is explicitly disabled in CI/CD pipelines (/p:RestoreLockedMode=false in master-ci-cd.yml, aspire-ci-cd.yml) and overridden to false in multiple projects (AppHost, Web.Admin, Tests). Additionally, the lockfile contains version float ranges (e.g., "Serilog": "[4.3.1, )", lines 428–435) rather than pinned versions, allowing transitive dependencies to resolve to different versions (Serilog shows 4.3.0, 4.2.0, 4.0.0 variants across the lockfile). This creates the exact "partial restore" scenario where builds may succeed locally but fail in CI due to version fluctuation. The Web.Admin workaround (line 7–10 of Directory.Build.props) notes this as temporary, pending SDK version stabilization.

Recommendations:

  • Pin transitive dependency versions in the lockfile (replace float ranges with explicit versions)
  • Re-enable RestoreLockedMode in CI/CD once version fluctuation is resolved
  • Complete the TODO for Web.Admin lock re-enablement
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/Locations/Application/packages.lock.json` around lines 149 - 200,
The lockfile and CI settings allow floating dependency restores causing
non-deterministic builds; update packages.lock.json to replace version ranges
(e.g., the "Serilog": "[4.3.1, )" entry and other bracketed ranges) with
explicit resolved versions, remove or fix any transitive float ranges so all
entries are pinned, re-enable RestoreLockedMode in CI by removing or setting
/p:RestoreLockedMode=true in the master-ci-cd.yml and aspire-ci-cd.yml pipeline
definitions, remove the overrides that set RestoreLockedMode=false in the
AppHost, Web.Admin, and Tests project configurations (and complete the TODO
noted in Directory.Build.props for Web.Admin), then regenerate and commit the
updated lockfile so CI performs strict locked restores against the pinned
packages.
src/Modules/Documents/API/packages.lock.json (1)

23-31: ⚠️ Potential issue | 🟠 Major

Docs module: Version inconsistency across Azure packages—verify compatibility.

The Documents module has Azure SDK version skew:

  • Documents/Application & Domain resolve Azure.Core 1.49.0 and System.ClientModel 1.7.0
  • Documents/API, Infrastructure & Tests resolve Azure.Core 1.50.0 and System.ClientModel 1.8.0
  • Azure.AI.DocumentIntelligence 1.0.0 declares dependency on Azure.Core 1.44.1 (gap of 6 minor versions from 1.50.0)
  • Azure.Identity 1.17.0 declares dependency on Azure.Core 1.49.0 but receives 1.50.0 in some packages

This inconsistency across module layers could introduce unexpected runtime behavior with authentication, retry policies, or serialization. Align Azure SDK versions across all Documents submodules or verify that version mismatches are acceptable.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/Documents/API/packages.lock.json` around lines 23 - 31, The
Documents modules show Azure SDK version skew (Azure.Core, Azure.Identity,
Azure.AI.DocumentIntelligence, System.ClientModel) across submodules
(Documents/Application, Documents/Domain, Documents/API, Infrastructure, Tests);
unify them by choosing a single compatible Azure.Core baseline (e.g., 1.50.0)
and update each project’s package references (or central package management like
Directory.Packages.props) so Azure.Core, Azure.Identity,
Azure.AI.DocumentIntelligence and System.ClientModel resolve to the same
versions, then rebuild/restore to regenerate packages.lock.json and run tests to
verify no runtime issues with authentication/retries/serialization.
🧹 Nitpick comments (1)
Directory.Packages.props (1)

13-14: Stale comment — Refit is now 10.x.

The comment "This prevents Refit.HttpClientFactory from pulling in 9.x versions" is no longer accurate since Refit itself has been upgraded to 10.x. Consider updating or removing this note.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Directory.Packages.props` around lines 13 - 14, The inline XML comment about
keeping Microsoft.Extensions.* packages on 10.x is stale because Refit is
already 10.x; update or remove the sentence "This prevents
Refit.HttpClientFactory from pulling in 9.x versions" so the comment accurately
reflects current state — either remove the Refit-specific claim or replace it
with a generic note about keeping Microsoft.Extensions.* on the same major
version (10.x) to avoid version skew; locate the comment block containing that
text in Directory.Packages.props and edit the second comment node accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Modules/Providers/API/packages.lock.json`:
- Around line 14-40: Packages show deliberate version mismatches:
Microsoft.Extensions.Caching.Hybrid at 10.3.0 vs other Microsoft.Extensions
packages at 10.0.3, and Serilog resolved to 4.3.1 while Serilog.AspNetCore
declares 4.3.0; confirm and fix by (1) checking the project/CSProj references
for Microsoft.Extensions.Caching.Hybrid and either align it to 10.0.3 or add a
clear comment/justification and compatibility tests if 10.3.0 is required, (2)
ensure Serilog/Serilog.AspNetCore versions are consistent by updating
Serilog.AspNetCore to 4.3.1 (or explicitly pin Serilog to 4.3.0) and running
logging smoke tests, and (3) verify RestoreLockedMode in Directory.Build.props
is honored (or add an explicit opt-out in the API project) so the
packages.lock.json changes are valid for CI; run unit/integration tests after
changes and update the lockfile accordingly.

---

Outside diff comments:
In `@src/Modules/Documents/API/packages.lock.json`:
- Around line 23-31: The Documents modules show Azure SDK version skew
(Azure.Core, Azure.Identity, Azure.AI.DocumentIntelligence, System.ClientModel)
across submodules (Documents/Application, Documents/Domain, Documents/API,
Infrastructure, Tests); unify them by choosing a single compatible Azure.Core
baseline (e.g., 1.50.0) and update each project’s package references (or central
package management like Directory.Packages.props) so Azure.Core, Azure.Identity,
Azure.AI.DocumentIntelligence and System.ClientModel resolve to the same
versions, then rebuild/restore to regenerate packages.lock.json and run tests to
verify no runtime issues with authentication/retries/serialization.

In `@src/Modules/Locations/Application/packages.lock.json`:
- Around line 149-200: The lockfile and CI settings allow floating dependency
restores causing non-deterministic builds; update packages.lock.json to replace
version ranges (e.g., the "Serilog": "[4.3.1, )" entry and other bracketed
ranges) with explicit resolved versions, remove or fix any transitive float
ranges so all entries are pinned, re-enable RestoreLockedMode in CI by removing
or setting /p:RestoreLockedMode=true in the master-ci-cd.yml and
aspire-ci-cd.yml pipeline definitions, remove the overrides that set
RestoreLockedMode=false in the AppHost, Web.Admin, and Tests project
configurations (and complete the TODO noted in Directory.Build.props for
Web.Admin), then regenerate and commit the updated lockfile so CI performs
strict locked restores against the pinned packages.

In `@src/Modules/Locations/Infrastructure/packages.lock.json`:
- Around line 16-35: The lockfile has
Microsoft.Extensions.Diagnostics.HealthChecks and
Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions stuck at 8.0.11 while
other Microsoft.Extensions.* packages are 10.0.3; update those two entries in
packages.lock.json to "10.0.3" (matching the resolved/version used for packages
like Microsoft.Extensions.Logging and Microsoft.Extensions.Caching.Memory), then
run dotnet restore and rebuild, apply DB migrations and run smoke tests (app
startup, /health endpoints) to verify compatibility.

In `@src/Shared/packages.lock.json`:
- Around line 103-153: The lockfile currently uses floating requested ranges
("[x.y.z, )") across all entries which risks version drift; fix by committing
and enforcing the packages.lock.json as the single source of truth and enabling
locked restores: ensure packages.lock.json is committed to the repo, add/enable
RestorePackagesWithLockFile (set
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile> in
Directory.Build.props or the relevant MSBuild config) so dotnet uses the lock
file, and add a CI check that runs dotnet restore --use-lock-file (or runs
restore and fails if packages.lock.json is modified) to prevent unapproved
regenerations; also consider pinning direct PackageReference entries (e.g.,
Microsoft.AspNetCore.OpenApi, Microsoft.EntityFrameworkCore,
Microsoft.Extensions.Caching.Hybrid, Serilog) to exact versions if you want
stricter reproducibility.

---

Nitpick comments:
In `@Directory.Packages.props`:
- Around line 13-14: The inline XML comment about keeping Microsoft.Extensions.*
packages on 10.x is stale because Refit is already 10.x; update or remove the
sentence "This prevents Refit.HttpClientFactory from pulling in 9.x versions" so
the comment accurately reflects current state — either remove the Refit-specific
claim or replace it with a generic note about keeping Microsoft.Extensions.* on
the same major version (10.x) to avoid version skew; locate the comment block
containing that text in Directory.Packages.props and edit the second comment
node accordingly.

…connection status, and return a 503 response for broken circuits.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
Directory.Packages.props (1)

143-144: Remove unused Microsoft.Extensions.Http.Polly package.

Http.Polly (line 144) is unused in the codebase. All projects have successfully migrated to Http.Resilience (line 143), which is the recommended replacement. The package can be safely removed from Directory.Packages.props.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Directory.Packages.props` around lines 143 - 144, Remove the unused package
entry Microsoft.Extensions.Http.Polly from Directory.Packages.props since all
projects use Microsoft.Extensions.Http.Resilience; open
Directory.Packages.props, locate the PackageVersion element with
Include="Microsoft.Extensions.Http.Polly" and delete that element so only the
PackageVersion for Include="Microsoft.Extensions.Http.Resilience" remains.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@Directory.Packages.props`:
- Around line 143-144: Remove the unused package entry
Microsoft.Extensions.Http.Polly from Directory.Packages.props since all projects
use Microsoft.Extensions.Http.Resilience; open Directory.Packages.props, locate
the PackageVersion element with Include="Microsoft.Extensions.Http.Polly" and
delete that element so only the PackageVersion for
Include="Microsoft.Extensions.Http.Resilience" remains.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
Directory.Packages.props (1)

82-84: Document the 10.3.0 version divergence for TimeProvider.Testing and Http.Resilience

Line 69–70 already explains why Caching.Hybrid is at 10.3.0 instead of 10.0.3. The same OOB/independent-release-cadence justification applies to TimeProvider.Testing (line 82) and Http.Resilience (line 84), but neither has a corresponding comment. Add brief inline comments matching the pattern on line 69 to prevent future maintainers from "fixing" these back to 10.0.x.

✍️ Suggested comments
-    <PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="10.3.0" />
-    <PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.3.0" />
+    <!-- Microsoft.Extensions.TimeProvider.Testing: 10.3.0 ships OOB from .NET core; newer than 10.0.3 baseline -->
+    <PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="10.3.0" />
+    <!-- Microsoft.Extensions.Http.Resilience: 10.3.0 ships OOB from .NET core; newer than 10.0.3 baseline -->
+    <PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.3.0" />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Directory.Packages.props` around lines 82 - 84, Add the same explanatory
inline comment used for the Caching.Hybrid entry to the two PackageVersion
entries for Microsoft.Extensions.TimeProvider.Testing (Version="10.3.0") and
Microsoft.Extensions.Http.Resilience (Version="10.3.0"): document that these
packages are at 10.3.0 due to out-of-band/independent release cadence (so
maintainers don't revert them to 10.0.x). Place the brief comment immediately
adjacent to each PackageVersion element, matching the wording/pattern used for
the Caching.Hybrid comment.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@Directory.Packages.props`:
- Line 192: The PackageVersion entry for Aspire.StackExchange.Redis is still set
to Version="13.0.2"; update that PackageVersion element (the one with
Include="Aspire.StackExchange.Redis") to Version="13.1.1" so it matches the
other Aspire.* packages in this PR and the published NuGet version.
- Line 85: Remove the unused/deprecated package pin for
Microsoft.Extensions.Http.Polly from Directory.Packages.props: delete the
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="10.0.3" />
entry so the repo only pins Microsoft.Extensions.Http.Resilience (10.3.0) and
avoid keeping an obsolete dependency that has no call sites (e.g., no
AddTransientHttpErrorPolicy/AddPolicyHandler usage).

---

Nitpick comments:
In `@Directory.Packages.props`:
- Around line 82-84: Add the same explanatory inline comment used for the
Caching.Hybrid entry to the two PackageVersion entries for
Microsoft.Extensions.TimeProvider.Testing (Version="10.3.0") and
Microsoft.Extensions.Http.Resilience (Version="10.3.0"): document that these
packages are at 10.3.0 due to out-of-band/independent release cadence (so
maintainers don't revert them to 10.0.x). Place the brief comment immediately
adjacent to each PackageVersion element, matching the wording/pattern used for
the Caching.Hybrid comment.

@frigini
Copy link
Owner Author

frigini commented Feb 17, 2026

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 17, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@frigini
Copy link
Owner Author

frigini commented Feb 17, 2026

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 17, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (3)
Directory.Packages.props (3)

26-31: Npgsql 10.x + Hangfire.PostgreSql compatibility risk is well-documented — ensure pre-production validation gates are enforced

The inline comments are thorough (issue tracking, fallback plan, breaking-changes link). Make sure the smoke-test gate mentioned in line 29 is actually wired into the staging pipeline before merging to master, not just documented here. The Hangfire dashboard health check and a job-failure-rate threshold check would be the minimum bar.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Directory.Packages.props` around lines 26 - 31, The comment notes a required
staging smoke-test gate but doesn't enforce it; add/enable a pipeline gate in
the staging CI configuration that runs the described smoke tests before
promoting changes (ensure it references the same Issue `#39` for traceability),
implement an automated Hangfire dashboard health check that fails the gate if
unhealthy (e.g., endpoint probe used by the pipeline), and add a
job-failure-rate threshold check (fail the gate if job failure rate > 5%) so the
documented fallback plan is actually enforced rather than only recorded in the
comment.

59-62: Npgsql.EntityFrameworkCore.PostgreSQL (10.0.0) lags behind Npgsql core (10.0.1)

Npgsql was bumped to 10.0.1 in this PR (line 62), but the EF Core provider on lines 59–60 remained at 10.0.0. If a 10.0.1 release of the EF provider exists (Npgsql and its EF adapter are typically released together), keeping them in sync avoids subtle runtime mismatches. The verification script above also checks for this.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Directory.Packages.props` around lines 59 - 62, The EF Core provider package
versions are out of sync with the core Npgsql package: update PackageVersion
entries for Npgsql.EntityFrameworkCore.PostgreSQL and
Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite from 10.0.0 to match
Npgsql 10.0.1 (i.e., set both EF provider versions to 10.0.1), then run the
repository verification script to confirm package parity and rebuild to ensure
no runtime mismatches.

41-41: Align Microsoft.Extensions.ApiDescription.Server to version 10.0.3

The repository's own policy (line 13) states: "Keep all Microsoft.Extensions.* packages on the same major version (10.x) to avoid version skew." This package is at 10.0.0 while all other Microsoft.Extensions.* packages are at 10.0.3 (or 10.3.0 for packages with documented critical fixes). Version 10.0.3 is available on NuGet and should be used for consistency.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Directory.Packages.props` at line 41, Update the PackageVersion entry for
Microsoft.Extensions.ApiDescription.Server: locate the PackageVersion element
whose Include is "Microsoft.Extensions.ApiDescription.Server" and change its
Version attribute from "10.0.0" to "10.0.3" so it matches the other
Microsoft.Extensions.* package versions and avoids version skew.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@Directory.Packages.props`:
- Around line 26-31: The comment notes a required staging smoke-test gate but
doesn't enforce it; add/enable a pipeline gate in the staging CI configuration
that runs the described smoke tests before promoting changes (ensure it
references the same Issue `#39` for traceability), implement an automated Hangfire
dashboard health check that fails the gate if unhealthy (e.g., endpoint probe
used by the pipeline), and add a job-failure-rate threshold check (fail the gate
if job failure rate > 5%) so the documented fallback plan is actually enforced
rather than only recorded in the comment.
- Around line 59-62: The EF Core provider package versions are out of sync with
the core Npgsql package: update PackageVersion entries for
Npgsql.EntityFrameworkCore.PostgreSQL and
Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite from 10.0.0 to match
Npgsql 10.0.1 (i.e., set both EF provider versions to 10.0.1), then run the
repository verification script to confirm package parity and rebuild to ensure
no runtime mismatches.
- Line 41: Update the PackageVersion entry for
Microsoft.Extensions.ApiDescription.Server: locate the PackageVersion element
whose Include is "Microsoft.Extensions.ApiDescription.Server" and change its
Version attribute from "10.0.0" to "10.0.3" so it matches the other
Microsoft.Extensions.* package versions and avoids version skew.

…and modifying `Directory.Packages.props`.
@frigini
Copy link
Owner Author

frigini commented Feb 17, 2026

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 17, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
src/Bootstrapper/MeAjudaAi.ApiService/packages.lock.json (2)

349-373: ⚠️ Potential issue | 🟠 Major

IdentityModel Protocols packages are pinned to 8.0.1 while the rest of the stack is at 8.16.0 — this is a known auth-breaking version skew

Microsoft.IdentityModel.Protocols and Microsoft.IdentityModel.Protocols.OpenIdConnect both resolve to 8.0.1 because Microsoft.AspNetCore.Authentication.JwtBearer 10.0.3 only requests 8.0.1. However, System.IdentityModel.Tokens.Jwt (CentralTransitive, line 1354–1360) is pinned to 8.16.0, which cascades Microsoft.IdentityModel.Tokens to 8.16.0 as well.

OpenIdConnectConfigurationRetriever (inside Protocols.OpenIdConnect) internally calls JsonSerializerPrimitives from Microsoft.IdentityModel.Tokens. When that package resolves to a different minor version than Protocols.OpenIdConnect, the serializer becomes incompatible, causing OIDC configuration parsing to return empty values (e.g., TokenEndpoint = '').

This exact split — JwtBearer pulling in old Protocols/Protocols.OpenIdConnect references while the rest of the IdentityModel stack advances — is a documented bug pattern that causes token validation to fail with IDX10500: Signature validation failed.

The fix is to explicitly pin both packages to 8.16.0 in Directory.Packages.props so NuGet selects the matching resolved version:

🛡️ Proposed fix in Directory.Packages.props
+<PackageVersion Include="Microsoft.IdentityModel.Protocols" Version="8.16.0" />
+<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.16.0" />

After applying this, regenerate the lockfile and verify that lines 349–373 show 8.16.0 for both packages.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Bootstrapper/MeAjudaAi.ApiService/packages.lock.json` around lines 349 -
373, The lockfile shows Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect resolving to 8.0.1 while the
rest of IdentityModel is 8.16.0, causing a version skew bug; fix by adding
explicit package version entries for Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect set to 8.16.0 in
Directory.Packages.props (so NuGet will resolve them to 8.16.0 instead of
8.0.1), then regenerate the packages lockfile (restore/build) and verify the
lockfile now lists both packages at 8.16.0.

1032-1043: ⚠️ Potential issue | 🟠 Major

Pin Npgsql to 6.x or confirm Hangfire.PostgreSql compatibility with Npgsql 10.0.1 before merging

Hangfire.PostgreSql 1.21.1 targets the Npgsql 6.x API surface (dependency: Npgsql >= 6.0.11), but the centrally-pinned Npgsql resolves to 10.0.1. While NuGet allows this (10.0.1 ≥ 6.0.11), Hangfire may fail at runtime with type-load errors (e.g., Could not load type 'Npgsql.TypeMapping.NpgsqlTypeMapping') due to major API breaks in Npgsql 7–10.

Either pin Npgsql to a 6.x version (6.0.11 or later 6.x patch), or confirm through end-to-end testing that background job operations (enqueueing, polling, state transitions) work correctly with Npgsql 10.0.1. If upgrading is necessary, consider waiting for a Hangfire.PostgreSql release that officially targets Npgsql 10.x.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Bootstrapper/MeAjudaAi.ApiService/packages.lock.json` around lines 1032 -
1043, The Hangfire.PostgreSql entry depends on Npgsql 6.x but the central Npgsql
resolves to 10.0.1; either pin Npgsql to a 6.x line or validate
compatibility—update your central package pin (e.g., Directory.Packages.props /
centralPackageVersions) to a 6.x release (>=6.0.11) so the resolved Npgsql
matches Hangfire.PostgreSql, or alternatively run end-to-end tests exercising
Hangfire background jobs (enqueueing, polling, state transitions) against Npgsql
10.0.1 and only merge if no type-load/runtime errors occur; reference the
Hangfire.PostgreSql package and the Npgsql central pin when making the change.
src/Modules/Locations/Tests/packages.lock.json (1)

1558-1568: ⚠️ Potential issue | 🟠 Major

Hangfire.PostgreSql 1.21.1 declares a minimum Npgsql >= 6.0.11 but resolves to 10.0.1 — verify runtime compatibility

Hangfire.PostgreSql 1.21.1 (current latest as of Feb 2026) declares Npgsql (>= 6.0.11), but the lockfile resolves Npgsql to 10.0.1—a four-major-version jump. No newer version of Hangfire.PostgreSql targeting Npgsql 10.x has been published. While the loose constraint allows the resolution, there is no explicit compatibility guarantee; Npgsql has documented breaking changes across major versions (type mappings, timestamp handling, connection behavior).

Confirm the integration-test suite passes with this pairing, or document this as a known constraint pending a compatible Hangfire.PostgreSql release.

Bonus: AspNetCore.HealthChecks.NpgSql 9.0.0 similarly declares Npgsql (>= 8.0.3) and resolves to 10.0.1 (a two-major-version jump). While the health-check implementation uses a limited Npgsql API surface and is less likely to break, include it in runtime verification.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/Locations/Tests/packages.lock.json` around lines 1558 - 1568, The
lockfile shows Hangfire.PostgreSql (1.21.1) and AspNetCore.HealthChecks.NpgSql
(9.0.0) resolving against Npgsql 10.0.1 despite their declared minimums
targeting older major versions; verify runtime compatibility by running the
integration-test suite (including any Hangfire and health-check scenarios)
against Npgsql 10.0.1, and if tests fail or produce warnings, either pin Npgsql
to a compatible major version supported by Hangfire.PostgreSql (or update
Hangfire.PostgreSql when a compatible release exists) via your dependency
management (e.g., central package props / lock strategy) or explicitly document
this pairing as a known-risk in the repo’s dependency notes/CHANGELOG; also
include AspNetCore.HealthChecks.NpgSql in the same verification matrix.
src/Modules/SearchProviders/Tests/packages.lock.json (1)

614-630: ⚠️ Potential issue | 🟡 Minor

Add central package pin for Microsoft.IdentityModel.Protocols.OpenIdConnect to align versions

Microsoft.IdentityModel.Protocols and Microsoft.IdentityModel.Protocols.OpenIdConnect are at 8.0.1 (pulled transitively by Microsoft.AspNetCore.Authentication.JwtBearer 10.0.3), while Microsoft.IdentityModel.Tokens, Logging, Abstractions, and JsonWebTokens are all at 8.16.0. Although JwtBearer 10.0.3 only declares a (>= 8.0.1) constraint, NuGet selected the minimum version. Add a central package pin in Directory.Packages.props:

<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.16.0" />

This aligns all IdentityModel packages within the family and follows the existing pattern for System.IdentityModel.Tokens.Jwt (already pinned to 8.16.0 in central management).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/SearchProviders/Tests/packages.lock.json` around lines 614 - 630,
Add a central package pin for Microsoft.IdentityModel.Protocols.OpenIdConnect in
Directory.Packages.props to align it with the other IdentityModel packages (use
Version="8.16.0"); specifically add a <PackageVersion
Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.16.0" />
entry in Directory.Packages.props, then run a restore (dotnet restore) to
regenerate packages.lock.json so Microsoft.IdentityModel.Protocols.OpenIdConnect
is resolved to 8.16.0 consistently with System.IdentityModel.Tokens.Jwt and the
other IdentityModel family packages.
🧹 Nitpick comments (4)
src/Modules/Locations/Tests/packages.lock.json (1)

592-617: Microsoft.IdentityModel.Protocols* are at 8.0.1 while the rest of the IdentityModel family is at 8.16.0 — consider pinning for consistency

Microsoft.IdentityModel.Protocols (Line 593) and Microsoft.IdentityModel.Protocols.OpenIdConnect (Line 602) remain at 8.0.1 because Microsoft.AspNetCore.Authentication.JwtBearer 10.0.3 only requires them at >= 8.0.1 and there is no higher central pin for those two packages. Every other package in the same family (Microsoft.IdentityModel.Abstractions, Microsoft.IdentityModel.JsonWebTokens, Microsoft.IdentityModel.Logging, Microsoft.IdentityModel.Tokens, System.IdentityModel.Tokens.Jwt) resolves to 8.16.0.

While intra-major compatibility is maintained in this library family, the split is a maintainability concern — a future consumer or audit could easily miss that two packages in the same family are 16 patches behind. Adding explicit pins in Directory.Packages.props for these two packages would align the entire family:

+ <PackageVersion Include="Microsoft.IdentityModel.Protocols" Version="8.16.0" />
+ <PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.16.0" />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/Locations/Tests/packages.lock.json` around lines 592 - 617, The
two packages Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect are resolving to 8.0.1 while the
rest of the Microsoft.IdentityModel family is at 8.16.0; add explicit central
package version pins for Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect (version 8.16.0) in
Directory.Packages.props so the family is consistent and the lockfile will
resolve them to 8.16.0; locate the central package management block in
Directory.Packages.props and add <PackageVersion> entries for those two package
IDs matching the other family members.
src/Modules/SearchProviders/Tests/packages.lock.json (1)

30-34: coverlet.collector jumped two major versions (6 → 8); verify no test-run regressions

A two-major-version bump on the coverage collector can change coverage calculation semantics (e.g., branch coverage counting, excluded paths). Since this affects test results rather than production code, the risk is low, but running the test suite with coverage enabled and diffing the report against the previous baseline is advisable before merging.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/SearchProviders/Tests/packages.lock.json` around lines 30 - 34,
coverlet.collector was bumped from v6 to v8; run the full test suite with
coverage enabled using the updated coverlet.collector to detect any changed
coverage semantics, generate a coverage report (e.g., cobertura/coverage.json),
diff it against the previous baseline report, and if differences are unintended
either pin coverlet.collector back to the prior compatible version or update the
coverage baseline/config (exclusions, branch settings) so tests and CI remain
stable; reference the dependency name "coverlet.collector" in the
packages.lock.json and ensure CI pipeline runs the same coverage command used
locally before merging.
src/Modules/ServiceCatalogs/Tests/packages.lock.json (1)

614-629: Version constraint from JwtBearer 10.0.3 is expected; however, no unmitigated CVEs exist between 8.0.1 and 8.16.0.

Microsoft.IdentityModel.Protocols (Line 616) and Microsoft.IdentityModel.Protocols.OpenIdConnect (Line 624) are locked at 8.0.1 due to Microsoft.AspNetCore.Authentication.JwtBearer 10.0.3 (Line 1598) pinning that exact version. This constraint is expected behavior and not a vulnerability.

The version gap is real, but there are no published CVEs affecting 8.0.1 specifically that are patched in 8.16.0 (both versions are outside the affected ranges of CVE-2024-21319 and CVE-2024-21643). That said, security-relevant hardening improvements exist between the versions (log/exception scrubbing in 8.8.0, log sanitization and CodeQL fixes in 8.15.0) that would only be picked up after JwtBearer ships with a higher minimum version requirement for IdentityModel.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/ServiceCatalogs/Tests/packages.lock.json` around lines 614 - 629,
packages.lock.json shows Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect pinned to 8.0.1 because
Microsoft.AspNetCore.Authentication.JwtBearer 10.0.3 is constraining that
dependency; to pick up security hardening in later IdentityModel releases either
upgrade JwtBearer to a newer version that allows IdentityModel >= 8.16.0 or add
an explicit direct package reference for Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect at the desired version (>=
8.16.0) in the project so the lockfile resolves to the newer libraries; update
the project file/dependencies accordingly and regenerate the lockfile to verify
the transitive resolution changes.
Directory.Packages.props (1)

26-32: Open TODO for Issue #39 – automated staging validation gate still unimplemented.

The risk commentary is thorough, but line 32's TODO: Implement automated pipeline gate for staging validation (Issue #39) remains unresolved. Until this gate exists, the Hangfire/Npgsql 10.x compatibility guarantee is manual.

Would you like me to open a new issue or draft a CI pipeline step (e.g., a GitHub Actions job that runs the Hangfire health-check endpoint against a staging environment before the merge is allowed) to implement this gate?

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Directory.Packages.props` around lines 26 - 32, The TODO on Issue `#39` in
Directory.Packages.props must be implemented: add an automated staging
validation gate by creating a CI job (e.g., GitHub Actions job named
staging-validation-gate) that runs the existing staging smoke tests and
exercises the Hangfire health-check and dashboard endpoints before merge,
failing the job if the health-check or Hangfire endpoints return non-OK status;
tie the job to pull request merge checks and reference/close Issue `#39` upon
successful pipeline addition, and remove or update the TODO comment in
Directory.Packages.props once the gate is implemented.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@src/Bootstrapper/MeAjudaAi.ApiService/packages.lock.json`:
- Around line 349-373: The lockfile shows Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect resolving to 8.0.1 while the
rest of IdentityModel is 8.16.0, causing a version skew bug; fix by adding
explicit package version entries for Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect set to 8.16.0 in
Directory.Packages.props (so NuGet will resolve them to 8.16.0 instead of
8.0.1), then regenerate the packages lockfile (restore/build) and verify the
lockfile now lists both packages at 8.16.0.
- Around line 1032-1043: The Hangfire.PostgreSql entry depends on Npgsql 6.x but
the central Npgsql resolves to 10.0.1; either pin Npgsql to a 6.x line or
validate compatibility—update your central package pin (e.g.,
Directory.Packages.props / centralPackageVersions) to a 6.x release (>=6.0.11)
so the resolved Npgsql matches Hangfire.PostgreSql, or alternatively run
end-to-end tests exercising Hangfire background jobs (enqueueing, polling, state
transitions) against Npgsql 10.0.1 and only merge if no type-load/runtime errors
occur; reference the Hangfire.PostgreSql package and the Npgsql central pin when
making the change.

In `@src/Modules/Locations/Tests/packages.lock.json`:
- Around line 1558-1568: The lockfile shows Hangfire.PostgreSql (1.21.1) and
AspNetCore.HealthChecks.NpgSql (9.0.0) resolving against Npgsql 10.0.1 despite
their declared minimums targeting older major versions; verify runtime
compatibility by running the integration-test suite (including any Hangfire and
health-check scenarios) against Npgsql 10.0.1, and if tests fail or produce
warnings, either pin Npgsql to a compatible major version supported by
Hangfire.PostgreSql (or update Hangfire.PostgreSql when a compatible release
exists) via your dependency management (e.g., central package props / lock
strategy) or explicitly document this pairing as a known-risk in the repo’s
dependency notes/CHANGELOG; also include AspNetCore.HealthChecks.NpgSql in the
same verification matrix.

In `@src/Modules/SearchProviders/Tests/packages.lock.json`:
- Around line 614-630: Add a central package pin for
Microsoft.IdentityModel.Protocols.OpenIdConnect in Directory.Packages.props to
align it with the other IdentityModel packages (use Version="8.16.0");
specifically add a <PackageVersion
Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.16.0" />
entry in Directory.Packages.props, then run a restore (dotnet restore) to
regenerate packages.lock.json so Microsoft.IdentityModel.Protocols.OpenIdConnect
is resolved to 8.16.0 consistently with System.IdentityModel.Tokens.Jwt and the
other IdentityModel family packages.

---

Duplicate comments:
In `@Directory.Packages.props`:
- Around line 175-194: There is a duplicate PackageVersion for
Aspire.Hosting.PostgreSQL in the block; remove the extra <PackageVersion
Include="Aspire.Hosting.PostgreSQL" Version="13.1.1" /> entry so only one
PackageVersion for Aspire.Hosting.PostgreSQL remains (keep the 13.1.1 version),
ensuring unique package entries and avoiding duplicate package definitions.

In `@src/Modules/Documents/Tests/packages.lock.json`:
- Around line 1593-1597: Replace the placeholder contentHash
("TBDs8e9y2vJHp14EwNfnIZUNrm6siw8PAAU5laOrYFuGgRxx8oCdxZyfTgp1Oy/icUk9h/XtpYBHPnXIG0f2/g==")
in the lock entry for the package with requested "[10.0.3, )" and resolved
"10.0.3" by computing the real integrity/content hash the same way you did in
the prior verification sweep, update the "contentHash" value accordingly, and
run the same validation script/process to ensure no other entries still contain
"TBD..." placeholders.

In `@src/Modules/Users/Tests/packages.lock.json`:
- Around line 1593-1597: The contentHash placeholder
"TBDs8e9y2vJHp14EwNfnIZUNrm6siw8PAAU5laOrYFuGgRxx8oCdxZyfTgp1Oy/icUk9h/XtpYBHPnXIG0f2/g=="
for the package entry with requested "[10.0.3, )" and resolved "10.0.3" must be
replaced with its actual computed hash; compute the package's content hash using
the same hashing algorithm and tooling used in the earlier validation sweep,
update the "contentHash" value for that JSON object, and then re-run the same
validation sweep/script you used previously to verify all "TBD..." placeholders
are resolved and commit the updated packages.lock.json.

---

Nitpick comments:
In `@Directory.Packages.props`:
- Around line 26-32: The TODO on Issue `#39` in Directory.Packages.props must be
implemented: add an automated staging validation gate by creating a CI job
(e.g., GitHub Actions job named staging-validation-gate) that runs the existing
staging smoke tests and exercises the Hangfire health-check and dashboard
endpoints before merge, failing the job if the health-check or Hangfire
endpoints return non-OK status; tie the job to pull request merge checks and
reference/close Issue `#39` upon successful pipeline addition, and remove or
update the TODO comment in Directory.Packages.props once the gate is
implemented.

In `@src/Modules/Locations/Tests/packages.lock.json`:
- Around line 592-617: The two packages Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect are resolving to 8.0.1 while the
rest of the Microsoft.IdentityModel family is at 8.16.0; add explicit central
package version pins for Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect (version 8.16.0) in
Directory.Packages.props so the family is consistent and the lockfile will
resolve them to 8.16.0; locate the central package management block in
Directory.Packages.props and add <PackageVersion> entries for those two package
IDs matching the other family members.

In `@src/Modules/SearchProviders/Tests/packages.lock.json`:
- Around line 30-34: coverlet.collector was bumped from v6 to v8; run the full
test suite with coverage enabled using the updated coverlet.collector to detect
any changed coverage semantics, generate a coverage report (e.g.,
cobertura/coverage.json), diff it against the previous baseline report, and if
differences are unintended either pin coverlet.collector back to the prior
compatible version or update the coverage baseline/config (exclusions, branch
settings) so tests and CI remain stable; reference the dependency name
"coverlet.collector" in the packages.lock.json and ensure CI pipeline runs the
same coverage command used locally before merging.

In `@src/Modules/ServiceCatalogs/Tests/packages.lock.json`:
- Around line 614-629: packages.lock.json shows
Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect pinned to 8.0.1 because
Microsoft.AspNetCore.Authentication.JwtBearer 10.0.3 is constraining that
dependency; to pick up security hardening in later IdentityModel releases either
upgrade JwtBearer to a newer version that allows IdentityModel >= 8.16.0 or add
an explicit direct package reference for Microsoft.IdentityModel.Protocols and
Microsoft.IdentityModel.Protocols.OpenIdConnect at the desired version (>=
8.16.0) in the project so the lockfile resolves to the newer libraries; update
the project file/dependencies accordingly and regenerate the lockfile to verify
the transitive resolution changes.

Filipe Frigini added 2 commits February 17, 2026 19:55
… across projects for consistent dependency resolution.
…ion, service filtering, and result ordering.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
src/Modules/Locations/Tests/packages.lock.json (1)

554-574: ⚠️ Potential issue | 🟡 Minor

Verify Microsoft.Identity.Client 4.76.0 compatibility with Microsoft.IdentityModel.Abstractions 8.16.0.

Microsoft.Identity.Client 4.76.0 declares a minimum dependency on Microsoft.IdentityModel.Abstractions >= 6.35.0, which NuGet resolves to 8.16.0 — a cross-major-version resolution driven by the explicit pin of System.IdentityModel.Tokens.Jwt "[8.16.0, )" and Microsoft.IdentityModel.Protocols.OpenIdConnect "[8.16.0, )" in meajudaai.modules.users.infrastructure.

The version resolution is technically valid, and both packages are Microsoft-maintained with stable Abstractions surfaces. However, mismatched IdentityModel major versions can occasionally trigger runtime issues in some scenarios (see dotnet/aspnetcore#57940). Confirm JWT authentication flows work correctly in integration tests after this upgrade.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/Locations/Tests/packages.lock.json` around lines 554 - 574,
Confirm compatibility between Microsoft.Identity.Client (4.76.0) and
Microsoft.IdentityModel.Abstractions (8.16.0) by running the JWT authentication
integration scenarios referenced in meajudaai.modules.users.infrastructure:
exercise token issuance/validation and OpenID Connect flows that use
System.IdentityModel.Tokens.Jwt and
Microsoft.IdentityModel.Protocols.OpenIdConnect; if any runtime failures occur,
reproduce the failure locally, then either constrain the IdentityModel packages
to a compatible 6.x line or upgrade Microsoft.Identity.Client to a version
tested against IdentityModel 8.x and update package references accordingly
before re-running the integration tests.
src/Modules/Documents/Tests/packages.lock.json (2)

2013-2022: ⚠️ Potential issue | 🟠 Major

Bump OpenTelemetry.Instrumentation.EntityFrameworkCore to align with the rest of the OTel 1.15.x stack.

The EFCore instrumentation package is pinned at 1.14.0-beta.2 while every other OpenTelemetry package in this lockfile (OpenTelemetry, OpenTelemetry.Instrumentation.AspNetCore, .Http, .Runtime, Exporter packages, etc.) has been advanced to 1.15.0. A newer pre-release (1.15.0-beta.1, released January 21, 2026) now exists and contains only improvements and dependency updates—no breaking changes. Keeping the EFCore instrumentation on an older beta creates version drift that can cause API and semantic-convention mismatches at runtime.

Update the pin in Directory.Packages.props from [1.14.0-beta.2, ) to [1.15.0-beta.1, ) and regenerate the lockfile.

Note: AspNetCore.HealthChecks.NpgSql 9.0.0 depends on Npgsql >= 8.0.3, so the resolved Npgsql 10.0.1 is technically compatible per semver. However, this combination has not been explicitly tested; Npgsql 10.0 includes behavior changes (e.g., date/time type mappings) that could surface edge cases in custom health check queries. Validate this combination during integration testing.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/Documents/Tests/packages.lock.json` around lines 2013 - 2022,
Update the OpenTelemetry EFCore package pin in Directory.Packages.props from
"[1.14.0-beta.2, )" to "[1.15.0-beta.1, )" (target package:
OpenTelemetry.Instrumentation.EntityFrameworkCore), then regenerate the NuGet
lockfile (packages.lock.json) by restoring/locking the solution (dotnet restore
/p:RestoreLockedMode=false or your repo's lockfile generation command) so the
lock shows the new resolved 1.15.0-beta.1 entry; after that run the
unit/integration test suite (and validate Npgsql-related health checks) to
ensure the updated EFCore instrumentation and Npgsql combination behaves as
expected.

1420-1428: ⚠️ Potential issue | 🔴 Critical

AspNetCore.HealthChecks.NpgSql 9.0.0 declares a dependency on Npgsql: 8.0.3 but the resolved version is Npgsql: 10.0.1 — no 10.x-compatible release of the health check package is currently available.

Npgsql 9.0 and 10.0 introduced significant breaking changes including type mapping changes (e.g., dateDateOnly, timeTimeOnly), OpenTelemetry tracing/metrics changes, TLS validation behavior changes, and connection lifetime defaults. The health check package targeting Npgsql 8.x may silently fail or behave unexpectedly at runtime.

Options: either accept the compatibility risk, downgrade Npgsql to 8.0.3, or defer until AspNetCore.HealthChecks.NpgSql releases a 10.x-compatible version. If proceeding, test the /health endpoint thoroughly under load to catch runtime exceptions.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/Documents/Tests/packages.lock.json` around lines 1420 - 1428, The
lock declares AspNetCore.HealthChecks.NpgSql v9.0.0 depends on Npgsql 8.0.3 but
the resolved Npgsql is 10.0.1, causing potential runtime breakage; fix by
aligning versions: either add an explicit Npgsql package reference pinned to
8.0.3 (or lower the project's Npgsql dependency) so the resolver matches
AspNetCore.HealthChecks.NpgSql's dependency, or remove/replace
AspNetCore.HealthChecks.NpgSql until a 10.x-compatible release exists; if you
choose to keep Npgsql 10.x, run full integration and load tests against the
/health endpoint to validate there are no type-mapping or runtime errors.
🧹 Nitpick comments (1)
src/Modules/Providers/Tests/packages.lock.json (1)

83-90: Most Npgsql companion packages have 10.0.1 releases available and should be bumped.

The direct Npgsql dependency resolves to 10.0.1, but Npgsql.EntityFrameworkCore.PostgreSQL, Npgsql.NetTopologySuite, Npgsql.DependencyInjection, and Npgsql.OpenTelemetry are resolved at 10.0.0. Update the pins in Directory.Packages.props to 10.0.1 for Npgsql.NetTopologySuite, Npgsql.DependencyInjection, and Npgsql.OpenTelemetry, which all have 10.0.1 releases available. Note: Npgsql.EntityFrameworkCore.PostgreSQL does not have a 10.0.1 release (latest stable is 10.0.0; next version is 11.0.0-preview.1), so it should remain at 10.0.0.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Modules/Providers/Tests/packages.lock.json` around lines 83 - 90, The
package pins for Npgsql companion libraries are inconsistent: update the version
pins in Directory.Packages.props so that Npgsql.NetTopologySuite,
Npgsql.DependencyInjection, and Npgsql.OpenTelemetry are bumped from 10.0.0 to
10.0.1 to match the direct Npgsql resolution (which is 10.0.1), but leave
Npgsql.EntityFrameworkCore.PostgreSQL at 10.0.0 (no 10.0.1 release). Modify the
entries for the package IDs Npgsql.NetTopologySuite, Npgsql.DependencyInjection,
and Npgsql.OpenTelemetry in Directory.Packages.props to 10.0.1 and keep
Npgsql.EntityFrameworkCore.PostgreSQL unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Modules/Providers/Tests/packages.lock.json`:
- Around line 30-35: The upgrade of coverlet.collector in packages.lock.json to
8.0.0 requires .NET SDK 8.0.414+ on build agents; either update CI/build agent
images to install .NET 8.0 LTS (ensure global.json or agent image specifies SDK
8.0.414 or newer) or revert/pin coverlet.collector to the previous compatible
version (e.g., 6.x) until agents are upgraded; check related test tooling
(Microsoft.NET.Test.Sdk) is already >=17.13.0 and update global.json SDK entry
or CI pipeline matrix accordingly to reference "8.0.414" (or higher) so dotnet
test --collect:"XPlat Code Coverage" succeeds.

---

Outside diff comments:
In `@src/Modules/Documents/Tests/packages.lock.json`:
- Around line 2013-2022: Update the OpenTelemetry EFCore package pin in
Directory.Packages.props from "[1.14.0-beta.2, )" to "[1.15.0-beta.1, )" (target
package: OpenTelemetry.Instrumentation.EntityFrameworkCore), then regenerate the
NuGet lockfile (packages.lock.json) by restoring/locking the solution (dotnet
restore /p:RestoreLockedMode=false or your repo's lockfile generation command)
so the lock shows the new resolved 1.15.0-beta.1 entry; after that run the
unit/integration test suite (and validate Npgsql-related health checks) to
ensure the updated EFCore instrumentation and Npgsql combination behaves as
expected.
- Around line 1420-1428: The lock declares AspNetCore.HealthChecks.NpgSql v9.0.0
depends on Npgsql 8.0.3 but the resolved Npgsql is 10.0.1, causing potential
runtime breakage; fix by aligning versions: either add an explicit Npgsql
package reference pinned to 8.0.3 (or lower the project's Npgsql dependency) so
the resolver matches AspNetCore.HealthChecks.NpgSql's dependency, or
remove/replace AspNetCore.HealthChecks.NpgSql until a 10.x-compatible release
exists; if you choose to keep Npgsql 10.x, run full integration and load tests
against the /health endpoint to validate there are no type-mapping or runtime
errors.

In `@src/Modules/Locations/Tests/packages.lock.json`:
- Around line 554-574: Confirm compatibility between Microsoft.Identity.Client
(4.76.0) and Microsoft.IdentityModel.Abstractions (8.16.0) by running the JWT
authentication integration scenarios referenced in
meajudaai.modules.users.infrastructure: exercise token issuance/validation and
OpenID Connect flows that use System.IdentityModel.Tokens.Jwt and
Microsoft.IdentityModel.Protocols.OpenIdConnect; if any runtime failures occur,
reproduce the failure locally, then either constrain the IdentityModel packages
to a compatible 6.x line or upgrade Microsoft.Identity.Client to a version
tested against IdentityModel 8.x and update package references accordingly
before re-running the integration tests.

---

Duplicate comments:
In `@Directory.Packages.props`:
- Around line 178-197: The review contains a duplicate/approval metadata tag and
a redundant comment; remove the stray "[duplicate_comment]" token from the
review metadata and ensure the PackageVersion element for
Aspire.StackExchange.Redis is consistent with others by verifying the
PackageVersion Include="Aspire.StackExchange.Redis" Version="13.1.1" entry
remains 13.1.1 (no duplicates or mismatched lines) and delete any leftover
duplicate approval/comment markers like "[duplicate_comment]" while keeping the
intended "[approve_code_changes]" if desired.

---

Nitpick comments:
In `@src/Modules/Providers/Tests/packages.lock.json`:
- Around line 83-90: The package pins for Npgsql companion libraries are
inconsistent: update the version pins in Directory.Packages.props so that
Npgsql.NetTopologySuite, Npgsql.DependencyInjection, and Npgsql.OpenTelemetry
are bumped from 10.0.0 to 10.0.1 to match the direct Npgsql resolution (which is
10.0.1), but leave Npgsql.EntityFrameworkCore.PostgreSQL at 10.0.0 (no 10.0.1
release). Modify the entries for the package IDs Npgsql.NetTopologySuite,
Npgsql.DependencyInjection, and Npgsql.OpenTelemetry in Directory.Packages.props
to 10.0.1 and keep Npgsql.EntityFrameworkCore.PostgreSQL unchanged.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
Directory.Packages.props (1)

26-32: Convert the TODO into a tracked task / CI gate.
Leaving this in a central file makes it easy to forget; linking it to an issue or a pipeline check will keep the validation from slipping.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Directory.Packages.props` around lines 26 - 32, Replace the inline TODO
comment about "Implement automated pipeline gate for staging validation (Issue
`#39`)" with a concrete CI gate and tracked task: create a pipeline gate named
something like "staging-npgsql-compat-validation" that runs the described
staging smoke tests (Hangfire dashboard checks + health checks) and fails the
PR/merge if tests fail, link that gate configuration to Issue `#39`, and update
the comment block (the TODO line) to reference the new pipeline gate ID and
Issue `#39` instead of a generic TODO so the validation cannot be missed.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@src/Modules/Providers/Tests/packages.lock.json`:
- Around line 30-35: The packages.lock.json shows coverlet.collector resolved to
8.0.0 which requires .NET SDK 8.0 LTS; before merging update your CI/build
environments to install or use .NET SDK 8.0.414+ (or add/adjust a global.json to
pin sdk 8.0.414+) so that builds and tests using coverlet.collector@8.0.0
succeed; verify the CI pipeline (agent images or setup steps) reflect the SDK
change and re-run the pipeline to confirm no SDK mismatch errors.

---

Nitpick comments:
In `@Directory.Packages.props`:
- Around line 26-32: Replace the inline TODO comment about "Implement automated
pipeline gate for staging validation (Issue `#39`)" with a concrete CI gate and
tracked task: create a pipeline gate named something like
"staging-npgsql-compat-validation" that runs the described staging smoke tests
(Hangfire dashboard checks + health checks) and fails the PR/merge if tests
fail, link that gate configuration to Issue `#39`, and update the comment block
(the TODO line) to reference the new pipeline gate ID and Issue `#39` instead of a
generic TODO so the validation cannot be missed.

…422 Unprocessable Entity, and 409 Conflict.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Modules/Users/Tests/packages.lock.json`:
- Around line 30-35: The project updated coverlet.collector to 8.0.0 which
requires a minimum .NET SDK 8.0.414+ and Microsoft.NET.Test.Sdk 17.13.0+; update
the CI pipeline image/installer to use dotnet SDK 8.0.414 or later and bump
Microsoft.NET.Test.Sdk in your test project(s) to >=17.13.0 (or update package
references/nuget.config) so coverage collection (coverlet.collector) succeeds;
check places that reference coverlet.collector and test SDK versions (e.g.,
coverlet.collector entry in packages.lock.json and any csproj test projects) and
ensure the CI restore/build/test steps use the updated SDK and package versions.

---

Duplicate comments:
In `@src/Modules/Providers/Tests/packages.lock.json`:
- Around line 30-35: The lock shows coverlet.collector resolved to 8.0.0 which
requires a .NET 8.0 SDK build agent; update the CI/build configuration to use
the .NET 8.0 LTS image (or revert the coverlet.collector version) so the
pipeline matches the dependency—specifically either pin coverlet.collector to a
supported pre-8.0 version or change your CI images/agents (e.g., the pipeline
image/tag or actions/setup-dotnet version) to .NET SDK 8.0 LTS to eliminate the
mismatch with coverlet.collector 8.0.0.

@github-actions
Copy link

📊 Code Coverage Report

Coverage: 90.55% (extracted from Cobertura (Aggregated Direct))

📈 Coverage Details

  • Coverage badges: Coverage
  • Minimum threshold: 80% (warning) / 90% (good)
  • Report format: Auto-detected from OpenCover/Cobertura XML files
  • Coverage source: Cobertura (Aggregated Direct)

📋 Coverage Analysis

  • Line Coverage: Shows percentage of code lines executed during tests
  • Branch Coverage: Shows percentage of code branches/conditions tested
  • Complexity: Code complexity metrics for maintainability

🎯 Quality Gates

  • Pass: Coverage ≥ 90%
  • ⚠️ Warning: Coverage 80-89%
  • Fail: Coverage < 80%

📁 Artifacts

  • Coverage reports: Available in workflow artifacts
  • Test results: TRX files with detailed test execution data

This comment is updated automatically on each push to track coverage trends.

@frigini frigini merged commit ad21335 into master Feb 18, 2026
9 checks passed
@frigini frigini deleted the update-packages-refactor-tests branch February 18, 2026 13:10
@coderabbitai coderabbitai bot mentioned this pull request Mar 6, 2026
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.

1 participant