AsiBackbone 2.2.1 Release Notes
2.2.1 is a compatible patch release for the stable 2.x AsiBackbone package family.
This release preserves the simplified AsiBackbone.* package IDs and public namespaces established in 2.0.0 while adding allocation-measurement infrastructure and reducing allocation pressure across the measured governance hot paths introduced and refined during the 2.2.x line.
Release summary
2.2.1 is a patch release because it does not intentionally add new public package APIs or alter the package/namespace boundary. The release focuses on performance measurement, implementation hardening, tests, and release metadata alignment.
Existing 2.0.x, 2.1.x, and 2.2.0 consumers should be able to upgrade without required source-code changes for existing APIs.
Added
- Added a BenchmarkDotNet benchmark project for allocation-sensitive governance hot paths.
- Added
MemoryDiagnoserallocation baselines for policy evaluation, endpoint governance, outbox drain, scoped outbox drain, and audit residue creation. - Added benchmark documentation with focused filters and profiling guidance for
dotnet-counters,dotnet-trace,dotnet-gcdump, and PerfView. - Added targeted tests for benchmark support and allocation-sensitive hot-path behavior.
Changed
- Promotes central package version metadata from
2.2.0to2.2.1while preservingAssemblyVersionas2.0.0.0for the compatible stable2.xline. - Updates
FileVersionto2.2.1.0. - Updates
CITATION.cffand.zenodo.jsonfor the2.2.1release. - Updates README, documentation home, article index, DocFX article navigation, release validation guidance, API compatibility / SemVer guidance, release notes, release readiness, and Source Link validation defaults for the
2.2.1package family.
Performance and allocation refinements
- Reduced provider-neutral outbox drain allocation pressure by avoiding unnecessary batch-copy allocations, avoiding retry merge allocation when only one source is drained, and replacing LINQ retry deduplication with direct loops.
- Reduced no-op governance emission and delivered outbox metadata re-normalization overhead while preserving outbox transition behavior.
- Reduced ASP.NET Core endpoint governance hot-path allocation by caching descriptor metadata, avoiding repeated metadata dictionary/string-join construction, and deferring fallback decision and actor-context creation until needed.
- Reduced policy evaluator allocation by reusing pass-through constraint results, avoiding eager warning/denial list allocation, and preserving decision-policy visibility without extra array-copy snapshots.
- Reduced audit residue decision-record allocation by reusing immutable decision/constraint reason-code collections, replacing hot-path enum
ToString()calls with stable outcome-name helpers, and simplifying public reason-code normalization.
Benchmark snapshot
Representative focused BenchmarkDotNet runs on Windows 11, .NET SDK 10.0.301, .NET 10.0.9, x64 RyuJIT AVX2 produced these post-change allocation baselines:
| Scenario | Mean | Allocated |
|---|---|---|
outbox_drain.small_batch_25 |
2.612 us | 5.97 KB |
outbox_drain.medium_batch_100 |
10.407 us | 23.55 KB |
outbox_drain.scoped_medium_batch_100 |
10.883 us | 23.93 KB |
endpoint_governance.policy_allow |
544.5 ns | 1.41 KB |
endpoint_governance.policy_warning |
610.4 ns | 1.56 KB |
endpoint_governance.policy_deny |
557.9 ns | 1.56 KB |
policy.zero_constraints |
24.82 ns | 72 B |
policy.all_allow_8 |
61.19 ns | 72 B |
policy.warning_and_denial_full |
164.91 ns | 408 B |
policy.first_denial_short_circuit |
203.58 ns | 608 B |
policy.acknowledgment_required |
99.50 ns | 408 B |
policy.escalation_recommended |
103.65 ns | 408 B |
audit_residue.from_decision |
211.8 ns | 592 B |
These values are local measurement snapshots, not consumer latency guarantees. Hosts should benchmark their own constraints, audit sinks, durable stores, emitters, logging, and deployment topology.
Compatibility
No package ID or namespace changes are included.
No public API removals or renamed public APIs are intended.
AssemblyVersion remains 2.0.0.0 for the compatible stable 2.x line.
This release keeps existing endpoint governance, outbox, policy evaluator, and audit residue semantics while reducing avoidable allocation overhead.
Stable package family
The stable package set remains:
AsiBackbone.Core
AsiBackbone.DependencyInjection
AsiBackbone.Storage.InMemory
AsiBackbone.EntityFrameworkCore
AsiBackbone.AspNetCore
AsiBackbone.Testing
AsiBackbone.Templates
AsiBackbone.Analyzers
AsiBackbone.OpenTelemetry
AsiBackbone.Signing.LocalDevelopment
AsiBackbone.Signing.ManagedKey
Release boundary
2.2.1 does not change the project boundary. AsiBackbone remains Accountable Systems Infrastructure for governed .NET decision flow: a governance spine, not an intelligence engine. See Project Boundaries and Non-Claims for the full scope statement.
Event Hubs, Purview, Azure-specific SDK adapters, Aspire runtime packages, robotics, immutable-storage, and additional provider packages remain outside the stable package contract unless separately reviewed and released.
Validation
Before tagging v2.2.1, the release candidate should pass the repository release gates, including:
- CI restore, build, formatting, tests, and coverage gates.
- Stable Release Validation.
- DocFX documentation build.
- Package creation.
- Generated NuGet metadata validation.
- Package SBOM generation.
- Template package smoke validation.
- External consumer smoke tests.
- Version consistency validation for
2.2.1. - Package/SBOM provenance handling where supported by the workflow event.
After packages are published and visible on NuGet, validate Source Link repository commit metadata with:
./scripts/Validate-Source-Link-commit-metadata.ps1 -Version 2.2.1