Pulse 1.0.0-beta.1 betaExact, immutable release documentation.Browse latest
Documentation platform maintainersactiveReviewed 2026-08-01Review by 2027-01-12

Provider and target compatibility#

This page is the single compatibility matrix for the Pulse Beta. It records the tested source forms, provider bindings, target realizations, and deployment boundary for the four explicit execution modes. The same managed handler and Router contract applies in every column; target selection changes the realization, not the application model.

For the exact TypeScript and JavaScript source subset behind these rows, see Managed handler TypeScript and JavaScript.

Reading the matrix#

  • Yes means the form is part of the current contract and has focused

cross-target evidence.

  • JS only means the form may remain in an explicitly selected JavaScript

application but makes Native lowering ineligible.

  • No means the form is outside the managed Pulse contract even when the

underlying JavaScript engine or provider offers it.

  • A provider resource name, such as Config Store, names the realization

selected by that provider/target cell. It does not expose the provider SDK to application code.

Pulse never changes columns automatically. A Native eligibility failure stops the Native build; it does not authorize automatic JavaScript fallback.

Source-form compatibility#

Source formNode JSFastly JSNode NativeFastly NativeNotes
Async-shaped managed handlerYesYesYesYesNative erases the authoring wrapper; it does not link Promise, JSPI, or Asyncify semantics.
Static Router topology and terminal next()YesYesYesYesCovers static get, head, post, middleware, mounts, parameters, trailing wildcard, fallthrough, and the error lane.
Root-only Pulse.on and non-HTTP event contextYesNoYesNoNode owns the bounded reference ingress. Fastly source remains inspectable but execution/build eligibility fails closed.
Awaited one-way ctx.emit acceptanceYesNoYesNoStatic schema-bound frames only; no delivery, loopback, public bus, call surface, or target fallback.
Sequential awaits of trusted Pulse effectsYesYesYesYesJavaScript preserves source order. Native lowers effects and continuations and may group adjacent independent effects without changing results.
await ctx.parallel({ fixed: effect })YesYesYesYesRequires a nonempty inline object with fixed non-index keys and fresh request-owned Pulse effects.
Request metadata, route parameters, request state, logging, and response constructionYesYesYesYesThese are synchronous managed surfaces; awaiting a proven synchronous value is redundant and may warn.
Schema-bound request, fetch, and response JSONYesYesYesYesSchema and response-case IDs are literal project declarations.
Generic bounded JSON with pulse.strict: falseYesYesYesYesThe plan records the generic host parser. Strict mode requires a declared schema.
Direct opaque response pass-throughYesYesYesYesReturnable, but not inspectable, iterable, buffered, transformed, or retained in userland.
Supported package-root Assets and GRIP callsYesYesYesYesJavaScript runs the package implementation. Native accepts the package's synchronized, bounded lowerable subset.
Ordinary target-compatible JavaScript package APIYesYesNoNoJavaScript packaging must include a provider-compatible dependency. Native requires a trusted package-owned lowerer.
Arbitrary Promise construction or library awaitJS onlyJS onlyNoNoNever valid inside ctx.parallel; Native reports the first eligibility boundary and never falls back.
Ambient fetch, timers, environment/process access, filesystem, sockets, or provider SDKNoNoNoNoUse ctx effects and configured provider bindings.
Userland body streams, chunk transforms, or background workNoNoNoNoStructured reads are bounded, opaque bodies stay host-owned, and work ends with the request.

Provider and target realization#

The application-facing source form stays the same across these cells. Text in a cell names the provider-owned binding or artifact that realizes it.

