Reference

Exposure bindings

The canonical binding contract behind REST, OpenAPI, GraphQL, gRPC, SDKs, CLI, MCP, dashboard actions, webhooks, realtime channels, events, analytics, auth, runtime fabric scaling, and host imports.

An exposure binding is the complete statement that one canonical capability is visible through one protocol shape. It names the protocol, route/name, input and output contracts, error contract, authentication contract, authorization policy, grant set, rate limit, idempotency policy, observability policy, explainability reason block, stability state, and deterministic descriptor hash.

Binding descriptor

{
  "bindingId": "rest:Entity.Order.Read",
  "tenantId": "acme",
  "projectId": "billing",
  "publicationVersion": 412,
  "surfaceKind": "OperationProjectionSurface",
  "surfaceName": "Order",
  "surfaceVersion": "412",
  "capabilityId": "Entity.Order.Read",
  "capabilityNodeId": "pcg:entity:Order:read",
  "protocolKind": "Rest",
  "exposureShape": "RestRoute",
  "routeOrName": "GET /api/Entity/Order/{id}",
  "inputContractRef": "contracts/Order.Read.Request",
  "outputContractRef": "contracts/Order.Read.Response",
  "errorContractRef": "contracts/ApiError",
  "authnContractRef": "auth/BearerProjectToken",
  "authzPolicyRef": "policy/Order.read",
  "requiredGrantSet": ["entity:Order:read"],
  "rateLimitPolicyRef": "quota/read/default",
  "idempotencyPolicyRef": null,
  "observabilityPolicyRef": "observability/entity-read",
  "explanationReasonCodeBlock": "reason/Order.read",
  "stability": "Stable",
  "deprecationPolicy": null,
  "descriptorHash": "sha256:6f6f..."
}

Protocol kinds

ProtocolDescription
RestREST over HTTP route exposure.
OpenApiOpenAPI operation emission derived from REST bindings.
GraphQLGraphQL fields, mutations, and subscriptions.
GrpcGenerated proto contracts and gRPC method dispatch.
SdkTyped SDK method exposure.
CliDescriptor-driven CLI command exposure.
McpMCP tools, resources, and prompts.
DashboardOfficial dashboard actions projected from canonical bindings.
WebhookOutbound webhook topic delivery.
RealtimeWebSocket, SSE, and push subscription channels.
EventCanonical event producers and consumers.

Exposure shapes

ShapeDescription
RestRouteHTTP method plus route template.
OpenApiOperationOpenAPI operation entry.
GraphQLFieldGraphQL Query field.
GraphQLMutationGraphQL Mutation field.
GraphQLSubscriptionGraphQL Subscription field.
GrpcMethodgRPC method on a generated service.
SdkMethodTyped SDK method.
CliCommandCLI command with arguments/options.
McpToolMCP callable tool.
McpResourceMCP readable resource.
McpPromptMCP prompt template.
DashboardActionDashboard button, menu entry, or route action.
WebhookTopicOutbound webhook topic.
RealtimeChannelRealtime subscription channel.
EventProducerSurface emits a canonical event.
EventConsumerSurface consumes a canonical event.
AnalyticsQueryAnalytics query exposed for evaluation.
AnalyticsReportAnalytics report projection.
AnalyticsDashboardAnalytics dashboard projection.
AuthSchemeExposureIdentity/auth exposure such as login, refresh, federation, challenge.

Stability states

StateDescription
ExperimentalExplicit opt-in required; no compatibility guarantees.
BetaBroad availability; breaking changes possible with notice.
StableFirst-class support with compatibility guarantees.
DeprecatedCallable but superseded; requires deprecation policy and replacement.
RetiredDescriptor remains for traceability; runtime dispatch fails closed.

API operation kinds

Operation kind is the canonical verb used by route materialization, OpenAPI operation IDs, CLI command derivation, SDK methods, MCP tool names, and dashboard actions.

Operation kindDescription
CreateCreate one resource.
ReadRead one resource by id.
UpdateUpdate one resource.
DeleteDelete one resource.
UpsertCreate or update by identity.
ReadByAlternateKeyRead one resource by named alternate key.
ListList resources.
QueryExecute typed query/filter AST.
CountCount matching resources.
ExistsCheck existence.
BatchCreateCreate multiple resources.
BatchUpdateUpdate multiple resources.
BatchDeleteDelete multiple resources.
UploadUpload binary or source content.
DownloadDownload binary or source content.
StreamStream binary or event content.
PresignDownloadUrlCreate a signed download URL.
PresignUploadUrlCreate a signed upload URL.
CopyCopy storage/source content.
MoveMove storage/source content.
TriggerTrigger a task/workflow/action.
PausePause a task, workflow, or surface.
ResumeResume a paused task, workflow, or surface.
CancelCancel a run or operation.
ExecuteExecute a planned operation.
PlanPlan an operation without applying.
PreviewPreview a change or migration.
DiffDiff model, branch, environment, or schema state.
MigrateApply migration/evolution work.
SnapshotCreate or read a snapshot.
ValidateValidate descriptor, input, schema, or build.
SubscribeSubscribe to realtime or event updates.
CustomConnector or domain-specific operation.
InvokeInvoke an authored handler through the execution coordinator.

