mesh-meter: hw-meter-apple meters a Mac with the SMC where IOReport is not live (stacked on #622, #630) #631

Merged
dcharlot merged 3 commits from mesh-meter/smc into main 2026-11-05 06:13:34 -05:00

2026-11-05

Transaction Science
Merge main into mesh-meter/smc (#622 and #630 have landed)
All checks were successful
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been skipped
wai-quantum studio and desktop / desktop app · linux (pull_request) Has been skipped
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Has been skipped
wai-quantum studio and desktop / desktop app · windows (pull_request) Has been skipped
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been skipped
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been skipped
wai-sink-android native sink library / does this change touch it (pull_request) Successful in 6s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Has been skipped
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Has been skipped
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been skipped
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been skipped
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been skipped
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been skipped
wai-quantum for JavaScript / does this change touch it (pull_request) Successful in 15s
wai-quantum for JavaScript / javascript · linux (pull_request) Has been skipped
wai-sink-swift native sink package / does this change touch it (pull_request) Successful in 7s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 6s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been skipped
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been skipped
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been skipped
WAI Studio / does this change touch it (pull_request) Successful in 8s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Has been skipped
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been skipped
WAI Studio / Studio in WebKit · linux (pull_request) Has been skipped
wai-web wasm32 / does this change touch it (pull_request) Successful in 15s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been skipped
standards workspaces build + test / joulehook-rs (joulehook/joulehook-rs, joulehook-rs, linux) (pull_request) Successful in 32s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 1m34s
energy meters on real hardware / sink decode table · per-task energy and the GPU rail on macOS (pull_request) Successful in 2m56s
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 1m3s
2026-11-05 04:50:31 -05:00

2026-11-04

Transaction Science
mesh-meter: hw-meter-apple meters a Mac with the SMC's whole-machine power where IOReport is not live
All checks were successful
wai-vector vector graphics / independent checker (Python) (pull_request) Successful in 3m2s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 3m0s
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Successful in 34m32s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 5m9s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 22m13s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 16m25s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 11m1s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 13m37s
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Successful in 33m15s
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Successful in 26m0s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m51s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m53s
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Successful in 16m21s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m53s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 28s
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Successful in 40m8s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 17s
wai-ops integer operators / linux-aarch64 (pull_request) Successful in 1m47s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m21s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 35s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m2s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m1s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 2m21s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 25s
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Successful in 17m5s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 7m45s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 1m33s
wai-vector vector graphics / linux-aarch64 (pull_request) Successful in 2m23s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h8m16s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m39s
hw-meter-apple now enables jouleclaw-energy's `smc` beside `ioreport`. On a Mac
whose IOReport CPU rail is frozen for an unprivileged reader (macOS 27 on an
M5 Max and an M3 Ultra), HwMeter::detect's backend becomes the SMC's
whole-machine power integral (ModelBased, EnergyDomain::System) instead of the
load estimator. A live IOReport counter still comes first.

The minimum-window rule (#630) is what makes this sound: the SMC's figure needs
2 s, so a span at least that long is sealed ModelBased, and a shorter one (most
served requests) is this crate's estimate of its own length, as before. System
covers the whole request (#622), so a long span's figure stands for it: high,
since it holds whatever else the machine powered, never low.

mesh-core, mesh-openai and mesh-engine-gguf take it through their own
hw-meter-apple and metal features. ProcessMeter's host fallback becomes the SMC
on such a Mac, under the same window rule.

On the M3 Ultra: the bridge picks apple-smc with a 2 s floor; a 20 ms span is
Estimator (0.38 J) and a 2.2 s span ModelBased (152.6 J for the whole, shared
machine); mesh-openai's serve example over hw-meter-apple seals a microsecond
serve as Estimator (172 µJ), and over metal its process meter still seals
HwShunt. Tests pass on macOS (mesh-meter, mesh-core with hw-meter-apple;
mesh-openai with server,hw-meter-apple and server,metal) and Linux (mesh-meter
with hw-meter-apple); clippy clean; mesh-engine-gguf --features metal checks.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 22:08:37 -05:00