ci(standards-build): run all five IOReport meters on macOS, and fail a step whose test never ran (merge LAST) #102

Merged
dcharlot merged 5 commits from ci/macos-energy-widen into main 2026-10-01 23:37:35 -04:00
Owner

Merge LAST, after #110, #114, #115, #116 and #117. Until those land, this PR's own macOS job runs main's old meter tests and goes red: they neither print the guard line nor pass on this host. That red is expected, and it is exactly what this job exists to catch.

What changed from the first version of this PR

The first version (07fb8360, now replaced) rested on a wrong premise. It added proof-cascade, eoc-meter and jouleclaw-energy to the macOS job and left sandbox-meter out, with a comment saying sandbox-meter failed where jcp-energy passed because they read IOReport differently. They don't. Both read the same CPU rail, and on macOS 27 an unprivileged reader sees that rail republished only in rare batches (the M3 Ultra held for ≥22 min, then jumped ~1.3 kJ per die in one sample).

  • jcp-energy's old test asserted that the summed rails advanced. The live GPU rail satisfied that whenever something drew on screen, so it passed by day and failed at night.
  • sandbox-meter's test asserted the CPU class itself, so it failed.
  • The three steps the first version added passed for the same vacuous reason as jcp-energy's.

The job's header was wrong the same way. It called a 2026-09-19 zero "healed" by 09-21, and cited cumulative_advances_after_cpu_burn as proof that the job catches the real symptom. That test was GPU-satisfied, and #110 deletes it.

What it does now

  • Runs the lib tests of all five IOReport meters on the macOS runner: jcp-energy, proof-cascade, eoc-meter, jouleclaw-energy (--features ioreport, because it is double-gated) and sandbox-meter.
  • Fails a step whose frozen-rail test never ran. Each step runs with --nocapture and fails unless the output contains ioreport liveness:, which only that test prints. A filter, a missing feature or a cfg can no longer turn zero tests into a green step. Without --nocapture, a passing test's eprintln! is captured, which is why that line never appeared in the old job's log.
  • With the five backend PRs merged, the job is deterministic:
    • green while every meter declines a CPU rail that does not keep moving;
    • red if any meter selects one;
    • on a host whose rail is live, red unless CPU work meters non-zero.
  • Load-robust. Those tests were verified 10/10 under 2×-core artificial load on the runner machine itself.

The guard, observed on this PR's own run (#765, on main's meter code)

The jcp-energy step ran main's tests: 8 passed, including ioreport::tests::cumulative_advances_after_cpu_burn ... ok, which the GPU rail satisfied at the time. The step then exited 1, because no frozen-rail test printed ioreport liveness:. The old job would have reported that run green. Once #110 lands, the same step runs the new tests, which print the line.

One file: .github/workflows/standards-build.yml.

Later commits on this branch

  • 8ba3b72a: the five macOS steps run each meter's lib and integration tests; --lib is dropped. Every crate now has a tests/ file checking that its liveness probe runs exactly once per process. That check only holds in a fresh process, and --lib would have skipped it.
  • 47a2ac77: the job's comment describes the final rule. Every summed rail must keep advancing in at least 5 intervals, in 4 of every 5, over at least 300 ms. One lump, even one published in two steps, is not a live rail.
  • ae4c2dd8: joule-code-remediate's formal gate now runs against a real z3 in CI.
    • joule-code-rs joins the z3: true matrix entries, and the joule-code conformance gate installs z3 too.
    • Both set JOULE_FIX_EXPECT_Z3=1, so a missing solver fails the tests instead of quietly taking the no-solver branch.
    • It pairs with #114, which makes those tests assert in both branches.

Merge order: #110, #114, #115, #116 and #117, then #119 (specs), then the stacked #120–#124, then this PR last.

Feature-gated NVML tests (c694a4c3)

Three features are enabled by no workspace member, so cargo test --workspace never compiled the NVML backends:

  • jcp-energy nvml;
  • eoc-meter cuda;
  • jouleclaw-energy nvml.

