Cirreum.Contracts 5.0.0

dotnet add package Cirreum.Contracts --version 5.0.0
                    
NuGet\Install-Package Cirreum.Contracts -Version 5.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Cirreum.Contracts" Version="5.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Cirreum.Contracts" Version="5.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Cirreum.Contracts" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Cirreum.Contracts --version 5.0.0
                    
#r "nuget: Cirreum.Contracts, 5.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Cirreum.Contracts@5.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Cirreum.Contracts&version=5.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Cirreum.Contracts&version=5.0.0
                    
Install as a Cake Tool

Cirreum.Contracts

NuGet Version NuGet Downloads GitHub Release License .NET

The abstractions and vocabulary every Cirreum application programs against.

Overview

Cirreum.Contracts is the contract layer of the Cirreum framework — the cross-host abstractions, vocabulary, and value types a Cirreum application programs against.

Cirreum.Contracts defines:

  • Conductor — the CQRS surfaceIDispatcher, IPublisher, IOperation / IOperationHandler, IIntercept, the intercept contracts (HandlerPerformance, QueryCaching, Validation), builders, and settings. (Concretes — Dispatcher, Publisher, the pipeline — ship in Cirreum.Domain.)
  • CachingICacheService (get-or-create + tag-based invalidation), CacheProvider, CacheSettings, CacheExpirationSettings
  • State — cross-host state abstractions (IStateContainer, IStateManager, IStatePersistence, IScopedNotificationState, ISessionState, …) and the Notification shape
  • PresenceIUserPresenceService, IUserPresenceMonitor, UserPresence, PresenceStatus
  • Profile EnrichmentIUserProfileEnrichmentBuilder, IGraphEnabledBuilder, IExternalGraphEnabledBuilder — the host-agnostic builder seam any host (server, Blazor WebAssembly, …) uses to configure post-authentication profile enrichment, independent of which (or whether any) auth scheme is active; default enricher implementations ship in Cirreum.Domain
  • RemoteServices — the caller-side surface, in two halves. Request/response: RemoteServiceOptions, AuthorizationHeaderSettings (the RemoteClient base ships in Cirreum.Domain). Long-lived bidirectional, in the Connections sub-namespace: IRemoteConnection, RemoteConnectionState, RemoteConnectionStateChangedEventArgs, RemoteConnectionOptions, IRemoteConnectionFactory<TConnection> for per-session connections, and IRemoteConnectionCredentialSource — the ambient credential seam a host runtime implements so transport packages stay host-neutral, resolved with a RemoteConnectionTokenRequest describing the connection. A service is something you call; a connection is something you hold open, so it nests
  • FileSystem + CSVIFileSystem, ICsvFileBuilder / ICsvFileReader, CsvOptions, PathType
  • Invocation — the HttpContext-free invocation seam (IInvocationContext, IInvocationContextAccessor, IInvocationConnection, IInvocationConnectionRegistry, IConnectionLifecycle, IConnectionEstablishmentContributor, DisconnectInfo, and InvocationConnectionMetadata — the endpoint marker declaring that an endpoint's invocations arrive over an IInvocationConnection, which the server spine stamps on the connection endpoints it maps). IInvocationConnection carries the connection-ownership surface — the immutable upgrade-time User plus EffectiveUser/IsUserPromoted, which reflect Two-Phase Auth promotion so every consumer agrees on who owns a connection now. IInvocationContext carries the matching authentication read surface — AuthenticatedScheme / OriginScheme / EffectiveScheme, mirroring User / PromotedUser / EffectiveUser — so every consumer also agrees on which scheme's declarations govern the current subject
  • Authorization pillar — the vocabulary (AuthorizationPolicies, ApplicationRoles, Role, PermissionSet, DenyCodes, AuthorizationContext) and the cross-host contracts (IAuthorizer, IAuthorizationContextAccessor, the operation / grant / resource-ACL abstractions, [RequiresGrant]); default implementations and FluentValidation validators live in Cirreum.Domain. AuthorizationTelemetry publishes the pipeline's shared ActivitySource and Meter alongside the stage / step / tag vocabulary every evaluator reports against, so a denial reads the same whichever layer produced it

Concerns with their own dedicated tracks (Messaging, Storage) live in their own packages and do NOT fold into Cirreum.Contracts. The Authentication event surface lives in Cirreum.Kernel.

Where it fits

Cirreum.Contracts is L2 — the contract surface. It builds on Cirreum.Kernel (L1) and references the foundation peer Cirreum.Result as needed; it takes no other Cirreum dependency. It is a pure-contracts package: the default implementation of everything declared here ships one layer up, in Cirreum.Domain, along with the richer dependency tree (FluentValidation, Microsoft.Extensions.Caching.Memory, …) the concretes require.

Contribution Guidelines

  1. Be conservative with new abstractions
    The API surface must remain stable and meaningful — Contracts is what every Cirreum app programs against; changes ripple through the entire ecosystem.

  2. Limit dependency expansion
    Only add foundational, version-stable dependencies. Contracts is a pure-abstractions package — concrete dependencies belong in Cirreum.Domain.

  3. Favor additive, non-breaking changes
    Breaking changes in the contract surface cascade through every dependent package and every Cirreum app. Major version bumps are rare.

  4. Include thorough unit tests
    All contracts and patterns should be independently testable.

  5. Document architectural decisions
    Context and reasoning should be clear for future maintainers.

  6. Follow .NET conventions
    Use established patterns from Microsoft.Extensions.* libraries.

Versioning

Cirreum.Contracts follows Semantic Versioning:

  • Major — Breaking API changes
  • Minor — New features, backward compatible
  • Patch — Bug fixes, backward compatible

Given its foundational role, major version bumps are rare and carefully considered.

License

This project is licensed under the MIT License — see the LICENSE file for details.


Cirreum Foundation Framework
Layered simplicity for modern .NET

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Cirreum.Contracts:

Package Downloads
Cirreum.Services.Server

Service library for Cirreum ASP.NET servers. Absorbs the per-source Invocation packages (HTTP, WebSocket, SignalR) so a single package owns the framework's server-side invocation surface, including the per-server connection registry and the auth-event connection terminator (revocation / forced sign-out aborts a subject's live long-lived connections).

