0008: The .NET SDK becomes a governed client¶
Status: accepted (Maintainer, 2026-10-30). Supersedes 0002: SDK capability tiers; Go and .NET as verifier plus thin client for .NET; Go is unchanged.
Implemented: in progress (2026-10-30). sdk-dotnet adds the TypeScript SDK’s features one pull request at a time, in the order a governed controller uses them. The first, XML documentation on every public member with the build failing on a missing one, is merged (sdk-dotnet#52).
Context¶
Decision 0002 kept .NET a verifier plus a thin client and ported no governed lifecycle to it “without a named user”. There is one now:
A partner-facing portal built on .NET 8 (ASP.NET Core) is to manage the lifecycle of its partners’ application credentials under Genesis Mesh decisions and evidence. That covers create, rotate, retire and emergency removal.
It needs what a governed controller does today in TypeScript or Rust:
boundary evaluation and policies;
execution evidence and the evidence store;
governed actions with an outbox;
reconciliation.
Calling those routes as raw admin calls would rebuild a governed client inside the application.
Decision¶
The .NET SDK moves to the governed client tier and reaches the TypeScript SDK’s features.
The order follows what a governed controller needs:
the transport (failover, retries, operator signers);
policies and evaluation;
execution evidence and its offline checks;
governed actions and outboxes;
a scenario test of a governed secret lifecycle;
the rest (out-of-band changes, remediation, grants, audit packs).
The additions do not break the API: package validation guards the public surface.
New methods follow the package’s existing naming.
The
Asyncrename that 0002 planned waits for a 2.0.
Every public member is documented; the build fails on a missing doc comment.
The node identity and the edge agent stay in the Rust SDK.
.NET stays in the lockstep train while it closes the gap. The independent 2.0 of 0002 is not taken for .NET now.
Consequences¶
Users choosing an SDK for a governed controller can choose .NET once the governed features ship. Until then the TypeScript SDK is the reference.
The capability matrix 0002 called for lists .NET as a governed client when the gap is closed.
The conformance suites the .NET SDK runs grow with each feature, to the TypeScript SDK’s set.