A matrix field feature_tests now runs those three crates once more with the feature on. #129's Implausible rule is among the code this now covers. The container has no GPU and Docker masks powercap, so the hardware tests take their "unavailable, and the oracle agrees" branch, and the unit tests run in full. This PR still merges last, after #129.

🤖 Generated with Claude Code

> **Merge LAST, after #110, #114, #115, #116 and #117.** Until those land, this PR's own macOS job runs main's old meter tests and goes red: they neither print the guard line nor pass on this host. That red is expected, and it is exactly what this job exists to catch. ### What changed from the first version of this PR The first version (`07fb8360`, now replaced) rested on a wrong premise. It added proof-cascade, eoc-meter and jouleclaw-energy to the macOS job and left sandbox-meter out, with a comment saying sandbox-meter failed where jcp-energy passed *because they read IOReport differently*. **They don't.** Both read the same CPU rail, and on macOS 27 an unprivileged reader sees that rail republished only in rare batches (the M3 Ultra held for ≥22 min, then jumped ~1.3 kJ per die in one sample). - **jcp-energy's old test** asserted that the *summed* rails advanced. The live GPU rail satisfied that whenever something drew on screen, so it passed by day and failed at night. - **sandbox-meter's test** asserted the CPU class itself, so it failed. - **The three steps the first version added** passed for the same vacuous reason as jcp-energy's. The job's header was wrong the same way. It called a 2026-09-19 zero "healed" by 09-21, and cited `cumulative_advances_after_cpu_burn` as proof that the job catches the real symptom. That test was GPU-satisfied, and #110 deletes it. ### What it does now - **Runs the lib tests of all five IOReport meters on the macOS runner:** jcp-energy, proof-cascade, eoc-meter, jouleclaw-energy (`--features ioreport`, because it is double-gated) and sandbox-meter. - **Fails a step whose frozen-rail test never ran.** Each step runs with `--nocapture` and fails unless the output contains `ioreport liveness:`, which only that test prints. A filter, a missing feature or a cfg can no longer turn zero tests into a green step. Without `--nocapture`, a passing test's `eprintln!` is captured, which is why that line never appeared in the old job's log. - **With the five backend PRs merged, the job is deterministic:** - green while every meter declines a CPU rail that does not keep moving; - red if any meter selects one; - on a host whose rail is live, red unless CPU work meters non-zero. - **Load-robust.** Those tests were verified 10/10 under 2×-core artificial load on the runner machine itself. ### The guard, observed on this PR's own run (#765, on main's meter code) The jcp-energy step ran main's tests: `8 passed`, including `ioreport::tests::cumulative_advances_after_cpu_burn ... ok`, which the GPU rail satisfied at the time. The step then exited 1, because no frozen-rail test printed `ioreport liveness:`. **The old job would have reported that run green.** Once #110 lands, the same step runs the new tests, which print the line. One file: `.github/workflows/standards-build.yml`. ### Later commits on this branch - **`8ba3b72a`:** the five macOS steps run each meter's lib **and integration** tests; `--lib` is dropped. Every crate now has a `tests/` file checking that its liveness probe runs exactly once per process. That check only holds in a fresh process, and `--lib` would have skipped it. - **`47a2ac77`:** the job's comment describes the final rule. Every summed rail must keep advancing in at least 5 intervals, in 4 of every 5, over at least 300 ms. One lump, even one published in two steps, is not a live rail. - **`ae4c2dd8`:** joule-code-remediate's formal gate now runs against a real z3 in CI. - joule-code-rs joins the `z3: true` matrix entries, and the joule-code conformance gate installs z3 too. - Both set `JOULE_FIX_EXPECT_Z3=1`, so a missing solver fails the tests instead of quietly taking the no-solver branch. - It pairs with #114, which makes those tests assert in both branches. **Merge order:** #110, #114, #115, #116 and #117, then #119 (specs), then the stacked #120–#124, then **this PR last**. ### Feature-gated NVML tests (c694a4c3) Three features are enabled by no workspace member, so `cargo test --workspace` never compiled the NVML backends: - jcp-energy `nvml`; - eoc-meter `cuda`; - jouleclaw-energy `nvml`. A matrix field `feature_tests` now runs those three crates once more with the feature on. #129's `Implausible` rule is among the code this now covers. The container has no GPU and Docker masks powercap, so the hardware tests take their "unavailable, and the oracle agrees" branch, and the unit tests run in full. This PR still merges last, after #129. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ci(standards-build): the other IOReport meters were unexercised too
All checks were successful
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 1m50s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m55s
standards workspaces build + test / aac-rs (pull_request) Successful in 38s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 43s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m22s
standards workspaces build + test / arl-rs (pull_request) Successful in 3m28s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 41s
standards workspaces build + test / map-rs (pull_request) Successful in 33s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m13s
standards workspaces build + test / mesh-rs (pull_request) Successful in 28s
standards workspaces build + test / openpay (pull_request) Successful in 1m34s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m6s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m33s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 8m36s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m20s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m32s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m40s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 2m42s
07fb8360f8
`jcp-energy` was never the only one. Six crates in this repo each carry their own
Apple-Silicon IOReport meter, and every workspace holding one is pinned to a
linux runner — so none of them had ever run on the platform whose private API
they call. #100 closed one of six.