Cirreum.Domain

The default implementation of Cirreum's domain-centric application model — the runtime-agnostic engine behind the contracts in Cirreum.Contracts. Provides the Conductor (Dispatcher, Publisher, intercepts, builders), the Authorization pillar's evaluators / grant cache / role scanner / FluentValidation validators, the cache services, State, Presence, Profile Enrichment, RemoteServices, and FileSystem implementations, plus the AddDomainServices registration. The cross-host triad: Cirreum.Kernel (primitives) → Cirreum.Contracts (contracts) → Cirreum.Domain (implementation).

Cirreum.AuthenticationProvider

Authentication track abstractions for the Cirreum framework (three-pillar separation and composition surface). Defines the contracts scheme packages (ApiKey, SignedRequest, SessionTicket) implement: ISchemeSelector + SchemeCategory, CredentialTransport, ISignedRequestAlgorithm + resolver, SessionTicket primitives, IAuthenticationBoundaryResolver, IAuthenticationBuilder (whose DeclareScheme / AddScheme pair scheme registration with its claim-authority declaration). Pure abstractions plus a default impl (DefaultAuthenticationBoundaryResolver) that ships with the contracts. Host-agnostic profile enrichment (IUserProfileEnrichmentBuilder, ClaimsUserProfileEnricher) lives in Cirreum.Contracts/Cirreum.Domain, not here.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
5.0.0 87 8/25/2026
4.7.0 335 8/24/2026
4.6.0 74 8/24/2026
4.5.1 454 8/20/2026
4.5.0 311 8/18/2026
4.4.0 87 8/18/2026
4.3.0 306 8/17/2026
4.2.2 113 8/17/2026
4.2.1 109 8/17/2026
4.2.0 489 8/4/2026
4.1.0 133 8/3/2026
4.0.1 469 7/31/2026
4.0.0 123 7/31/2026
3.0.0 356 7/31/2026
2.0.1 112 7/30/2026
2.0.0 775 7/26/2026
1.4.5 486 7/24/2026
1.4.4 709 7/20/2026
1.4.3 1,009 7/7/2026
1.4.2 248 7/6/2026
Loading failed