open-standards/.github/workflows/joule-code-conformance.yml
David Charlot 28c48b46e2
Some checks failed
wai cross-architecture byte-equality / windows-x86_64 (pull_request) Successful in 30s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 42s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Failing after 1m3s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 1m1s
WAI conformance / cargo-class corpora · windows (pull_request) Successful in 1m21s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 58s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 20s
WAI conformance / cross-arch byte-equality · windows (pull_request) Successful in 22s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 14s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 29s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 15s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 55s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Failing after 1m5s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m25s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 3m42s
chore: Rust 1.98.0 (latest stable) + refresh every dependency
Toolchain 1.97.1 -> 1.98.0 (released 2026-08-18) in both `rust-toolchain.toml`
files, 33 pins across 5 CI workflows, and 26 workspace `rust-version`
declarations. Nothing pinned to 1.97 remains.

Dependencies refreshed in all 25 workspaces: 1,751 changes, every one
semver-compatible. The vendored `jouledesk-rs/vendor/libwebrtc` tree is
deliberately excluded — it is a patched vendor drop, not a managed dependency.

Note the `1.97` in `jouleclaw-loader-gguf/BENCHMARKS.md` is a benchmark timing
("1.97 ms"), not a version; a blind find-and-replace would have corrupted a
results table, so pins were matched by field rather than by string.

Also completes a cross-workspace regression this repo has been carrying. When
`budget_funds` and `caveats` were added to `jcp_schema::Grant`, the workspaces
that path-depend on `jcp-schema` were fixed one wave at a time, and three were
missed: `joule-ui`, `jouleclaw` and `mesh` still built `Grant` without the new
fields and had been failing to compile since. `cargo test --workspace` inside
`jcp-rs` never builds them, which is exactly why it went unseen; checking every
workspace independently is what surfaced it. Two of the six sites used field-init
shorthand (`budget_uj,` with no colon), so they needed a separate pass — a
reminder that a regex over initializers is not a substitute for compiling.

Verified: 21 of 25 workspaces `cargo check --workspace --all-targets` clean.

Not fixed here, and NOT caused by this change — each verified against the
pristine tree rather than assumed:

- `eoc/eoc-rs`: `RequestBuilder::query` is unavailable because reqwest is taken
  with `default-features = false`, which drops the feature providing it.
  reqwest is 0.13.4 before and after, and `serde_urlencoded` is absent from the
  lock in both, so this predates the refresh. Fixing it is a choice between
  enabling the feature and changing the call sites.
- `openpay`: `Hmac::new_from_slice` unresolved. hmac 0.12.1, digest 0.10.7 and
  sha2 0.10.9 are identical before and after — same versions in, same result.
- `smart-byte/smart-byte-rs`: never resolved on main. Its manifest asked for two
  features that do not exist (`rand_core`'s `alloc`, which no version has ever
  had, and `cbc`'s `std`, where 0.2 offers `alloc`); both are corrected here,
  which advances it from "will not resolve" to "will not compile" and exposes
  the real problem — the manifest wants `rand = "0.10"` while the lock pinned
  `rand 0.8.8` and 38 files still use the 0.8-era API (`thread_rng`,
  `rand::rngs::OsRng`). That is a two-major-version source migration and wants
  its own change, not a side effect of a toolchain bump.

`wai/wai-rs` needs libjxl present to build its default feature set; CI installs
`libjxl-dev`, so this is a local environment gap rather than a repo failure.
2026-08-26 07:58:37 -04:00

63 lines
2.2 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: joule-code conformance gate
# Enforces the Joule Code conformance contract on every change: the reference
# library must build and pass its tests, and the published C1–C4 wire vectors
# must round-trip (SPEC §8). "Conformant = round-trips the vectors" — checked,
# not asserted.
on:
pull_request:
paths:
- 'joule-code/**'
- '.github/workflows/joule-code-conformance.yml'
push:
branches:
- main
paths:
- 'joule-code/**'
- '.github/workflows/joule-code-conformance.yml'
jobs:
conformance:
name: Build + round-trip C1-C4 vectors
runs-on: linux
steps:
- name: Checkout
uses: actions/checkout@v4
# Bootstrap rustup: the docker runner image ships no Rust, and
# dtolnay/rust-toolchain cannot help — it calls `rustup`, which is absent.
- name: Install Rust 1.98.0
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"
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
joule-code/joule-code-rs/target
key: joule-code-${{ runner.os }}-${{ hashFiles('joule-code/joule-code-rs/Cargo.lock') }}
- name: Reference library tests
working-directory: joule-code/joule-code-rs
run: cargo test --workspace
- name: Round-trip the v1 conformance pack (C1-C4)
working-directory: joule-code/joule-code-rs
run: |
set -e
out="$(cargo run -q -p joule-code-conformance -- verify ../conformance/v1)"
echo "$out"
# The pack must pass with zero failures.
echo "$out" | grep -Eq '0 failed' || { echo "::error::conformance pack reported failures"; exit 1; }
- name: L3 JouleClaw binding example builds + tests
working-directory: joule-code/examples/l3-jouleclaw
run: cargo test