wai/wai-int-module is one WebAssembly module with the interface of waism §5 and nothing else: no import, one memory with a declared maximum, and every allocation trapping where memory cannot grow (R13). It decodes the integer payloads (WIV1, WIH1, WIA1, WIS1), int_synth, int_mlicpp, opus.dred.int and avatar.face through wai-rs's integer decoders, whose networks run on wai-ops/1; networks and weights arrive as each capability's set. - record/: the scalar and SIMD128 builds (7,099 vector instructions), named by SHA-256 in manifest.json, each held at the integer level by the Rust checker and check-module.mjs. build.sh builds both with the machine's paths remapped and checks both with both checkers. A build on another host has other bytes (the compiler's crate hashes take in each path dependency's absolute path and the host) and gives every case the same outcome. - corpus.json (corpus.py): every committed vector and refusal fixture of those capabilities, 120 cases, from the committed corpora. - host/ (wasmtime 50.0.1 Cranelift and Winch, Wasmi 2.0.0 with floats off), run-node.mjs and browser/run-browser.mjs run every case as a sink does and print one run digest; every run, on Linux x86_64, Linux arm64 and macOS arm64, gives the same. - plant.py plants a float or a relaxed vector instruction in a module, for the checkers. - waism §5, The set: one file as its bytes, several as their file sequence. avatars §6 names generator.wfg and identity.wfi; avatars §7.8, opus-dred §4.8 and determinism-tiers §5 state the module as a fabric. Co-Authored-By: Claude Opus 5.5 <[email protected]>
15 lines
701 B
JavaScript
15 lines
701 B
JavaScript
// node-worker.mjs: the worker run-node.mjs starts for one module. It compiles the module,
|
|
// decodes every case through sink.mjs in order, and posts each case's start and result;
|
|
// run-node.mjs ends it from outside when a case passes the wall-clock limit.
|
|
import { parentPort, workerData } from 'node:worker_threads';
|
|
import { decode } from './sink.mjs';
|
|
|
|
const { moduleBytes, cases } = workerData;
|
|
const module = await WebAssembly.compile(moduleBytes);
|
|
for (let i = 0; i < cases.length; i++) {
|
|
const c = cases[i];
|
|
parentPort.postMessage({ start: i });
|
|
const r = await decode(module, c.cap, c.payload, c.set);
|
|
parentPort.postMessage({ done: i, r });
|
|
}
|
|
parentPort.postMessage({ end: true });
|