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
<PackageReference Include="Orleans.Lattice.Schema" Version="9.9.0" />
<PackageVersion Include="Orleans.Lattice.Schema" Version="9.9.0" />
<PackageReference Include="Orleans.Lattice.Schema" />
paket add Orleans.Lattice.Schema --version 9.9.0
#r "nuget: Orleans.Lattice.Schema, 9.9.0"
#:package Orleans.Lattice.Schema@9.9.0
#addin nuget:?package=Orleans.Lattice.Schema&version=9.9.0
#tool nuget:?package=Orleans.Lattice.Schema&version=9.9.0
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 aLatticeSchemaPolicy(JSON, UTF-8, maximum byte length, regex, or a structured predicate), managed throughILatticeSchemaAdmin. A non-compliant local write throwsLatticeSchemaViolationException; 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), andILatticeSchemaComplianceAdminaudits a tree without changing it. - Schema versioning (
AddLatticeSchemaVersioning(...)) - a per-value schema-version envelope, managed throughILatticeSchemaVersionAdmin, 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 kindConstant) - a literal captured at translation time (reuses the coreLatticeConstant).Conditional(condition, thenExpression, elseExpression)- whereconditionembeds a coreLatticePredicateNode, 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 | Versions 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. |
-
net10.0
- Microsoft.Orleans.Sdk (>= 10.2.2)
- Orleans.Lattice (>= 9.9.0)
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 |