ci(standards-build): run all five IOReport meters on macOS, and fail a step whose test never ran (merge LAST) #102
Loading…
Reference in a new issue
No description provided.
Delete branch "ci/macos-energy-widen"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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).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_burnas proof that the job catches the real symptom. That test was GPU-satisfied, and #110 deletes it.What it does now
--features ioreport, because it is double-gated) and sandbox-meter.--nocaptureand fails unless the output containsioreport 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'seprintln!is captured, which is why that line never appeared in the old job's log.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, includingioreport::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 printedioreport 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;--libis dropped. Every crate now has atests/file checking that its liveness probe runs exactly once per process. That check only holds in a fresh process, and--libwould 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.z3: truematrix entries, and the joule-code conformance gate installs z3 too.JOULE_FIX_EXPECT_Z3=1, so a missing solver fails the tests instead of quietly taking the no-solver branch.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 --workspacenever compiled the NVML backends:nvml;cuda;nvml.A matrix field
feature_testsnow runs those three crates once more with the feature on. #129'sImplausiblerule 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
07fb8360f8cfbaf43f70ci(standards-build): the other IOReport meters were unexercised tooto ci(standards-build): run all five IOReport meters on macOS, and fail a step whose test never ran (merge LAST)c694a4c3804e23637dba