open-standards/wai/extensions/task-fidelity.md
Transaction Science 48426dd890
Some checks failed
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 2m18s
standards workspaces build + test / aac-rs (pull_request) Successful in 47s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 47s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 29s
standards workspaces build + test / map-rs (pull_request) Successful in 28s
standards workspaces build + test / mesh-rs (pull_request) Successful in 26s
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Successful in 3s
standards workspaces build + test / openpay (pull_request) Successful in 1m18s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 16s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m48s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 49s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 15s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m17s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m10s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m6s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m28s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 15s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 1m9s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 14s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 40s
wai formal verification (integer core) / kani (pull_request) Successful in 3m51s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Failing after 1m11s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 26s
standards workspaces build + test / arl-rs (pull_request) Successful in 3m55s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 2m26s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m43s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m46s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m36s
standards workspaces build + test / macOS energy backend (jcp-energy) (pull_request) Failing after 2m29s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 13s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 56s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 13s
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
wai: state what each determinism tier guarantees, and make replicate mean it
SPEC §7 required an integer decode for `intent = replicate` in one paragraph
and accepted entropy-consistency in another. Resolved in one direction:

- Over a neural capability, `replicate` promises `decode-equivalence` — the
  whole decode to the final medium reproduces on every conforming sink.
  `entropy-consistency` (the decoded symbols reproduce; later stages may not)
  no longer backs it. The tier is a property of the capability as registered,
  not of one implementation.
- Over a standard codec, `replicate` promises that standard's decoder
  conformance, stated per registry class. `StandardTolerance` covers codecs
  whose standard holds decoders to a criterion around a reference;
  `StandardUnclassified` covers codecs not yet classified.
- `wai.image.jpegai` moves to the new `NeuralEntropyExact` class: its
  entropy decode is integer and exact, its later stages are float. It no longer
  backs `replicate`. This is recorded as a conservative choice pending a
  reading of ISO/IEC 6048-4, not as a finding about that standard.
- The JPEG AI decoders now refuse codestreams outside the configuration they
  implement (other β, model_id, colour transform or LSBS settings) instead of
  decoding them incorrectly, and detect flush-to-zero and round-toward-zero
  float environments.
- `wai wrap` writes `replicate` only over capabilities, and fallbacks, whose
  class a sink accepts unpinned.
- extensions/determinism-tiers.md gains an evidence table stating which
  platforms and CI jobs have exercised each guarantee, including what has not
  run.
- CI: a neural-gates workflow runs the model-free gates, including
  decode_envelope_strict, in an Ubuntu 24.04 image where the `neural` build
  links.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 18:25:52 -04:00

129 lines
7.1 KiB
Markdown

