All checks were successful
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 6s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Successful in 6s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 8s
wai-audit collector and player integration / does this change touch it (pull_request) Successful in 8s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 10s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 5s
WAI conformance / does this change touch it (pull_request) Successful in 7s
WAI energy receipts / does this change touch it (pull_request) Successful in 7s
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 11s
wai-key-proxy / does this change touch it (pull_request) Successful in 10s
WAI HTTP delivery / WAI HTTP · does this change touch it (pull_request) Successful in 12s
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Has been skipped
wai-ledger service / does this change touch it (pull_request) Successful in 9s
WAI neural sink gates / does this change touch it (pull_request) Successful in 7s
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Successful in 9s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 8s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 11s
wai-sink-android native sink library / does this change touch it (pull_request) Successful in 12s
wai-sink-swift native sink package / does this change touch it (pull_request) Successful in 9s
wai-web wasm32 / does this change touch it (pull_request) Successful in 10s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 1m15s
wai-audit collector and player integration / collector · linux (pull_request) Successful in 1m15s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 1m48s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m51s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 2m54s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m49s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 21s
WAI conformance / fast integer kernels, every x86_64 kernel set (AVX-512 silicon) (pull_request) Successful in 3m14s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 2m48s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 17s
WAI conformance / faces from keypoints under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m35s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 39s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m47s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 32s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 4m7s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m3s
wai-key-proxy / proxy · linux (pull_request) Successful in 1m52s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 7m24s
wai-ledger service / service · linux (pull_request) Successful in 2m30s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 9m59s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 51s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 4m32s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 5s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 8m20s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 1m7s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 3m8s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 11m20s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m45s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 16m36s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 10m7s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m54s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 3m36s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 12m25s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 38s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m47s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 17m25s
wai-pack / wai-pack · linux (pull_request) Successful in 1m40s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m25s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 6m32s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 5m44s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m31s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 18m45s
wai-ledger service / service · macos (pull_request) Successful in 50s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 19m27s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 5m4s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m8s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m11s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 12m17s
wai-pack / wai-pack · macos (pull_request) Successful in 3m13s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 10m1s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m1s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 14m59s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 56m20s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
64 lines
3.3 KiB
Shell
Executable file
64 lines
3.3 KiB
Shell
Executable file
#!/usr/bin/env bash
|
|
# The quickstart as a new user runs it, from the archive alone, timed step by step:
|
|
#
|
|
# bash wai/quickstart/test/clean-machine.sh <archive.tar.gz> [--browser]
|
|
#
|
|
# A machine with nothing of WAI on it: a fresh HOME and working directory, a PATH of the system's
|
|
# own directories, no cargo and no repository. The steps are the quickstart's:
|
|
# 1. check the archive against its .sha256 beside it, and unpack it;
|
|
# 2. wai hello; 3. wai verify; 4. wai create my-room --template video-room;
|
|
# 5. wai dev --check in the project: the relay, the room service and the page on one origin,
|
|
# each checked through it;
|
|
# 6. with --browser (BROWSER_BIN and PLAYWRIGHT_HOST set): the project's page joined in two
|
|
# browser pages, each decoding the other (the video-room example's test).
|
|
# It prints each step's time, the total, and a JSON line; it exits non-zero when a step fails,
|
|
# naming it. Downloading the archive is not timed: the archive is given.
|
|
set -uo pipefail
|
|
[ $# -ge 1 ] || { sed -n '2,16p' "$0"; exit 2; }
|
|
ARCHIVE=$(cd "$(dirname "$1")" && pwd)/$(basename "$1")
|
|
BROWSER=0; [ "${2:-}" = --browser ] && BROWSER=1
|
|
HERE=$(cd "$(dirname "$0")" && pwd)
|
|
ROOT=$(mktemp -d)
|
|
export HOME="$ROOT/home" TMPDIR="$ROOT/tmp"
|
|
mkdir -p "$HOME" "$TMPDIR" "$ROOT/work"
|
|
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
|
|
[ "$(uname -s)" = Darwin ] && [ "$BROWSER" = 1 ] && export PATH="/opt/homebrew/bin:$PATH" # node, for the browser step alone
|
|
cd "$ROOT/work"
|
|
now() { python3 -c 'import time; print(time.monotonic())'; }
|
|
T0=$(now)
|
|
steps=() failed=""
|
|
step() { # <name> <command...>
|
|
local name="$1"; shift
|
|
local s; s=$(now)
|
|
if "$@" > "$ROOT/$name.log" 2>&1; then
|
|
steps+=("$name $(python3 -c "print(round($(now) - $s, 2))")")
|
|
else
|
|
steps+=("$name FAILED")
|
|
failed="$name"
|
|
echo "FAIL $name:"; tail -15 "$ROOT/$name.log"
|
|
fi
|
|
}
|
|
unpack() {
|
|
local want; want=$(cut -d' ' -f1 "$ARCHIVE.sha256")
|
|
local got; got=$( (command -v sha256sum > /dev/null && sha256sum "$ARCHIVE" || shasum -a 256 "$ARCHIVE") | cut -d' ' -f1)
|
|
[ "$got" = "$want" ] || { echo "SHA-256 $got, not $want"; return 1; }
|
|
tar -xzf "$ARCHIVE"
|
|
}
|
|
step unpack unpack
|
|
BIN=$(ls -d "$ROOT"/work/wai-*/bin 2>/dev/null | head -1)
|
|
export PATH="$BIN:$PATH"
|
|
[ -z "$failed" ] && step hello wai hello
|
|
[ -z "$failed" ] && step verify wai verify wai-hello
|
|
[ -z "$failed" ] && step create wai create my-room --template video-room
|
|
[ -z "$failed" ] && step dev-check bash -c 'cd my-room && wai dev --check --port 0'
|
|
if [ -z "$failed" ] && [ "$BROWSER" = 1 ]; then
|
|
step two-tabs env WAI_BIN="$BIN/wai" node "$HERE/../../examples/video-room/test/video-room.test.mjs"
|
|
fi
|
|
TOTAL=$(python3 -c "print(round($(now) - $T0, 2))")
|
|
echo "the quickstart from $(basename "$ARCHIVE") on $(uname -sm), a fresh HOME and directory:"
|
|
for s in "${steps[@]}"; do set -- $s; if [ "$2" = FAILED ]; then printf ' %-10s FAILED\n' "$1"; else printf ' %-10s %s s\n' "$1" "$2"; fi; done
|
|
grep -h 'checks held' "$ROOT/dev-check.log" 2>/dev/null | sed 's/^/ /'
|
|
echo " total $TOTAL s${failed:+ (stopped at $failed)}"
|
|
python3 -c 'import json,sys; s=sys.argv[3:]; print(json.dumps({"archive": sys.argv[1], "total_s": float(sys.argv[2]), "steps": dict((x.split()[0], x.split()[1]) for x in s), "ok": all("FAILED" not in x for x in s)}))' "$(basename "$ARCHIVE")" "$TOTAL" "${steps[@]}"
|
|
rm -rf "$ROOT"
|
|
[ -z "$failed" ]
|