Skip to main content
Version: 0.1.0-alpha.4 (alpha)

API surface map

This map distinguishes implemented APIs from declared architectural contracts. Phase 1 and its performance extension are complete. The Phase 2 completion review records its accepted delivery scope and evidence. Generated bindings and schemas do not themselves implement a service. The roadmap maps Phase 3's concrete capability, provider, web and SDK work without claiming it has shipped.

Guest-facing WIT packages​

PackageCurrent status and intended purpose
latent:contextImplemented filtered activation identity, trace, deadline, metadata and remaining budget.
latent:logImplemented budgeted structured logging.
latent:clockImplemented monotonic and wall-clock interfaces.
latent:randomImplemented configured OS cryptographic randomness with per-call and shared activation limits.
latent:blobImplemented configured Linux local and S3 immutable blobs at 0.2.0.
latent:httpImplemented configured buffered and streaming providers.
latent:secretsImplemented configured protected local references, rotation and opaque credentials, plus the Vault KV-v2 provider.
latent:telemetryImplemented configured custom metrics with exact labels, bounded aggregation and shared export.
latent:serviceImplemented configured local invocation with conserved descendant budgets.
latent:eventsImplemented configured immediate NATS JetStream publication; bounded inbound triggers are implemented and transactional durable event intents require Phase 4.
latent:stateDeclared; transactional keyed state is Phase 4.
latent:timerDeclared; durable workflow timers are Phase 6.
latent:platform/capsuleAggregate platform world; its declarations do not imply all imports are executable.

latent-component-bindings generates Rust bindings for the aggregate runtime world and maintained echo fixture into Cargo OUT_DIR. The executable echo guest derives its canonical ABI exports from the same authoritative WIT.

The generic backend accepts components without imports and the four supported activation interfaces: context, log, monotonic clock and wall clock. Configured broker adapters add local service calls, outbound HTTP, local/S3 blobs, local/Vault secrets and NATS publication through the current host profile. Uninstalled provider imports fail explicitly. Dynamic exports use the canonical WIT value protocol. Phase 3 must preserve exact versioned ABI identity and actual host-profile compatibility when adding providers; it cannot turn a declared import or caller-supplied grant into authority.

Protobuf services​

latent-rpc generates messages, Tonic clients/server wrappers and an embedded descriptor set from the checked-in Protobuf. It opens no listener. The standalone node composes implementations through one bounded authenticated loopback listener on Linux.

ServiceImplemented standalone surface
InvocationServiceInvoke, Cancel and GetActivation through the local activation owner.
ReleaseServicePublish/Get/List, lifecycle status, retained operation lookup, revoke/retire and detached evidence renewal. Package publication uses independent current node admission.
DeploymentServiceApply/Get/List/Delete, optional managed operation IDs and exact object/state preconditions, coherent operation snapshots and GetDeploymentOperation.
RolloutServiceOptional audited Start/Change/Evaluate/Get/List/GetOperation; Change includes manual stages, pause/resume/abort, sealed canary promotion and explicit rollback.
AuditServiceOptional QueryPhase2Audit with typed scope, filters, records, cursors and loss coverage.
RouteServiceTenant-scoped GetRouteSnapshot.
NodeServiceGetNode and ListNodes for the configured node's bounded inventory.
ContractServiceDeclared registry/comparison RPCs; compatibility is currently a Rust host API used by local control compilation.
CapabilityServiceDeclared provider discovery and grant explanation; concrete Phase 3 work.
BindingServiceDeclared binding management and graph validation; concrete Phase 3 work.
TriggerServiceDeclared shared ingress trigger management; concrete Phase 3 work.
PolicyServiceDeclared policy management/explanation; supply-chain policy is currently explicit node/host configuration.

WatchDeployment, WatchRouteSnapshots, RegisterNode, ReportInventory and Heartbeat return explicit Unimplemented; they do not fabricate streams or cluster state. Omitted optional owners also return explicit unsupported behavior after the applicable authentication and validation. Managed deployment requests require their audit composition and never silently downgrade to legacy writes. See management services, invocation and the retained Phase 1 contract.

Tenant and actor come from trusted authentication, not DTO claims. Missing and foreign tenant-scoped objects share absence behavior. Node-level inventory and audit need the trusted node-operator claim; it grants no cross-tenant access.

Package and control Rust APIs​