API resource kinds

Resource kindDescription
EntityDynamic entity CRUD/query resources.
StorageBlob/object/source asset storage resources.
SchedulingTask definition, run, trigger, and attempt resources.
OperationCanonical operation plan/execute resources.
ControlPlaneTenant, organization, project, and platform control-plane resources.
SchemaSchema, migration, snapshot, transition, validation resources.
RealtimeRealtime subscription resources.
AuthAuthentication resources.
BranchingBranch, workspace, sandbox, proposal, environment resources.
ConnectorConnector contracts, implementations, bindings, invocation resources.
IdentityIdentity provider, subject, membership, policy resources.
EmailEmail transport resources.
SmsSMS transport resources.
WebhookWebhook endpoint, receiver, delivery, receipt resources.
AuthoredHandlerAuthored handler invocation resources.
AnalyticsAnalytics catalog, query, model, metric, report, dashboard, materialization resources.
PlaneCapabilityGraphPCG descriptor and node resources.
AutomationAutomation definition, run, approval, attempt, signal resources.
MeasureMeasure descriptor and query resources.
AgentAgent, run, plan, memory, model binding, skill, knowledge corpus, MCP resources.

Transport, body, and change tracking

Transports

TransportDescription
RestHTTP JSON/resource transport.
WebSocketWebSocket realtime transport.
SseServer-sent event realtime transport.
InternalInternal dispatcher/background transport.

Request body kinds

Body kindDescription
NoneNo request body.
JsonJSON request body.
MultipartFormMultipart form upload body.
OctetStreamBinary octet-stream body.
StreamStreaming body.

Change tracking

Tracking kindDescription
NoneNo change tracking or notification support.
FieldNamesOnlyChange events include field names only, never values.
FullPayloadFull-payload notification shape for explicitly safe internal or policy-granted surfaces.

Runtime fabric vocabulary

Runtime fabric is the placement and operator plane. It uses a separate topology vocabulary from the authored-code execution surfaces.

Project execution surfaces

SurfaceDescription
UnspecifiedFail-closed default. Never silently resolves or applies.
ApiIngressProject HTTP API ingress surface; commonly load-balanced and scaled on request pressure.
CoreHandlerAuthored core handlers in the project runtime topology; can scale independently from consumers and jobs.
DurableWorkflowAuthored durable workflows in the project runtime topology; pinned to publication and governed by workflow runtime policy.
EventConsumerAuthored event consumers; commonly autoscaled on queue depth, consumer lag, or custom PCG measures.
ScheduledJobAuthored scheduled jobs served by platform scheduling operators; often fixed or tightly capped.
WebhookHandlerAuthored inbound webhook handlers; can be separately exposed, load balanced, and autoscaled.
EdgeHandlerConstrained authored edge handlers with edge-resource policy and distribution-origin integration.
ManagementHandlerPrivileged authored management handlers; usually fixed, private, and heavily governed.
RealtimeGatewayProject realtime WebSocket/SSE subscription gateway; scales on connection and fanout pressure.

Runtime substrates

SubstrateDescription
UnspecifiedFail-closed default. Permitted only before topology resolution.
HostManagedIn-process on the main Vadyl host.
FixedInstancePinned VM or dedicated instance.
AutoscaledInstanceGroupScaling group of substrate-managed VMs with declared autoscale metrics and instance ceilings.
ServerlessContainerScale-to-zero request-driven or queue-driven container with concurrency and resource-class policy.
DedicatedContainerLong-lived dedicated container realization with manual or native autoscale policy.
ClusteredRuntimeOrchestrated cluster substrate. Kubernetes is one realization, not a canonical type.
EdgeSubstrateEdge point-of-presence runtime substrate with edge CPU-time and memory budgets.

Scaling modes

ModeDescription
FixedKeep a fixed desired instance count; no manual mutation or autoscaler changes it.
ManualOperators or automation set desired count inside canonical min/max and governance ceilings.
AutoscaleDesired count is driven by native or Vadyl-managed autoscale rules.

Scale partition modes

PartitionDescription
SharedPoolAll surfaces share one workload pool.
PerSurfaceEach project execution surface realizes independently.
NamedGroupSurfaces with the same scale group name share desired count and autoscale policy.

Autoscale strategies

StrategyDescription
TargetTrackingKeep a metric near a target value.
StepScalingApply explicit capacity changes when thresholds are crossed.
ScheduledApply planned min, max, or desired counts during time windows.
PredictiveUse a substrate or Vadyl model to forecast capacity before demand arrives.
QueueDrivenScale from queue depth, consumer lag, or backlog age.

