Bump library projects from net8.0 to net10.0#115
Conversation
.NET 8 is EOL November 2026; .NET 10 LTS is the long-term target. Library projects: NArk, NArk.Abstractions, NArk.Core, NArk.Scratchpad, NArk.Storage.EfCore, NArk.Swaps. Test projects already target net10.0 (per CLAUDE.md), so this removes the multi-TFM mismatch between libs and tests. Build verification: dotnet build NArk.sln -c Release -> 0 errors. Test verification: NArk.Tests -> 418/418 passed. Consumers can keep targeting any LTS framework that consumes net10 (net10 + later).
There was a problem hiding this comment.
Review: Approve ✅
Straightforward TFM bump — 6 .csproj files, one line each, net8.0 → net10.0. No code changes.
What I checked
Cross-repo impact: The primary downstream consumer (btcpay-arkade) references these libraries via git submodule + ProjectReference, not NuGet. btcpay-arkade itself already targets net10.0 for all its own projects (BTCPayServer.Plugins.ArkPayServer.csproj, ConfigBuilder.csproj, NArk.E2E.Tests.csproj). The submodule copy of the NArk libraries is still on net8.0 — this PR fixes that mismatch. No breakage.
NuGet packaging: None of the 6 library projects declare PackageId, GeneratePackageOnBuild, or IsPackable=true. These aren't published NuGet packages, so dropping net8.0 doesn't break any external consumers.
Internal consistency: Test projects (NArk.Tests, NArk.Tests.End2End, NArk.Transport.GrpcClient.Tests) already target net10.0. This PR aligns the libraries to match.
Protocol-critical code: No protocol logic touched. Pure build config change — no VTXO, signing, forfeit, round, or exit path code affected.
Multi-targeting consideration: Given these are submodule-consumed (not NuGet), single-targeting net10.0 is fine. No need for net8.0;net10.0.
CI is still pending — confirm green before merge.
🤖 Reviewed by Arkana
There was a problem hiding this comment.
Review: Approve ✅
Straightforward TFM bump — 6 .csproj files, one line each, net8.0 → net10.0. No code changes.
What I checked
Cross-repo impact: The primary downstream consumer (btcpay-arkade) references these libraries via git submodule + ProjectReference, not NuGet. btcpay-arkade itself already targets net10.0 for all its own projects (BTCPayServer.Plugins.ArkPayServer.csproj, ConfigBuilder.csproj, NArk.E2E.Tests.csproj). The submodule copy of the NArk libraries is still on net8.0 — this PR fixes that mismatch. No breakage.
NuGet packaging: None of the 6 library projects declare PackageId, GeneratePackageOnBuild, or IsPackable=true. These aren't published NuGet packages, so dropping net8.0 doesn't break any external consumers.
Internal consistency: Test projects (NArk.Tests, NArk.Tests.End2End, NArk.Transport.GrpcClient.Tests) already target net10.0. This PR aligns the libraries to match.
Protocol-critical code: No protocol logic touched. Pure build config change — no VTXO, signing, forfeit, round, or exit path code affected.
Multi-targeting consideration: Given these are submodule-consumed (not NuGet), single-targeting net10.0 is fine. No need for net8.0;net10.0.
CI is still pending — confirm green before merge.
🤖 Reviewed by Arkana
E2E failure is a net10 LINQ-interpreter regression, not the TFM bump per seThe unit-test job is green; the E2E job hits a net10-specific expression-interpreter constraint: In .NET 10 the Somewhere in the swap/intent query path ( Build & Unit Tests pass on net10 cleanly — the TFM bump itself is sound. Marking this PR blocked on resolving the EF Core query pattern; the consumer side (BTCPayApp) continues consuming NArk at master (net8) without issue via compat shims. |
Summary
net8.0tonet10.0:NArk,NArk.Abstractions,NArk.Core,NArk.Scratchpad,NArk.Storage.EfCore,NArk.Swapsnet10.0perCLAUDE.md.Verification
dotnet build NArk.sln -c Release→ 0 errorsdotnet test NArk.Tests→ 418 / 418 passedTest plan