All checks were successful
no-vanity-metrics / Scan committed Markdown for vanity metrics (push) Successful in 3s
no-vanity-metrics / WAI public text names no comparison (push) Successful in 3s
no-vanity-metrics / WAI public text names no company or product (push) Successful in 3s
standards workspaces build + test / eoc-rs (push) Successful in 1m55s
standards workspaces build + test / jouleclaw-rs (push) Successful in 4m17s
standards workspaces build + test / jcp-rs (push) Successful in 1m26s
standards workspaces build + test / arl-rs (push) Successful in 4m54s
standards workspaces build + test / proof-rs (push) Successful in 1m12s
standards workspaces build + test / aac-rs (push) Successful in 1m33s
standards workspaces build + test / joule-code-rs (push) Successful in 1m10s
standards workspaces build + test / joulecontract-rs (push) Successful in 52s
standards workspaces build + test / sandbox-rs (push) Successful in 2m12s
standards workspaces build + test / map-rs (push) Successful in 40s
standards workspaces build + test / mesh-rs (push) Successful in 57s
standards workspaces build + test / smart-byte-rs (push) Successful in 3m45s
wai cross-architecture byte-equality / linux-x86_64 (push) Successful in 23s
standards workspaces build + test / openpay (push) Successful in 3m11s
wai cross-architecture byte-equality / linux-aarch64 (push) Successful in 39s
standards workspaces build + test / joule-ui-rs (push) Successful in 9m2s
WAI conformance / cargo-class corpora · linux (push) Successful in 3m57s
WAI conformance / v2 vocabulary · manifests validate as stated (push) Successful in 13s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (push) Successful in 2m11s
WAI conformance / cargo-class corpora · linux-arm64 (push) Successful in 5m20s
WAI conformance / cross-arch byte-equality · linux (push) Successful in 23s
WAI conformance / cross-arch byte-equality · linux-arm64 (push) Successful in 48s
WAI conformance / C2PA manifest emission · signed, read back, validated (push) Successful in 43s
WAI energy receipts / energy receipts · linux (push) Successful in 1m4s
WAI energy receipts / energy receipts · linux-arm64 (push) Successful in 2m12s
standards workspaces build + test / jouledesk-rs (push) Successful in 11m22s
wai formal verification (integer core) / kani (push) Successful in 4m36s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (push) Successful in 59s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (push) Successful in 1m6s
WAI neural sink gates / model-free refusals of the neural sink (push) Successful in 1m1s
WAI section references / cited sections exist (push) Successful in 9s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (push) Successful in 3m53s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (push) Successful in 1m44s
standards workspaces build + test / joulehook-rs (push) Successful in 19m33s
standards workspaces build + test / sense-rs (push) Successful in 56m41s
standards workspaces build + test / macOS energy backends (push) Successful in 14m38s
wai cross-architecture byte-equality / macos-arm64 (reference) (push) Successful in 29s
WAI conformance / cargo-class corpora · macos (push) Successful in 20m16s
WAI conformance / cross-arch byte-equality · macos (push) Successful in 2m30s
WAI energy receipts / energy receipts · macos (push) Successful in 13m49s
156 lines
8.1 KiB
YAML
156 lines
8.1 KiB
YAML
name: WAI energy receipts
|
|
|
|
# Tests of the energy acquisition class (extensions/energy-measurement.md §2):
|
|
# the class rules, the optional labels, the resolution floor, the pins that
|
|
# hold legacy receipts (unlabelled, or labelled with the legacy HwShunt) and
|
|
# labelled ones to the signed bytes they have; the measurement report's
|
|
# arithmetic and the liveness rule (§3.1, §6.2) with their fault-injection
|
|
# tests; the figure views a report is checked against, for every receipt
|
|
# family the set compiles; and the reference meters' report path. Three
|
|
# steps, on linux (x86_64), linux-arm64 and macos (arm64):
|
|
#
|
|
# 1. wai-rs: `cargo test --locked` with the feature set in the step, over
|
|
# --lib, --bins and --test video_receipt. That runs the library's unit
|
|
# tests under those features (energy_class, energy_report, energy_burst,
|
|
# energy_meter, energy_binding, energy_figure, the label and pin tests of
|
|
# the wai-rs receipt families, the video and OTT receipt tests, and — with
|
|
# receipt_claims — the claim classes and jwp_delivery); the unit tests of
|
|
# every bin target
|
|
# the set can build (one whose required features are all on), which also
|
|
# proves those bins compile; and the one integration test file
|
|
# tests/video_receipt.rs.
|
|
# 2. wai-quantum: `cargo test --locked --features full --lib --tests`: the
|
|
# crate's unit tests, among them the pins and label tests of every quantum
|
|
# receipt, and its integration tests — tests/bit_identity.rs, which pins
|
|
# one result of each f64 layer so every architecture here must produce
|
|
# the same bits, and tests/utility_reference.rs, which holds the 127-qubit
|
|
# results to published values. The tests already marked #[ignore] stay
|
|
# ignored.
|
|
# 3. wai-quantum-serve: `cargo test --locked --lib`, native: the verdict
|
|
# logic behind POST /verify, for a receipt in either form, and that an
|
|
# unmetered receipt's 0 is rendered as the unmetered marker (null), never
|
|
# as zero joules.
|
|
#
|
|
# It does NOT:
|
|
# - check that a newly sealed receipt in a family with an optional label
|
|
# (§2.8) is labelled. A verifier cannot: there an unlabelled receipt
|
|
# sealed today has the bytes of a legacy one. A test of each producer's
|
|
# labelling path could, and none is written; those families'
|
|
# constructors take no class, and a label is added afterwards. It checks
|
|
# the label rules for the receipts that carry one, and that four of the
|
|
# five reference meter bins still build with their report path
|
|
# (wai_video_meter, wai_meter, wai_world_meter, wai_quantum_meter).
|
|
# - run a meter against a power reader. The report path is tested in the
|
|
# library (energy_figure::meter_report), and the protocol against
|
|
# scripted readers (energy_burst, energy_meter).
|
|
# - build wai_prov (needs `codecs`, which links system libjxl) or the
|
|
# wai-quantum CLI bin (needs quantum_toolchain, quantum_qir,
|
|
# quantum_channel, quantum_comm and quantum_qudit). Cargo skips a bin whose
|
|
# required features are off without saying so.
|
|
# - run any other integration test in wai/wai-rs/tests (world_model and
|
|
# world_replay among them), or a doc-test of any of the three crates.
|
|
# - compile c2pa_emit, which carries the energy binding into a C2PA
|
|
# manifest; the c2pa-emitter job of wai-conformance.yml tests it. Nor
|
|
# `oer`: an OER receipt grades its figure and carries no acquisition
|
|
# class, and energy-measurement.md §1 leaves it out of scope.
|
|
# - verify the JWP corpus; wai-conformance.yml does that, and joule-code's
|
|
# workflow tests joule-moq against literals copied from it.
|
|
# - build wai-web, or the wasm32-wasip2 component of wai-quantum-serve.
|
|
# - verify the conformance corpora; wai-conformance.yml does that.
|
|
# - run on Windows. The pinned bytes are integers and hashes and make no
|
|
# OS-specific claim; the conformance matrix has no Windows leg either (its
|
|
# runner is offline).
|
|
#
|
|
# It triggers only on changes under the paths listed below; a change to
|
|
# wai-web alone does not trigger it.
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- 'wai/wai-rs/**'
|
|
- 'wai/wai-quantum/**'
|
|
- 'wai/wai-quantum-serve/**'
|
|
- 'wai/extensions/**'
|
|
- 'wai/SPEC.md'
|
|
- 'wai/CHANGELOG.md'
|
|
# tests/video_receipt.rs reads the WIV1 refusal fixtures.
|
|
- 'wai/int-payload-conformance/**'
|
|
- '.github/workflows/wai-energy-receipts.yml'
|
|
pull_request:
|
|
paths:
|
|
- 'wai/wai-rs/**'
|
|
- 'wai/wai-quantum/**'
|
|
- 'wai/wai-quantum-serve/**'
|
|
- 'wai/extensions/**'
|
|
- 'wai/SPEC.md'
|
|
- 'wai/CHANGELOG.md'
|
|
# tests/video_receipt.rs reads the WIV1 refusal fixtures.
|
|
- 'wai/int-payload-conformance/**'
|
|
- '.github/workflows/wai-energy-receipts.yml'
|
|
|
|
jobs:
|
|
energy-receipts:
|
|
name: energy receipts · ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [linux, linux-arm64, macos]
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
|
|
# The docker runners (linux / linux-arm64) ship no Rust, so rustup is
|
|
# bootstrapped; the macOS host runner has it but launchd's PATH omits
|
|
# ~/.cargo/bin.
|
|
- 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"
|
|
|
|
# One feature set that compiles the wai-rs receipts that carry an
|
|
# acquisition class, except the C2PA emitter (see the header): the video
|
|
# and OTT receipts and their legacy pins, the energy binding, the energy
|
|
# meters, the optional-label families and their pins, and the quantum
|
|
# re-exports with the cross-crate encoding test. --bins compiles every
|
|
# bin whose required features this set enables — among them four of the five
|
|
# reference meters (wai_video_meter, wai_meter, wai_world_meter,
|
|
# wai_quantum_meter), whose report path needs receipt_claims — so one of
|
|
# those that stops building fails here.
|
|
# The fifth, wai_prov, is NOT built by this or any workflow: it requires
|
|
# the `codecs` feature, which links system libjxl (>= 0.11), and no
|
|
# workflow enables `codecs` or installs libjxl. Cargo skips a bin whose
|
|
# required features are off without saying so. Its metering is
|
|
# energy_burst, whose tests run in the lib suite; the bin itself is
|
|
# checked only by hand.
|
|
- name: wai-rs — energy classes, labels and legacy pins
|
|
working-directory: wai/wai-rs
|
|
shell: bash
|
|
run: |
|
|
cargo test --locked --no-default-features \
|
|
--features world,audio_scene,haptic,splat4d,score,provenance,film,ternary_receipt,world_model,video_receipt,video_workflow,energy_meter,quantum_receipt,quantum_ops,quantum_qbom,quantum_phasor_meter,receipt_claims \
|
|
--lib --bins --test video_receipt
|
|
|
|
# wai-quantum is published separately; its receipts' legacy pins and the
|
|
# labelled forms are tested in its own workspace, against its own lock,
|
|
# with the integration tests that pin its f64 layers' bits on every
|
|
# architecture this matrix runs.
|
|
- name: wai-quantum — receipt pins, labels and bit identity
|
|
working-directory: wai/wai-quantum
|
|
shell: bash
|
|
run: cargo test --locked --features full --lib --tests
|
|
|
|
# The HTTP handler's POST /verify must accept a receipt in either form —
|
|
# as sealed, or labelled as wai_quantum_meter emits it — and report the
|
|
# signer's level beside validity (jwp-receipts §7.1, §7.4). The verdict
|
|
# logic is a plain function, tested natively; the wasm32-wasip2 build of
|
|
# the component is not part of this workflow.
|
|
- name: wai-quantum-serve — POST /verify accepts either form and reports the signer's level
|
|
working-directory: wai/wai-quantum-serve
|
|
shell: bash
|
|
run: cargo test --locked --lib
|