This adds the three that pass: `proof-cascade`'s meter, `eoc-meter`, and
`jouleclaw-energy`. Measured before adding, not after.

`jouleclaw-energy` is the interesting one: it is gated
`#[cfg(all(feature = "ioreport", target_os = "macos"))]`, so a macOS runner alone
reaches none of it. Without the feature the crate reports **23** tests, with it
**29** — six tests hinge on the flag as well as the platform. Both directions
measured rather than assumed, which is the only way that difference is visible.

## sandbox-meter is deliberately absent, and why

It fails on macOS today, and not environmentally. Its `CPU Energy` channel
returns the **identical raw value on every successive read** across a 0.4 s CPU
burn — verified directly: three reads, one value, `6581800904` each time, while
`GPU Energy` advanced normally in the same snapshots. So `soc_cpu_uj` is
structurally 0 while `PowerMeter::is_hardware()` still reports true, and the
crate's own assertion `a busy window costs SoC energy` catches it.

The cause is a real implementation difference, not machine state. Both crates
were run back-to-back three times on the same host at the same moment:
`jcp-energy` passed 3/3, `sandbox-meter` failed 3/3. `jcp-energy` reads through
`IOReportCreateSamplesDelta`; `sandbox-meter` reads the raw cumulative field
from `IOReportCreateSamples`, which on this OS does not advance for that channel.
Channel discovery is not the problem — the name matches, the `mJ` unit label is
recognised and the conversion is correct. Only the value is frozen.

Two earlier hypotheses were wrong and are worth recording so nobody re-runs
them: the channel is **not** missing or renamed (`"CPU Energy"` and
`"GPU Energy"` are both present in the enumerated channel list), and `to_uj`
does **not** reject the unit (it returns `Some` for both `mJ` and `nJ`).

Adding it here would make this job permanently red, and repairing a meter is not
a CI change — it is a correctness fix to shipped energy measurement, on a claim
(`is_hardware`) that a receipt rests on. It belongs in its own change with its
own falsification, not smuggled into a workflow commit.

Verified: all four steps run green locally with the exact commands the job uses.

