fix(tests): drop orphan ListenerExecuteAsyncTests + uppercase XmlContent const#21
Conversation
…ent const Unblocks Compile target which was failing with: - AL0115 at ListenerExecuteAsyncTests.cs:254 (empty catch in ListenerStreams helper) - IDE1006 at ReportProcessorTests.cs:554 (const must be PascalCase) The whole ListenerExecuteAsyncTests.cs file is orphaned by ListenerLifecycleTests.cs which fully supersedes it (leftover from PR #16 rebase). ListenerStreams helper is only referenced inside that same file, so deletion is self-contained. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
📝 WalkthroughSummary by CodeRabbitRelease Notes
WalkthroughCoordinated bulk upgrade across framework versions, NuGet central package management, GitHub Actions tooling, container image tags, and SDK versions to maintain alignment across development and CI environments. ChangesDependency and Infrastructure Bulk Update
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
✨ Simplify code
Comment |
There was a problem hiding this comment.
Pull request overview
This PR removes an obsolete listener test file and fixes a constant naming violation in report processor tests to restore backend build/test health.
Changes:
- Deleted orphaned
ListenerExecuteAsyncTests.cs, superseded byListenerLifecycleTests.cs. - Renamed a local XML content constant to PascalCase in
ReportProcessorTests.cs.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
PaperlessREST.Tests/Unit/ReportProcessorTests.cs |
Updates a local const string name to satisfy C# naming rules. |
PaperlessREST.Tests/Unit/ListenerExecuteAsyncTests.cs |
Removes superseded listener ExecuteAsync tests and their private helper. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 0 |
| Duplication | 0 |
AI Reviewer: first review requested successfully. AI can make mistakes. Always validate suggestions.
TIP This summary will be updated as you push new changes.
There was a problem hiding this comment.
Pull Request Overview
This maintenance PR restores CI pipeline health by eliminating empty catch block warnings and resolving a PascalCase naming violation. Codacy analysis indicates the project remains up to standards with zero new issues. No critical flaws, security risks, or logic gaps were identified by the review agents.
Test suggestions
- Verify ReportProcessorTests.cs compiles and runs after the constant renaming.
- Ensure the removal of ListenerExecuteAsyncTests.cs does not leave broken references in the test project.
TIP Improve review quality by adding custom instructions
TIP How was this review? Give us feedback
Centralized "update every single version" sweep across the four version files.
NuGet (Version.props + Directory.Packages.props):
- Microsoft.* runtime line: 10.0.0 → 10.0.8 (EF Core, AspNetCore.OpenApi, Extensions.Hosting/Logging/Options, AspNetCore.Mvc.Testing)
- Microsoft.Extensions testing/telemetry (split out to own var): 10.0.0 → 10.6.0
- Npgsql 10.0.0 → 10.0.2; Npgsql.EFCore.PostgreSQL (split out): 10.0.0 → 10.0.1
- Asp.Versioning.* 8.1.x → 10.0.0 (aligns with .NET 10)
- Testcontainers.* 4.9.0 → 4.11.0
- Elastic.Clients.Elasticsearch 9.2.2 → 9.4.0
- Testably.Abstractions.Testing 5.0.1 → 6.3.0 (major)
- Scalar.AspNetCore 2.11.0 → 2.14.14
- ErrorOr 2.0.1 → 2.1.1
- xunit.v3.mtp-v2 3.2.1 → 3.2.2
- Microsoft.Testing.Extensions.CodeCoverage 18.1.0 → 18.6.2
- Microsoft.Testing.Extensions.TrxReport 2.0.2 → 2.2.3
- Testably.Abstractions 10.0.0 → 10.2.0
- CreatePdf.NET 3.0.3 → 3.0.4
- DotNetEnv 3.1.1 → 3.2.0
- Security pins: NuGet.Packaging 7.3.1 → 7.6.0, System.Security.Cryptography.Xml 10.0.7 → 10.0.8
Docker images (.env.test + WorkerTestBase.cs + SharedRestContainerFixture.cs):
- elasticsearch: 9.1.3 → 9.4.1 (testing the ES-9-quirk theory for the MultipleDocuments_SearchCorrectly flake)
- rabbitmq: 4.1.4-management → 4.3.0-management
- minio: RELEASE.2025-07-23 → RELEASE.2025-09-07
- postgres: kept at floating 17-alpine
Also synced SharedRestContainerFixture.cs C# defaults which had drifted (postgres:16, rabbitmq:3.13).
Toolchain:
- ANcpLua.NET.Sdk{,.Web,.Test}: 3.4.29 → 3.4.32 (global.json)
- pnpm: 10.30.2 → 11.1.2 (package.json + CI corepack lines)
- actions/checkout@v4 → v6
- actions/setup-dotnet@v4 → v5
- actions/cache@v4 → v5
- actions/setup-node@v4 → v6
- codecov/codecov-action@v5 → v6
Held:
- actions/upload-artifact@v4 (v7 has breaking immutability changes; needs migration)
- Mapster.DependencyInjection 1.0.1 (10.0.7 is a calendar-versioning shift; needs release-notes review)
- Hangfire.PostgreSql 1.21.1 (current pin is ahead of nuget.org search result; preserved)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CI on a1cd535 surfaced four issues from the en-masse bump: 1. EF Core MSB3277 conflict — Hangfire.PostgreSql 1.21.1 pulls EF Core Relational 10.0.4, conflicting with our 10.0.8 pin. Added direct PackageVersion for Microsoft.EntityFrameworkCore.Relational so CentralPackageTransitivePinningEnabled force-unifies to 10.0.8. 2. Testcontainers 4.11.0 deprecated parameterless builder constructors (CS0618 errors on ElasticsearchBuilder(), MinioBuilder(), RabbitMqBuilder(), PostgreSqlBuilder()). Switched to the image-parameter constructor form per the migration note at testcontainers/testcontainers-dotnet#1470 in both WorkerTestBase.cs and SharedRestContainerFixture.cs. 3. Microsoft.Testing.Platform version skew (CS1705) — TrxReport 2.2.3 needs Platform 2.2.3 but xunit.v3.mtp-v2 3.2.2 only ships Platform 2.1.0. Pinned Microsoft.Testing.Platform to match TrxReport via transitive pinning. 4. pnpm 11 strict mode errors on ignored build scripts (ERR_PNPM_IGNORED_BUILDS). Whitelisted the four Angular native build deps (@parcel/watcher, esbuild, lmdb, msgpackr-extract) via pnpm.onlyBuiltDependencies in PaperlessUI.Angular/package.json. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| <MicrosoftEntityFrameworkCoreVersion>10.0.8</MicrosoftEntityFrameworkCoreVersion> | ||
| <MicrosoftAspNetCoreVersion>10.0.8</MicrosoftAspNetCoreVersion> | ||
| <MicrosoftAspNetCoreMvcTestingVersion>10.0.8</MicrosoftAspNetCoreMvcTestingVersion> | ||
| <MicrosoftExtensionsVersion>10.0.8</MicrosoftExtensionsVersion> | ||
| <!-- Testing/telemetry extensions follow a faster cadence than the runtime --> | ||
| <MicrosoftExtensionsTestingVersion>10.6.0</MicrosoftExtensionsTestingVersion> | ||
| <NpgsqlVersion>10.0.2</NpgsqlVersion> | ||
| <NpgsqlEntityFrameworkCoreVersion>10.0.1</NpgsqlEntityFrameworkCoreVersion> |
Two bumps were incompatible with the SDK / ecosystem state and got reverted: - Microsoft.Testing.Extensions.TrxReport 2.2.3 → 2.0.2. TrxReport 2.2.3 needs Microsoft.Testing.Platform 2.2.3, but the .NET 10 SDK (10.0.300) implicitly references Platform 2.1.0, and NU1009 blocks any attempt to add a PackageVersion override for an implicitly-referenced package under Central Package Management. Held until xunit.v3.mtp-v2 ships with Platform 2.2.3+ or the SDK band moves. - pnpm 10.30.2 → 11.1.2 reverted; the pnpm.onlyBuiltDependencies whitelist I added did not satisfy pnpm 11's now-fatal ERR_PNPM_IGNORED_BUILDS for @parcel/watcher / esbuild / lmdb / msgpackr-extract. Held until the Angular toolchain is reapproved end-to-end (post-install approve-builds flow + lockfile regen) on a quiet branch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Directory.Packages.props`:
- Around line 41-43: Directory.Packages.props currently uses LF line endings but
must use CRLF per guidelines; update the file so its line endings are CRLF
(CR+LF) without changing the content (keep the PackageVersion entries for
Microsoft.Extensions.Diagnostics.Testing,
Microsoft.Extensions.Telemetry.Abstractions,
Microsoft.Extensions.TimeProvider.Testing and the use of
$(MicrosoftExtensionsTestingVersion) intact). Ensure your editor or git config
converts the file to CRLF (or commit a conversion) so the repository enforces
CRLF for this file.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 499ded42-a1fa-459d-9472-be9d6c006364
📒 Files selected for processing (4)
Directory.Packages.propsPaperlessREST.Tests/Integration/SharedRestContainerFixture.csPaperlessServices.Tests/Integration/WorkerTestBase.csPaperlessUI.Angular/package.json
📜 Review details
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: copilot-pull-request-reviewer
- GitHub Check: Codacy Static Code Analysis
🧰 Additional context used
📓 Path-based instructions (4)
**/package.json
📄 CodeRabbit inference engine (CLAUDE.md)
In pnpm scripts, omit the
--separator; pass framework-native flags by editingpackage.jsonscripts or setting framework defaults (pnpm 10 passes--literally)
Files:
PaperlessUI.Angular/package.json
**/*.cs
📄 CodeRabbit inference engine (.editorconfig)
**/*.cs: Do not qualify event, field, method, and property access with 'this.' in C# code
Use predefined types (like int, string) instead of BCL types (like Int32, String) in C#
Always use parentheses for clarity in arithmetic and relational binary operators in C#
Require explicit accessibility modifiers for non-interface members in C#
Prefer coalesce expressions, collection initializers, null propagation, and object initializers in C#
Prefer auto-properties and compound assignments in C#
Prefer conditional expressions over assignment and return statements in C#
Mark fields as readonly when possible in C#
Treat all unused parameters as code quality issues in C#
Use explicit types instead of 'var' in C# unless type is apparent
Prefer expression-bodied members for accessors, indexers, lambdas, methods, and properties in C#
Use pattern matching instead of 'as' with null checks and 'is' with cast checks in C#
Prefer switch expressions over traditional switch statements in C#
Use conditional delegate calls in C# to avoid null reference exceptions
Prefer static local functions over instance local functions in C#
Use modifier order: public, private, protected, internal, file, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, required, volatile, async in C#
Always use braces for code blocks in C#
Prefer file-scoped namespaces in C#
Prefer implicit object creation when type is apparent in C#
Prefer index and range operators in C#
Place 'using' directives outside of namespace declarations in C#
Always place opening brace on new line before catch, else, finally, and members in C#
Indent block contents and case contents in C#
Add space after comma, before and after binary operators, and after colon in inheritance clause in C#
Do not add space after dot, cast, or before open square brackets in C#
Name interfaces with 'I' prefix using PascalCase in C#
Name types (classes, structs, enums) using PascalCase in C#
Name non-field members (properties, events...
Files:
PaperlessREST.Tests/Integration/SharedRestContainerFixture.csPaperlessServices.Tests/Integration/WorkerTestBase.cs
PaperlessServices.Tests/Integration/**/*.cs
📄 CodeRabbit inference engine (CLAUDE.md)
Mock
ITextSummarizerin integration tests withFakeTextSummarizer; do not use the real Gemini API even with placeholder keys
Files:
PaperlessServices.Tests/Integration/WorkerTestBase.cs
*
📄 CodeRabbit inference engine (.editorconfig)
*: Use tab indentation with size of 4 spaces for all files
Use CRLF line endings and insert a final newline in all files
Files:
Directory.Packages.props
🔇 Additional comments (5)
PaperlessServices.Tests/Integration/WorkerTestBase.cs (1)
31-46: LGTM!Directory.Packages.props (2)
28-30: ⚡ Quick winRebinding is intentional. NpgsqlVersion (10.0.2) and NpgsqlEntityFrameworkCoreVersion (10.0.1) track different version lines in Version.props.
27-28: ⚡ Quick winVerify that Version.props defines MicrosoftEntityFrameworkCoreVersion to 10.0.8.
Line 27-28 pins MicrosoftEntityFrameworkCoreVersion correctly to 10.0.8 (confirmed in Version.props). However, the second transitive pin target requires clarification: MicrosoftTestingExtensionsTrxReportVersion is currently set to 2.0.2 in Version.props, not 2.2.3. Confirm whether this version is correct or whether a version conflict exists that mirrors the EF Core situation on line 27-28.
PaperlessREST.Tests/Integration/SharedRestContainerFixture.cs (1)
30-48: ⚡ Quick winConstructor-based image specification is the current standard Testcontainers API.
The pattern used here (
new PostgreSqlBuilder(postgresImage), etc.) is the recommended approach in recent Testcontainers .NET versions. Parameterless constructors have been deprecated to encourage explicit image pinning for supply chain security and reproducibility. The codebase is correctly aligned with this API design.PaperlessUI.Angular/package.json (1)
16-24: 🏗️ Heavy liftThe referenced code snippet does not exist in the current package.json.
The file currently specifies
pnpm@10.30.2(line 17), not 11.1.2, and contains noonlyBuiltDependenciesconfiguration at lines 16–24. The snippet provided does not match the actual file content. If this is reviewing a pending change, resubmit with the actual package.json state or clarify the target state.> Likely an incorrect or invalid review comment.
| <PackageVersion Include="Microsoft.Extensions.Diagnostics.Testing" Version="$(MicrosoftExtensionsTestingVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Telemetry.Abstractions" Version="$(MicrosoftExtensionsTestingVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="$(MicrosoftExtensionsTestingVersion)" /> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check Version.props for the split Microsoft.Extensions version properties
echo "=== MicrosoftExtensionsVersion and MicrosoftExtensionsTestingVersion in Version.props ==="
rg -n '(MicrosoftExtensionsVersion|MicrosoftExtensionsTestingVersion)' Version.props
echo ""
echo "=== Verify they have different version cadences ==="
cat Version.props | grep -E '<(MicrosoftExtensionsVersion|MicrosoftExtensionsTestingVersion)>'Repository: ANcpLua/Paperless
Length of output: 509
🏁 Script executed:
#!/bin/bash
# Verify Directory.Packages.props structure and lines around 41-43
echo "=== Directory.Packages.props lines 38-45 ==="
sed -n '38,45p' Directory.Packages.props | cat -A
echo ""
echo "=== Check file line ending type ==="
file Directory.Packages.props
echo ""
echo "=== Verify the full context of PackageVersion entries ==="
sed -n '40,43p' Directory.Packages.propsRepository: ANcpLua/Paperless
Length of output: 1489
Fix line ending compliance: Directory.Packages.props uses LF but requires CRLF.
The version split is justified. Version.props defines MicrosoftExtensionsTestingVersion as 10.6.0, distinct from MicrosoftExtensionsVersion (10.0.8), supporting the documented faster cadence. However, the file currently uses Unix LF line endings instead of the required CRLF per coding guidelines.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@Directory.Packages.props` around lines 41 - 43, Directory.Packages.props
currently uses LF line endings but must use CRLF per guidelines; update the file
so its line endings are CRLF (CR+LF) without changing the content (keep the
PackageVersion entries for Microsoft.Extensions.Diagnostics.Testing,
Microsoft.Extensions.Telemetry.Abstractions,
Microsoft.Extensions.TimeProvider.Testing and the use of
$(MicrosoftExtensionsTestingVersion) intact). Ensure your editor or git config
converts the file to CRLF (or commit a conversion) so the repository enforces
CRLF for this file.
Missed in the previous Testcontainers migration pass — DatabaseFixture still used the deprecated PostgreSqlBuilder() parameterless ctor (CS0618). Also sync the postgres default tag with .env.test (17-alpine instead of the stale 16-alpine). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| <MicrosoftEntityFrameworkCoreVersion>10.0.8</MicrosoftEntityFrameworkCoreVersion> | ||
| <MicrosoftAspNetCoreVersion>10.0.8</MicrosoftAspNetCoreVersion> | ||
| <MicrosoftAspNetCoreMvcTestingVersion>10.0.8</MicrosoftAspNetCoreMvcTestingVersion> | ||
| <MicrosoftExtensionsVersion>10.0.8</MicrosoftExtensionsVersion> | ||
| <!-- Testing/telemetry extensions follow a faster cadence than the runtime --> | ||
| <MicrosoftExtensionsTestingVersion>10.6.0</MicrosoftExtensionsTestingVersion> | ||
| <NpgsqlVersion>10.0.2</NpgsqlVersion> | ||
| <NpgsqlEntityFrameworkCoreVersion>10.0.1</NpgsqlEntityFrameworkCoreVersion> |
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/ci.yml:
- Line 35: Add documentation comments in the CI workflow near the uses:
actions/setup-dotnet@v5 and uses: actions/cache@v5 steps stating the minimum
GitHub Actions runner requirement (v2.327.1+) so the dependency is explicit; in
the frontend jobs where uses: actions/setup-node@v6 is used, verify and either
disable setup-node's automatic npm caching or explicitly configure it so it does
not conflict with your explicit cache: pnpm configuration (ensure the cache
key/strategy for pnpm remains the authoritative cache); lastly add a short note
that actions/checkout@v6 and codecov/codecov-action@v6 have no breaking changes.
In `@Directory.Packages.props`:
- Around line 27-30: The modified XML lines that add PackageVersion entries for
Microsoft.EntityFrameworkCore.Relational, Npgsql, and
Npgsql.EntityFrameworkCore.PostgreSQL are space-indented; update those changed
lines (and the other reported blocks around the same change) to use a single tab
character for each indent level instead of spaces so the file adheres to the
repo rule "Use tab indentation"; ensure you replace leading spaces with tabs
only on the modified XML elements (the <PackageVersion Include="..."
Version="..."/> lines) and leave the rest unchanged.
In `@PaperlessREST.Tests/Integration/DatabaseFixture.cs`:
- Line 24: The code currently sets postgresImage from
Environment.GetEnvironmentVariable("POSTGRES_IMAGE") but only falls back on
null; update the assignment so blank or whitespace values are treated as unset
(use string.IsNullOrWhiteSpace on the environment value) and fall back to
"postgres:17-alpine". Locate the variable postgresImage (in the DatabaseFixture
constructor/initialization) and replace the direct GetEnvironmentVariable usage
with a check that uses string.IsNullOrWhiteSpace to decide whether to use the
default image name.
In `@Version.props`:
- Line 33: The TestablyAbstractionsTestingVersion property is set to a
non-existent 6.3.0 which will break NuGet restore; update the
TestablyAbstractionsTestingVersion value to a published release (e.g., 6.0.1)
that supports the test dependencies, then run a restore and the tests that
reference MockFileSystem in ReportProcessorTests.cs and
BatchOrchestratorTests.cs to confirm compatibility; if features used by those
tests require a newer release, pick the correct published version instead and
update the single TestablyAbstractionsTestingVersion entry accordingly.
- Around line 15-16: Add or verify the Asp.Versioning.OpenApi package entry in
Version.props because Asp.Versioning 10.0.0 requires Asp.Versioning.OpenApi to
bridge API versioning with ASP.NET Core 10; either add a new MSBuild property
like AspVersioningOpenApiVersion set to the compatible rc.1 version to be
consumed by package references, or confirm that OpenAPI documents are already
correctly tagged with API version metadata without that package; update
references that use AspVersioningHttpClientVersion and
AspVersioningMvcApiExplorerVersion to also consume the new
AspVersioningOpenApiVersion property.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 94d7ac6a-76b5-4d6f-85b1-cfae9e11c166
📒 Files selected for processing (4)
.github/workflows/ci.ymlDirectory.Packages.propsPaperlessREST.Tests/Integration/DatabaseFixture.csVersion.props
📜 Review details
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: copilot-pull-request-reviewer
- GitHub Check: Codacy Static Code Analysis
- GitHub Check: Build & Test (backend)
🧰 Additional context used
📓 Path-based instructions (3)
**/*.cs
📄 CodeRabbit inference engine (.editorconfig)
**/*.cs: Do not qualify event, field, method, and property access with 'this.' in C# code
Use predefined types (like int, string) instead of BCL types (like Int32, String) in C#
Always use parentheses for clarity in arithmetic and relational binary operators in C#
Require explicit accessibility modifiers for non-interface members in C#
Prefer coalesce expressions, collection initializers, null propagation, and object initializers in C#
Prefer auto-properties and compound assignments in C#
Prefer conditional expressions over assignment and return statements in C#
Mark fields as readonly when possible in C#
Treat all unused parameters as code quality issues in C#
Use explicit types instead of 'var' in C# unless type is apparent
Prefer expression-bodied members for accessors, indexers, lambdas, methods, and properties in C#
Use pattern matching instead of 'as' with null checks and 'is' with cast checks in C#
Prefer switch expressions over traditional switch statements in C#
Use conditional delegate calls in C# to avoid null reference exceptions
Prefer static local functions over instance local functions in C#
Use modifier order: public, private, protected, internal, file, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, required, volatile, async in C#
Always use braces for code blocks in C#
Prefer file-scoped namespaces in C#
Prefer implicit object creation when type is apparent in C#
Prefer index and range operators in C#
Place 'using' directives outside of namespace declarations in C#
Always place opening brace on new line before catch, else, finally, and members in C#
Indent block contents and case contents in C#
Add space after comma, before and after binary operators, and after colon in inheritance clause in C#
Do not add space after dot, cast, or before open square brackets in C#
Name interfaces with 'I' prefix using PascalCase in C#
Name types (classes, structs, enums) using PascalCase in C#
Name non-field members (properties, events...
Files:
PaperlessREST.Tests/Integration/DatabaseFixture.cs
.github/workflows/*.yml
📄 CodeRabbit inference engine (CLAUDE.md)
Omit the
token: ${{ secrets.CODECOV_TOKEN }}line in codecov CI action for public repos with tokenless OIDC upload
Files:
.github/workflows/ci.yml
*
📄 CodeRabbit inference engine (.editorconfig)
*: Use tab indentation with size of 4 spaces for all files
Use CRLF line endings and insert a final newline in all files
Files:
Directory.Packages.propsVersion.props
🔇 Additional comments (1)
Version.props (1)
28-28: ⚡ Quick winVerify SDK pinning claim for TrxReport.
The comment asserts that the .NET 10 SDK implicitly pins Microsoft.Testing.Platform at 2.1.0, preventing upgrade to TrxReport 2.2.3 via NU1009. This specific claim should be verified against current SDK behavior.
.NET 10 SDK Microsoft.Testing.Platform implicit version pin 2.1.0#!/bin/bash # Description: Check for NU1009 conflicts and Testing.Platform version constraints # Search for Testing.Platform references rg -nP --type=xml 'Microsoft\.Testing\.Platform' --iglob '**/Directory.*.props' --iglob '**/*.csproj' # Check global.json for SDK version cat global.json
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
| uses: actions/checkout@v6 |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
GitHub Actions checkout v6 breaking changes
💡 Result:
The release of actions/checkout v6 introduced a change in how credentials are persisted, but it is generally not a breaking change for most standard workflows [1][2]. The primary change in v6 is that the persist-credentials feature now stores credentials in a separate file under $RUNNER_TEMP instead of directly in the local.git/config file [3][4][2]. This update was implemented to improve credential security [2]. For the vast majority of users, no workflow changes are required [2]. Standard git commands such as git fetch and git push will continue to work automatically because the action automatically configures the necessary git includeIf directives to point to the new credential location [1][2]. There is one specific scenario where this change requires an update: if you are running authenticated git commands from within a Docker container action, you must use Actions Runner version v2.329.0 or later to ensure the runner can access the persisted credentials [4][2].
Citations:
- 1: Explain what the change in v6 means for the end user actions/checkout#2322
- 2: https://github.com/actions/checkout
- 3: https://github.com/actions/checkout/blob/HEAD/CHANGELOG.md
- 4: https://github.com/actions/checkout/releases
🌐 Web query:
GitHub Actions setup-dotnet v5 breaking changes
💡 Result:
The transition to setup-dotnet v5 introduced several breaking changes that require attention to ensure workflow compatibility [1][2]. Key breaking changes in v5 include: 1. Node.js Version Upgrade: The action was upgraded from Node.js 20 to Node.js 24 [2]. 2. Runner Compatibility: Due to the Node.js upgrade, workflows must run on GitHub Actions runners version v2.327.1 or later [1][2]. If your self-hosted runners are older than this version, the action will fail [1]. 3. Removal of Older.NET Versions: Support for certain older.NET versions was removed, and installation scripts were updated [1]. To ensure a smooth transition, verify that your runner environment meets the minimum version requirement (v2.327.1+) before updating to v5 [1][2]. For further details, you can review the full release notes on the official GitHub repository [1][3].
Citations:
- 1: https://github.com/actions/setup-dotnet/releases/tag/v5.0.0
- 2: https://github.com/actions/setup-dotnet
- 3: https://github.com/actions/setup-dotnet/releases
🌐 Web query:
GitHub Actions setup-node v6 breaking changes
💡 Result:
The transition to actions/setup-node v6 introduced several breaking changes and updates to improve workflow performance and configuration [1][2]. Key breaking changes in v6 include: 1. Automatic Caching for npm: Caching is now automatically enabled for npm projects when the packageManager field (either top-level or within devEngines) is set to npm in your package.json [2]. For other package managers like Yarn or pnpm, caching remains disabled by default and must be configured manually using the cache input [2]. 2. Removal of always-auth: The always-auth input has been removed [2]. This input was previously deprecated, and users should remove any references to it from their workflow configurations to avoid potential errors [2]. Additionally, users upgrading to v6 should be aware of the following: - Node.js Version Compatibility: As of mid-2026, GitHub Actions are transitioning to Node.js 24 [3]. While v6 is compatible with newer Node.js environments, ensure your workflows are updated to support these requirements, as older Node.js versions (such as Node 20) are being deprecated [3]. - Configuration Preferences: When using node-version-file: package.json, setup-node now prioritizes devEngines.runtime over engines.node [4][5]. To disable the new automatic caching behavior, you can explicitly set the cache input to false in your workflow file [2]: steps: - uses: actions/setup-node@v6 with: package-manager-cache: false
Citations:
- 1: https://github.com/actions/setup-node/releases/tag/v6.0.0
- 2: https://github.com/actions/setup-node
- 3: build: update all github actions away from deprecated node.js 20 processing/p5.js#8674
- 4: https://github.com/actions/setup-node/releases
- 5: https://github.com/actions/setup-node/releases/tag/v6.3.0
🌐 Web query:
GitHub Actions cache v5 breaking changes
💡 Result:
The transition to actions/cache@v5 does not introduce breaking changes to workflow logic, as the release is designed to be fully backward compatible [1][2]. However, there are critical infrastructure requirements that must be met to ensure the action functions correctly [1][2]. Key requirements for actions/cache@v5 include: 1. Node.js Runtime: The action runs on the Node.js 24 runtime [1][2]. 2. Runner Version: It requires a minimum Actions Runner version of 2.327.1 [1][2]. If you are using self-hosted runners, you must update them to this version or newer before upgrading to v5 to avoid workflow failures [1][2]. The v5 release was part of a broader update to the GitHub Actions cache backend service (v2 APIs), which was rolled out in early 2025 [1][2]. While the action itself is backward compatible, failing to meet the runner version requirement will result in errors [1][2]. Additionally, users should be aware that older versions of actions/cache (specifically v1 and v2) have been retired, and workflows using them will fail [3]. It is recommended to use the latest v5 releases to ensure compatibility with ongoing platform updates, such as the deprecation of Node.js 20 on GitHub Actions runners [4].
Citations:
- 1: https://github.com/actions/cache/blob/v5/README.md
- 2: https://github.com/actions/cache
- 3: https://github.blog/changelog/2024-12-05-notice-of-upcoming-releases-and-breaking-changes-for-github-actions/
- 4: GitHub is deprecating Node.js v20: Upgrade "actions/cache" to "v5". aquasecurity/trivy-action#528
🌐 Web query:
codecov-action v6 breaking changes and migration guide
💡 Result:
The v6 release of the codecov-action is primarily a major version update to support Node.js 24 [1]. There are no complex migration steps or functional breaking changes to the action's inputs or usage patterns; the primary consideration is environment compatibility [1]. Key details regarding the v6 release: 1. Node.js 24 Support: The primary change in v6 is the transition to Node.js 24 [1]. This may cause issues for users on older environments, such as certain versions of GitHub Enterprise Server (GHES) that do not yet support Node.js 24 [2]. If your environment does not support Node.js 24, you should remain on the v5 release [2]. 2. Migration Guide: There is no extensive migration guide required for v6 because it does not introduce changes to the action's arguments or configuration schema [3][1]. Users can update their workflow files by simply changing the version tag from @v5 to @v6 [4][3]. 3. Context on v5: If you are migrating from an older version (e.g., v4 or earlier) to v6, you should be aware of the changes introduced in v5, which include: - The use of the Codecov Wrapper to encapsulate the CLI [5][6]. - Deprecation of the file argument in favor of files [5][6]. - Deprecation of the plugin argument in favor of plugins [5][6]. - The addition of several new arguments, including binary, gcov_args, gcov_executable, gcov_ignore, gcov_include, report_type, skip_validation, and swift_project [5][6]. If you encounter issues after upgrading to v6, verify that your runner environment supports Node.js 24 [2][1]. If it does not, you can safely revert to the latest v5.x release [2].
Citations:
- 1: https://github.com/codecov/codecov-action/releases/tag/v6.0.0
- 2: [BUG] Breaking node24 change shipped to v5 tag codecov/codecov-action#1925
- 3: codecov/codecov-action@v5...v6
- 4: https://togithub.com/codecov/codecov-action
- 5: https://github.com/codecov/codecov-action/blob/v6/CHANGELOG.md
- 6: https://github.com/codecov/codecov-action
🏁 Script executed:
cat -n .github/workflows/ci.yml | head -150Repository: ANcpLua/Paperless
Length of output: 5983
Document minimum Actions Runner requirement for setup-dotnet and cache upgrades.
Both actions/setup-dotnet@v5 and actions/cache@v5 require Actions Runner v2.327.1 or later, but this dependency is not documented in the workflow. GitHub-hosted ubuntu-latest runners satisfy this requirement, but the silent dependency on a specific runner version should be documented. Additionally, actions/setup-node@v6 enables automatic npm caching when package.json contains a packageManager field—silent behavior change that requires verification this won't interfere with the explicit cache: pnpm configuration in the frontend jobs.
For reference: actions/checkout@v6 and codecov/codecov-action@v6 introduce no functional breaking changes and are straightforward upgrades.
Applies to: lines 40 (setup-dotnet), 45 (cache), 110, 131 (setup-node automatic caching).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/ci.yml at line 35, Add documentation comments in the CI
workflow near the uses: actions/setup-dotnet@v5 and uses: actions/cache@v5 steps
stating the minimum GitHub Actions runner requirement (v2.327.1+) so the
dependency is explicit; in the frontend jobs where uses: actions/setup-node@v6
is used, verify and either disable setup-node's automatic npm caching or
explicitly configure it so it does not conflict with your explicit cache: pnpm
configuration (ensure the cache key/strategy for pnpm remains the authoritative
cache); lastly add a short note that actions/checkout@v6 and
codecov/codecov-action@v6 have no breaking changes.
| <!-- Transitive pin: Hangfire.PostgreSql 1.21.1 pulls EF Core Relational 10.0.4 — force-unify to 10.0.8 via CentralPackageTransitivePinningEnabled --> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="$(MicrosoftEntityFrameworkCoreVersion)" /> | ||
| <PackageVersion Include="Npgsql" Version="$(NpgsqlVersion)" /> | ||
| <PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="$(NpgsqlVersion)" /> | ||
| <PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="$(NpgsqlEntityFrameworkCoreVersion)" /> |
There was a problem hiding this comment.
Use tab indentation on modified XML lines.
The modified entries are space-indented; this file must use tab indentation per repo rules. Please convert leading spaces to tabs on the changed lines to stay compliant.
As per coding guidelines "Use tab indentation with size of 4 spaces for all files".
Also applies to: 36-43, 85-86
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@Directory.Packages.props` around lines 27 - 30, The modified XML lines that
add PackageVersion entries for Microsoft.EntityFrameworkCore.Relational, Npgsql,
and Npgsql.EntityFrameworkCore.PostgreSQL are space-indented; update those
changed lines (and the other reported blocks around the same change) to use a
single tab character for each indent level instead of spaces so the file adheres
to the repo rule "Use tab indentation"; ensure you replace leading spaces with
tabs only on the modified XML elements (the <PackageVersion Include="..."
Version="..."/> lines) and leave the rest unchanged.
| public DatabaseFixture() | ||
| { | ||
| string postgresImage = Environment.GetEnvironmentVariable("POSTGRES_IMAGE") ?? "postgres:16-alpine"; | ||
| string postgresImage = Environment.GetEnvironmentVariable("POSTGRES_IMAGE") ?? "postgres:17-alpine"; |
There was a problem hiding this comment.
Handle blank POSTGRES_IMAGE the same as unset.
Line 24 only falls back on null. If CI defines POSTGRES_IMAGE as empty/whitespace, this passes an invalid image name and container startup fails.
Suggested fix
- string postgresImage = Environment.GetEnvironmentVariable("POSTGRES_IMAGE") ?? "postgres:17-alpine";
+ string? configuredPostgresImage = Environment.GetEnvironmentVariable("POSTGRES_IMAGE");
+ string postgresImage = string.IsNullOrWhiteSpace(configuredPostgresImage)
+ ? "postgres:17-alpine"
+ : configuredPostgresImage;📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| string postgresImage = Environment.GetEnvironmentVariable("POSTGRES_IMAGE") ?? "postgres:17-alpine"; | |
| string? configuredPostgresImage = Environment.GetEnvironmentVariable("POSTGRES_IMAGE"); | |
| string postgresImage = string.IsNullOrWhiteSpace(configuredPostgresImage) | |
| ? "postgres:17-alpine" | |
| : configuredPostgresImage; |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@PaperlessREST.Tests/Integration/DatabaseFixture.cs` at line 24, The code
currently sets postgresImage from
Environment.GetEnvironmentVariable("POSTGRES_IMAGE") but only falls back on
null; update the assignment so blank or whitespace values are treated as unset
(use string.IsNullOrWhiteSpace on the environment value) and fall back to
"postgres:17-alpine". Locate the variable postgresImage (in the DatabaseFixture
constructor/initialization) and replace the direct GetEnvironmentVariable usage
with a check that uses string.IsNullOrWhiteSpace to decide whether to use the
default image name.
| <AspVersioningHttpClientVersion>10.0.0</AspVersioningHttpClientVersion> | ||
| <AspVersioningMvcApiExplorerVersion>10.0.0</AspVersioningMvcApiExplorerVersion> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Find API versioning usage patterns and check for deprecated members
# Search for API versioning attribute usage
rg -nP --type=cs -C3 '\[ApiVersion\(|ApiVersionNeutral|MapToApiVersion'
# Search for versioning configuration in Program.cs or Startup.cs
rg -nP --type=cs -C5 'AddApiVersioning|WithApiVersioning'Repository: ANcpLua/Paperless
Length of output: 1109
🌐 Web query:
Asp.Versioning.Http.Client 10.0.0 breaking changes and migration guide
💡 Result:
The release of Asp.Versioning.Http.Client 10.0.0 introduces breaking changes primarily driven by the adoption of C# 14 extension properties, which replace several previous extension methods to provide more succinct and idiomatic code [1][2]. Breaking Changes in 10.0.0 The primary breaking change affecting the Http.Client library is the conversion of specific extension methods into extension properties [1]. If your code relies on these methods, you will need to update your syntax to use the new property accessors [1]. Specifically for Asp.Versioning.Http.Client: - The extension method ReadSunsetPolicy on HttpResponseMessage has been replaced by the extension property SunsetPolicy { get; } [1]. General Migration Notes - Extension Members: This change is part of a broader effort in the 10.0.0 release to align with.NET 10 and C# 14 capabilities [1]. While these changes are binary and source incompatible, they are generally straightforward to resolve by updating the syntax from method calls to property access [1][3]. - OpenAPI Changes: If you are also using the associated OpenAPI extensions, note that the x-api-versioning extension schema was updated between Preview 1 and Preview 2 to use a nested links property rather than a simple array [4]. - General Upgrade Path: As with any major version upgrade, ensure your project file references are updated to version 10.0.0 [5]. Because this release aligns with the.NET 10 LTS strategy, it is recommended to review the official release notes on the project's GitHub repository for any additional, highly specific customizations you may have implemented [1]. For most users, these changes will not require significant architectural refactoring unless you are performing deep customization or extending the API versioning library itself [1].
Citations:
- 1: https://github.com/dotnet/aspnet-api-versioning/releases/tag/v10.0.0-preview.1
- 2: .NET 10 Preview 1 dotnet/aspnet-api-versioning#1161
- 3: https://learn.microsoft.com/en-us/aspnet/core/breaking-changes/10/overview?view=aspnetcore-10.0
- 4: https://github.com/dotnet/aspnet-api-versioning/releases/tag/v10.0.0-preview.2
- 5: https://learn.microsoft.com/en-us/aspnet/core/migration/90-to-100?view=aspnetcore-10.0
🌐 Web query:
Asp.Versioning.Mvc.ApiExplorer 10.0.0 breaking changes and migration guide
💡 Result:
The release of Asp.Versioning.Mvc.ApiExplorer 10.0.0 introduces significant changes aligned with.NET 10, primarily focused on leveraging C# 14 extension properties and integrating deeply with the built-in ASP.NET Core OpenAPI support [1][2]. Breaking Changes The majority of breaking changes involve the conversion of extension methods to extension properties, which provides more succinct code [1][3]. Unless you are performing deep customization or extending the API Versioning library, these changes may not impact standard usage [1]. Key API Explorer changes include: - Extension methods such as GetApiVersion, SetApiVersion, IsDeprecated, GetSunsetPolicy, and SetSunsetPolicy have been replaced by extension properties (e.g., ApiVersion { get; set; }, IsDeprecated { get; }, SunsetPolicy { get; set; }) [1][3]. - Removal of obsolete types and members, including DefaultApiVersionGroupDescriptionProvider and the IServiceCollectionExtensions.EnableApiVersionBinding extension method (which is now supported without explicit registration) [1][3]. Migration and OpenAPI Integration The most significant architectural change in version 10.0.0 is the new, native integration with ASP.NET Core OpenAPI [2][4]. - New Package Requirement: You must now use the Asp.Versioning.OpenApi package to bridge API versioning with the built-in OpenAPI document transformer pipeline [5][2]. - Service Registration: You should call.AddOpenApi from the Asp.Versioning namespace after configuring API versioning [5][4]. Ensure.AddApiExplorer is called after.AddApiVersioning to ensure versioning information is correctly included in OpenAPI documents [5][4]. - Endpoint Configuration: Use app.MapOpenApi.WithDocumentPerVersion to automatically generate and register one OpenAPI document per API version [2][4]. - Swashbuckle Migration: If migrating from Swashbuckle, remove existing IConfigureOptions implementations that manually loop through IApiVersionDescriptionProvider, as well as AddSwaggerGen and UseSwagger calls [4]. When configuring, ensure your GroupNameFormat (e.g., "'v'VVV") is consistent with the URL patterns expected by your documentation UI (such as Scalar or Swagger UI) [4]. Note that Asp.Versioning.OpenAPI is currently released as a release candidate (rc.1) [6].
Citations:
- 1: https://github.com/dotnet/aspnet-api-versioning/releases/tag/v10.0.0-preview.1
- 2: https://startdebugging.net/2026/04/api-versioning-openapi-dotnet-10/
- 3: 10.0.0 Preview 1 dotnet/aspnet-api-versioning#1162
- 4: https://the-runtime.dev/articles/aspnet-api-versioning-openapi-dotnet-10/
- 5: https://devblogs.microsoft.com/dotnet/api-versioning-in-dotnet-10-applications/
- 6: https://github.com/dotnet/aspnet-api-versioning/releases/tag/v10.0.0
🏁 Script executed:
# Search for extension method usage that changed in 10.0.0
rg -nP --type=cs 'ReadSunsetPolicy|GetApiVersion\(|SetApiVersion\(|IsDeprecated|GetSunsetPolicy|SetSunsetPolicy' -C2
# Search for Swashbuckle usage (may need migration with new OpenAPI integration)
rg -nP --type=cs 'UseSwagger|AddSwaggerGen|SwaggerGen' -C2
# Search for removed types/members
rg -nP --type=cs 'DefaultApiVersionGroupDescriptionProvider|EnableApiVersionBinding' -C2Repository: ANcpLua/Paperless
Length of output: 43
🏁 Script executed:
# Check if Asp.Versioning.OpenApi is referenced in Version.props or project files
rg -nP 'Asp\.Versioning\.OpenApi|AspVersioningOpenApi'
# Check the full Version.props file to understand the complete versioning context
cat -n Version.props | head -60Repository: ANcpLua/Paperless
Length of output: 3605
🏁 Script executed:
# Get the complete AddApiExplorer configuration
rg -nP --type=cs -A20 'AddApiExplorer\(opts'
# Search for OpenAPI/Swagger endpoint registration
rg -nP --type=cs 'MapOpenApi|UseSwagger|MapSwagger|app\.Swagger|UseSwaggerUI' -C3
# Check for any Scalar or other OpenAPI documentation UI usage
rg -nP --type=cs 'UseScalar|MapScalar|AddScalar' -C2Repository: ANcpLua/Paperless
Length of output: 2517
Verify Asp.Versioning.OpenApi integration for API versioning 10.0.0.
The jump to 10.0.0 does introduce breaking changes (extension methods converted to properties, removal of obsolete types), but the codebase does not use the affected APIs. However, the 10.0.0 release requires the Asp.Versioning.OpenApi package to bridge API versioning with ASP.NET Core 10's native OpenAPI integration. This package is missing from Version.props. Add it with a compatible version (currently rc.1), or verify that OpenAPI documents are correctly tagged with versioning information without it.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@Version.props` around lines 15 - 16, Add or verify the Asp.Versioning.OpenApi
package entry in Version.props because Asp.Versioning 10.0.0 requires
Asp.Versioning.OpenApi to bridge API versioning with ASP.NET Core 10; either add
a new MSBuild property like AspVersioningOpenApiVersion set to the compatible
rc.1 version to be consumed by package references, or confirm that OpenAPI
documents are already correctly tagged with API version metadata without that
package; update references that use AspVersioningHttpClientVersion and
AspVersioningMvcApiExplorerVersion to also consume the new
AspVersioningOpenApiVersion property.
| <TestablyAbstractionsVersion>10.0.0</TestablyAbstractionsVersion> | ||
| <TestablyAbstractionsTestingVersion>5.0.1</TestablyAbstractionsTestingVersion> | ||
| <TestablyAbstractionsVersion>10.2.0</TestablyAbstractionsVersion> | ||
| <TestablyAbstractionsTestingVersion>6.3.0</TestablyAbstractionsTestingVersion> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Find Testably.Abstractions.Testing usage patterns
# Search for Testably testing usage (MockFileSystem, etc.)
rg -nP --type=cs -C3 'MockFileSystem|IFileSystem.*Mock|Testably\.Abstractions\.Testing'Repository: ANcpLua/Paperless
Length of output: 4867
🌐 Web query:
Testably.Abstractions.Testing 6.3.0 changelog breaking changes from 5.0.1
💡 Result:
As of May 16, 2026, there is no version 6.3.0 of the Testably.Abstractions.Testing NuGet package. The latest available version is 6.0.1, which was released on March 30, 2026 [1]. Because version 6.3.0 does not exist, there is no changelog or list of breaking changes for it. The library is currently in its 6.x release cycle, which followed the 5.x series [2][3][1]. If you are planning an upgrade from 5.0.1 to the current 6.x version, you should consult the official repository's release notes and migration guides for the 6.0.0 major release, as major version increments typically contain the breaking changes [2][4].
Citations:
- 1: https://www.nuget.org/packages/Testably.Abstractions.Testing/4.3.4
- 2: https://www.nuget.org/packages/Testably.Abstractions.Testing/6.0.0
- 3: https://www.nuget.org/packages/Testably.Abstractions.Testing/5.3.1
- 4: https://github.com/Testably/Testably.Abstractions
TestablyAbstractionsTestingVersion 6.3.0 does not exist.
Version 6.3.0 is not published. The latest available version is 6.0.1 (March 30, 2026). This version specification will fail NuGet restore. Confirm the intended version and update accordingly. The codebase has active test dependencies on MockFileSystem in ReportProcessorTests.cs and BatchOrchestratorTests.cs, so ensure the corrected version supports existing usage patterns.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@Version.props` at line 33, The TestablyAbstractionsTestingVersion property is
set to a non-existent 6.3.0 which will break NuGet restore; update the
TestablyAbstractionsTestingVersion value to a published release (e.g., 6.0.1)
that supports the test dependencies, then run a restore and the tests that
reference MockFileSystem in ReportProcessorTests.cs and
BatchOrchestratorTests.cs to confirm compatibility; if features used by those
tests require a newer release, pick the correct published version instead and
update the single TestablyAbstractionsTestingVersion entry accordingly.
Summary
PaperlessREST.Tests/Unit/ListenerExecuteAsyncTests.cs(259 lines) — orphaned byListenerLifecycleTests.cswhich fully supersedes it; the file's internalListenerStreamshelper is only referenced inside the same file, so removal is self-contained.const string xmlContent→XmlContentatReportProcessorTests.cs:554to satisfyIDE1006(other 24xmlContentoccurrences in the file are local non-const vars and remain camelCase).Why
mainCompile target has been failing on every push with:AL0115empty catch in theListenerStreams.SingleThenWaithelperIDE1006PascalCase rule on the constBoth are pre-existing issues; this PR is the minimum diff to make
Build & Test (backend)go green again so Codecov upload resumes.Test plan
Build & Test (backend)job green