Wire up the official WebAssembly spec test suite (https://github.com/WebAssembly/spec/tree/main/test/core) as a continuous test target for we-wasm. Depends on the parser, validator, interpreter, instantiation, and post-MVP issues. The JS API issue is not strictly required (the spec tests use .wast scripts, not the JS surface).
Scope:
- Vendor the spec test suite under tests/wasm-spec/ as a git submodule (matching the html5lib-tests and Test262 pattern in CLAUDE.md).
- Build a minimal .wast script interpreter: assert_return, assert_trap, assert_invalid, assert_malformed, assert_exhaustion, register, invoke, get, and module declarations. Use we-wasm directly — no JS engine coupling here.
- Run all MVP + supported post-MVP tests during cargo test -p we-wasm; report pass/fail counts; flag any regressions in CI.
- Document the current pass rate in crates/wasm/README.md and update CLAUDE.md's Test Suites table to add a new row.
- Maintain a known-failures list (allow-listed by test name) so partial pass rates don't block merges; new failures must either be fixed or explicitly added to the list with a tracking issue.
Acceptance criteria:
- cargo test -p we-wasm executes the spec test suite locally.
- Pass rate is recorded in the crate README; the README explains how to update it.
- At least the address.wast, br.wast, call.wast, const.wast, conversions.wast, fac.wast, forward.wast, i32.wast, i64.wast, if.wast, int_literals.wast, loop.wast, memory.wast, names.wast, return.wast, select.wast, switch.wast, traps.wast suites pass cleanly.
- cargo clippy --workspace -- -D warnings passes; no external dependencies.