fix(ci): the Zig target of verify_multitarget runs - #5505
Merged
Merged
Conversation
The Zig branch the salvage commit #4736 added never ran. It called `t27c gen-` (no such subcommand; the Zig generator is `t27c gen`), required a `pub fn` the generator never writes, and appended Zig that does not parse (`[_:u32;N]`, std.io.getStdOut()). The emit-bitexact job installs no zig, so under --require the step would also have failed as "zig not on PATH". None of it showed, because the job stops earlier, at the generation step. _gen maps an empty mode to `t27c gen`; the harness looks for `fn <name>(`, prints with std.debug.print (the same API across Zig releases, unlike stdout) and _run_bin can return stderr. The job installs Zig 0.16.0 exactly as queen-doctor.yml and oracle-nightly.yml do. On master 5c5c2af with Zig 0.16.0: smul agrees in C, Rust and Zig over 1744 pairs. sadd agrees in C and Rust; Zig traps, because sadd shifts by a negative count before it orders its operands, and because `as u32` wraps in C and Rust but is a checked @intcast in Zig. The step now fails for that reason instead of a missing subcommand. Refs #5497 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
tri census pin moved one number: run: steps 282 -> 283, and with it "the runner does" 261 -> 262. The new step is `Install zig` in emit-bitexact-gate.yml (previous commit), an ordinary run: step with no container, so the runner's bash -eo pipefail interprets it. Re-blessed with `tri census pin --bless`; the other two censuses are unchanged. Refs #5497 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
PR DashboardGenerated at: 2026-10-02 01:51:23 UTC
Summary
Seal Status
|
This was referenced Oct 2, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The Zig branch of
tools/verify_multitarget.py, added by the salvage commit #4736 (closing #3004, "no tool compares all four"), has never run:_gen(t27c, "", ...)runst27c gen-t27c genif "pub fn " not in src: return Nonefn smul(...), neverpub fn, so every Zig run was dropped[_:u32;N]{...}andstd.io.getStdOut()getStdOutis gone in current releases--requireturns "zig not on PATH" into a failureIt never showed, because the job stops earlier, at
check_specs_generate.py(#5497).Change
_gen: an empty mode means the default generator,t27c gen.run_zig: checks forfn <name>(, emits[_]u32{...}, prints withstd.debug.print, which has the same API in every Zig release (stdout's does not), and_run_bin(..., stream="stderr")reads it.emit-bitexact-gate.yml: anInstall zigstep, Zig 0.16.0, the same commands and version asqueen-doctor.ymlandoracle-nightly.yml. The step name now lists Zig.What it finds (master 5c5c2af, Zig 0.16.0, ReleaseSafe as #4736 chose)
That failure is real, and it is filed as #5506 with the two causes:
saddcallsmagsub(ma, mb)before ordering the operands, somagsubshifts by a negative count. In C that is undefined behaviour, Rust-Odoes not check it, and both discard the value.as u32fromi32wraps in C and Rust but lowers to a checked@intCastin Zig. At the first such pair,(256, 66047), the model itself returns-257(0xFFFFFEFF).Both need a decision about the language or the model, not a change to this gate. Until then this step fails for that reason instead of a missing subcommand. The emit-bitexact job is red on master today anyway (15 specs do not generate), so this changes no colour, only what the step says once it is reached.
Census
tri census pinmoved one number:run: steps282 -> 283 (and "the runner does" 261 -> 262), which is the newInstall zigstep. It is re-blessed in its own commit with that reason, becausecli-trirefuses a census that moves without one.--self-check's positive case expects ALL TARGETS BIT-EXACT and reports the same divergence. The workflow does not run--self-checkfor this tool.Refs #5497
🤖 Generated with Claude Code