diff --git a/SacsCoreUnitTests/SacsCoreUnitTests.csproj b/SacsCoreUnitTests/SacsCoreUnitTests.csproj index ba3c657..a84919e 100644 --- a/SacsCoreUnitTests/SacsCoreUnitTests.csproj +++ b/SacsCoreUnitTests/SacsCoreUnitTests.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 false diff --git a/SacsCoreWeb/SacsCoreWeb.csproj b/SacsCoreWeb/SacsCoreWeb.csproj index 08fede0..6325a3f 100644 --- a/SacsCoreWeb/SacsCoreWeb.csproj +++ b/SacsCoreWeb/SacsCoreWeb.csproj @@ -1,7 +1,7 @@ - + - net8.0 + net8.0;net10.0 Sacs diff --git a/SacsStandardAccounts/SacsStandardAccounts.csproj b/SacsStandardAccounts/SacsStandardAccounts.csproj index 357193e..3db7cdf 100644 --- a/SacsStandardAccounts/SacsStandardAccounts.csproj +++ b/SacsStandardAccounts/SacsStandardAccounts.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 Sarand.Net.Standard diff --git a/SacsStandardBase/SacsStandardBase.csproj b/SacsStandardBase/SacsStandardBase.csproj index f9dab15..e0e990f 100644 --- a/SacsStandardBase/SacsStandardBase.csproj +++ b/SacsStandardBase/SacsStandardBase.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 Sarand.Net.Standard diff --git a/SacsStandardDbas/SacsStandardDbas.csproj b/SacsStandardDbas/SacsStandardDbas.csproj index 0799354..89a2123 100644 --- a/SacsStandardDbas/SacsStandardDbas.csproj +++ b/SacsStandardDbas/SacsStandardDbas.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 Sarand.Net.Standard diff --git a/SacsStandardProc/SacsStandardProc.csproj b/SacsStandardProc/SacsStandardProc.csproj index b49affa..009cf2f 100644 --- a/SacsStandardProc/SacsStandardProc.csproj +++ b/SacsStandardProc/SacsStandardProc.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 Sarand.Net.Standard diff --git a/docs/component-reviews.md b/docs/component-reviews.md index a7e71ff..7e2abde 100644 --- a/docs/component-reviews.md +++ b/docs/component-reviews.md @@ -11,7 +11,7 @@ Last updated: 2026-09-10 | Component | Scope | Status | Date reviewed | Next steps | Notes | |---|---|---|---|---|---| -| `SaCommonVS.sln` | Pre-migration restore, Debug build, and tests | Baseline captured; passing with warnings | 2026-09-10 | Address the MailKit advisory and begin the coordinated .NET 10 migration. | SDK 10.0.401 restored and built the pre-isolation eight-project solution with 110 warnings and no errors. `SacsCoreUnitTests` passed 94 of 94 tests. MAUI 9 Android is out of support and MAUI API obsolescence warnings are tracked in the project-specific docs. | +| `SaCommonVS.sln` | .NET 8/.NET 10 migration build and tests | Multi-target stage complete; passing with warnings | 2026-09-10 | Address the dependency and .NET 10 warnings, then migrate BusinessMgr against the validated Common targets. | Five non-MAUI libraries and `SacsCoreUnitTests` target `net8.0;net10.0`. The supported solution builds with no errors, and 94 of 94 tests pass on each target. BusinessMgr still builds successfully against the .NET 8 outputs. MAUI remains on .NET 9 and is tracked in its project-specific docs. | | `SacsMobileXamarin` | Migration disposition | Isolated; retained for reference | 2026-09-10 | Keep outside the supported build unless a separately scoped resurrection or migration is approved. | Source is unchanged and available through `SaCommonVS.LegacyXamarin.sln`; see `docs/legacy-xamarin.md`. | | [`SacsMobileMaui`](../SacsMobileMaui/docs/component-reviews.md) | Project | Tracked in project docs | 2026-09-10 | Continue in the project component register and topic tracker. | Project-specific findings have been moved to `SacsMobileMaui/docs`. | | `SacsStandardBase/Base/Procs/SaProcess_Base.cs` | Class | In progress | 2026-09-09 | Complete the Process Base actions recorded in `topics.md`; review derived processes separately for cooperative polling. | Lifecycle state ownership and cancellation lock ordering were changed. Five focused tests pass. Remaining concerns include mixed sync/async execution, durable cancellation outcome, cancellation exception handling, disposal, and status synchronization. | diff --git a/docs/topics.md b/docs/topics.md index 7f56a61..5f8f89f 100644 --- a/docs/topics.md +++ b/docs/topics.md @@ -13,7 +13,8 @@ Last updated: 2026-09-10 | Priority | Topic | Date noted | Next step | Notes | |---|---|---|---|---| -| P1 | Prepare Common libraries for the coordinated .NET 10 migration | 2026-09-10 | Temporarily target `net8.0;net10.0` in applicable shared libraries and validate both targets before migrating downstream consumers. | SDK 10.0.401 is pinned. BusinessMgr still targets .NET 8 and consumes Common through direct project references. Remove the temporary .NET 8 targets only after all in-scope consumers have migrated. The separate MAUI migration is tracked under `SacsMobileMaui/docs/topics.md`. | +| P1 | Update vulnerable MailKit and MimeKit dependencies | 2026-09-10 | Select a patched compatible MailKit release, update the direct dependency, and rerun both target test suites plus downstream BusinessMgr validation. | Restore reports `NU1902` for MailKit 4.13.0 (`GHSA-9j88-vvj5-vhgr`) and its MimeKit 4.13.0 dependency (`GHSA-g7hc-96xr-gvvx`). Keep this security update distinct from the framework retargeting commit. | +| P2 | Resolve .NET 10 migration warnings in non-MAUI Common code | 2026-09-10 | Replace the obsolete `Rfc2898DeriveBytes` constructor, make the three `FileStream.Read` operations exact, and review removal of the redundant `Microsoft.Win32.Registry` package. | The .NET 10 build reports `SYSLIB0060`, three `CA2022` warnings, and `NU1510`. The cryptography change overlaps the existing encryption-hardening topic and requires compatibility tests. | | P1 | Prevent synchronous and asynchronous execution from overlapping in `SaProcess_Base` | 2026-09-09 | Route `RunProcess()` and `RunAsync()` through one guarded start operation and extend the lifecycle tests. | A synchronous call can currently reuse and dispose the asynchronous worker's task data. | | P2 | Retain cancellation as a completed process outcome | 2026-09-09 | Store a durable cancellation result until the next process reset and test post-completion state. | `IsInterrupted` currently loses token-based cancellation after task-data cleanup. | | P2 | Handle `OperationCanceledException` as cancellation | 2026-09-09 | Catch cancellation separately in `RunProcess()` and avoid recording it as an error. | The general exception handler currently consumes cancellation before `RunAsync()` can distinguish it. | @@ -50,3 +51,4 @@ Last updated: 2026-09-10 | Capture the pre-migration Common build and test baseline | 2026-09-10 | 2026-09-10 | 2026-09-10 | Using SDK 10.0.401, `dotnet restore SaCommonVS.sln` and the full Debug solution build succeeded. The build produced 110 warnings and no errors; most are repeated MAUI API obsolescence warnings across four targets, plus `NETSDK1202` for out-of-support MAUI 9 Android and `NU1902` for the moderate-severity MailKit 4.13.0 vulnerability. `SacsCoreUnitTests` passed 94 of 94 tests. | | Pin the Common .NET 10 SDK | 2026-09-10 | 2026-09-10 | 2026-09-10 | Added `global.json` for SDK 10.0.401 with `latestPatch` roll-forward and prerelease SDKs disabled. | | Isolate `SacsMobileXamarin` from the supported Common build | 2026-09-10 | 2026-09-10 | 2026-09-10 | Removed the project from `SaCommonVS.sln` while retaining all source. Added `SaCommonVS.LegacyXamarin.sln` and `docs/legacy-xamarin.md` for reference-only access. The project is outside the supported .NET 10 migration scope. | +| Prepare Common libraries for the coordinated .NET 10 migration | 2026-09-10 | 2026-09-10 | 2026-09-10 | `SacsStandardBase`, `SacsStandardDbas`, `SacsStandardProc`, `SacsCoreWeb`, `SacsStandardAccounts`, and `SacsCoreUnitTests` now target `net8.0;net10.0`. The supported solution builds both targets with no errors; 94 of 94 tests pass on each target. BusinessMgr continues to build successfully on .NET 8 against the temporary compatible outputs. New .NET 10 warnings are tracked separately. |