Autoscale metrics

MetricDescription
SaturationPercentRunning capacity divided by desired capacity.
CpuUtilizationPercentCPU utilization from substrate telemetry.
MemoryUtilizationPercentMemory utilization from substrate telemetry.
RequestsPerSecondPerInstanceRequest rate normalized per running instance.
InFlightRequestsPerInstanceConcurrent request pressure per instance.
LatencyP95Ms / LatencyP99MsTail latency measured at runtime or ingress.
QueueDepth / ConsumerLagSecondsBacklog pressure for event and queue consumers.
AcceleratorUtilizationPercentGPU, inference accelerator, or specialized device utilization.
CustomPcgMeasureA PCG measure with compatible semantics, dimensions, freshness, grants, and a live sample source.

Resource classes

Resource classDescription
BurstableCost-efficient baseline with burst capacity.
StandardGeneral-purpose runtime class.
ComputeOptimizedCPU-heavy workloads.
MemoryOptimizedMemory-heavy workloads.
AcceleratedTraining / AcceleratedInferenceGPU, neural accelerator, FPGA, or specialized inference class.
EdgeIsolateConstrained edge runtime budget with CPU-time and isolate memory ceilings.
ServerlessFunctionFunction-style runtime with request, concurrency, and wall-clock constraints.

Load-balancing modes

Load-balancing modeDescription
NoneNo managed load balancer requested.
ManagedPublicPublic load-balanced service endpoint.
ManagedPrivatePrivate load-balanced service endpoint for internal traffic.
MeshOnlyService-mesh or internal routing fabric only.

Platform operators

OperatorDescription
UnspecifiedFail-closed default.
EventOutboxProcessorDrains transactional outbox rows into the platform event log.
EventRouterRoutes canonical events to registered consumers with at-least-once delivery.
WebhookDeliveryDispatcherDispatches pending outbound webhook deliveries.
InboundWebhookReconcilerReconciles inbound webhook receipts against the canonical event log.
ScheduledJobScannerScans triggers and materializes due scheduled runs.
ScheduledJobDispatcherClaims and dispatches scheduled runs.
ScheduledJobWorkerExecutes scheduled handler work.
RealtimeSubscriptionFanoutFans out entity change events to realtime subscribers.
CacheInvalidationPumpPropagates cross-instance cache invalidations.
ObservabilityDrainAuditAppend-only audit-log drain.
ObservabilityDrainDebugBest-effort debug trace drain.
ObservabilityDrainOperationalBackpressure-aware operational trail drain.
BillingDrainMeteringUsage metering drain.
BillingDrainRollupUsage rollup aggregator.
ProvisioningRecovererRecovers stuck project provisioning runs.
SchemaTransitionRecovererRecovers stuck schema transition runs.
EvolutionRecovererRecovers stuck graph evolution runs.
WorkflowRecovererRecovers stale durable workflow instances.
RuntimeFabricRecovererRecovers stale runtime-fabric deployment intents.
DatabaseSourceJobDispatcherDispatches external-database-source jobs.
StagingTtlSweeperSweeps expired external database source staging rows.
GracefulShutdownCoordinatorCoordinates graceful shutdown across host background services.
AuthoredWorkerPoolPlatform-owned pool that executes authored runtime code.

Capability host imports

Authored capability implementations can import only this closed host set. Any import outside the set fails instantiation before the implementation can run.

Host importDescription
MemoryGetRead connector/capability memory.
MemoryGetSnapshotRead a memory snapshot.
MemoryPutIfAbsentWrite memory only when absent.
MemoryCompareExchangeAtomic compare-and-exchange memory update.
MemoryAppendJournalAppend to a capability journal.
MemoryAcquireLeaseAcquire a host-managed lease.
MemoryReleaseLeaseRelease a host-managed lease.
MemoryDeleteDelete host memory.
MemoryExpireSet memory expiry.
ObservabilityRecordSpanRecord a structured span.
ObservabilityLogWrite a redacted observability log entry.
SecretsSignRequestSign a request without revealing raw secret material.
SecretsHmacCompute HMAC without revealing raw secret material.
SecretsAttachAuthToEgressPlanAttach auth to a host-validated egress plan.
SecretsResolveRedactedMetadataResolve redacted secret metadata only.
SecretsDecryptForHostEgressOnlyDecrypt only inside host egress boundary.
EgressBuildPlanBuild a governed egress plan.
TimeNowRead host-provided current time.
CapabilityAssertAssert a required capability grant at the host boundary.

Failure example

HTTP/1.1 403 Forbidden
{
  "error": {
    "code": "ACCESS_DENIED",
    "reasonCode": "ExposureBinding.RequiredGrantMissing",
    "bindingId": "mcp:Entity.Order.Delete",
    "missingGrants": ["entity:Order:delete"],
    "correlationId": "01HXZ0J4YV8AJF2GFG2T1F7Y42"
  }
}