open-standards/.github/workflows/wai-quantum-verdict.yml
Transaction Science fafa484102 wai-quantum: the intent conformance set, natively and under wasm32-wasip2, with a CI leg
Programs, their intents and the verdict each must get (the level, whether
the intents hold, each outcome, strength, check and distance known by hand,
the repairs made, the refusal's code), every level of the ladder covered.
wai-quantum-verdict.yml runs it natively and under wasmtime, with the
verdict's, repair's and codes' unit tests named.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 23:44:27 -04:00

153 lines
7.2 KiB
YAML

name: wai-quantum verdicts and repairs
# The verified-answer contract (wai/wai-quantum/src/engine/verdict.rs,
# repair.rs and refusal.rs): a verdict's level for every answer, each intent
# checked against ground truth, a repair held to the flagged lines, the job
# layer's refusal codes and the page that documents them, and the byte
# identity of every job that asks for no verdict. Then the intent
# conformance set (wai/quantum-conformance/intents/: programs, their intents
# and the verdict each must get), natively, where a second test holds its
# bundle equal to its files, and under wasm32-wasip2 by wasmtime, where the
# cases come from the bundle the test compiles in. The browser build runs the
# set too (wai-web-wasm.yml, wai-web's wasm32 tests).
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches: [main]
paths:
- 'wai/wai-quantum/**'
- 'wai/quantum-conformance/intents/**'
- 'rust-toolchain.toml'
- '.github/workflows/wai-quantum-verdict.yml'
pull_request:
paths:
- 'wai/wai-quantum/**'
- 'wai/quantum-conformance/intents/**'
- 'rust-toolchain.toml'
- '.github/workflows/wai-quantum-verdict.yml'
jobs:
relevant:
name: does this change touch it
runs-on: linux-arm64
outputs:
run: ${{ steps.gate.outputs.run }}
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- id: gate
run: |
set -euo pipefail
r=$(python3 scripts/pr-touches-paths.py .github/workflows/wai-quantum-verdict.yml \
"${{ github.event.pull_request.base.sha }}" \
"${{ github.event.pull_request.head.sha }}")
echo "this change touches the verdicts: $r"
echo "run=$r" >> "$GITHUB_OUTPUT"
native:
name: verdicts, repairs and the intent set · linux
needs: relevant
if: needs.relevant.outputs.run == 'true'
runs-on: linux
timeout-minutes: 60
steps:
- uses: actions/checkout@v5
- name: Install Rust 1.98.0
shell: bash
run: |
export PATH="$HOME/.cargo/bin:$PATH"
command -v rustup >/dev/null 2>&1 || \
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0
rustup toolchain install 1.98.0 --profile minimal
rustup default 1.98.0
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
# A module filter is satisfied by any one test of the module, so each
# module's tests are required by name to have run.
- name: The verdict, the repair and the codes
shell: bash
working-directory: wai/wai-quantum
run: |
set -euo pipefail
cargo test --locked --release --features full --lib -- engine::verdict:: engine::repair:: engine::refusal:: engine::job:: 2>&1 | tee "$RUNNER_TEMP/verdict.log"
grep -qE '^test result: ok\. [1-9][0-9]* passed; 0 failed' "$RUNNER_TEMP/verdict.log" || { echo "::error::the verdict's tests did not pass"; exit 1; }
for t in engine::verdict::tests::each_intent_is_decided_as_ground_truth_says \
engine::verdict::tests::the_level_is_the_weakest_check_and_holds_says_the_outcome \
engine::repair::tests::each_rule_makes_the_fix_a_person_would_on_the_flagged_line \
engine::repair::tests::a_proposal_may_change_only_the_flagged_lines \
engine::refusal::tests::the_documented_table_is_the_table \
engine::job::tests::a_job_that_asks_for_no_verdict_gives_the_bytes_it_gave \
engine::job::tests::every_refusal_an_agent_can_act_on_carries_its_code; do
grep -q "^test $t \.\.\. ok$" "$RUNNER_TEMP/verdict.log" || { echo "::error::$t did not run"; exit 1; }
done
- name: The intent conformance set
shell: bash
working-directory: wai/wai-quantum
run: |
set -euo pipefail
cargo test --locked --release --features full --test intent_conformance 2>&1 | tee "$RUNNER_TEMP/intents.log"
grep -q 'test result: ok. 2 passed; 0 failed' "$RUNNER_TEMP/intents.log" || { echo "::error::the intent set did not pass"; exit 1; }
wasip2:
name: the intent set and the verdict under wasm32-wasip2 (wasmtime)
needs: relevant
if: needs.relevant.outputs.run == 'true'
runs-on: linux
timeout-minutes: 60
steps:
- uses: actions/checkout@v5
- name: Install Rust 1.98.0 with the wasm32-wasip2 target
shell: bash
run: |
export PATH="$HOME/.cargo/bin:$PATH"
command -v rustup >/dev/null 2>&1 || \
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0
rustup toolchain install 1.98.0 --profile minimal
rustup default 1.98.0
rustup target add --toolchain 1.98.0 wasm32-wasip2
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
# The release binary, pinned by version and SHA-256, rather than a build from source.
- name: Install wasmtime 49.0.2
shell: bash
run: |
set -euo pipefail
[ "$(uname -m)" = x86_64 ] || { echo "::error::the pinned wasmtime archive is x86_64; this host is $(uname -m)"; exit 1; }
if ! command -v xz >/dev/null 2>&1; then
SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo"
$SUDO apt-get update -qq
$SUDO apt-get install -y -qq xz-utils
fi
v=49.0.2
f="wasmtime-v$v-x86_64-linux.tar.xz"
curl --proto '=https' --tlsv1.2 -sSfL -o "$RUNNER_TEMP/$f" \
"https://github.com/bytecodealliance/wasmtime/releases/download/v$v/$f"
echo "a4d6e9e3a5a60f527cf7793d674c48930c80c2e8977995b8a275cad3254b9322 $RUNNER_TEMP/$f" | sha256sum -c -
tar -xJf "$RUNNER_TEMP/$f" -C "$RUNNER_TEMP"
echo "$RUNNER_TEMP/wasmtime-v$v-x86_64-linux" >> "$GITHUB_PATH"
# A debug build, so integer overflow panics instead of wrapping. The test
# that reads the set's files has no wasip2 build; the one that runs the
# cases from the compiled-in bundle does.
- name: The intent set under wasmtime
shell: bash
working-directory: wai/wai-quantum
env:
CARGO_TARGET_WASM32_WASIP2_RUNNER: wasmtime
run: |
set -euo pipefail
cargo test --locked --target wasm32-wasip2 --features full --test intent_conformance 2>&1 | tee "$RUNNER_TEMP/wasip2.log"
grep -q 'test result: ok. 1 passed; 0 failed' "$RUNNER_TEMP/wasip2.log" || { echo "::error::the intent set did not pass under wasip2"; exit 1; }
- name: The verdict and the repair under wasmtime
shell: bash
working-directory: wai/wai-quantum
env:
CARGO_TARGET_WASM32_WASIP2_RUNNER: wasmtime
run: |
set -euo pipefail
cargo test --locked --target wasm32-wasip2 --features full --lib -- engine::verdict:: engine::repair:: engine::refusal:: 2>&1 | tee "$RUNNER_TEMP/wasip2-lib.log"
for m in engine::verdict engine::repair engine::refusal; do
grep -q "^test $m::.* \.\.\. ok$" "$RUNNER_TEMP/wasip2-lib.log" || { echo "::error::no test of $m ran"; exit 1; }
done