open-standards/wai/changes/2026-11-10-sink-profiles-what-platforms-give.md
Transaction Science 53ee8790d1
All checks were successful
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 7s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 4m42s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 54s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 6m35s
energy-measurement §6.3, §9.3, §9.4: what a Linux, Android and iOS sink can read
§9.3: linux-rapl's needs-privilege status is the kernel's default. Since the
response to CVE-2020-8694 (commit 949dd0104c49, in Linux 5.10 and the stable
series then maintained) powercap creates energy_uj readable by root alone, and
perf's power events are system-wide, which an unprivileged process opens only
with perf_event_paranoid at 0 or less, or with CAP_PERFMON.

§9.4: a phone states an Estimator in this revision because what its platform
gives an app is no reading over a segment's decode. Android's power monitors
(API level 35, SystemHealthManager.getPowerMonitorReadings) are read again only
after 30 s and returned lowered by up to 10 J of deliberate noise, never below
the previous reading (MAX_POWER_MONITOR_AGE_MILLIS, MAX_RANDOM_NOISE_UWS in
PowerStatsService), with rails named by each device; the iOS SDK declares a
per-task energy count (task_energy, TASK_POWER_INFO_V2 on arm64) that no
reference sink has read. No profile reads either. The paragraph's opening no
longer says a phone gives its process no rail counter at all.

§6.3: a bracket over counters that do not cover a fabric that ran a step has
coverage Partial (§9.1), a lower bound.

Re-landed from PR #459 (22c1122ce): main's §9 (EN-A, #460) replaced that
commit's profiles and span protocol; these are the facts it held that main's
§9 lacks. Each was read again for this commit: the Android reference pages and
the current PowerStatsService source, and the iOS 27.2 SDK's header.

Checked: check-wai-section-refs.py, check-spec-refs.py, the public-name check
with the private list, check-comparative-prose.sh, check-no-vanity-metrics.sh.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-10 02:21:59 -05:00

930 B

Sink energy profiles: what a Linux, Android and iOS sink can read

  • energy-measurement §9.3: linux-rapl's needs-privilege status is the kernel's default. Since the response to CVE-2020-8694 the powercap interface creates energy_uj readable by root alone, and perf's power events are system-wide events an unprivileged process opens only with perf_event_paranoid at 0 or less, or with CAP_PERFMON.
  • §9.4: why a phone states an Estimator in this revision. Android's power monitors (API level 35) are read again only after 30 s and returned lowered by up to 10 J of deliberate noise, with rails named by each device, which gives no reading over a segment's decode; iOS declares a per-task energy count that no reference sink has read. No profile reads either.
  • §6.3: a bracket over counters that do not cover a fabric that ran a step has coverage Partial (§9.1), a lower bound.