Step 2: Add AsiBackbone Packages
Status: Historical milestone complete with AsiBackbone 7.2.1. First released in v0.1.0-alpha.2 on AsiBackbone 7.2.0; the original five packages were later updated to the 7.2.1 patch release, which Step 5 requires. The repository has continued to evolve since that milestone; the current package set is documented separately below.
Outcome
Step 2 originally established five direct AsiBackbone package references under central package management: Analyzers, AspNetCore, Core, EntityFrameworkCore, and Testing. They shipped first at 7.2.0 and then moved to 7.2.1 without changing the package placement described by the original step.
Later work added signed capability-token support and governance telemetry, so the current repository references more AsiBackbone packages than the original Step 2 milestone. Every AsiBackbone package version is still pinned centrally, and each project's resolved dependency graph remains recorded in its checked-in packages.lock.json file.
This step adds packages only; it registers no AsiBackbone services or middleware. That wiring is Step 3, so package acquisition stays separate from runtime behavior changes.
Historical package placement
The original Step 2 package placement was:
| Package | Referenced by | Purpose |
|---|---|---|
AsiBackbone.Core |
Web, Infrastructure | Governance primitives, policy evaluation, and decision receipts |
AsiBackbone.AspNetCore |
Web | Endpoint governance and HTTP integration |
AsiBackbone.EntityFrameworkCore |
Infrastructure | Model configuration and stores for the host-owned DbContext |
AsiBackbone.Analyzers |
Web, Infrastructure | Build-time safety rails; marked PrivateAssets="all" so it remains a build concern |
AsiBackbone.Testing |
Tests | Test harness helpers for later governance assertions |
AsiBackbone.AspNetCore, AsiBackbone.EntityFrameworkCore, and AsiBackbone.Testing already depend on Core where required. The Web and Infrastructure projects nevertheless reference AsiBackbone.Core directly because later walkthrough steps use its public contracts directly; this avoids relying on transitive compile assets for code the host owns.
Current package set — AsiBackbone 7.5.2
The current repository pins nine AsiBackbone packages at 7.5.2. Eight are direct project references. AsiBackbone.Storage.InMemory is centrally pinned because it remains in the test dependency graph transitively; no project references it directly.
| Package | Referenced by | Why it is present |
|---|---|---|
AsiBackbone.Analyzers |
Web, Infrastructure | Original Step 2 build-time safety rails |
AsiBackbone.AspNetCore |
Web | Original Step 2 HTTP governance integration |
AsiBackbone.Core |
Web, Infrastructure | Original Step 2 governance contracts used directly by host code |
AsiBackbone.EntityFrameworkCore |
Infrastructure | Original Step 2 EF Core stores and model configuration |
AsiBackbone.OpenTelemetry |
Web | Added by #78 to export governance spans and metrics |
AsiBackbone.Signing.LocalDevelopment |
Web | Added during #58 for the Development signing path used by capability grants |
AsiBackbone.Signing.ManagedKey |
Web | Added during #58 for configured-key signing and verification outside the local-development path |
AsiBackbone.Storage.InMemory |
Central transitive pin (tests) | Kept in central package management because the test graph resolves it transitively; it is not a direct PackageReference |
AsiBackbone.Testing |
Tests | Original Step 2 test helpers; the current test graph also brings in the centrally pinned in-memory storage package |
The current section is intentionally separate from the historical status line. Other walkthrough steps can continue to record the AsiBackbone version that completed their milestone without implying that version is still the repository-wide package baseline.
Procedure
Confirm the current version in
Directory.Packages.propsand the matching AsiBackbone7.5.0release. Treat the7.2.0and7.2.1versions above as Step 2 history, not as the current repository baseline.Keep each AsiBackbone version in
Directory.Packages.props, then use version-lessPackageReferenceitems in the projects that consume the package directly:Directory.Packages.props:<ItemGroup> <PackageVersion Include="AsiBackbone.Analyzers" Version="7.5.0" /> <PackageVersion Include="AsiBackbone.AspNetCore" Version="7.5.0" /> <PackageVersion Include="AsiBackbone.Core" Version="7.5.0" /> <PackageVersion Include="AsiBackbone.EntityFrameworkCore" Version="7.5.0" /> <PackageVersion Include="AsiBackbone.OpenTelemetry" Version="7.5.0" /> <PackageVersion Include="AsiBackbone.Signing.LocalDevelopment" Version="7.5.0" /> <PackageVersion Include="AsiBackbone.Signing.ManagedKey" Version="7.5.0" /> <PackageVersion Include="AsiBackbone.Storage.InMemory" Version="7.5.0" /> <PackageVersion Include="AsiBackbone.Testing" Version="7.5.0" /> </ItemGroup>src/ReferenceApplication.Web/ReferenceApplication.Web.csproj:<ItemGroup> <PackageReference Include="AsiBackbone.Analyzers" PrivateAssets="all" /> <PackageReference Include="AsiBackbone.AspNetCore" /> <PackageReference Include="AsiBackbone.Core" /> <PackageReference Include="AsiBackbone.OpenTelemetry" /> <PackageReference Include="AsiBackbone.Signing.LocalDevelopment" /> <PackageReference Include="AsiBackbone.Signing.ManagedKey" /> </ItemGroup>src/ReferenceApplication.Infrastructure/ReferenceApplication.Infrastructure.csproj:<ItemGroup> <PackageReference Include="AsiBackbone.Analyzers" PrivateAssets="all" /> <PackageReference Include="AsiBackbone.Core" /> <PackageReference Include="AsiBackbone.EntityFrameworkCore" /> </ItemGroup>tests/ReferenceApplication.Web.Tests/ReferenceApplication.Web.Tests.csproj:<ItemGroup> <PackageReference Include="AsiBackbone.Testing" /> </ItemGroup>
Do not add a direct
AsiBackbone.Storage.InMemoryreference merely because it is centrally pinned; its current role is transitive.Regenerate the lock files after an intentional dependency change:
dotnet restore ReferenceApplication.slnx --force-evaluateValidate the resulting graph and confirm the analyzer package raises no findings on the NCAT-derived baseline:
dotnet restore ReferenceApplication.slnx --locked-mode dotnet build ReferenceApplication.slnx --configuration Release --no-restore dotnet test ReferenceApplication.slnx --configuration Release --no-build --no-restore
The repository treats compiler and analyzer warnings as errors, so a successful Release build is also the Step 2 analyzer compatibility check.
Authoritative references
- AsiBackbone Getting Started
- AsiBackbone NetCoreApplicationTemplate Host Validation
- NCAT Dependency Update Policy