ReadonlybridgeReadonlyepoch#146 — the cache GENERATION this handle was compiled under (see
cacheEpoch). createCauslWasmSync rejects a handle whose stamp
does not match the CURRENT generation: a handle carried ACROSS a cache reset
points at a torn-down shared instance / stale _bg.js glue and MUST NOT
re-instantiate. A handle from the live generation matches and is never
spuriously rejected.
§18A.12 — the opaque, frozen handle preloadCauslWasm resolves and createCauslWasmSync consumes. It carries EVERYTHING the synchronous backend construct needs so that step holds ZERO awaits:
bridge— the resolved BridgeId this handle was prepared for.createCauslWasmSyncvalidates this against the bridge it resolves the handle under and throws on a mismatch.module— the compiledWebAssembly.Module(from the one asyncWebAssembly.compile).imports— the resolvedWebAssembly.Imports, already matched to the module's import descriptors (sidecar__wbg_*glue on the sidecar path; throw-on-call stubs on the legacy raw path).sidecar— the wasm-bindgen_bg.jssidecar module when the sidecar path was taken (its__wbg_set_wasmre-point binds the instance exports + its marshaled surface IS the WasmBridgeExports);undefinedon the legacy raw path.computeImports— thecausl-compute-imports.jssnippet module the authoritative engine installs its__causl_compute/__causl_firehandlers into.graphName,engineMode,batchedFlush) the WasmBackend constructor needs, computed async in preloadCauslWasm so the sync factory has nothing to resolve.WIRE (epic #31 / issue #32) — the real loader port. The handle now carries
module/sidecar/imports/computeImports;createCauslWasmSyncruns the synchronousnew WebAssembly.Instancelink and the authoritative flip, thenconstructGraphOverEngine(createOpts, engine).