energy: the operating point, the residual, and alignment with network-layer identities #86

Merged
dcharlot merged 1 commit from wai/energy-operating-point into main 2026-09-10 12:22:43 -04:00
2 changed files with 106 additions and 0 deletions

View file

@ -165,3 +165,86 @@ as though it were the second.
The gap between them is the whole of *who says so*, and it is orthogonal to
everything §3 makes checkable: a perfectly reproducible reconstruction signed by
nobody in particular is still a claim from nobody in particular.
## 7. The operating point, and why a joule figure alone is not enough
### 7.1 Degradation-blindness
A receipt that records the joules a decode spent, and nothing about how much work
it was asked to do, is **degradation-blind**. A sink can always spend fewer joules
by decoding worse, and a figure that cannot distinguish *efficient* from
*degraded* rewards the wrong behaviour precisely where the number is meant to
carry weight.
This is not hypothetical. ISO/IEC 23001-11 carries decoding-operation-reduction
metadata whose purpose is to make a decoder do less; the sender requests a
reduction, and the receipt as specified today records only what was spent.
`energy-measurement.md` §5's recomputable-work-unit rule blocks the substitution
at the byte-exact tier, but not at `entropy-consistency`, and not for the
conventional codecs WAI already carries.
The rules below make the operating point part of the claim, so the joule figure
is scored against something rather than merely reported.
### 7.2 Request, commitment, delivery
Where a sender requests an operating point and a receiver acts on it, the receipt
**MUST** seal all three of:
| field | meaning |
|---|---|
| `op_requested` | the operating point the sender asked for |
| `op_committed` | the operating point the receiver said it would use |
| `op_delivered` | the operating point actually used |
An operating point is a class-scoped descriptor — frame rate, spatial resolution,
a complexity target — and this extension does not define its vocabulary. What it
fixes is that the three are **distinct fields**, because the interesting cases are
exactly the ones where they differ.
- A receipt **MUST NOT** carry `op_delivered` alone. A delivered figure with
nothing to score it against is the degradation-blind case §7.1 describes.
- `op_committed` **MUST** be recorded as what the receiver stated, even where it
differs from the request. A commitment that silently becomes the request is not
a commitment.
- Where `op_delivered` differs from `op_committed`, the receipt **MUST** record
both and **MUST NOT** claim the commitment was met.
- A sink that honoured an operation-reduction request **MUST NOT** claim
`decode-equivalence` for the result — see [determinism-tiers](determinism-tiers.md)
§2, *What a tier covers*.
This converts a recorded number into a number measured against a promise. Neither
the prescriptive standards nor the measurement standards provide that pair: one
says what should be spent, the other what was, and nobody scores the second
against the first.
### 7.3 The residual
When a declared complexity or operating-point descriptor and a measured energy
binding both cover the same reconstruction, the receipt **MUST** carry the
**residual** — the signed difference between the energy the descriptor implies
and the energy measured.
- The residual **MUST** be computed over the same work unit as the measurement
(`energy-measurement.md` §5), or it compares two different things and means
nothing.
- A residual **MUST NOT** be reported without the acquisition class of the
measured term. A residual against an `Estimator` figure is a difference between
two predictions.
- An implementation **MUST NOT** suppress a residual because it is large. The
large ones are the informative ones; suppression converts a falsifiable claim
into an unfalsifiable one.
The residual is what makes the predictive half checkable. A complexity descriptor
is a prediction about energy, and until something records what actually happened
against it, the prediction is never wrong. This closes that loop in the artifact
rather than in a report.
### 7.4 Companion capability
Green-metadata semantics are registered the way
[`wai.meta.hdr10plus`](../research/media-codec-registry.md) and `wai.meta.dovi`
are: the capability names the descriptor class — complexity metrics, quality
recovery, display adaptation — and the sink supplies the decoder. **No carriage
is adopted**: ISOBMFF and DASH carriage of green metadata is somebody else's
layer, and WAI naming a descriptor does not make WAI responsible for moving it.

View file

@ -59,6 +59,29 @@ documenting them, and returns *no rate at all* — never `0` — when unmetered,
because a zero reads as "this work was free", which is a stronger and false
claim than "nobody measured".
### 2.1 Relationship to network-layer energy identities
The three classes above are WAI's own vocabulary, and they are coarser than the
graded `data-source-accuracy` identity hierarchy an adopted IETF GREEN
working-group draft defines for device and sub-component energy. That hierarchy
is the network layer's answer to the same question this section asks: *how was
this number obtained?*
- An implementation that also reports under a network-layer energy model
**SHOULD** derive its acquisition class from that model's identity rather than
assigning one independently, and **MUST** state which identity it derived from.
Two vocabularies for one property, assigned separately, will disagree.
- A derivation **MUST NOT** improve the class. Where a network-layer identity
maps ambiguously, the **weaker** WAI class applies.
- An implementation **MUST** declare the tolerance its acquisition class implies.
A class without a tolerance is a label; the point of grading provenance is to
say how much the figure can be leaned on, and that requires a number.
WAI does not adopt the network-layer model, and this section does not restate it.
The scopes differ — that model is device- and sub-component-scoped, WAI's figures
are per-object — and conflating them would breach §4's attribution rules. What is
required is that the two do not contradict each other about the same measurement.
## 3. The reference protocol: bracketed marginal measurement
On-die energy counters report the draw of a whole package or SoC, not of one