jouleclaw-energy: a ledger total carries its weakest grade; macOS meter code is linted in CI #259
Merged
dcharlot
merged 1 commit from 2026-10-14 19:54:10 -04:00
ci/meter-clippy-macos into main 2026-10-14
jouleclaw-energy: a ledger total carries its weakest grade; macOS meter code is linted in CI
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 18s
tests in CI / every test file is run by a job or listed with its reason (pull_request) Successful in 10s
wai-quantum WebGPU member / does this change touch it (pull_request) Successful in 10s
workflow hygiene / every workflow supersedes its own queue (pull_request) Successful in 10s
standards workspaces build + test / jouleclaw-rs (-nodebug, jouleclaw/jouleclaw-rs, -p jouleclaw-energy --features rapl,nvml, jouleclaw-rs, linux-arm64, -C target-feature=+fp16) (pull_request) Successful in 3m40s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 1m4s
spec citations resolve / Code cites no section its SPEC lacks (pull_request) Successful in 4s
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Successful in 10m26s
standards workspaces build + test / aac-rs (aac-conformance, aac/aac-rs, aac-rs, linux-arm64) (pull_request) Successful in 3m13s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 1m30s
standards workspaces build + test / joulecontract-rs (joulecontract/joulecontract-rs, joulecontract-rs, linux-arm64, true) (pull_request) Successful in 58s
standards workspaces build + test / map-rs (map-conformance, map/map-rs, map-rs, linux-arm64) (pull_request) Successful in 1m20s
standards workspaces build + test / mesh-rs (mesh/mesh-rs, -p mesh-engine-gguf -p mesh-openai --features mesh-engine-gguf/gguf,mesh-openai/server, mesh-rs, linux-arm64) (pull_request) Successful in 55s
standards workspaces build + test / openpay (openpay, openpay, linux-arm64) (pull_request) Successful in 2m53s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 5m32s
standards workspaces build + test / jouledesk-rs (jouledesk/jouledesk-rs, jouledesk-rs, macos) (pull_request) Successful in 52s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m11s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m28s
standards workspaces build + test / arl-rs (arl/arl-rs, arl-rs, linux) (pull_request) Successful in 1m15s
standards workspaces build + test / jcp-rs (jcp-conformance, jcp/jcp-rs, -p jcp-energy --features nvml, jcp-rs, linux) (pull_request) Successful in 1m50s
standards workspaces build + test / eoc-rs (eoc/eoc-rs, -p eoc-meter --features cuda, eoc-rs, linux) (pull_request) Successful in 2m9s
standards workspaces build + test / joule-ui-rs (joule-ui/joule-ui-rs, joule-ui-rs, linux) (pull_request) Successful in 1m10s
standards workspaces build + test / joulehook-rs (joulehook/joulehook-rs, joulehook-rs, linux) (pull_request) Successful in 1m12s
standards workspaces build + test / proof-rs (proof-conformance, proof/proof-rs, proof-rs, linux, true) (pull_request) Successful in 1m41s
standards workspaces build + test / sandbox-rs (sandbox-conformance, sandbox/sandbox-rs, sandbox-rs, linux) (pull_request) Successful in 2m26s
standards workspaces build + test / sense-rs (sense/sense-rs, sense-rs, linux) (pull_request) Successful in 1m8s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m24s
standards workspaces build + test / smart-byte-rs (smart-byte/smart-byte-rs, smart-byte-rs, linux) (pull_request) Successful in 4m1s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m5s
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 12m0s
EnergyLedger summed microjoules with no grade. Its `costs` defaults are
fixed figures, and the docs called one "measured". So a total built from
estimates looked the same as one built from readings, in the serializable
snapshot too. Now:
- `record` and `record_batch` take the deposit's `Provenance`. The ledger
keeps the weakest grade it was given (one `fetch_min`, still lock-free).
`provenance()`, `LedgerSnapshot::provenance` and the summary report that
grade; an empty ledger has none, and `reset` clears it. The order of the
grades is pinned to `span::weaker` by a test.
- The `costs` docs say what the figures are: defaults carried over from
another codebase's measurements, calibrated on no host that uses them, so
a deposit computed from one is `Estimator`. "measured" is gone.
- The orderings the defaults must keep are checked when the crate builds
(`const _: () = { assert!(..) }`), not in a test of constants that clippy
flagged as `assertions_on_constants`.
CI: the macOS energy job now runs clippy, with `-D warnings`, on the eight
crates whose meter code compiles only on macOS: jcp-energy, jcp-gateway,
proof-cascade, proof-solvers, eoc-meter, jouleclaw-energy (ioreport),
sandbox-meter and sandbox-proof. No Linux job lints that code, which is how
the lints fixed in #244 went unseen. All eight pass today.
Co-Authored-By: Claude Opus 5.5 <[email protected]>