# WAI Extension: Task Fidelity
> Status: Draft. Names the contract for media whose correctness is a **downstream
> model's behaviour**, not a byte comparison — the class
> [`determinism-tiers`](determinism-tiers.md) cannot express. Sibling to that
> file, not a tier inside it: the tiers there are *reproducibility* guarantees a
> sink can check from the bytes alone, and a task claim is not one.
> No new wire format and no new receipt mechanism; a claim shape + an evidence
> grading over §7, modelled on
> [`energy-measurement`](energy-measurement.md)'s acquisition class.
> Keywords **MUST**, **MUST NOT**, **SHOULD**, **MAY** are RFC 2119/8174.
## 1. Why a second axis
`determinism-tiers.md` answers one question: *does the sink reproduce the same
bytes?* A growing class of coded media is not answering that question at all.
Three independent arrivals, none of them WAI's:
- **Video coding for machines.** ISO/IEC 23888-2 (MPEG-AI Part 2; **DIS**, FDIS
planned late 2026) codes video *and* descriptors extracted from it, jointly
optimised for bitrate and for machine-task performance after decoding. Its
fidelity target is a task's accuracy, not a pixel comparison.
- **Feature coding for machines.** ISO/IEC 23888-4 (MPEG-AI Part 4; **CD**) codes
intermediate feature tensors from inside a machine-vision network — the origin
runs the first N layers, ships the tensor, the sink runs the remainder. **No
pixels are reconstructed at any point**, so there is no medium to hash.
- **Vendor framing.** At least one vendor markets compression as safe for machine
consumption when the change it induces in a downstream model's behaviour is
statistically indistinguishable from the variance that model already tolerates.
No standards body, no designation — and the vendor's own material states the
industry lacks a shared framework for the claim, which is what makes the seam
worth naming rather than ceding.
WAI today can register these as capabilities but cannot state what conformance
means for them. `ReplicateClass::Behavioral` is a disclaimer, not a criterion.
*Task-equivalent but not bit-equal* is unstateable, so an implementation either
overclaims a reproducibility tier it does not meet or says nothing at all.
**The distinction that makes this a separate file.** A reproducibility tier is
checkable by the sink from the bytes it received. A task-fidelity claim is not:
checking it requires a model, a corpus, and a test run. Listing the two together
would blur the one property `determinism-tiers.md` currently keeps clean — that
its tiers are verifiable without leaving the object.
## 2. The claim
A task-fidelity claim is a tuple, and it is meaningless with any element missing:
| element | meaning |
|---|---|
| `model` | content address of the network the claim is about — the identity under which δ was observed |
| `test` | content address of the task, corpus and metric the claim was measured under |
| `tolerance` | τ — the behavioural change the claimant asserts is acceptable, in the metric `test` names |
| `observed` | δ — the behavioural change actually measured under `test` |
| `evidence` | the class in §3 |
A claim asserts **δ ≤ τ under `test`, for `model`**. It asserts nothing about any
other model, any other corpus, or any metric `test` does not name.
- A claim **MUST** carry all five elements. A tolerance without an observation is
a target, not a claim, and **MUST NOT** be sealed as one.
- `model` and `test` **MUST** be content addresses, not names. "Tested on a
standard detector" is unfalsifiable; a hash is not.
- A claim **MUST NOT** be restated for a different model or corpus without a new
observation. Behavioural tolerance does not transfer by assertion.
## 3. Evidence class (REQUIRED)
What separates the rungs is **provenance and scope, not accuracy** — the same
principle as `energy-measurement.md` §2, and for the same reason: a confidently
formatted δ says nothing about whether anyone ran the test.
| class | meaning | requires |
|---|---|---|
| `Measured` | δ was observed by running `test` against `model` on the stated corpus. | retained artifacts sufficient to re-run |
| `Transferred` | δ was observed under a *different* model or corpus and is argued to carry over. | the source claim, and the argument, both named |
| `Asserted` | δ is claimed without an observation. | — |
- An implementation **MUST NOT** promote a claim's evidence class in transit, as
§2 of `energy-measurement.md` forbids for acquisition class.
- A verifier that cannot resolve `model` and `test` **MUST** treat the claim as
`Asserted` regardless of the class stated, and **SHOULD** say so rather than
discard the claim silently.
- `Transferred` **MUST NOT** be used to cross a modality or a task family. A
detector's tolerance is not a segmenter's.
## 4. What the claim is, and is not
- It is **not** a reproducibility tier, and **MUST NOT** be presented as one. A
capability carrying a task-fidelity claim **MUST NOT** thereby claim
`entropy-consistency` or `decode-equivalence`; those are separate assertions
about separate properties, and a capability may hold both, one, or neither.
- It is **not** sink-checkable from the bytes. This is the defining limitation,
and stating it is the point: a receipt bearing a task-fidelity claim carries a
*graded assertion*, not a verification, and a relying party that treats it as
the latter has misread it.
- It is **not** a quality metric. δ is behavioural change in a named downstream
task, not perceptual fidelity, and the two **MUST NOT** be reported in the same
field.
- It does **not** license degradation elsewhere. A task-fidelity claim says
nothing about energy, and a payload an encoder altered to save energy, such as
one produced in answer to a decoding-operation-reduction request, is still bound
by `determinism-tiers.md` §2.
## 5. The split-computation case — named, not solved
FCM makes the origin/sink **work partition** a negotiated wire parameter: the cut
point N decides how much of the network each side runs. That breaks an assumption
in `jwp-receipts.md`, where `joules_micro` is one `u64` for producing the object
by one producer.
A cut-point-aware receipt needs three things WAI does not have: joules before the
cut, joules attributable after it, and a network-identity hash making the halves
provably compose. The third is a carriage problem — the artifact a network
identity names has no normative wire form in WAI today.
This extension **does not** solve that. It records the gap so a task-fidelity
claim over a split computation is not mistaken for a complete accounting: such a
claim **MUST** state the cut point, and **MUST NOT** report a single joule figure
as if one producer had done all the work.
## 6. Framing
Byte-comparability is becoming one fidelity contract among several rather than
the only one. WAI's position is unchanged by that — it names contracts and grades
the evidence behind them, and does not adjudicate which contract a domain should
want. What would be wrong is silence: a ratified class of media arriving with a
conformance notion the container cannot state, described instead in the vocabulary
of a guarantee it does not make.