wai: on-chip counters and calibrated instruments are separate energy classes, and every joule-carrying receipt can say which #109
Merged
dcharlot
merged 3 commits from 2026-09-30 19:52:23 -04:00
wai/land-08-energy-classes into main 2026-09-30
wai: square the deviations in the energy statistics without powi
Some checks failed
standards workspaces build + test / proof-rs (pull_request) Successful in 1m15s
standards workspaces build + test / openpay (pull_request) Successful in 1m33s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 30s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 3m45s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m10s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 2m12s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 31s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m32s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 22s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 1m1s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 3m42s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 2m5s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 22s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 42s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 40s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 5m2s
wai formal verification (integer core) / kani (pull_request) Successful in 3m48s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 56s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Failing after 1m9s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 26s
standards workspaces build + test / sense-rs (pull_request) Successful in 7m53s
standards workspaces build + test / macOS energy backend (jcp-energy) (pull_request) Successful in 4m27s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 41s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 2m36s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 4m51s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 1m1s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 11m19s
wai cross-architecture byte-equality / windows-x86_64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · windows (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · windows (pull_request) Has been cancelled
The linux-arm64 leg of wai-conformance failed from this link on: the JPEG AI decoder's symbol guard (tests/jpegai_decode_symbols.rs) found __powidf2, the compiler builtin behind f64::powi, defined in its executable. Nothing calls it there: in the executable built in the runner's own image, no instruction branches to it, no relocation refers to it and no address is formed for it. It is the case the test's documentation describes for floor on x86_64 Linux: GNU ld keeps a compiler-builtin definition that a removed section referred to. The references were the two sample-variance loops this link added, energy_class::bracket_relative_uncertainty and energy_burst::sample_sd, which squared with powi(2). They now multiply the deviation by itself. For an exponent of 2, __powidf2 returns exactly d * d, so every figure is unchanged. In the runner's image (catthehacker/ubuntu:act-22.04, arm64, rustc 1.98.0) the guard fails before this change and passes after it, with no __powidf2 in the executable. On macOS arm64: the guard, and wai-energy-receipts' three suites with --locked, pass. Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29
Merge wai/land-07-int-decode-kernels into wai/land-08-energy-classes
Some checks failed
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 50s
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Successful in 3s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m47s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m17s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m13s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m7s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m33s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 25s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 2m8s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 45s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 46s
wai formal verification (integer core) / kani (pull_request) Successful in 3m47s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 53s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Failing after 1m6s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 23s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 2m27s
standards workspaces build + test / arl-rs (pull_request) Successful in 2m30s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 2m24s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m45s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m27s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m19s
standards workspaces build + test / macOS energy backend (jcp-energy) (pull_request) Successful in 2m21s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 25s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 2m31s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 19s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 1m9s
wai cross-architecture byte-equality / windows-x86_64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · windows (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · windows (pull_request) Has been cancelled
Brings in, through the refreshed previous link, main's OER differential fuzzer (54e89b56) and its audit of the OER extension against both verifiers (860ead8c, documentation only), so this link is checked against current main. The OER extension now carries both main's audit and this link's statement that an OER/2 receipt carries an evidential grade and no acquisition class; the two edits touch different sections. Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai: on-chip counters and calibrated instruments are separate energy classes, and every joule-carrying receipt can say which
Some checks failed
WAI energy receipts / energy receipts · linux (pull_request) Successful in 39s
wai formal verification (integer core) / kani (pull_request) Successful in 4m59s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 52s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Failing after 1m7s
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 6m49s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 24s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 2m28s
standards workspaces build + test / aac-rs (pull_request) Successful in 3m25s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 3m46s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 1m22s
standards workspaces build + test / map-rs (pull_request) Successful in 2m16s
standards workspaces build + test / mesh-rs (pull_request) Successful in 2m3s
standards workspaces build + test / openpay (pull_request) Successful in 18m29s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 1m58s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Failing after 7s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Failing after 7s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Failing after 8s
standards workspaces build + test / arl-rs (pull_request) Successful in 3m49s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 3m19s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 3m45s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 3m17s
standards workspaces build + test / sense-rs (pull_request) Successful in 4m0s
standards workspaces build + test / macOS energy backend (jcp-energy) (pull_request) Successful in 3m42s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 27s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 2m43s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 28s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 1m14s
wai cross-architecture byte-equality / windows-x86_64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · windows (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · windows (pull_request) Has been cancelled
The single `HwShunt` acquisition class covered both an on-chip vendor counter (RAPL, NVML, SMC, IOReport) and an external calibrated shunt. They are different evidence: a calibrated instrument's uncertainty is traceable to a calibration, while a counter is a vendor's reading whose error the vendor states (RAPL readings are deliberately noised when SGX or TDX is enabled, per security advisory INTEL-SA-00389). - extensions/energy-measurement.md §2 splits hardware evidence into `OnChipCounter` and `CalibratedInstrument`, each with a required declared uncertainty (relative error and integration window). IOReport is an on-chip counter, like RAPL and NVML. `HwShunt` stays readable as the legacy class, ranked below both, and is not sealed into a new WAI receipt. - Every receipt family that carries joules — video, world, film, reel, haptic, score, splat4d, audio scene, ternary, provenance and the wai-quantum receipts — can carry its class. The label is additive: every committed signed vector still verifies, and the signed bytes of unlabelled and legacy-labelled receipts are pinned by tests. A sealed figure declares its 1 µJ resolution, and the floor is stated as the rule verified (0.5/√3 µJ). - The acquisition rules are scoped to the receipt profiles WAI defines, and the text says what enforces each one. - Meters open their window from rest, report an all-zero power reader as unusable rather than clean, and state the running-window count model as conservative. - oer-receipts.md maps OER's evidential grade onto the refined classes. The rule that a producer must not grade `measured` a figure whose class is `Estimator` is kept as settled on main. - wai-quantum verifies a receipt in either form on every in-tree verify path, including wai-quantum-serve's POST /verify. - CI: wai-energy-receipts.yml runs the energy-class, label and legacy-pin tests for wai-rs, wai-quantum and wai-quantum-serve, which no workflow enabled before. Co-Authored-By: Claude Opus 5.5 <[email protected]>