Co-Authored-By: Claude Opus 5 <[email protected]>
dcharlot force-pushed ci/macos-energy-widen from 07fb8360f8
All checks were successful
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 1m50s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m55s
standards workspaces build + test / aac-rs (pull_request) Successful in 38s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 43s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m22s
standards workspaces build + test / arl-rs (pull_request) Successful in 3m28s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 41s
standards workspaces build + test / map-rs (pull_request) Successful in 33s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m13s
standards workspaces build + test / mesh-rs (pull_request) Successful in 28s
standards workspaces build + test / openpay (pull_request) Successful in 1m34s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m6s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m33s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 8m36s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m20s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m32s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m40s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 2m42s
to cfbaf43f70
Some checks failed
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Successful in 3s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m48s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m17s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m11s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m7s
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 2m2s
standards workspaces build + test / aac-rs (pull_request) Successful in 1m0s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m30s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 42s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 1m11s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 33s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 14s
standards workspaces build + test / map-rs (pull_request) Successful in 35s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 40s
standards workspaces build + test / mesh-rs (pull_request) Successful in 27s
standards workspaces build + test / openpay (pull_request) Successful in 1m35s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 54s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 18s
standards workspaces build + test / arl-rs (pull_request) Successful in 2m42s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 3m13s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m21s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m55s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m51s
standards workspaces build + test / macOS energy backends (pull_request) Failing after 16s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 56s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 14s
WAI conformance / cargo-class corpora · windows (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · windows (pull_request) Has been cancelled
2026-09-30 14:32:34 -04:00
Compare
dcharlot changed title from ci(standards-build): the other IOReport meters were unexercised too to ci(standards-build): run all five IOReport meters on macOS, and fail a step whose test never ran (merge LAST) 2026-09-30 14:32:46 -04:00
ci(standards-build): run each IOReport meter's integration tests on macOS too
Some checks failed
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 1m37s
standards workspaces build + test / aac-rs (pull_request) Successful in 48s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 33s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 33s
standards workspaces build + test / map-rs (pull_request) Successful in 28s
standards workspaces build + test / mesh-rs (pull_request) Successful in 24s
standards workspaces build + test / openpay (pull_request) Successful in 1m43s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m47s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m18s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m15s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m8s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m33s
standards workspaces build + test / arl-rs (pull_request) Successful in 2m31s
standards workspaces build + test / jouledesk-rs (pull_request) Has been cancelled
standards workspaces build + test / joulehook-rs (pull_request) Has been cancelled
standards workspaces build + test / sense-rs (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
standards workspaces build + test / joule-ui-rs (pull_request) Has been cancelled
8ba3b72a04
Each of the five meter crates now has a tests/ file that checks its CPU-rail
liveness probe runs exactly once per process: jcp-energy
(ioreport_probed_once), sandbox-meter (ioreport_probe_once_per_process),
proof-cascade (ioreport_once, ioreport_unopenable), eoc-meter
(liveness_probe_once_per_process) and jouleclaw-energy. Those checks only
hold in a fresh process, so they are integration tests. `cargo test --lib`
skipped them, so a per-thread or re-probing cache would have passed this job.
Dropping `--lib` runs them too, and the `ioreport liveness:` guard is
unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
ci(standards-build): describe the liveness rule the meters now use
Some checks failed
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 1m33s
standards workspaces build + test / aac-rs (pull_request) Successful in 48s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 33s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 28s
standards workspaces build + test / map-rs (pull_request) Successful in 27s
standards workspaces build + test / mesh-rs (pull_request) Successful in 22s
standards workspaces build + test / openpay (pull_request) Successful in 1m18s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m48s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m18s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m11s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m6s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m37s
standards workspaces build + test / arl-rs (pull_request) Has been cancelled
standards workspaces build + test / joule-ui-rs (pull_request) Has been cancelled
standards workspaces build + test / jouledesk-rs (pull_request) Has been cancelled
standards workspaces build + test / joulehook-rs (pull_request) Has been cancelled
standards workspaces build + test / sense-rs (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
47a2ac7706
The job's comment said a meter uses IOReport once the CPU rail advances in
two separate intervals. The five meters have since tightened that rule. A
refresh can be published in steps: one was caught as +61.8 kJ, then +3.4 J
64 ms later. So two advancing intervals can still be a single refresh.
Now the rail has to advance in at least 5 intervals, in at least 4 of every
5, over at least 300 ms. Comment only.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
ci: run joule-code-remediate's formal gate against a real z3
Some checks failed
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 2m30s
standards workspaces build + test / aac-rs (pull_request) Successful in 1m7s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 1m2s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 44s
standards workspaces build + test / map-rs (pull_request) Successful in 1m13s
standards workspaces build + test / mesh-rs (pull_request) Successful in 38s
standards workspaces build + test / openpay (pull_request) Failing after 3m1s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 1m34s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m54s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m18s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m12s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m9s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m38s
standards workspaces build + test / arl-rs (pull_request) Successful in 8m19s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 9m24s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 4m11s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 7m2s
standards workspaces build + test / sense-rs (pull_request) Successful in 6m59s
standards workspaces build + test / macOS energy backends (pull_request) Failing after 1m13s
ae4c2dd80e
joule-code-remediate's formal gate shells out to z3, and neither job that
tests it installed a solver: joule-code-rs in standards-build, and the
joule-code conformance gate. Its z3 tests used to return early without a
solver, so CI passed without ever running the real-solver path.
sandbox-meter/cpu-rail-liveness (#114) makes those tests assert in both
branches, and adds JOULE_FIX_EXPECT_Z3=1 to turn a missing solver into a
failure.

joule-code-rs now joins the `z3: true` matrix entries, as
joulecontract-rs already does on the same runner kind. The conformance
gate installs z3 the same way. Both set JOULE_FIX_EXPECT_Z3=1 where z3
was installed. Elsewhere the variable is empty, and only joule-code-
remediate reads it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
ci: build and run the energy meters' NVML-gated tests
Some checks failed
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 1m53s
standards workspaces build + test / aac-rs (pull_request) Successful in 50s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 43s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 31s
standards workspaces build + test / map-rs (pull_request) Successful in 28s
standards workspaces build + test / mesh-rs (pull_request) Successful in 24s
standards workspaces build + test / openpay (pull_request) Successful in 1m18s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 1m35s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m51s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m19s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m15s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m9s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m33s
standards workspaces build + test / arl-rs (pull_request) Successful in 2m10s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 2m37s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m37s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m35s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m31s
standards workspaces build + test / macOS energy backends (pull_request) Failing after 17s
c694a4c380
jcp-energy `nvml`, eoc-meter `cuda` and jouleclaw-energy `nvml` are
features no workspace member enables, so `cargo test --workspace` never
compiled the NVML backends, nor ran the tests behind them. That includes
#129's plausibility rule, which marks a counter that runs past its board
Implausible. A matrix field `feature_tests` now runs those crates once
more with the feature on.

In the container there is no GPU and powercap is masked, so the hardware
tests take their "unavailable, and the oracle agrees" branch. The unit
tests behind the features run in full.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot force-pushed ci/macos-energy-widen from c694a4c380
Some checks failed
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 1m53s
standards workspaces build + test / aac-rs (pull_request) Successful in 50s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 43s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 31s
standards workspaces build + test / map-rs (pull_request) Successful in 28s
standards workspaces build + test / mesh-rs (pull_request) Successful in 24s
standards workspaces build + test / openpay (pull_request) Successful in 1m18s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 1m35s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m51s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m19s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m15s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m9s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m33s
standards workspaces build + test / arl-rs (pull_request) Successful in 2m10s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 2m37s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m37s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m35s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m31s
standards workspaces build + test / macOS energy backends (pull_request) Failing after 17s
to 4e23637dba
All checks were successful
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 47s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 1m5s
wai formal verification (integer core) / kani (pull_request) Successful in 4m15s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 1m1s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Successful in 1m6s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 45s
WAI section references / cited sections exist (pull_request) Successful in 9s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 3m41s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 1m37s
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 16m3s
standards workspaces build + test / aac-rs (pull_request) Successful in 5m33s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 4m18s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 3m7s
standards workspaces build + test / map-rs (pull_request) Successful in 5m44s
standards workspaces build + test / mesh-rs (pull_request) Successful in 2m36s
standards workspaces build + test / openpay (pull_request) Successful in 12m8s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 1m19s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 8m29s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m11s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 2m30s
standards workspaces build + test / arl-rs (pull_request) Successful in 2m20s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 2m56s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m57s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m47s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m50s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 4m21s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 30s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 4m57s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 28s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 1m26s
2026-10-01 18:40:41 -04:00
Compare
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!102
No description provided.