§18A.12 directive #1 — the ONE async seam. Resolve the bridge (via
detectBridge unless pinned) and the per-graph backend params, and
return an opaque, frozen CauslWasmModule the synchronous
createCauslWasmSync consumes with zero further await.
Call ONCE per process+bridge at app init (in the browser: BEFORE the first
render that builds a wasm graph). Idempotent — concurrent calls share one
resolution via compiledModuleByBridge; a transient failure drops
the cache entry so the next call retries.
LOUD-FAIL: an unresolvable bridge/artefact throws a
WasmEngineUnavailableError (this is an explicit wasm request — it
never silently degrades). The #32 loader port LANDED: this resolves the
artefact base, runs the one true async WebAssembly.compile, and imports
the sidecar + compute-imports snippet. The resolution await happens
OUTSIDE any commit envelope (the §18A.6 single-tick invariant is
untouched — it is hoisted to bootstrap).
§18A.12 directive #1 — the ONE async seam. Resolve the bridge (via detectBridge unless pinned) and the per-graph backend params, and return an opaque, frozen CauslWasmModule the synchronous createCauslWasmSync consumes with zero further await.
Call ONCE per process+bridge at app init (in the browser: BEFORE the first render that builds a wasm graph). Idempotent — concurrent calls share one resolution via compiledModuleByBridge; a transient failure drops the cache entry so the next call retries.
LOUD-FAIL: an unresolvable bridge/artefact throws a WasmEngineUnavailableError (this is an explicit wasm request — it never silently degrades). The #32 loader port LANDED: this resolves the artefact base, runs the one true async
WebAssembly.compile, and imports the sidecar + compute-imports snippet. The resolutionawaithappens OUTSIDE any commit envelope (the §18A.6 single-tick invariant is untouched — it is hoisted to bootstrap).