open-standards/.github/workflows/wai-quantum-js-release.yml
Transaction Science 51e89d4e20
All checks were successful
wai-quantum docs, course and locales / does this change touch it (pull_request) Successful in 6s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 9s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (pull_request) Successful in 8s
WAI energy receipts / does this change touch it (pull_request) Successful in 10s
wai-quantum for JavaScript / does this change touch it (pull_request) Successful in 7s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 37s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Successful in 1m13s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (pull_request) Successful in 2m49s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 3m6s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 3m7s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 5m7s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 6m33s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 8m31s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 9m6s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m53s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 12m23s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 1h4m5s
wai-quantum for JavaScript: the engine as the npm package @transaction-science/wai-quantum 0.1.0
wai/wai-quantum-js/ packs the job service's engine for WebAssembly (wai-web
with its quantum_engine feature, the engine of wai-quantum 0.7.0) and its
bindings as an ES module with its TypeScript declarations and no dependencies,
for a page (init() fetches the .wasm beside the module) or for Node (init is
given its bytes). The package keeps its own version line, as the Python
package does.

- build.sh: wai-web built for wasm32 with paths remapped (as the views build
  does), wasm-bindgen 0.2.127 (refused if it is not the version wai-web's lock
  file pins), package.json, README and the licence copied, the build refused if
  a local path is left in the bindings or the binary, then packed.
- test/smoke.mjs, on the package unpacked: a job run with a fresh 32-byte key
  and its receipt verified with this engine's did:key; a forged result that
  does not verify; a program linted and drawn; a refused program with its
  diagnostic code (Q310).
- test/install.mjs: the README's Node example, run in an empty app that
  installed the tarball with npm, the package found by name and its .wasm by
  the subpath it exports.
- ci/check.sh runs them all and holds the tarball to the package's allow-list
  (the seven files and nothing else).
- wai-quantum-js.yml runs ci/check.sh on Linux. wai-quantum-js-release.yml runs
  it on a wai-quantum-cli-v* tag and attaches the tarball and its SHA-256 to the
  release. Nothing is published to a registry from CI.

On the M3 Ultra: the .wasm is 5,928,153 bytes, the tarball 2.26 MB, and every
check passes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 08:14:24 -04:00

77 lines
2.9 KiB
YAML

name: wai-quantum for JavaScript, release tarball
# On a tag wai-quantum-cli-v<version> (the command line's release), builds the npm
# package @transaction-science/wai-quantum (wai/wai-quantum-js) and attaches its
# tarball to the same forge release, with its SHA-256. ci/check.sh builds it, holds
# the tarball to the package's allow-list, runs the smoke test on it unpacked and the
# README's Node example on it installed, before it is attached. Nothing is published
# to a package registry: the tarball is published from the release by hand.
#
# Uploads go to the forge directly over the private network (FORGE_API), never through
# the public tunnel.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
tags: ['wai-quantum-cli-v*']
permissions:
contents: write
env:
CARGO_TERM_COLOR: always
FORGE_API: http://100.64.224.0:3400/api/v1
FORGE_REPO: Transaction-Science/open-standards
jobs:
version:
name: the tag is the command line's version
runs-on: linux
outputs:
version: ${{ steps.v.outputs.version }}
steps:
- uses: actions/checkout@v5
- id: v
shell: bash
run: |
set -euo pipefail
v="${GITHUB_REF_NAME#wai-quantum-cli-v}"
crate="$(sed -n 's/^version = "\(.*\)"$/\1/p' wai/wai-quantum-cli/Cargo.toml | head -1)"
[ "$v" = "$crate" ] || { echo "::error::the tag says $v, wai-quantum-cli/Cargo.toml says $crate"; exit 1; }
echo "the npm package: $(python3 -I -c 'import json; print(json.load(open("wai/wai-quantum-js/package.json"))["version"])')"
echo "version=$v" >> "$GITHUB_OUTPUT"
tarball:
name: the npm tarball · linux
needs: version
runs-on: linux
timeout-minutes: 60
steps:
- uses: actions/checkout@v5
- name: Install Rust 1.98.0 with the wasm32 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 wasm32-unknown-unknown
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- name: wasm-bindgen CLI 0.2.127
shell: bash
run: cargo install --locked wasm-bindgen-cli --version 0.2.127
- uses: actions/setup-node@v4
with:
node-version: '22'
- name: Build, check and hash
shell: bash
run: bash wai/wai-quantum-js/ci/check.sh "$RUNNER_TEMP/dist"
- name: Attach to the release
shell: bash
env:
FORGE_TOKEN: ${{ github.token }}
run: bash wai/wai-quantum-cli/release/publish.sh "$GITHUB_REF_NAME" "wai-quantum ${{ needs.version.outputs.version }}" "$RUNNER_TEMP"/dist/*.tgz "$RUNNER_TEMP"/dist/*.tgz.sha256