Problem
Fresh required CI on the pinned Core 3 corpus 9d36019973201a19f9c9ebb0f10828b2fe2374aa fails test/core/ref_null.wast at 31 pass / 3 fail. Exact local inventory with wasm-tools 1.253.0 identifies commands 3, 19, and 22 (source lines 18, 67, and 70): the three assertions whose expected JSON is { "type": "exnref", "value": "null" }.
The owned engine already decodes, validates, executes, and exposes each result as JavaScript null. The defect is in the owned live-corpus comparator: its exnref branch unconditionally requires a non-null object and ignores the converter's explicit null value. This is a scoring contract bug, not an engine ref.null gap.
Required implementation
- Make the comparator distinguish explicit null
exnrefexpectations from non-null exception references. - Preserve non-null
eqref,structref,arrayref, andexnrefmatching, along withrefnulland bottom-reference matching. - Lock the converter representation into the corpus-driver self-test.
- Do not exclude assertions, mark failures n/a, pin away the file, or delegate execution to a system Wasm engine.
Acceptance
- Pinned
test/core/ref_null.wastmoves from 31/34 to 34/34 with the same evaluator binary; exactly the threeexnrefassertions flip. - Neighboring Core 3 reference/exception smokes and the corpus-driver self-test remain green.
- Fresh CI records a nonzero inventory with zero fail/runner entries.
Parents: #486, #493
Related: the wasm-core-3-memory64-gc-smoke required check.