This document describes every packable project: identity, contents, publish status, readiness, and recommended release sequencing.
Last audited: 2026-07-25
Local pack output (verified): artifacts/nupkg/
| PackageId | csproj version | nuget.org | Local pack | Recommendation |
|---|---|---|---|---|
| SafeWebCore | 1.3.5 |
Published (1.0.0–1.3.5) |
SafeWebCore.1.3.5.nupkg + .snupkg |
Do not republish 1.3.5. Ship next as 1.4.0 (or later) after promoting Unreleased work |
| SafeWebCore.FraudDetection | 1.0.0 |
Not published | SafeWebCore.FraudDetection.1.0.0.nupkg |
Primary new package candidate for first public release |
| SafeWebCore.Analyzers | 1.0.0-preview.1 |
Not published | SafeWebCore.Analyzers.1.0.0-preview.1.nupkg |
Publish as preview only |
| SafeWebCore.Testing | 1.0.0-preview.1 |
Not published | SafeWebCore.Testing.1.0.0-preview.1.nupkg |
Publish as preview only |
Non-packable (not NuGet candidates): test projects, examples, benchmarks.
From repo root:
dotnet pack src/SafeWebCore/SafeWebCore.csproj -c Release -o artifacts/nupkg
dotnet pack src/SafeWebCore.FraudDetection/SafeWebCore.FraudDetection.csproj -c Release -o artifacts/nupkg
dotnet pack src/SafeWebCore.Analyzers/SafeWebCore.Analyzers.csproj -c Release -o artifacts/nupkg
dotnet pack src/SafeWebCore.Testing/SafeWebCore.Testing.csproj -c Release -o artifacts/nupkgAudit pack results (2026-07-25):
| File | Approx. size |
|---|---|
SafeWebCore.1.3.5.nupkg |
~89 KB |
SafeWebCore.1.3.5.snupkg |
~27 KB |
SafeWebCore.FraudDetection.1.0.0.nupkg |
~51 KB |
SafeWebCore.Analyzers.1.0.0-preview.1.nupkg |
~10 KB |
SafeWebCore.Testing.1.0.0-preview.1.nupkg |
~8 KB |
| Field | Value |
|---|---|
| PackageId | SafeWebCore |
| Current csproj Version | 1.3.5 |
| Authors | MPCoreDeveloper |
| Company | Posseth Software |
| License | MIT (PackageLicenseExpression) |
| Project URL | https://github.com/MPCoreDeveloper/SafeWebCore |
| NuGet gallery | https://www.nuget.org/packages/SafeWebCore |
| Readme in package | PACKAGE.md (repo root) |
| Icon | icon.png |
| TFM | net10.0 |
| Symbols | snupkg enabled |
SafeWebCore.nuspec
PACKAGE.md
icon.png
lib/net10.0/SafeWebCore.dll
lib/net10.0/SafeWebCore.xml
Plus companion SafeWebCore.1.3.5.snupkg for symbols/SourceLink debugging.
ASP.NET Core middleware and helpers for security headers, full CSP Level 3 + Level 4-ready directives, nonces, TagHelpers, path policies, endpoint overrides, CSP reporting, and presets (StrictAPlus / Api / Mvc / Blazor / SpaReverseProxy).
dotnet add package SafeWebCore| Layer | State |
|---|---|
| nuget.org latest | 1.3.5 |
csproj <Version> |
1.3.5 |
| Workspace code | Contains Unreleased features (config binding, env helpers, diagnostics, metrics, …) documented in CHANGELOG.md |
Implication: packing the current workspace still produces SafeWebCore.1.3.5.nupkg, but the bits are not identical to a pure 1.3.5 release if Unreleased APIs are present. Before any publish:
- Decide the next SemVer (recommended 1.4.0 for the DX wave, or split 1.4 / 1.5 / 1.6 per roadmap).
- Bump
<Version>inSafeWebCore.csproj. - Move
CHANGELOG.md[Unreleased]into a dated section. - Update
PACKAGE.md“Current version” and release notes. - Promote
PublicAPI.Unshipped.txt→PublicAPI.Shipped.txtfor intentional new surface. - Never overwrite an already-published version on nuget.org.
- Full metadata (description, tags, license, repo, icon, readme)
- XML docs included
- Deterministic build + SourceLink flags
- Public API analyzers for compatibility
- Release notes embedded in nuspec metadata
- Version bump aligned with Unreleased features
-
PACKAGE.mdstill describes 1.3.5; refresh for next release - Broken doc links in
PACKAGE.mdstill point at olddocs/roadmap-v1.2.mdpaths (now underdocs/archive/) - CI pack + push workflow missing
- Git tags use
V1.x.0.0style; nuget versions use1.x.y— standardize tags (v1.4.0)
| Field | Value |
|---|---|
| PackageId | SafeWebCore.FraudDetection |
| Version | 1.0.0 |
| Authors | MPCoreDeveloper |
| Company | Posseth Software |
| License | MIT |
| Readme | src/SafeWebCore.FraudDetection/README.md |
| Icon | Missing |
| TFM | net10.0 |
| Symbols | Not enabled |
| nuget.org | Not listed |
SafeWebCore.FraudDetection.nuspec
README.md
lib/net10.0/SafeWebCore.FraudDetection.dll
lib/net10.0/SafeWebCore.FraudDetection.xml
Optional fraud module:
- Geo-cultural consistency detection (region-neutral, recommended)
- Legacy Western impersonation detection (compat)
- Pen-test / scanner detection + authorized bypass notifications
- Options + optional DB configuration store
- Optional
IGeoIpServiceenrichment IFraudEventSinkpipeline (logging + webhook helpers)- Opt-in metrics meter
SafeWebCore.FraudDetection
dotnet add package SafeWebCore.FraudDetectionDoes not depend on the SafeWebCore package — can be used alone.
| Check | Status |
|---|---|
| Builds Release, 0 warnings | Pass |
| Packs successfully | Pass |
| Tests pass (12) | Pass |
| Package README quality | Strong |
| XML docs generated | Pass |
| Public API baseline files present | Pass (still in adoption mode for RS0016/17) |
| Package icon | Fail — add icon.png pack item (can reuse root icon) |
| Symbol package / SourceLink | Fail — copy flags from core csproj |
PackageReleaseNotes |
Missing |
| Example app using the module | Missing |
| In solution test project for CI | Fraud tests not in .slnx |
| Changelog entry for 1.0.0 publish | Should be explicit before push |
| nuget.org listing | Not yet |
- Add package icon + optional SourceLink/symbols parity with core.
- Add
PackageReleaseNotesfor 1.0.0. - Ensure FraudDetection tests are in solution + CI.
- Confirm public API Unshipped entries intended for 1.0.0 are promoted/shipped as desired.
- Add a short “Getting started with FraudDetection” link from root README / docs index.
- Prefer an example or recipe showing registration +
Analyze+ sink. - Tag git appropriately; document multi-package versioning (core 1.x vs fraud 1.0.0).
dotnet nuget push artifacts/nupkg/SafeWebCore.FraudDetection.1.0.0.nupkg --source https://api.nuget.org/v3/index.json
Core is already at 1.3.5 while FraudDetection starts at 1.0.0. That is normal for a separate package identity. Do not force the same version number across packages unless you deliberately adopt lockstep versioning.
| Field | Value |
|---|---|
| PackageId | SafeWebCore.Analyzers |
| Version | 1.0.0-preview.1 |
| TFM | netstandard2.0 |
| Packaging style | Analyzer-only (IncludeBuildOutput=false) |
| DLL path in nupkg | analyzers/dotnet/cs/SafeWebCore.Analyzers.dll |
| Readme | src/SafeWebCore.Analyzers/README.md |
| nuget.org | Not listed |
SafeWebCore.Analyzers.nuspec
README.md
analyzers/dotnet/cs/SafeWebCore.Analyzers.dll
No lib/ folder (correct for pure analyzers).
| Id | Intent |
|---|---|
| SWC001 | Registration without middleware |
| SWC002 | Permanent report-only CSP |
| SWC003 | unsafe-inline without nonce |
| SWC004 | Overly broad CSP sources |
| Check | Status |
|---|---|
| Builds / packs | Pass |
| Analyzer packaging layout | Pass |
| Preview versioning | Pass |
| README documents rules | Pass |
| Dedicated analyzer tests | Gap |
| Icon / release notes | Optional for preview |
- Safe to publish as preview to gather feedback.
- Document install with
PrivateAssets=all. - Do not mark stable until analyzer unit tests exist and false-positive review is done on sample apps.
<PackageReference Include="SafeWebCore.Analyzers" Version="1.0.0-preview.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>| Field | Value |
|---|---|
| PackageId | SafeWebCore.Testing |
| Version | 1.0.0-preview.1 |
| TFM | net10.0 |
| Depends on | SafeWebCore (project → becomes package dependency on pack) |
| Also depends on | Microsoft.AspNetCore.Mvc.Testing 10.0.*, xunit.v3.assert 3.2.* |
| Readme | src/SafeWebCore.Testing/README.md |
| nuget.org | Not listed |
SafeWebCore.Testing.nuspec
README.md
lib/net10.0/SafeWebCore.Testing.dll
lib/net10.0/SafeWebCore.Testing.xml
- Header assertions (security headers present / expected values)
- CSP enforce vs report-only assertions
- Nonce assertions
- Test host bootstrap extensions
| Check | Status |
|---|---|
| Builds / packs | Pass |
| Preview version | Pass |
| README example | Minimal but usable |
Floating dependency versions (10.0.*, 3.2.*) |
Risk — pin before stable |
| Package dependency on SafeWebCore version | Keep aligned when releasing |
| Tests for helpers | Gap |
| Icon / release notes / symbols | Optional for preview |
- Publish as preview alongside or after core next release so the dependency version makes sense.
- If publishing while core nuget latest is 1.3.5 but Testing was built against newer APIs, either ship Testing only after core 1.4.0 is on nuget.org, or ensure Testing only uses APIs available in published core.
Only if fixing 1.3.5 without Unreleased features: branch from the 1.3.5 release commit, bump to 1.3.6, ship core only.
| Step | Package | Version |
|---|---|---|
| 1 | SafeWebCore | 1.4.0 (promote Unreleased DX items; optionally hold 1.5/1.6 items) |
| 2 | SafeWebCore.FraudDetection | 1.0.0 first public |
| 3 | SafeWebCore.Analyzers | 1.0.0-preview.1 |
| 4 | SafeWebCore.Testing | 1.0.0-preview.1 (after core 1.4.0 is live) |
Roadmap mapping reminder:
| Roadmap band | Themes | Likely package impact |
|---|---|---|
| v1.4 DX | Config binding, env helpers, diagnostics, API baseline | Core version bump |
| v1.5 Tooling | Analyzers, Testing, recipes | New preview packages |
| v1.6 Observability | Metrics, fraud sinks/risk | Core + FraudDetection |
If shipping all current Unreleased work in one go, a single SafeWebCore 1.6.0 (or 1.4.0 with a rich changelog) is acceptable only if the SemVer story is clear in CHANGELOG/PACKAGE.md. Prefer not to claim 1.3.5 for post-1.3.5 APIs.
Publish FraudDetection 1.0.0 alone (no core bump). Valid because packages are independent. Still complete FraudDetection checklist first.
| Standard | Core | Fraud | Analyzers | Testing |
|---|---|---|---|---|
| MIT license expression | Yes | Yes | Yes | Yes |
| RepositoryUrl / ProjectUrl | Yes | Yes | Yes | Yes |
| PackageReadmeFile | Yes | Yes | Yes | Yes |
| PackageIcon | Yes | Add | Optional | Optional |
| GenerateDocumentationFile | Yes | Yes | Yes | Yes |
| IncludeSymbols + snupkg | Yes | Add | N/A (analyzer) | Optional |
| SourceLink / Deterministic | Yes | Add | Optional | Optional |
| PublicApiAnalyzers | Yes | Yes | N/A | N/A |
| PackageReleaseNotes | Yes | Add | Add when stable | Add when stable |
| CI pack + smoke test install | Missing | Missing | Missing | Missing |
# After version bumps, changelog, and tests
dotnet pack src/SafeWebCore/SafeWebCore.csproj -c Release -o artifacts/nupkg
dotnet pack src/SafeWebCore.FraudDetection/SafeWebCore.FraudDetection.csproj -c Release -o artifacts/nupkg
dotnet pack src/SafeWebCore.Analyzers/SafeWebCore.Analyzers.csproj -c Release -o artifacts/nupkg
dotnet pack src/SafeWebCore.Testing/SafeWebCore.Testing.csproj -c Release -o artifacts/nupkg
dotnet nuget push artifacts/nupkg/SafeWebCore.<version>.nupkg --api-key %NUGET_API_KEY% --source https://api.nuget.org/v3/index.json
dotnet nuget push artifacts/nupkg/SafeWebCore.<version>.snupkg --api-key %NUGET_API_KEY% --source https://api.nuget.org/v3/index.json
dotnet nuget push artifacts/nupkg/SafeWebCore.FraudDetection.1.0.0.nupkg --api-key %NUGET_API_KEY% --source https://api.nuget.org/v3/index.json
dotnet nuget push artifacts/nupkg/SafeWebCore.Analyzers.1.0.0-preview.1.nupkg --api-key %NUGET_API_KEY% --source https://api.nuget.org/v3/index.json
dotnet nuget push artifacts/nupkg/SafeWebCore.Testing.1.0.0-preview.1.nupkg --api-key %NUGET_API_KEY% --source https://api.nuget.org/v3/index.json- Project catalog
- Release readiness
- Roadmap
- Backward compatibility policy
- Root
PACKAGE.md(NuGet readme for core) - Per-package READMEs under
src/*/