Prep CI for enablement: green gate, fleet labels, unified MSRV #45

Merged
dcharlot merged 3 commits from ci-enable into main 2026-07-23 10:18:14 -04:00
35 changed files with 69 additions and 53 deletions

View file

@ -17,7 +17,7 @@ on:
jobs: jobs:
validate-json: validate-json:
name: Validate conformance JSON files name: Validate conformance JSON files
runs-on: ubuntu-latest runs-on: linux
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
@ -86,7 +86,7 @@ jobs:
spec-vector-coupling: spec-vector-coupling:
name: Spec changes require vector-pack updates name: Spec changes require vector-pack updates
runs-on: ubuntu-latest runs-on: linux
if: github.event_name == 'pull_request' if: github.event_name == 'pull_request'
steps: steps:
- name: Checkout (with full history for diff) - name: Checkout (with full history for diff)
@ -132,7 +132,7 @@ jobs:
versions-present: versions-present:
name: VERSIONS.md and README.md must exist name: VERSIONS.md and README.md must exist
runs-on: ubuntu-latest runs-on: linux
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4

View file

@ -20,7 +20,7 @@ on:
jobs: jobs:
conformance: conformance:
name: Build + round-trip C1-C4 vectors name: Build + round-trip C1-C4 vectors
runs-on: ubuntu-latest runs-on: linux
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4

View file

@ -28,7 +28,7 @@ on:
jobs: jobs:
scan: scan:
name: Public-surface audit (jouleclaw-rs) name: Public-surface audit (jouleclaw-rs)
runs-on: ubuntu-latest runs-on: linux
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4

View file

@ -24,7 +24,7 @@ on:
jobs: jobs:
scan: scan:
name: Scan committed Markdown for vanity metrics name: Scan committed Markdown for vanity metrics
runs-on: ubuntu-latest runs-on: linux
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4

View file

@ -35,12 +35,16 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
# Self-hosted fleet labels, not GitHub-hosted images. macos-x86_64 is
# dropped: no Intel-Mac runner exists in the fleet, and by the same
# argument the cargo-classes matrix already makes, it adds no arch
# coverage — x86_64 is held by linux-x86_64 and windows-x86_64, arm64
# by linux-aarch64 and the macos-arm64 reference.
include: include:
- { os: ubuntu-latest, label: linux-x86_64 } - { os: linux, label: linux-x86_64 }
- { os: ubuntu-24.04-arm, label: linux-aarch64 } - { os: linux-arm64, label: linux-aarch64 }
- { os: macos-latest, label: macos-arm64 (reference) } - { os: macos, label: macos-arm64 (reference) }
- { os: macos-13, label: macos-x86_64 } - { os: windows, label: windows-x86_64 }
- { os: windows-latest, label: windows-x86_64 }
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4

View file

@ -37,14 +37,20 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
# Both architectures across all three OS families. x86_64 is covered # Self-hosted fleet labels. Both architectures across all three OS
# by ubuntu-latest + windows-latest, arm64 by ubuntu-24.04-arm + # families: x86_64 by linux + windows, arm64 by linux-arm64 + macos —
# macos-latest — what matters for the Fx integer floor is the arch, # what matters for the Fx integer floor is the arch, not the OS. No
# not the OS. The deprecated Intel-Mac runner (macos-13) is omitted: # Intel-Mac runner exists in the fleet, and it would add no arch
# it adds no arch coverage and its hosted runners are scarce. # coverage anyway.
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] os: [linux, linux-arm64, macos, windows]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v5
# The self-hosted macOS runner is a `host` executor started from launchd,
# whose PATH does not include ~/.cargo/bin — rustup is installed but not
# findable. Harmless everywhere else (a non-existent dir on PATH is a
# no-op), so it is applied unconditionally rather than branched on OS.
- name: Put cargo on PATH
run: echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- name: Rust 1.97.1 - name: Rust 1.97.1
run: rustup toolchain install 1.97.1 --profile minimal && rustup default 1.97.1 run: rustup toolchain install 1.97.1 --profile minimal && rustup default 1.97.1
- name: Build the cargo classes (pure Rust, no C codec chain) - name: Build the cargo classes (pure Rust, no C codec chain)
@ -81,14 +87,20 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
# Both architectures across all three OS families. x86_64 is covered # Self-hosted fleet labels. Both architectures across all three OS
# by ubuntu-latest + windows-latest, arm64 by ubuntu-24.04-arm + # families: x86_64 by linux + windows, arm64 by linux-arm64 + macos —
# macos-latest — what matters for the Fx integer floor is the arch, # what matters for the Fx integer floor is the arch, not the OS. No
# not the OS. The deprecated Intel-Mac runner (macos-13) is omitted: # Intel-Mac runner exists in the fleet, and it would add no arch
# it adds no arch coverage and its hosted runners are scarce. # coverage anyway.
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] os: [linux, linux-arm64, macos, windows]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v5
# The self-hosted macOS runner is a `host` executor started from launchd,
# whose PATH does not include ~/.cargo/bin — rustup is installed but not
# findable. Harmless everywhere else (a non-existent dir on PATH is a
# no-op), so it is applied unconditionally rather than branched on OS.
- name: Put cargo on PATH
run: echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- name: Rust 1.97.1 - name: Rust 1.97.1
run: rustup toolchain install 1.97.1 --profile minimal && rustup default 1.97.1 run: rustup toolchain install 1.97.1 --profile minimal && rustup default 1.97.1
- name: Integer rANS + int_synth + JPEG-AI mANS goldens (one machine → every machine) - name: Integer rANS + int_synth + JPEG-AI mANS goldens (one machine → every machine)

