open-standards/wai/live-conformance/detection/README.md
Transaction Science 1ff71887ff
Some checks failed
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 30s
wai-audit collector and player integration / does this change touch it (push) Successful in 24s
wai-app and Create / wai-app · does this change touch it (push) Successful in 21s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 28s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 33s
wai-key-proxy / does this change touch it (push) Successful in 27s
wai-fleet service / does this change touch it (push) Successful in 16s
WAI operation catalogue / does this change touch it (push) Successful in 24s
wai-ledger service / does this change touch it (push) Successful in 26s
wai-quantum for JavaScript / does this change touch it (push) Successful in 26s
wai-sink-android native sink library / does this change touch it (push) Successful in 32s
WAI Studio / does this change touch it (push) Successful in 32s
wai-quantum studio and desktop / does this change touch it (push) Successful in 44s
wai-sink-swift native sink package / does this change touch it (push) Successful in 34s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 2m16s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Failing after 7m31s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 6m13s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 9m1s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 23s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 17s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 57s
wai-audit collector and player integration / collector · linux (push) Successful in 2m24s
wai-key-proxy / proxy · linux (push) Successful in 2m32s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m42s
wai-ledger service / service · linux (push) Successful in 3m21s
wai-fleet service / service · linux (push) Successful in 5m24s
wai-quantum for JavaScript / javascript · linux (push) Successful in 5m33s
wai-quantum studio and desktop / studio · browser (push) Successful in 5m13s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 9m58s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 12m36s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 13m27s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 11m10s
WAI Studio / Studio in WebKit · linux (push) Successful in 13m50s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 47s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 1m55s
wai-fleet service / service · macos (push) Successful in 1m5s
wai-ledger service / service · macos (push) Successful in 1m38s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 8m20s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 8m5s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 16m45s
wai-quantum studio and desktop / desktop app · macos (push) Failing after 12m13s
WAI Studio / Studio in Chromium and Firefox · macos (push) Failing after 12m25s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 17m39s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 2m42s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 7m51s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 8m29s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 9m9s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 18m57s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 7m7s
C2PA stores carry identity assertions, soft bindings and the ISCC identifier, trust lists are pinned by digest, and a detection verdict is a claim of its own
c2pa-binding §4.8 to §4.10 and §6.4: after its three assertions a store of wai.asset.c2pa may
carry wai-mark:tent64 as a C2PA soft-binding assertion naming its robustness claim, the
envelope's ISCC identifier, and the Creator Assertions Working Group's identity assertions
(1.3, cawg.x509.cose); a verifier may hold its anchors as trust lists in the C2PA Trust List's
form, pinned by the SHA-256 of their bytes. The algorithm-list entries for tent64 and band64
are written in extensions/c2pa-soft-binding-entries.json.

extensions/iscc.md: ISO 24138's codec, ISCC-SEQ, Instance-, Image- and Audio-Codes and the
ISCC-CODE from the IEP texts, replaying the public test vectors; WAI's integer pre-processing.

extensions/detection.md: wai.media.detection, a detector's signed verdict at an operating point
named by digest, its evidence a robustness record of binding type detector; refused as
provenance, never a change to an origin claim's class.

Corpora c2pa-identity/, iscc/ and detection/, each with a second implementation in Python.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-10 15:25:49 -05:00

34 lines
2.3 KiB
Markdown

# live-conformance/detection — detection verdicts
The corpus of [`extensions/detection.md`](../../extensions/detection.md) §8: cases of origin claims,
robustness records and detection verdicts, accepted and refused, and what a verifier states of each.
**Files.** `vectors.json` names the stand-in detector and its definition, and lists the cases,
each its `name`, its `provenance`, `robustness` and `verdicts` (paths of the records given, in
order), `requireEvidence` (the policy `evidence` of §5.1) and `expect`. `records/` holds every
record once, named by its role and the first 16 hexadecimal digits of the SHA-256 of its text.
**Equivalence.** A conforming verifier given a case's records and policy reaches the outcome
`expect` states (§5): for `refuse`, the `reason` of §7, the `list` and the `index`; for `accept`,
what §5.3 states: each origin claim's `link`, `subject` and `class`, and each verdict's `link`,
`subject`, `detector`, `verdict`, `besideClaim` and `evidence`.
**The cases.**
- Accepted: `verdicts-beside-claims` (two verdicts that agree with their claims and two that
disagree, the classes as signed), `claims-without-verdicts` (the same claims, the same
classes), and `verdict-without-claim`.
- One refused case for each reason of §7, some reasons more than once; each name says its defect.
**Provenance.** `wai_detection_vectors gen` writes every file but this one from fixed seeds:
every key is SHA-256 of a label, and no key is one anyone holds. The detector,
`wai-detector:conformance`, scores a picture by the share of its bright pixels: it detects nothing
about how a picture was made and stands for a detector a verifier does not implement. Its
robustness records are measured: the generator runs it at each threshold over two bright pictures
and two dark ones it draws, under four attacks of robustness-evidence §4. The verdicts' scores are
its scores of five pictures the generator draws, named by the content hash of each as a PNG.
**Checked by.** `wai_detection_vectors verify` and `tests/detection.rs` in `wai-rs`, and
`../detection_verify.py`, the second implementation, written from the extension's text, which
verifies the robustness records with `../robustness_verify.py`, requires every mutated copy of an
accepted case to be refused and every one of its own checks, dropped, to be caught.