The repo was pinned to 1.96.0 while 1.97.1 is current and installed on the dev box, so every build here ran a compiler two releases behind the one the code is actually developed against. This moves the pin forward. Both toolchain files (root and the eoc/eoc-rs sub-workspace) and the five workflows that hardcode a toolchain rather than deferring to rust-toolchain.toml — wai-conformance, wai-neural-e2e, wai-byte-equality, joule-code-conformance, jouleclaw-public-surface-documented. Pinning stays exact, per the repo's convention: a pin that drifts is not a pin. MSRV is deliberately untouched. The `rust-version` fields across the workspaces (1.85 in mesh/proof, 1.96 elsewhere) declare the *oldest* compiler a crate supports, not the one it is built with — a floor, not a pin. Raising them because the dev toolchain moved would narrow who can consume these standards as libraries, which is a policy decision about support commitments, not a consequence of upgrading a build box. A crate with MSRV 1.85 builds perfectly well under 1.97.1. Co-Authored-By: Claude Opus 4.8 <[email protected]>
57 lines
1.7 KiB
YAML
57 lines
1.7 KiB
YAML
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: ubuntu-latest
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Install Rust
|
||
uses: dtolnay/rust-toolchain@master
|
||
with:
|
||
toolchain: "1.97.1"
|
||
|
||
- 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
|