Transaction Science
811ae206f5
energy meters on real hardware / sink decode table · per-task energy and the GPU rail on macOS (push) Successful in 2m11s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (push) Has been cancelled
energy meters on real hardware / RAPL and NVML on jetson-hub (push) Failing after 8s
energy meters on real hardware / sink decode table · RAPL on jetson-hub (NVML surveyed) (push) Failing after 6s
sandbox-meter: an interval long past the tick is no evidence that a rail is live
...
The liveness rule counts intervals and never looked at how long one lasted. A
rail that steps twice a second steps in every interval once sampling slows to
that cadence, and a contended host slows it just so. On an M3 Ultra the same
rail, burned and sampled by the same code in one quiet process, was Frozen in 17
of 17 probes ticking at 25, 100 or 250 ms and Live in 12 of 12 at 500 or 800 ms.
With four test binaries sampling at once, 6 of 20 runs cached Live for the
process, on a rail every other crate on that host called Frozen, and in CI the
status selected the counter.
An IOReport interval now counts only within MAX_INTERVAL_TICKS (3) of the tick
the probe asked for. A longer one shows which rails exist, and is otherwise no
evidence either way: not its advances, not the interval, not its time. So the
300 ms window is 300 ms of intervals that count, or a burst beside one long
interval would fill it. A probe that cannot sample near its cadence ends Frozen
and falls back to its estimator: estimated, never over-claimed.
Three, from interval streams recorded on real hosts and replayed under each cap.
That rail under contention: Live in 57 of 80 streams with no cap, 13 at eight
ticks, 9 at five, 2 at four, none at three. A RAPL counter that is live: Live in
10 of 10 on a quiet host, 9 of 10 with a spinning thread for every core, 2 of 10
with twice as many.
Only IOReport's rails have the cap. RAPL, NVML and a process's counter publish
at least as often as their probes tick, so sampling slowed by contention shows
nothing a quiet probe would not. Capping them too made the tests that hold a
process's counter to Live fail under load: 5 of 27 runs on an M5 Max with four
busy threads a core, four of them on the counter's status.
watch takes the tick the probe asks for. counter_run, the vendor counters', has
no cap. standards-build's description of the job says so too.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-11-07 03:17:48 -05:00
..
conformance.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
energy-hardware.yml
wip: registry, SPEC, CHANGELOG, CI jobs, reader tests, settle and generic machine description
2026-10-22 13:49:49 -04:00
joule-code-conformance.yml
wai-audit.yml runs wai-metrics' tests, and a change to the crate runs every service built on it
2026-11-07 01:54:34 -05:00
joule-moq-remote.yml
ci: a push to main runs the room service and the remote desktop host agent workflows
2026-11-06 14:32:28 -05:00
joule-moq-room.yml
wai-audit.yml runs wai-metrics' tests, and a change to the crate runs every service built on it
2026-11-07 01:54:34 -05:00
joule-moq-web.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
jouleclaw-fabrics.yml
CI: two macOS legs depended on runner state the pin change cleared or never had
2026-11-03 17:42:20 -05:00
jouleclaw-public-surface-documented.yml
toolchain: Rust 1.98.0 -> 1.99.1 (change-controlled pin)
2026-11-03 17:42:20 -05:00
repo-checks.yml
wai: every wai.quantum string is registered, listed with what it names, or a schema's name
2026-11-06 17:05:39 -05:00
standards-build.yml
sandbox-meter: an interval long past the tick is no evidence that a rail is live
2026-11-07 03:17:48 -05:00
wai-app.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-audit.yml
wai-audit.yml runs wai-metrics' tests, and a change to the crate runs every service built on it
2026-11-07 01:54:34 -05:00
wai-breaking.yml
ci: a push to main that touches WAI runs wai breaking against main before the push
2026-11-06 14:25:41 -05:00
wai-byte-equality.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-catalogue.yml
wai --version, wai docs search and wai registry show, and what a version of the toolchain promises
2026-11-06 17:12:38 -05:00
wai-conformance.yml
wai-conformance starts on a change to joule-ui-catalogue, the crate wai-app now links
2026-11-07 03:10:33 -05:00
wai-energy-receipts.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-examples.yml
wai doctor: ends what an answered program leaves running; CI checks each archive
2026-11-06 17:24:17 -05:00
wai-fleet.yml
wai-audit.yml runs wai-metrics' tests, and a change to the crate runs every service built on it
2026-11-07 01:54:34 -05:00
wai-formal-verification.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-fuzz.yml
wai: coverage-guided fuzzing of the reader, and the container reservations it found
2026-10-14 10:58:29 -04:00
wai-http.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-jpegai-e2e.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-key-keychain.yml
wai key: the keychain path against the real security tool, in a scratch keychain
2026-11-06 17:12:38 -05:00
wai-key-proxy.yml
wai-audit.yml runs wai-metrics' tests, and a change to the crate runs every service built on it
2026-11-07 01:54:34 -05:00
wai-key-windows.yml
CI: wai key's Windows tests, and a Windows checkout keeps the bytes wai embeds
2026-11-06 17:21:42 -05:00
wai-ledger.yml
wai-audit.yml runs wai-metrics' tests, and a change to the crate runs every service built on it
2026-11-07 01:54:34 -05:00
wai-neural-e2e.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-neural-gates.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-ops-differential.yml
toolchain: Rust 1.98.0 -> 1.99.1 (change-controlled pin)
2026-11-03 17:42:20 -05:00
wai-ops-gpu.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-ops-npu.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-ops.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-pack.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-cli-release.yml
toolchain: Rust 1.98.0 -> 1.99.1 (change-controlled pin)
2026-11-03 17:42:20 -05:00
wai-quantum-cli.yml
Merge main into the cross-simulator corpus
2026-11-06 23:37:22 -05:00
wai-quantum-contract.yml
Merge pull request 'wai-quantum: receipts say where their counts come from and what was set at the provider, and a second verifier checks them' ( #660 ) from wai/quantum-receipt-fields into main
2026-11-06 14:45:13 -05:00
wai-quantum-cuda.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-dataflow.yml
Merge pull request 'ci: the wai-quantum legs build the commit they test, and fail when they did not' ( #666 ) from ci/quantum-archive-mtime into main
2026-11-06 14:42:46 -05:00
wai-quantum-desktop-release.yml
toolchain: Rust 1.98.0 -> 1.99.1 (change-controlled pin)
2026-11-03 17:42:20 -05:00
wai-quantum-docs.yml
Merge main into wai/quantum-writer
2026-11-06 15:17:48 -05:00
wai-quantum-dsp.yml
Merge main into the cross-simulator corpus
2026-11-06 23:37:22 -05:00
wai-quantum-editors.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-estimate.yml
Merge pull request 'wai-quantum: published architectures, re-estimated — the bicycle architecture, RSA-2048 and FeMoCo, each delta explained' ( #665 ) from wai/quantum-published-architecture-check into main
2026-11-06 14:43:40 -05:00
wai-quantum-formats.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-fpga.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-hip.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-js-release.yml
toolchain: Rust 1.98.0 -> 1.99.1 (change-controlled pin)
2026-11-03 17:42:20 -05:00
wai-quantum-js.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-landscape-devices.yml
wai-quantum: the landscape GPU members held to what large jobs reach, placed only where certified, metered over what they cover
2026-11-06 14:32:12 -05:00
wai-quantum-landscape.yml
wai-quantum: the landscape GPU members held to what large jobs reach, placed only where certified, metered over what they cover
2026-11-06 14:32:12 -05:00
wai-quantum-lang.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-metal.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-npu-cores.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-npu.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-opencl.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-processors.yml
Merge main into the cross-simulator corpus
2026-11-06 23:37:22 -05:00
wai-quantum-pulse.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-py-release.yml
toolchain: Rust 1.98.0 -> 1.99.1 (change-controlled pin)
2026-11-03 17:42:20 -05:00
wai-quantum-py.yml
Merge pull request 'wai-quantum: receipts say where their counts come from and what was set at the provider, and a second verifier checks them' ( #660 ) from wai/quantum-receipt-fields into main
2026-11-06 14:45:13 -05:00
wai-quantum-qec.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-qpu.yml
Merge pull request 'wai-quantum: receipts say where their counts come from and what was set at the provider, and a second verifier checks them' ( #660 ) from wai/quantum-receipt-fields into main
2026-11-06 14:45:13 -05:00
wai-quantum-registry.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-service.yml
Merge pull request 'wai-quantum: receipts say where their counts come from and what was set at the provider, and a second verifier checks them' ( #660 ) from wai/quantum-receipt-fields into main
2026-11-06 14:45:13 -05:00
wai-quantum-sme.yml
Merge pull request 'ci: the wai-quantum legs build the commit they test, and fail when they did not' ( #666 ) from ci/quantum-archive-mtime into main
2026-11-06 14:42:46 -05:00
wai-quantum-studio.yml
Merge pull request 'wai-quantum: receipts say where their counts come from and what was set at the provider, and a second verifier checks them' ( #660 ) from wai/quantum-receipt-fields into main
2026-11-06 14:45:13 -05:00
wai-quantum-tensor-engine.yml
Merge pull request 'ci: the wai-quantum legs build the commit they test, and fail when they did not' ( #666 ) from ci/quantum-archive-mtime into main
2026-11-06 14:42:46 -05:00
wai-quantum-tensor-program.yml
Merge pull request 'ci: the wai-quantum legs build the commit they test, and fail when they did not' ( #666 ) from ci/quantum-archive-mtime into main
2026-11-06 14:42:46 -05:00
wai-quantum-variational.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-vector.yml
Merge pull request 'ci: the wai-quantum legs build the commit they test, and fail when they did not' ( #666 ) from ci/quantum-archive-mtime into main
2026-11-06 14:42:46 -05:00
wai-quantum-verdict.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-views.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-quantum-webgpu.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-release.yml
wai lock, wai check and wai build: a project pinned, validated and built
2026-11-06 17:28:16 -05:00
wai-sink-android.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-sink-swift.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-sota-vectors.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-studio.yml
wai doctor: ends what an answered program leaves running; CI checks each archive
2026-11-06 17:24:17 -05:00
wai-vector.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-web-reach.yml
ci: gate jobs get their own pool, so a path question stops blocking real work
2026-11-06 14:24:36 -05:00
wai-web-wasm.yml
Merge main into the emulator; say the schema list's new length is a change
2026-11-06 14:46:21 -05:00