diff --git a/backend/src/ProCoderJi.Api/ProCoderJi.Api.csproj b/backend/src/ProCoderJi.Api/ProCoderJi.Api.csproj
index 64abc31..e33774d 100644
--- a/backend/src/ProCoderJi.Api/ProCoderJi.Api.csproj
+++ b/backend/src/ProCoderJi.Api/ProCoderJi.Api.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/backend/src/ProCoderJi.Api/packages.lock.json b/backend/src/ProCoderJi.Api/packages.lock.json
index 9ee392a..55e96e2 100644
--- a/backend/src/ProCoderJi.Api/packages.lock.json
+++ b/backend/src/ProCoderJi.Api/packages.lock.json
@@ -83,9 +83,12 @@
},
"System.Security.Cryptography.Pkcs": {
"type": "Direct",
- "requested": "[10.0.15, )",
- "resolved": "10.0.15",
- "contentHash": "4jEv/lXDuQkh60lPU3hlwASErXdv1ZMKmsxVuBfZWiVKT5Q2QGo58kTa6rN519+PU+m4Hsj1m3yT8fN+Xw0XZw=="
+ "requested": "[11.0.0, )",
+ "resolved": "11.0.0",
+ "contentHash": "G8mTjSWrwaPJ2bJRbKuI4ZqdKUYcANK0KtNH3s8/va3nXiF/Pk/yhv2R17rv5PBKJO5+ZXDyhTnZXh0W9v0J8w==",
+ "dependencies": {
+ "System.Formats.Asn1": "11.0.0"
+ }
},
"Azure.Core": {
"type": "Transitive",
@@ -477,6 +480,11 @@
"System.Security.Cryptography.ProtectedData": "9.0.11"
}
},
+ "System.Formats.Asn1": {
+ "type": "Transitive",
+ "resolved": "11.0.0",
+ "contentHash": "RSIrJ7D8gEHykZWTfS/r9tz/G5YpxIQAaFFXSLLHhVaRed+/26KvqaXvUtqqMJMlNjubAcMvf3UJ+E6ABT8AWw=="
+ },
"System.IdentityModel.Tokens.Jwt": {
"type": "Transitive",
"resolved": "7.7.1",
diff --git a/backend/tests/ProCoderJi.Api.Tests/packages.lock.json b/backend/tests/ProCoderJi.Api.Tests/packages.lock.json
index b7a7b50..7984f83 100644
--- a/backend/tests/ProCoderJi.Api.Tests/packages.lock.json
+++ b/backend/tests/ProCoderJi.Api.Tests/packages.lock.json
@@ -724,6 +724,11 @@
"resolved": "10.0.15",
"contentHash": "d1ynyO/BvCyi8SI1m6/xASazxrZm20V/mTDJay4qmL947RsA5MEiMk1JWvafw6JX005VVBAHvjWQP1dRRBvYKw=="
},
+ "System.Formats.Asn1": {
+ "type": "Transitive",
+ "resolved": "11.0.0",
+ "contentHash": "RSIrJ7D8gEHykZWTfS/r9tz/G5YpxIQAaFFXSLLHhVaRed+/26KvqaXvUtqqMJMlNjubAcMvf3UJ+E6ABT8AWw=="
+ },
"System.IdentityModel.Tokens.Jwt": {
"type": "Transitive",
"resolved": "7.7.1",
@@ -740,8 +745,11 @@
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
- "resolved": "10.0.15",
- "contentHash": "4jEv/lXDuQkh60lPU3hlwASErXdv1ZMKmsxVuBfZWiVKT5Q2QGo58kTa6rN519+PU+m4Hsj1m3yT8fN+Xw0XZw=="
+ "resolved": "11.0.0",
+ "contentHash": "G8mTjSWrwaPJ2bJRbKuI4ZqdKUYcANK0KtNH3s8/va3nXiF/Pk/yhv2R17rv5PBKJO5+ZXDyhTnZXh0W9v0J8w==",
+ "dependencies": {
+ "System.Formats.Asn1": "11.0.0"
+ }
},
"System.Security.Cryptography.ProtectedData": {
"type": "Transitive",
@@ -810,7 +818,7 @@
"Microsoft.EntityFrameworkCore.Sqlite": "[10.0.15, )",
"MongoDB.Driver": "[3.13.0, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )",
- "System.Security.Cryptography.Pkcs": "[10.0.15, )"
+ "System.Security.Cryptography.Pkcs": "[11.0.0, )"
}
}
}
diff --git a/backend/tests/ProCoderJi.BrowserHost/packages.lock.json b/backend/tests/ProCoderJi.BrowserHost/packages.lock.json
index 4e7837e..efd2218 100644
--- a/backend/tests/ProCoderJi.BrowserHost/packages.lock.json
+++ b/backend/tests/ProCoderJi.BrowserHost/packages.lock.json
@@ -353,6 +353,11 @@
"System.Security.Cryptography.ProtectedData": "9.0.11"
}
},
+ "System.Formats.Asn1": {
+ "type": "Transitive",
+ "resolved": "11.0.0",
+ "contentHash": "RSIrJ7D8gEHykZWTfS/r9tz/G5YpxIQAaFFXSLLHhVaRed+/26KvqaXvUtqqMJMlNjubAcMvf3UJ+E6ABT8AWw=="
+ },
"System.IdentityModel.Tokens.Jwt": {
"type": "Transitive",
"resolved": "7.7.1",
@@ -369,8 +374,11 @@
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
- "resolved": "10.0.15",
- "contentHash": "4jEv/lXDuQkh60lPU3hlwASErXdv1ZMKmsxVuBfZWiVKT5Q2QGo58kTa6rN519+PU+m4Hsj1m3yT8fN+Xw0XZw=="
+ "resolved": "11.0.0",
+ "contentHash": "G8mTjSWrwaPJ2bJRbKuI4ZqdKUYcANK0KtNH3s8/va3nXiF/Pk/yhv2R17rv5PBKJO5+ZXDyhTnZXh0W9v0J8w==",
+ "dependencies": {
+ "System.Formats.Asn1": "11.0.0"
+ }
},
"System.Security.Cryptography.ProtectedData": {
"type": "Transitive",
@@ -446,7 +454,7 @@
"Microsoft.EntityFrameworkCore.Sqlite": "[10.0.15, )",
"MongoDB.Driver": "[3.13.0, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )",
- "System.Security.Cryptography.Pkcs": "[10.0.15, )"
+ "System.Security.Cryptography.Pkcs": "[11.0.0, )"
}
},
"procoderji.api.tests": {
diff --git a/docs/maintainer-guide.md b/docs/maintainer-guide.md
index ab5a515..197b481 100644
--- a/docs/maintainer-guide.md
+++ b/docs/maintainer-guide.md
@@ -101,6 +101,13 @@ Merge one overlapping dependency change at a time. Let remaining branches refres
their current diff and CI. Close a superseded update only after confirming that its changes are
already included. Keep security updates visible; fewer routine PRs should not hide an urgent fix.
+For NuGet updates, refresh the complete solution with
+`dotnet restore backend/ProCoderJi.slnx --force-evaluate`, then verify
+`dotnet restore backend/ProCoderJi.slnx --locked-mode`. API or test dependencies also affect
+referencing projects, including `backend/tests/ProCoderJi.BrowserHost/`. Commit every changed
+`packages.lock.json` so clean CI restores use the same graph. Check the collector's required
+Test SDK version when updating Coverlet, and verify that CI records executed API lines.
+
Follow [Security notes](security.md) for current known findings. Do not use `npm audit fix --force`,
unrelated downgrades or broad overrides just to obtain a clean summary. New runtime dependencies
need a concrete use and a discussion of their maintenance cost.