CapabilityNode JSFastly JSNode NativeFastly NativeNotes
Canonical handler and Router executionYesYesYesYesShared handler, Router, context, effect, and result contracts.
Request and structured responsesYesYesYesYesProvider adapters preserve the canonical request/response model.
Single, sequential, and keyed-parallel fetchYesYesYesYesFetch is a ctx effect; no ambient fetch authority is implied.
Explicit JSON schemas and bounded generic JSONYesYesYesYesSchema policy is project-owned and target-neutral.
Config readsTest/dev bindingConfig StoreTest/dev bindingConfig StoreExact names are resolved from the selected profile; no ambient fallback.
Secret readsTest/dev bindingSecret StoreTest/dev bindingSecret StoreSecret values remain provider-owned and are redacted from diagnostics and logs.
KV get and putIn-memory bindingKV StoreIn-memory bindingKV StoreNamespaces are explicit profile bindings.
Opaque pass-throughYesYesYesYesBodies remain host-owned in all four modes.
GRIP framing and configured broadcastYesYesYesYesThe package-root contract owns the portable operation shape.
ctx.log and redactionYesYesYesYesProvider output format may differ; the level and redaction contract does not.
Reference event ingress and ctx.emit acceptanceBounded Node adapterNoBounded Node adapterNoDirect parity evidence only: FIFO ingress, exact-frame acceptance, no loopback, delivery promise, public bus, call surface, or automatic fallback.
Local execution evidenceNode lifecycleProvider emulationCanonical hostControlled ABI hostLocal proof is not production provider activation.
Deployment candidateSource packageSource package plus downstream runtime WasmNode buildbin/main.wasmA candidate records the selected target and does not contain an automatic fallback artifact.
Production deployment and activationNot applicableHuman-operatedNot applicableHuman-operatedFastly reality, deployment, and activation remain explicit external gates.

Entities Beta package#

This table records measured behavior for the implemented @pulse-compute/entities package. Release membership does not erase the separate ordinary-lifecycle and Fastly Native integration boundaries.

Entities capabilityNode JSFastly JSNode NativeFastly NativeNotes
Static EntityRouter declarationsYesYesYesYesOne literal router, first-party adapter, static registrations, named handlers, and one terminal binding.
Bounded JSON-RPC request executionMeasuredMeasuredMeasuredMeasuredFastly cells execute generated artifacts with Viceroy 0.20.1.
Declared input/output schema codecsMeasuredMeasuredMeasuredMeasuredSelection precedes decode; only the selected schemas are available.
Managed handler effectsMeasuredMeasuredMeasuredMeasuredThe shared corpus includes schema work, fetch, and stable negative cases.
Deterministic catalog and inspectionYesYesYesYesCatalog and redacted inspection are package-owned build artifacts.
Ordinary project build integrationYesYesNoNoJavaScript source packaging emits the catalog; Native evidence uses package source outside the ordinary build adoption path.
Ordinary project test/dev loadingBlockedBlockedNot applicableNot applicableThe shared JavaScript loader requests an unexported physical entry instead of the public package root.
Automatic target fallbackNoNoNoNoEligibility, measured execution, and release assignment remain separate claims.

JWT and crypto Beta packages#

This table records the sealed Phase D and E behavior of the synchronized 1.0.0-beta.1 JWT/crypto packages. Validation does not itself authorize npm publication.

Candidate capabilityNode JSFastly JSNode NativeFastly NativeNotes
HS256 MAC verificationruntime-builtinruntime-builtinguest-source:pulse-hmac-asguest-source:pulse-hmac-asAll cells consume one bounded corpus and return the same closed result categories.
ES256 signature verificationruntime-builtinruntime-builtinguest-linked:pulse-es256-rustcrypto-p256guest-linked:pulse-es256-rustcrypto-p256The 38-case matrix runs both JavaScript cells and both Native optimization artifacts per provider with exact failure parity.
Exact realization selectionYesYesYesYesProfile replacement is whole-value replacement; there is no array or object merging.
Disabled fallbackYesYesYesYesMissing capability, unavailable pins, and realization failures stop without choosing another backend or target.
Secret-safe realization reportingYesYesYesYesReports identify algorithms and realizations but never key, message, or authenticator bytes.
Prebuilt guest-linked unit requiredNoNoES256 onlyES256 onlyNative HS256 remains first-party AssemblyScript in the primary module; Native ES256 uses the exact audited RustCrypto guest.
JWT verificationHS256, ES256HS256, ES256HS256, ES256HS256, ES256RS256 and EdDSA remain unavailable; no failure changes algorithms, realizations, targets, or providers.
JWT authenticity before claimsYesYesYesYesInvalid authenticity exposes no claims and stops before clock, registered-claim, or schema authority.
Exact final-artifact executionPackage runtimeCompute artifactPrimary Native modulebin/main.wasmNative cells execute the package-owned guest sources; JavaScript cells execute the exact selected runtime builtin.

