Orleans.Lattice.Schema 9.9.0

dotnet add package Orleans.Lattice.Schema --version 9.9.0
                    
NuGet\Install-Package Orleans.Lattice.Schema -Version 9.9.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="Orleans.Lattice.Schema" Version="9.9.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Orleans.Lattice.Schema" Version="9.9.0" />
                    
Directory.Packages.props
<PackageReference Include="Orleans.Lattice.Schema" />
                    
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 Orleans.Lattice.Schema --version 9.9.0
                    
#r "nuget: Orleans.Lattice.Schema, 9.9.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 Orleans.Lattice.Schema@9.9.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=Orleans.Lattice.Schema&version=9.9.0
                    
Install as a Cake Addin
#tool nuget:?package=Orleans.Lattice.Schema&version=9.9.0
                    
Install as a Cake Tool

Orleans.Lattice.Schema

Schema enforcement and schema versioning for Orleans.Lattice, built on a shared, serializable value-to-value transform IR - LatticeValueTransform - that is the sibling of the core boolean predicate IR (LatticePredicateNode). Where the predicate IR answers "does this value's JSON document match?", the transform IR answers "what new JSON document does this value become?".

The package ships two independent, strictly opt-in capabilities:

  • Schema enforcement (AddLatticeSchemaEnforcement(...)) - per-tree, server-side validation of writes against a LatticeSchemaPolicy (JSON, UTF-8, maximum byte length, regex, or a structured predicate), managed through ILatticeSchemaAdmin. A non-compliant local write throws LatticeSchemaViolationException; under strict ingest a non-compliant ingested item that reaches the check (a replicated typed-CRDT entry, or an entry of a replicated atomic batch) is dead-lettered instead of applied, while a plain (non-atomic) last-writer-wins replication apply and a backup restore write below the check and are not validated. Existing data is brought into compliance by a shadow-build-and-cutover remediation (ILatticeSchemaRemediationAdmin), and ILatticeSchemaComplianceAdmin audits a tree without changing it.
  • Schema versioning (AddLatticeSchemaVersioning(...)) - a per-value schema-version envelope, managed through ILatticeSchemaVersionAdmin, with read-time upcasting to the tree's monotonic target version and an eager re-stamping migration.

These in-process admin services perform no authorization of their own; the Orleans.Lattice.Api.Schema facade authorizes remote callers. See the schema documentation.

Design

LatticeValueTransform is an immutable, Orleans-serializable discriminated tree, evaluated server-side against a value's UTF-8 JSON document to produce new UTF-8 JSON bytes. Its node kinds cover additive evolution, rename, drop, and default-fill:

  • Passthrough - copy the input document as the starting point, then apply an ordered pipeline of member operations.
  • SetMember(path, valueExpression) - set or overwrite a top-level member.
  • DropMember(path) - remove a top-level member.
  • RenameMember(from, to) - move a top-level member.

Value expressions read from the input document and produce the value a SetMember writes:

  • Member(path) - read a member from the input document.
  • Const(value) (node kind Constant) - a literal captured at translation time (reuses the core LatticeConstant).
  • Conditional(condition, thenExpression, elseExpression) - where condition embeds a core LatticePredicateNode, so the boolean IR becomes a sub-node (the default-fill primitive).
  • Compute(operator, operands...) - a minimal computed field (Concat, Coalesce).

Client translator

LatticeValueTransformTranslator lowers a client-side Expression<Func<TOld, TNew>> (or Expression<Func<T, T>>) into the IR with a tight allowlist, throwing NotSupportedException at translation time on the client naming the offending construct - exactly like LatticePredicateTranslator.

DI escape hatch

ILatticeValueTransform is a host-supplied byte[] -> byte[] transform identified by a stable id, for logic the declarative IR cannot express and for opaque / plain-text values the JSON IR cannot navigate. Register instances with AddLatticeValueTransform(...) and resolve one by id through ILatticeValueTransformRegistry.

Determinism

Both seams are serializable so a transform can be persisted on a shadow-build coordinator. The evaluator is deterministic and total per value: it throws a clear exception on malformed input rather than silently corrupting a value, so a consumer can abort a shadow build cleanly.

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 (4)

Showing the top 4 NuGet packages that depend on Orleans.Lattice.Schema:

Package Downloads
Orleans.Lattice.Api.Abstractions

Shared contract package for the Orleans.Lattice API facades. Holds the transport-agnostic service interfaces and request/response models for the state, data, auth, backup, schema, tree-administration, tenancy, replication, telemetry, installable-app control, and region-discovery surfaces, so binding packages depend on a public, versioned contract instead of another package's internals. Contains no implementation and starts nothing; the facade packages implement these contracts and are registered separately.

Orleans.Lattice.Api.State

Optional read-only cluster state API add-on for Orleans.Lattice. Exposes a transport-agnostic facade (and, via a sibling binding, a gRPC surface) that lets external clients query, observe, and subscribe to a cluster's tree state and metadata - trees, shards, structure, entries and their history, views, tag indexes, and schema dead letters, plus live change and per-tree metrics subscriptions - for a tree-explorer dashboard and the Orleans.Lattice.Api.Mcp MCP server. Registered with a single AddLatticeStateApi(...) call.

Orleans.Lattice.Api.Schema

Optional transport-agnostic control facade add-on for Orleans.Lattice schema management. Wraps the in-process schema admin surface (policy, versioning, remediation, and a read-only per-tree compliance audit) behind a single fail-closed control interface every transport binding (for example the gRPC surface) adapts over. Registered separately; adds no transport behaviour of its own.

Orleans.Lattice.Api.TenantAdmin

Optional transport-agnostic control facade add-on for Orleans.Lattice multi-tenant clusters. Presents fail-closed tenant lifecycle, admin-subject, cross-tenant grant, quota and usage, region authorization, residency, and tenant self-service operations over the tenancy add-on. Registered separately; transport packages adapt over this facade.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
9.9.0 238 10/2/2026
9.8.0 351 9/26/2026
9.7.0 310 9/21/2026
9.6.2 341 9/9/2026
9.6.1 104 9/7/2026
9.6.0 648 9/5/2026
9.5.1 105 9/7/2026
9.5.0 329 9/2/2026
9.4.0 667 8/29/2026
9.3.0 364 8/25/2026
9.2.0 416 8/23/2026
9.1.0 432 8/20/2026
9.0.0 375 8/14/2026
8.0.0 957 7/20/2026
7.9.0 153 7/14/2026