Skip to program ledger

Living Program Ledger

Frauthy/Project Management

v37 · 2026-07-28

Repository dossier

sdk

Polyglot client SDKs — TS · Rust · Go · Python

On track
Branch
master
Commit
13b5e1b1f85df8ce07234454b8ebfeadd06d95f2
Worktree
Clean
SDK
TypeScript 0.5.0; Rust 0.1.0; Go and Python contract peers

stack

TypeScript · Rust · Go · Python

ci

green (exact-head SDK CI run 29755780234: four-language tests and coverage, type contract, conformance, and reusable dispatch caller)

deploy

not applicable (polyglot library family)

coverage

TypeScript 76.07%; Rust 76.06%; Go 71.51%; Python 83.81%; all upward-only ratchets pass

What it is. The polyglot client runtime — session().can() in TypeScript, Rust, Go, and Python (that order is fixed; there is no Ruby). The surface apps consume, hand-written in all four languages, each with SpiceDB, Keto, and MemStore backends and byte-identical safeId encoding.

What’s proven. All four SDKs resolve GP.Family ALLOW/DENY identically on real SpiceDB and real Ory Keto — 10/10 cells in the committed conformance matrix, with Go and Python also verifying real OIDC tokens through pure-stdlib RS256. @frauthy/sdk-ts@0.4.0 is published.

Where it falls short. Observability is one-language deep: only TS has an OTLP exporter — Rust, Go, and Python ship zero instrumentation. The Python SDK is synchronous against an async-first spec. The Rust SDK constructs a StubProvider unconditionally — it cannot verify a real token via config. Config-based constructors error out in Go and Python. There is no codegen pipeline (the codegen script is an echo), no publish automation outside TS, and TS canAll returns a bare boolean where the spec requires a BatchResult.

The plan. sdk/specs/GAP-CLOSURE-2026-07-12.md (SDK-1 … SDK-11): OTLP ports to the other three languages first (it unblocks OBSERVE-EVERYWHERE), the Python async migration, Rust OIDC ported from Go’s stdlib implementation, then constructors, publish automation, and the conformance-manifest runner.

full spec: sdk/specs/GAP-CLOSURE-2026-07-12.md