CrateDelivered seams and authority boundary
latent-artifactsArtifactRepository, DirectoryArtifactRepository, sealed preparation/verified metadata, ReleaseUseEligibility, LifecycleAuthorityHandle, historical execution snapshots and retained package sources. Managed publication, lifecycle and evidence methods retain bounded outcomes; historical metadata grants no execution.
latent-artifacts::packageExact package, evidence, publisher-signature and builder-provenance formats and bounded associations.
latent-artifacts raw cacheRawArtifactCache, typed keys, affine write/read/reclaim owners, pins, RawArtifactBytes, limits and actual snapshots. Cached bytes are replaceable and authority-free.
latent-packagingbuild_package, inspect_bundle, bounded directory/evidence I/O, SBOM generation/inspection, compare_packages, PackageComparisonLimits, sealed checked surfaces and exact-pair breaking allowances. Builds supplied bytes without executing guest/build scripts.
latent-ociHttpOciRegistry, scoped registry configuration/credentials, OciPulledPackage leases and optional shared raw-cache integration. Transfer success is not admission.
latent-policy::supply_chainSupplyChainAuthority, explicit policy/clock configuration, durable floors and current admission grants; verify_package_once returns a diagnostic report without durable floors or execution authority.
latent-contractsTyped contract descriptors and bounded compare_descriptors analysis; general ContractRegistry and BindingCompiler remain architectural interfaces.
latent-manifestBounded JsonManifestCodec, structural schemas, Phase1ManifestValidator and runtime requirement models. Schema acceptance is distinct from semantic/current-host validation.
latent-control-storeDirectoryDeploymentRepository, DeploymentStore, immutable route pins, scoped pages and combined catalog persistence. deployment_operations exposes sealed prepare/synchronous commit, exact receipt lookup/snapshot and DeploymentReadLease. rollouts owns plans, policies, target provenance and atomic cohort publication.
latent-rolloutRolloutCoordinator, RolloutHandle, one RolloutWorker, bounded tickets/control, response leases and explicit promote/rollback previews. deployment_audit shares exact receipt audit helpers without adding a deployment worker.
latent-auditAuditWorker, AuditHandle, typed records, critical reservations/attempts, bounded query pages and retained response ownership. BoundedPhase2AuditJournal remains an explicit volatile embedding API.
latent-telemetryShared runtime/lifecycle observations, configured CustomMetricRegistry and sealed custom records, plus BoundedPhase2CanaryOutcomeWindow, CanaryCapture, snapshots, thresholds and affine SealedCanaryWindow. Diagnostic evaluation does not authorize promotion.

Lifecycle composes a sealed catalog capability with optional real signing proof. The node binds runtime and deployment owners to that exact catalog. A delegating custom repository cannot pair arbitrary metadata with a genuine historical token: the historical snapshot is sealed. A retained package source grants bounded access to exact original comparison bytes, not a refreshed execution grant.

Managed operations retain compact receipts in catalog format 4 alongside rollout history. Exact replay precedes fresh state checks; finite retention and mandatory original state preconditions prevent an evicted create from executing again after delete. Leased snapshots and receipt queries are coherent reads. Catalog commit, durability and audit outcome are separate facts.

Runtime and node APIs​

CrateDelivered runtime seams
latent-coreIDs, errors, lifecycle models, ActivationClock, budgets, reservations and terminal consumption.
latent-rpc / latent-component-bindingsGenerated control transport and shared Component Model bindings.
latent-routingRouteResolver, route compiler and immutable snapshot source/publisher contracts used by local routing.
latent-admissionLocalAdmissionController, LocalQuotaProvider, affine admission/execution permits and their public interfaces.
latent-schedulerFixedCellPool, LocalScheduler, nonqueueing acquisition/change notifications, cell lifecycle, fair bounded queues and scoped cancellation.
latent-activationBounded activation request construction, activation ID source, manager and journal contracts.
latent-executorRepository-backed preparation/readiness, PreparedReadiness, affine PreparedUse, materialization, backend registry and cancellation.
latent-wasmtimeGeneric component factory/backend, bounded value/host policy, fresh stores, cleanup proof and prepared-cache ownership. Opt-in IsolatedAotCompiler, TrustedAotOutput, NativeAotSettings, NativeImageLimits, with_catalog_and_aot and aggregate native usage.
latent-nodeLocalActivationManager, immediate-ID handles, scoped cancel/status, bounded journal, transport cleanup interruption and inventory seams.
latent-wireInvocation/management adapters, trusted principal/trace boundaries, finite request conversion and response services. Audit, deployment and rollout response leases remain attached through body/frame ownership.
latent-capabilitiesSealed activation plans/sessions, policy/audit dispatch, affine I/O and shared provider pools. Configured service, HTTP, blob, secret, event, OS randomness and custom metric ports require exact current grants.
latent-httpHttpProvider, bounded destination/DNS/TLS/header configuration and buffered async HTTP; profile and composition.
latent-secretsLocalSecretStore, LocalSecretProvider, finite protected reloads, per-use raw read authorization and opaque provider credential bindings.
latent-natsNatsPublisher, NatsTriggers, scoped TLS credentials, bounded publication and inbound scheduling, verified receipts and explicit uncertainty; publisher and trigger profiles.
latent-vaultVaultSecretProvider, exact KV-v2 references, bounded shared plaintext/cache owners and checked disclosure; profile and composition.
latent-protected-filesShared bootstrap file policy and strict descriptor-anchored secret roots.
latent-testkitDeterministic async/process/resource helpers and invariant/conformance probes.

