Repository navigation
spec(wasm): pin every numeric opcode byte; drop the duplicated constant block (prevents #12835 forever) - #12852
Conversation
Summary by t27-beesChecked by the t27 compilert27c parse, parse-complete and typecheck on each changed .t27 file at
Read by the modelThis PR adds a compile-time test that pins every numeric WebAssembly opcode byte to its spec-defined value, preventing silent hex-digit typos (like the 0x78 vs 0x76 bug in #12835) from shipping. The test asserts all arithmetic, bitwise, shift, and control opcodes in one chain so a single wrong digit refuses to compile. Worth a look
Read: 1 files, +8 -0, the whole diff. Head |
…12835 class) Rebase of PR #12852 onto current master: the duplicated constant block and the 0x78->0x76 digit already landed via #12849 and master's own reorganization, so the only remaining unique content is the pin test. - extends instruction_floor_pins_the_opcode_bytes: add/sub/mul/div_u, and/or/xor, shl/shr_s/shr_u, eqz, select pinned to the WebAssembly spec table in one assert chain -- a wrong hex digit now refuses to compile instead of shipping (the #12835 class, closed forever) - test-only: gen regen is a no-op diff, 108 spec tests 0 vacuous, cargo test -p t27b 178 passed / 0 failed Refs #12835
PR DashboardGenerated at: 2026-10-27 13:21:50 UTC
Summary
Seal Status
|
|
Triage of the 5 red checks on the rebased head (29da960) -- all master-inherited, none from this diff (+8/0 test-only asserts in specs/tri/t27b/wasm.t27):
Everything this PR owns is green: L1 TRACEABILITY, check-linked-issue, own-language, duplicate-bodies, parse-ratchet, Documented-subcommands, gitleaks. Local receipts on the head: 108 spec tests 0 vacuous, cargo test -p t27b 178/0, gen regen no-op. |
…ord (Closes #12855) (#12856) THE NUMBERS THAT MOVED: pass 2458, pass_vacuous 4, not_pass 140 (max_not_pass 133 -> 140), ledger source commit ac1759e -> 4125e29. - 118 UNLISTED rows added (specs landed without a row -- the exact disease specs/tri/t27b/ledger_steward.t27 was written for). - 4 gains: hdmi_grab (blocked -> pass), credits and update-soul (t27#12833's portable-subset rewrites now pass), frame_render (mismatch -> pass). - 4 STALE rows dropped (wasm_board_ax7203's duplicate constant is #12852's fix; actor_view, keysync, lab_inputs the reference no longer passes). - 6 rows hand-written with reason n/a, exactly as the bless refusal instructs: five pass_ct semantics rows and codegen_conformance's mismatch -- the honest record of the jit/interp fault, which stays open as #12854's work. THE CAP WORD: the beyond-new rise (a named entry regressed) is what the steward refuses without a person; the owner answered the #12854 decision ask with an explicit yes on 2026-10-27 in the working session ("да все три и сделай сам автономно"), quoted in the PR body. tri t27b ratchet --run run.json: GREEN -- 0 findings of every kind.
Refs #12835
Scope (rebased onto current master)
The dedup + 0x78->0x76 digit already landed via #12849 and master's reorganization of the constants block, so this PR now carries exactly ONE thing: the pin test that makes the whole #12835 class impossible.
instruction_floor_pins_the_opcode_bytes: add/sub/mul/div_u, and/or/xor, shl/shr_s/shr_u, eqz, select -- every numeric opcode byte pinned to the WebAssembly spec table in one assert chain. A wrong hex digit now refuses to compile instead of shipping.Receipts (this branch, tip = master)
specs/tri/t27b/wasm.t27 +8/-0; gen regen is a no-op difft27c test-report: 108 spec tests, 0 vacuouscargo test --release -p t27b: 178 passed / 0 failed (incl. wasm32 12/12)