Evidence and authority#

Each row above is grounded in one or more of these current contracts or focused proofs:

  • Managed surface and target support: HANDLER_SURFACE_DEFINITIONS,

HANDLER_AUTHORING_MODES, and HANDLER_AUTHORING_POLICY_VERSION in wasm/packages/contracts/src/handler/surface-contract.js.

  • Public TypeScript shape: packages/runtime/src/index.d.ts owns the

Promise-shaped handler, terminal RouterNext, context, effect, body, and result types.

  • Async, trusted await, ambient authority, and ctx.parallel boundaries:

wasm/test/lowering/assert-canonical-api-lowering.cjs.

  • Native source realization without Promise or Asyncify:

wasm/test/compiled/assert-canonical-native-wasm.cjs.

  • Four-mode behavior and target integrity:

wasm/test/contracts/assert-four-mode-conformance.cjs and wasm/test/support/four-mode-conformance.cjs.

  • JavaScript effect order and explicit parallel behavior:

wasm/test/contracts/assert-javascript-effect-adapter.cjs.

  • Router and context parity:

wasm/test/contracts/assert-node-router-context-parity.cjs.

  • Schemas, generic JSON, and body ownership:

wasm/test/contracts/assert-schema-codecs.cjs, wasm/test/contracts/assert-fetch-projections-request-bodies.cjs, and wasm/test/runtime/assert-canonical-opaque-passthrough.cjs.

  • Config, secrets, KV, exact bindings, and redaction:

wasm/test/contracts/assert-config-secrets-kv-redaction.cjs.

  • Assets and GRIP package-root support:

wasm/test/compiled/assert-package-root-native.cjs, wasm/test/contracts/assert-grip-cross-target-conformance.cjs, and the package runtime tasks registered in wasm/test/suite/registry.cjs.

  • Provider candidates and external reality boundary: the Node/Fastly

provider tasks in wasm/test/suite/registry.cjs and the mandatory Fastly reality gate declared by release/pulse-release-manifest.json.

  • Entities package: static catalog and inspection proofs in

wasm/test/entities/assert-entities-catalog.cjs and wasm/test/entities/assert-entities-inspection.cjs; orchestration boundaries in wasm/test/entities/assert-entities-orchestration-demo.cjs; and the shared four-mode Viceroy corpus in wasm/test/entities/assert-entities-cross-target.cjs.

  • JWT/crypto packages: the crypto corpus in

packages/crypto/conformance/hs256.json, wasm/test/crypto/assert-crypto-cross-target-conformance.cjs, and wasm/.test-results/crypto-c4/phase-c-seal.json; the JWT composition seal in wasm/.test-results/jwt-d4/jwt-phase-d-seal.json; and the four-cell, 210-execution cross-target seal in wasm/.test-results/jwt-e4/jwt-phase-e-seal.json. The Fastly reality tasks execute generated JavaScript and Native provider artifacts locally through fastly compute serve; they do not deploy or activate a service. ES256 target alignment is recorded by the six-cell, 228-evaluation matrix in wasm/.test-results/boundary-h4/es256-six-cell-matrix.json, including the Fastly JavaScript runtime Wasm under Viceroy.

The focused documentation assertion wasm/test/docs/assert-compatibility-matrix.cjs keeps the matrix header unique, checks the public target order, verifies its evidence paths, and compares the documented managed-surface rule with the canonical handler-surface registry.

Browse other documentation