Repository preparation returns the pinned runtime and its declared imports together. Its sealed source binds verified identity and cold fetch to one owner; generic repository fallbacks perform verified fetching rather than claiming a directory identity. Scheduling consumes admitted permits only after readiness; each activation still creates fresh guest state.

The native loader authenticates persisted receipts and exact immutable bytes before its private copying load. There is no public arbitrary-byte restoration or native-load constructor. Both local and enforced catalogs retain independent lifecycle/admission checks. Standalone isolatedAot is opt-in, adds no RPC/distributed compiler service, and leaves the default portable compilation path available as explicit configuration.

latentd::config::{NodeConfig, NodeSettings} and latentd::standalone::StandaloneNode provide validated composition. latentd serve --config PATH owns fixed runtimes and shutdown. Opaque NodeSettings is derived from mutable configuration before opening resources; embedders use read-only worker/shutdown accessors for outer runtimes. Audit, rollout, native-cache and canary owners must match the configured catalogs and clock. Omitting rollout configuration still permits bounded historical catalog recovery while disabling rollout RPCs. An initialized durable audit owner cannot silently downgrade to volatile or absent audit on reopen.

The following crates still contain primarily architectural interfaces for future integrations: latent-triggers, latent-ingress, latent-state, latent-commit, latent-effects, latent-workflows and latent-wrpc. Identity/delegation interfaces do not imply distributed identity is running. Current capability authority is provided by latent_capabilities::broker, with bounded policy stores in latent_policy::capability and supply-chain admission in latent_policy::supply_chain. The earlier unused generic capability and policy interfaces have been removed.

Declarative schemas​

The schema index covers capsule/deployment/binding/policy/ trigger manifests and route snapshots; package formats, WIT locks and source inputs; publisher/builder/SBOM evidence and trust policy; admission and lifecycle; optional node audit/AOT/rollout settings; canary policy; and CLI evidence/registry profiles. latent-manifest embeds its manifest schemas and applies bounded structure checks plus separate semantic validation.

Canonical stored records and protobuf JSON projections have distinct contracts. For example, lifecycle records use stored scope and integer fields, while the API projection uses symbolic enums and decimal-string uint64. Closed schemas, duplicate-key rejection, finite decoding and exact associations remain required. Schema success neither grants permission nor proves durability, and no schema adds a JSON management listener.

CLI and language SDKs​

The operator CLI exposes local package build/inspect/verify, scoped OCI push/pull, release evidence/lifecycle and operation lookup, legacy or managed deployment writes, coherent operation reads, rollout/canary/rollback, audit queries and retained invocation/route/node calls. It performs one control RPC per command, keeps caller operation identities for recovery and never retries a mutation automatically. New typed counters and generations remain lossless decimal strings.

The Rust, Go, .NET, Java, TypeScript and C SDKs retain their invocation/guest interfaces. All six request models expose optional activation/root/parent IDs and cancellation/status by known activation ID. C cancellation uses a callback with a separate transport-error channel. Their contract fixtures cover absence, lineage and in-flight ownership. Phase 2 does not claim complete management/provider transports in all six languages. Phase 3 adds typed guest bindings, cross-language parity and actual Rust/TypeScript transport workflows.