open-standards/scripts
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 888cc3ba20 CI: a check holds every workflow to the one pinned wasmtime and both its settings
The install steps' comment said every WAI workflow that runs wasmtime pins one
version and passes both determinism settings, but nothing enforced it: a step
that ran a stock or differently pinned wasmtime would have merged green.
scripts/check-wasmtime-pin.py now fails, in the repository checks, any workflow
that

1. downloads a wasmtime release other than 50.0.1, or checks it against any
   SHA-256 but that archive's;
2. installs wasmtime another way (cargo install, the install script, an action);
3. runs wasmtime (run, serve, compile, or a module given to it) or names it as
   a CARGO_TARGET_*_RUNNER without -W nan-canonicalization=y and
   -W relaxed-simd-deterministic=y.

It also fails when it finds no download or no run, so a check that looked in
the wrong place cannot pass. On this tree it finds the downloads and runs it
should. Its self-test (scripts/check-wasmtime-pin-selftest.sh) passes a scratch
workflow shaped like these and fails each way of breaking it that the
self-test lists, matching the reason in the output.

The comment's relaxed_madd claim was measured on arm64 only. It now rests on
both architectures, measured on an arm64 macOS host and an x86_64 Linux host
with a small probe (wasmtime 50.0.1's release for the host, checked against
the digest the release lists):

    host Darwin arm64; wasmtime 50.0.1 (c307ec81d 2026-10-29)
    f32.add(bits 0x7fa00001, 1.0)                     [no flags]: 0x7fe00001
    f32x4.relaxed_madd(1+2^-12, 1+2^-12, -(1+2^-11)) [no flags]: 0x33800000
    f32.add(bits 0x7fa00001, 1.0)                     [both flags]: 0x7fc00000
    f32x4.relaxed_madd(1+2^-12, 1+2^-12, -(1+2^-11)) [both flags]: 0x33800000
    an unknown -W option is refused: error: failed to parse -W / --wasm option:
      unknown option: no-such-option

    host Linux x86_64; wasmtime 50.0.1 (c307ec81d 2026-10-29)
    (the same five lines, bit for bit)

0x33800000 is 2^-24, the fused result; the unfused fadd(fmul) gives 0. So the
NaN setting takes effect on both, and relaxed_madd is fused on both with and
without the relaxed setting. That matches 50.0.1's source (the
wasmtime-internal-cranelift crate, read from the registry): the translator
lowers F32x4/F64x2RelaxedMadd through fma_f32x4/fma_f64x2
(src/translate/code_translator.rs L2530-2539), which emit a native fma on a
host that has one, a fused library call under relaxed-simd-deterministic on a
host that has none, and the unfused fmul and fadd only on a host with no FMA
and the setting off (src/func_environ.rs L5907-5925). The setting is what
makes the result fused on every host. And since an unknown -W option stops
wasmtime, a run that exits 0 with the two flags has parsed them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 12:28:47 -05:00
..
check-advisories-selftest.sh sec: answer the gate's first catch — two constant-time advisories, and pin an allowance to the version it excuses 2026-10-24 20:06:05 -04:00
check-advisories.py sec: RUSTSEC-2026-0429, a zip archive that aborts the process on extract 2026-11-02 06:31:12 -05:00
check-comparative-prose.sh Public-text checks: the OER/2 documents and corpus are checked like any other file 2026-10-29 22:28:00 -04:00
check-fabric-errors.py jouleclaw-omni: metal compiles — 45 -> 0, write the 21 missing kernels 2026-10-20 04:33:42 -04:00
check-lockfiles-selftest.sh scripts: no pipe into grep -q under pipefail 2026-10-15 01:52:03 -04:00
check-lockfiles.sh joule-code: vendor wtransport 0.7.2 as published, patched in 2026-10-20 04:54:03 -04:00
check-metal-shaders.py check-metal-shaders: stop being coupled to raw-string style, and refuse to check almost nothing 2026-10-20 08:52:06 -04:00
check-no-vanity-metrics.sh docs + no-vanity-metrics: reword two counts, fix scanner false positive 2026-06-13 22:14:13 -04:00
check-orphan-sources.py jouleclaw-omni: declare 23 modules that were compiled by nothing 2026-10-18 07:19:24 -04:00
check-public-names.sh check-public-names: the maintainers' product names are checked on every pull request 2026-11-04 12:28:47 -05:00
check-spec-refs-selftest.sh ci: a citation to a section that does not exist is now a failure 2026-10-13 03:07:23 -04:00
check-spec-refs.py ci: a citation to a section that does not exist is now a failure 2026-10-13 03:07:23 -04:00
check-tests-in-ci-selftest.sh scripts: no pipe into grep -q under pipefail 2026-10-15 01:52:03 -04:00
check-tests-in-ci.py ci: every wai-rs test file is run by a job or listed, and none can run empty 2026-10-13 01:20:48 -04:00
check-wai-ops-doors-selftest.sh wai ops: the command line carries only the operations it implements; the door check reads a tool table by operation 2026-10-27 05:12:08 -04:00
check-wai-ops-doors.py wai ops: the command line carries only the operations it implements; the door check reads a tool table by operation 2026-10-27 05:12:08 -04:00
check-wai-section-refs.py check-wai-section-refs: read wai/SECURITY.md too 2026-10-09 17:15:06 -04:00
check-wasmtime-pin-selftest.sh CI: a check holds every workflow to the one pinned wasmtime and both its settings 2026-11-04 12:28:47 -05:00
check-wasmtime-pin.py CI: a check holds every workflow to the one pinned wasmtime and both its settings 2026-11-04 12:28:47 -05:00
check-workflow-concurrency-selftest.sh ci: one job for the repository's script checks 2026-10-14 12:05:46 -04:00
check-workflow-concurrency.sh ci: guard the concurrency groups, and stop the dev Mac serving 13 of 21 contexts 2026-10-05 12:18:21 -04:00
install-hooks.sh ci: no-vanity-metrics scanner + pre-commit hook + CHARTER policy 2026-06-02 10:39:43 -04:00
pr-touches-paths-selftest.sh pr-touches-paths: a comment inside a path list no longer ends it 2026-10-14 04:21:43 -04:00
pr-touches-paths.py pr-touches-paths: a comment inside a path list no longer ends it 2026-10-14 04:21:43 -04:00
standards-touched-selftest.sh scripts: no pipe into grep -q under pipefail 2026-10-15 01:52:03 -04:00
standards-touched.py ci: the standards build builds the workspaces a change touches 2026-10-14 03:40:08 -04:00
test-public-text-checks.sh check-public-names: the maintainers' product names are checked on every pull request 2026-11-04 12:28:47 -05:00
wai-quantum-webgpu-member.sh wai-quantum fabric: run meters, metered calibration, place_for, and the Fabric wrapper 2026-10-12 05:08:11 -04:00