View file

@ -29,7 +29,7 @@ on:
jobs: jobs:
neural-e2e: neural-e2e:
name: synthetic fixtures → Rust decode → reference (±4) name: synthetic fixtures → Rust decode → reference (±4)
runs-on: ubuntu-latest runs-on: linux
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v5
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5

View file

@ -12,7 +12,7 @@ version = "0.1.0"
edition = "2024" edition = "2024"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"
rust-version = "1.96" rust-version = "1.97"
authors = ["Transaction Science <[email protected]>"] authors = ["Transaction Science <[email protected]>"]
[workspace.dependencies] [workspace.dependencies]

View file

@ -10,7 +10,7 @@ members = [
[workspace.package] [workspace.package]
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
authors = ["ARL Contributors"] authors = ["ARL Contributors"]

View file

@ -10,7 +10,7 @@ members = [
[workspace.package] [workspace.package]
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
authors = ["EOC Benchmark Contributors"] authors = ["EOC Benchmark Contributors"]

View file

@ -33,7 +33,7 @@ members = [
[workspace.package] [workspace.package]
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
authors = ["EOC Contributors"] authors = ["EOC Contributors"]

View file

@ -29,7 +29,7 @@ version = "0.1.0"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"
rust-version = "1.85" rust-version = "1.97"
[workspace.dependencies] [workspace.dependencies]
jcp-schema = { path = "crates/jcp-schema" } jcp-schema = { path = "crates/jcp-schema" }

View file

@ -170,7 +170,7 @@ verifier-supplied parameter — is now **shipped** as `sandbox-tee::chain`
(`derive_grounding` + `verify_attested_energy_rooted`): grounding is proven from (`derive_grounding` + `verify_attested_energy_rooted`): grounding is proven from
evidence or it is software, and with a physical counter the ladder now *reaches* evidence or it is software, and with a physical counter the ladder now *reaches*
`PhysicallyRooted` (tested against a synthetic root). AMD's ARK→ASK→VCEK is one `PhysicallyRooted` (tested against a synthetic root). AMD's ARK→ASK→VCEK is one
instance of exactly this chain, and the AMD-specific X.509 adapter is now also instance of exactly this chain, and the AMD-specific X.509 adapter is now also <!-- allow-vanity: X.509 is the ITU-T certificate standard's name, not a count of adapters -->
**shipped** as `sandbox-tee::amd_kds` (the off-by-default `amd-kds` feature): **shipped** as `sandbox-tee::amd_kds` (the off-by-default `amd-kds` feature):
`verify_kds_chain` parses the real ARK/ASK/VCEK X.509 certs, verifies the `verify_kds_chain` parses the real ARK/ASK/VCEK X.509 certs, verifies the
RSA-4096 **RSASSA-PSS/SHA-384** signatures ASK←ARK and VCEK←ASK against a RSA-4096 **RSASSA-PSS/SHA-384** signatures ASK←ARK and VCEK←ASK against a
@ -196,7 +196,7 @@ confidential compute (custom hardware).
- End-to-end composition — **shipped** as `sandbox-tee/examples/attested_efficiency.rs`. - End-to-end composition — **shipped** as `sandbox-tee/examples/attested_efficiency.rs`.
- Evidence-derived grounding — **shipped** in `sandbox-tee::chain` (grounding from a - Evidence-derived grounding — **shipped** in `sandbox-tee::chain` (grounding from a
signature chain to a trusted root, not asserted; `PhysicallyRooted` reachable + tested). signature chain to a trusted root, not asserted; `PhysicallyRooted` reachable + tested).
- AMD KDS X.509 adapter — **shipped** in `sandbox-tee::amd_kds` (`amd-kds` feature): - AMD KDS X.509 adapter — **shipped** in `sandbox-tee::amd_kds` (`amd-kds` feature): <!-- allow-vanity: X.509 is the ITU-T certificate standard's name, not a count of adapters -->
real ARK/ASK/VCEK parsing + RSA-4096 PSS-SHA384 chain verification to a pinned ARK. real ARK/ASK/VCEK parsing + RSA-4096 PSS-SHA384 chain verification to a pinned ARK.
- Remaining (**not code**): pinning AMD's published ARK (a deploy artifact) and a - Remaining (**not code**): pinning AMD's published ARK (a deploy artifact) and a
signing physical shunt co-located with confidential compute (hardware). signing physical shunt co-located with confidential compute (hardware).

View file

@ -7,7 +7,7 @@
name = "l3-jouleclaw-binding" name = "l3-jouleclaw-binding"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
description = "Example binding: JouleClaw's L3 model tier (jouleclaw-llm LlmBackend) as a Joule Code cascade FnStage. Verified model-free via EchoBackend; a real backend (vLLM, or jouleclaw-runtime GGUF) drops into the same slot." description = "Example binding: JouleClaw's L3 model tier (jouleclaw-llm LlmBackend) as a Joule Code cascade FnStage. Verified model-free via EchoBackend; a real backend (vLLM, or jouleclaw-runtime GGUF) drops into the same slot."
publish = false publish = false

View file

@ -8,7 +8,7 @@
name = "transport-moqt-binding" name = "transport-moqt-binding"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
publish = false publish = false

View file

@ -25,7 +25,7 @@ version = "0.2.0"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"
rust-version = "1.85" rust-version = "1.97"
[workspace.dependencies] [workspace.dependencies]
joule-code-schema = { path = "crates/joule-code-schema" } joule-code-schema = { path = "crates/joule-code-schema" }

View file

@ -3,7 +3,7 @@ name = "joule-moq"
version = "0.1.0" version = "0.1.0"
description = "MoQT (Media over QUIC Transport) wire protocol + JWP receipt extension for CommunicationOS broadcast media. Trait surface lets the Realtime stack publish, subscribe, and relay tracks with object-level signed provenance and joule receipts." description = "MoQT (Media over QUIC Transport) wire protocol + JWP receipt extension for CommunicationOS broadcast media. Trait surface lets the Realtime stack publish, subscribe, and relay tracks with object-level signed provenance and joule receipts."
edition = "2024" edition = "2024"
rust-version = "1.85" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"

View file

@ -3,7 +3,7 @@ name = "jwp"
version = "0.1.0" version = "0.1.0"
description = "Joule Wire Protocol (JWP) — energy-aware binary framing protocol" description = "Joule Wire Protocol (JWP) — energy-aware binary framing protocol"
edition = "2024" edition = "2024"
rust-version = "1.85" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"

View file

@ -13,7 +13,7 @@ members = [
[workspace.package] [workspace.package]
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
authors = ["joule-ui Contributors"] authors = ["joule-ui Contributors"]

View file

@ -1153,7 +1153,7 @@ members = [
[workspace.package] [workspace.package]
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
authors = ["JouleClaw Contributors"] authors = ["JouleClaw Contributors"]

View file

@ -15,7 +15,7 @@ version = "0.6.0"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
rust-version = "1.85" rust-version = "1.97"
[workspace.dependencies] [workspace.dependencies]
joulecontract-schema = { path = "crates/joulecontract-schema" } joulecontract-schema = { path = "crates/joulecontract-schema" }

View file

@ -28,7 +28,7 @@ the [Transaction Science open standards](../README.md).
workspace `jouledesk-rs/` ships the **teammate loop** (`Teammate` + `Skill` over workspace `jouledesk-rs/` ships the **teammate loop** (`Teammate` + `Skill` over
`jcp-orchestrate` + `jcp-efficiency`): grant a skill → tag it → authorise outside the `jcp-orchestrate` + `jcp-efficiency`): grant a skill → tag it → authorise outside the
model → seal to a per-receipt-verifiable ledger, with **`efficiency/1` energy model → seal to a per-receipt-verifiable ledger, with **`efficiency/1` energy
accounting** (`energy_summary` → joules per completed unit, charging waste). 8 tests. accounting** (`energy_summary` → joules per completed unit, charging waste).
## What Joule Desk adds over a closed teammate ## What Joule Desk adds over a closed teammate

View file

@ -7,7 +7,7 @@ version = "0.1.0"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
rust-version = "1.96.0" rust-version = "1.97"
[patch.crates-io] [patch.crates-io]
# Work around the upstream livekit release skew: libwebrtc 0.3.38 omits the # Work around the upstream livekit release skew: libwebrtc 0.3.38 omits the

View file

@ -7,4 +7,4 @@ version = "0.1.0"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
rust-version = "1.96.0" rust-version = "1.97"

View file

@ -19,7 +19,7 @@ version = "0.1.0"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"
rust-version = "1.85" rust-version = "1.97"
[workspace.dependencies] [workspace.dependencies]
map-schema = { path = "crates/map-schema" } map-schema = { path = "crates/map-schema" }

View file

@ -17,7 +17,7 @@ version = "0.1.0"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"
rust-version = "1.85" rust-version = "1.97"
[workspace.dependencies] [workspace.dependencies]
# Mesh crates # Mesh crates

View file

@ -53,7 +53,7 @@ members = [
[workspace.package] [workspace.package]
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
authors = ["OpenPay Contributors"] authors = ["OpenPay Contributors"]

View file

@ -14,7 +14,7 @@ version = "0.1.0"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"
rust-version = "1.85" rust-version = "1.97"
[workspace.dependencies] [workspace.dependencies]
proof-schema = { path = "crates/proof-schema" } proof-schema = { path = "crates/proof-schema" }

View file

@ -23,7 +23,7 @@ version = "0.1.0"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"
rust-version = "1.85" rust-version = "1.97"
[workspace.dependencies] [workspace.dependencies]
sandbox-schema = { path = "crates/sandbox-schema" } sandbox-schema = { path = "crates/sandbox-schema" }

View file

@ -15,7 +15,7 @@ version = "0.1.0"
edition = "2024" edition = "2024"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards" repository = "https://github.com/transaction-science/open-standards"
rust-version = "1.96" rust-version = "1.97"
[workspace.dependencies] [workspace.dependencies]
sense-schema = { path = "crates/sense-schema" } sense-schema = { path = "crates/sense-schema" }

View file

@ -28,7 +28,7 @@ members = [
[workspace.package] [workspace.package]
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards" repository = "https://github.com/Transaction-Science/open-standards"
authors = ["Smart Byte Contributors"] authors = ["Smart Byte Contributors"]

View file

@ -9,7 +9,7 @@
name = "wai-byte-exact-conformance" name = "wai-byte-exact-conformance"
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
publish = false publish = false

View file

@ -2,7 +2,7 @@
name = "wai-world-relay" name = "wai-world-relay"
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
description = "Reference relay for wai.world.live sessions. Transport is OUT of the interactive-worlds extension's scope — this is one honest carrier: a per-room WebSocket fan-out that retains the signed op log for late joiners and verifies every op's Ed25519 signature before forwarding. It adjudicates nothing: sinks converge because the math does." description = "Reference relay for wai.world.live sessions. Transport is OUT of the interactive-worlds extension's scope — this is one honest carrier: a per-room WebSocket fan-out that retains the signed op log for late joiners and verifies every op's Ed25519 signature before forwarding. It adjudicates nothing: sinks converge because the math does."

View file

@ -2,7 +2,7 @@
name = "wai" name = "wai"
version = "0.3.0" version = "0.3.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
description = "WAI — Web AI media transport + execution. Capability-as-requirement envelope + neural shared-prior regenerate-at-sink path + always-available zeroth-condition wrappers around SOTA standard codecs (AVIF / JPEG-XL / PNG / Opus / FLAC / AV1 / zstd / LZMA)." description = "WAI — Web AI media transport + execution. Capability-as-requirement envelope + neural shared-prior regenerate-at-sink path + always-available zeroth-condition wrappers around SOTA standard codecs (AVIF / JPEG-XL / PNG / Opus / FLAC / AV1 / zstd / LZMA)."

View file

@ -2,7 +2,7 @@
name = "wai-spz-gen" name = "wai-spz-gen"
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.96" rust-version = "1.97"
license = "Apache-2.0" license = "Apache-2.0"
description = "Produces a real Niantic-SPZ Gaussian-splat asset, wrapped as a content-addressed wai.splat.spz WAI object. Uses the field's SPZ library as the codec (sink-supplied, per WAI doctrine) and validates the file round-trips through it." description = "Produces a real Niantic-SPZ Gaussian-splat asset, wrapped as a content-addressed wai.splat.spz WAI object. Uses the field's SPZ library as the codec (sink-supplied, per WAI doctrine) and validates the file round-trips through it."