wai.media.synthesis: origin claims for every kind of media, two marking layers, AI participants, reviews and labels #387

Merged
dcharlot merged 11 commits from wai/synthesis into main 2026-10-21 10:44:43 -04:00
Owner

What this is

SYN: one origin claim for every kind of media WAI carries. Today WAI labels origin for captions only. This PR adds the record wai.media.synthesis (wai/extensions/synthesis.md).

Origin claim (wai-origin). It covers an object, a group or a track. Its class is one of:

  • captured;
  • reconstructed: a codec, neural or not, rebuilding what was captured;
  • assistive: an edit that does not substantially alter its input;
  • synthesized: generated.

The claim names its step (capture, convert, assist, generate), the models the step ran and the oversight of a generation. It names each input by content hash and by the link hash of the input's own claim. The class is the greatest of the step's class and the inputs' classes, so it rises along every chain of derivations and never falls.

Exports. The IPTC digital source type and the C2PA statement are pure functions of the claim. The C2PA statement is the actions plus one c2pa.ai-disclosure per trained model, written in JCS.

Assistive evidence. Two integer derivations are pinned: a 2× upscale using int_motion's half-sample rounding, and a 3×3 binomial denoise.

  • A verifier that holds the input's decoded samples recomputes the output, so an assistive claim over these is checked, not trusted.
  • A float or unpinned step states attest and is reported as asserted.

Two marking layers (Code of Practice Sub-measures 1.1.1 and 1.1.2):

  • The signed claim is layer 1.
  • Layer 2 is a watermark whose 8-byte payload is the class code plus 7 bytes of the claim's link hash.
  • A wai-marking record names what was embedded, and a wai-detection record names what a detector read. A detection that disagrees with the claim is refused, and so is a marked object in which the detector finds no mark.
  • The watermark algorithm is a slot for SYN-2. No scheme is registered. The corpus uses wai-mark:conformance, which names no algorithm, to exercise the records and the agreement check.

Live rooms.

  • live-rooms §4.4 adds a grant attribute ai that names the model acting for a participant.
  • live-rooms §9.2 step 6 refuses a chat, reaction or caption from that participant unless it states origin 2 or 3 with that model (ai_unmarked). A relay must not forward such an event.
  • live-events §4.4 and §4.5 give chat and reaction an optional origin and model after their last field. Existing records keep their bytes.
  • Every track an AI participant publishes needs a synthesized track claim (ai_track_unlabelled).

Certified synthesis (wai-review). A review is a signed verdict over one exact reconstruction, at decode-equivalence or generation-equivalence.

  • A player presents it only when its latest presentation of the object meets both conditions:
    • its decode path holds the review's tier, where a path's tier is the weakest along it and none if any float stage or post-decode alteration lies on it;
    • its output digest equals the reconstruction that was reviewed.
  • The player proves its tier by stating its decode path and output digest. A verifier holding the decoded samples checks that digest.

Labels.

  • A wai-label-policy says which classes are labelled and with which assets, at what interval and grace.
  • A player's signed log (wai-player) of presentations, labels shown, resumptions and reviews presented is checked against the policy. A label is due at first exposure, after each interruption, and within the interval.
  • The EU icons of the Code's Annex 1 are pinned by SHA-256.

Design decisions and why

  • The records are standalone JSON (JCS + Ed25519 + BLAKE3 link hash), not new jwp-receipts claim classes. This follows the deriving edge's record. Adding claim classes would have meant changing the jwp claim verifier, and every jwp verifier must reject an unknown class. The encodings are jwp-receipts §2.4.3's, and the strict JSON reading is §3.1 step 1's.

  • A codec is a convert step. It names no model, asserts no source of its own, and keeps its input's class and source. Its C2PA statement is c2pa.opened + c2pa.converted with no digital source type. This is exactly energy-binding §6.1's position, so the neural-codec distinction is kept.

  • Class ↔ IPTC ↔ C2PA mapping (§5, §6) agrees with timed-text §10.3 and the C2 live-provenance branch's §9:

    • human → digitalCapture / screenCapture / digitalCreation;
    • machine → trainedAlgorithmicMedia + fully_autonomous;
    • machine-reviewed → compositeWithTrainedAlgorithmicMedia + human_validated (C2PA 2.4 §18.28.3's pairing);
    • several inputs → compositeCapture / compositeSynthetic / composite.

    I messaged the C2 builder. Captions' origin maps onto these classes (§1).

  • The second layer must be a watermark. I read the Code itself. Measure 1.1 asks for two layers, 1.1.1 (signed metadata) and 1.1.2 (an imperceptible watermark), and Sub-measure 1.1.3 says fingerprinting and logging are never sufficient alone. So a content-bound commitment (a reconstruction binding) is a supplement here, not the second layer. The payload points at the claim, but I do not claim it is the Measure 3.4(c)(ii) signpost, which names the detection solution.

  • The "synthesized object labelled captured" check is evidential.

    • A generator's own envelope (registry class GenerativeDeterministic/Behavioral, or intent: create) cannot carry a non-generate claim (class_understated).
    • A conversion cannot lower its input's class (class_mismatch).
    • The second layer catches a captured label on marked content (layers_disagree).
  • The AI participant marker is a grant attribute, not a new power bit. Attributes are signed with the grant and need no layout change; powers mean capabilities. The room verifier enforces it in step 6 of §9.2.

  • D1 coordination. Done by reading the branch only, no edits. My record member carries D1's derivation-record hash. D1 switched its rising labels to my step names assist/generate, so the spellings must stay. D1's record does not yet list a wai-origin among its provenance items; that is a follow-up once both land. I do not link deriving-edge.md, so check-spec-refs stays green on both branches.

Primary sources verified

Source What was read
EU Code of Practice on Transparency of AI-Generated Content, final 10 Jun 2026 PDF from the Commission. Section 1 Measures 1.1–1.3 and 3.4, Section 2 Measures 1.1–1.3, Annex 1
EU icons Commission page (last updated 13 Oct 2026). Both archives downloaded and hashed, and every file pinned. No audio icon/earcon is published (Annex: "will be developed"), so none is pinned
C2PA 2.4 §18.28 (CDDL, oversight enum, §18.28.3 pairing), §18.15.2, §18.15.4.5, read from the spec HTML
IPTC Digital Source Type vocabulary cv.iptc.org, every concept and its definition
Regulation (EU) 2024/1689 Art. 50 EUR-Lex is behind a WAF challenge from here. Paragraphs 2, 4 and 5 were read as the Code reproduces them. The 50(2) exemption sentence was read in a reproduction of the OJ text. The spec states this
Digital Omnibus 2 Dec 2026 date; India and China rules Not verified at primary source. The spec makes no claim about them

Checks

Check Command Result
synthesis lib tests cargo test --no-default-features --features synthesis --lib synthesis:: (build host) ok, 8 passed
synthesis corpus test cargo test --no-default-features --features synthesis --test synthesis ok, 4 passed: regenerates byte for byte, every case's outcome, §12 = Reason::ALL, §10.2 = EU_ICONS
corpus bin wai_synthesis_vectors verify ../live-conformance/synthesis PASS, PASS
live_events --features live_events --lib live_events:: / --test live_events 13 / 4 passed
live_room --features live_room --lib live_room:: / --test live_room 7 / 4 passed
Corpora whose chat/reaction literals changed --test live_moderation, live_ads, live_metering, energy_steering, timed_text, live_watermark, live_compose, live_record, capture_take all ok (bytes unchanged)
registry --no-default-features --lib codecs::registry (wire identifiers in their sections) 14 passed
registry export wai registry export then --check up to date
clippy --all-targets on synthesis + live features zero notes in touched files
wai-live-web (dependent) cargo test --locked, clippy, wasm32 check ok
joule-moq-room (dependent) cargo check --locked --all-targets ok
Lockfiles cargo metadata --locked --offline on all 9 lockfiles with wai all ok, no lock change
Python verifiers all 13 live-conformance/*_verify.py (-I), including the new synthesis_verify.py all exit 0
Repo checks check-tests-in-ci.py, check-workflow-concurrency.sh, check-spec-refs.py, check-wai-section-refs.py, check-no-vanity-metrics.sh, test-public-text-checks.sh, check-comparative-prose.sh, check-orphan-sources.py all clean

Falsifications (committed first, restored after)

Rust. Each rule was disabled in turn on the build host:

  • recompute;
  • class composition;
  • generator floor;
  • layer agreement;
  • review tier;
  • first-exposure deadline;
  • AI track check;
  • the room's AI rule;
  • a convert's source.

Each time the generator's intent assertion fires (exit 101), and tests/synthesis.rs every_case_gets_its_stated_outcome FAILS, naming the vector. Without the AI rule, tests/live_room.rs FAILS.

Python. The same checks, plus the upscale rounding and the signature check, were disabled one at a time in a copy of synthesis_verify.py. Each run exits 1, naming the vector.

One real finding. The first corpus's reconstruction cleared the low 3 bits, so every pair sum was even and a changed upscale rounding went uncaught. The corpus now quantises to multiples of 3, and the falsification is caught.

synthesis_verify.py also mutates the corpus 17 ways. Each mutated copy fails.

What is NOT done

  • No watermark scheme (SYN-2). Detection records are signed statements.
  • Not built:
    • the detection signpost and resolver of Measure 3.4(c) (R2);
    • the system/personal provenance compartments and the "not stripped" verifier output (R3);
    • the GB 45438 Annex E export (R12);
    • an HLS public.machine-generated writer (§6 states a SHOULD only).
  • No model-backed assistive derivation is registered. The slot is described in §4.3.
  • No relay code. The relay MUSTs (do not forward ai_unmarked events or unlabelled AI tracks) are normative text only.
  • No authority registered in jwp-receipts §7.5 for these records. Which signers a verifier trusts is left to its policy.
  • Art. 50 OJ text not read directly (WAF). The Omnibus date, India and China were not verified at primary source.

🤖 Generated with Claude Code

## What this is SYN: one origin claim for every kind of media WAI carries. Today WAI labels origin for captions only. This PR adds the record `wai.media.synthesis` ([`wai/extensions/synthesis.md`](wai/extensions/synthesis.md)). **Origin claim (`wai-origin`).** It covers an object, a group or a track. Its class is one of: - `captured`; - `reconstructed`: a codec, neural or not, rebuilding what was captured; - `assistive`: an edit that does not substantially alter its input; - `synthesized`: generated. The claim names its step (`capture`, `convert`, `assist`, `generate`), the models the step ran and the oversight of a generation. It names each input by content hash and by the link hash of the input's own claim. The class is the greatest of the step's class and the inputs' classes, so it rises along every chain of derivations and never falls. **Exports.** The IPTC digital source type and the C2PA statement are pure functions of the claim. The C2PA statement is the actions plus one `c2pa.ai-disclosure` per trained model, written in JCS. **Assistive evidence.** Two integer derivations are pinned: a 2× upscale using `int_motion`'s half-sample rounding, and a 3×3 binomial denoise. - A verifier that holds the input's decoded samples recomputes the output, so an assistive claim over these is checked, not trusted. - A float or unpinned step states `attest` and is reported as *asserted*. **Two marking layers** (Code of Practice Sub-measures 1.1.1 and 1.1.2): - The signed claim is layer 1. - Layer 2 is a watermark whose 8-byte payload is the class code plus 7 bytes of the claim's link hash. - A `wai-marking` record names what was embedded, and a `wai-detection` record names what a detector read. A detection that disagrees with the claim is refused, and so is a marked object in which the detector finds no mark. - **The watermark algorithm is a slot for SYN-2.** No scheme is registered. The corpus uses `wai-mark:conformance`, which names no algorithm, to exercise the records and the agreement check. **Live rooms.** - live-rooms §4.4 adds a grant attribute `ai` that names the model acting for a participant. - live-rooms §9.2 step 6 refuses a chat, reaction or caption from that participant unless it states origin 2 or 3 with that model (`ai_unmarked`). A relay must not forward such an event. - live-events §4.4 and §4.5 give chat and reaction an optional `origin` and `model` after their last field. Existing records keep their bytes. - Every track an AI participant publishes needs a synthesized track claim (`ai_track_unlabelled`). **Certified synthesis (`wai-review`).** A review is a signed verdict over one exact reconstruction, at `decode-equivalence` or `generation-equivalence`. - A player presents it only when its latest presentation of the object meets both conditions: - its decode path holds the review's tier, where a path's tier is the weakest along it and `none` if any float stage or post-decode alteration lies on it; - its output digest equals the reconstruction that was reviewed. - The player proves its tier by stating its decode path and output digest. A verifier holding the decoded samples checks that digest. **Labels.** - A `wai-label-policy` says which classes are labelled and with which assets, at what interval and grace. - A player's signed log (`wai-player`) of presentations, labels shown, resumptions and reviews presented is checked against the policy. A label is due at first exposure, after each interruption, and within the interval. - The EU icons of the Code's Annex 1 are pinned by SHA-256. ## Design decisions and why - **The records are standalone JSON (JCS + Ed25519 + BLAKE3 link hash), not new jwp-receipts claim classes.** This follows the deriving edge's record. Adding claim classes would have meant changing the jwp claim verifier, and every jwp verifier must reject an unknown class. The encodings are jwp-receipts §2.4.3's, and the strict JSON reading is §3.1 step 1's. - **A codec is a `convert` step.** It names no model, asserts no source of its own, and keeps its input's class and source. Its C2PA statement is `c2pa.opened` + `c2pa.converted` with no digital source type. This is exactly energy-binding §6.1's position, so the neural-codec distinction is kept. - **Class ↔ IPTC ↔ C2PA mapping** (§5, §6) agrees with timed-text §10.3 and the C2 live-provenance branch's §9: - human → `digitalCapture` / `screenCapture` / `digitalCreation`; - machine → `trainedAlgorithmicMedia` + `fully_autonomous`; - machine-reviewed → `compositeWithTrainedAlgorithmicMedia` + `human_validated` (C2PA 2.4 §18.28.3's pairing); - several inputs → `compositeCapture` / `compositeSynthetic` / `composite`. I messaged the C2 builder. Captions' `origin` maps onto these classes (§1). - **The second layer must be a watermark.** I read the Code itself. Measure 1.1 asks for two layers, 1.1.1 (signed metadata) and 1.1.2 (an imperceptible watermark), and Sub-measure 1.1.3 says fingerprinting and logging are never sufficient alone. So a content-bound commitment (a reconstruction binding) is a supplement here, not the second layer. The payload points at the claim, but I do **not** claim it is the Measure 3.4(c)(ii) signpost, which names the detection solution. - **The "synthesized object labelled captured" check is evidential.** - A generator's own envelope (registry class `GenerativeDeterministic`/`Behavioral`, or `intent: create`) cannot carry a non-`generate` claim (`class_understated`). - A conversion cannot lower its input's class (`class_mismatch`). - The second layer catches a captured label on marked content (`layers_disagree`). - **The AI participant marker is a grant attribute, not a new power bit.** Attributes are signed with the grant and need no layout change; powers mean capabilities. The room verifier enforces it in step 6 of §9.2. - **D1 coordination.** Done by reading the branch only, no edits. My `record` member carries D1's derivation-record hash. D1 switched its rising labels to my step names `assist`/`generate`, so the spellings must stay. D1's record does not yet list a `wai-origin` among its provenance items; that is a follow-up once both land. I do not link `deriving-edge.md`, so check-spec-refs stays green on both branches. ## Primary sources verified | Source | What was read | |---|---| | EU Code of Practice on Transparency of AI-Generated Content, final 10 Jun 2026 | PDF from the Commission. Section 1 Measures 1.1–1.3 and 3.4, Section 2 Measures 1.1–1.3, Annex 1 | | EU icons | Commission page (last updated 13 Oct 2026). Both archives downloaded and hashed, and every file pinned. **No audio icon/earcon is published** (Annex: "will be developed"), so none is pinned | | C2PA 2.4 | §18.28 (CDDL, oversight enum, §18.28.3 pairing), §18.15.2, §18.15.4.5, read from the spec HTML | | IPTC Digital Source Type vocabulary | cv.iptc.org, every concept and its definition | | Regulation (EU) 2024/1689 Art. 50 | EUR-Lex is behind a WAF challenge from here. Paragraphs 2, 4 and 5 were read as the Code reproduces them. The 50(2) exemption sentence was read in a reproduction of the OJ text. The spec states this | | Digital Omnibus 2 Dec 2026 date; India and China rules | **Not verified at primary source.** The spec makes no claim about them | ## Checks | Check | Command | Result | |---|---|---| | synthesis lib tests | `cargo test --no-default-features --features synthesis --lib synthesis::` (build host) | ok, 8 passed | | synthesis corpus test | `cargo test --no-default-features --features synthesis --test synthesis` | ok, 4 passed: regenerates byte for byte, every case's outcome, §12 = `Reason::ALL`, §10.2 = `EU_ICONS` | | corpus bin | `wai_synthesis_vectors verify ../live-conformance/synthesis` | PASS, PASS | | live_events | `--features live_events --lib live_events::` / `--test live_events` | 13 / 4 passed | | live_room | `--features live_room --lib live_room::` / `--test live_room` | 7 / 4 passed | | Corpora whose chat/reaction literals changed | `--test` live_moderation, live_ads, live_metering, energy_steering, timed_text, live_watermark, live_compose, live_record, capture_take | all ok (bytes unchanged) | | registry | `--no-default-features --lib codecs::registry` (wire identifiers in their sections) | 14 passed | | registry export | `wai registry export` then `--check` | up to date | | clippy | `--all-targets` on `synthesis` + live features | zero notes in touched files | | wai-live-web (dependent) | `cargo test --locked`, clippy, wasm32 check | ok | | joule-moq-room (dependent) | `cargo check --locked --all-targets` | ok | | Lockfiles | `cargo metadata --locked --offline` on all 9 lockfiles with `wai` | all ok, no lock change | | Python verifiers | all 13 `live-conformance/*_verify.py` (`-I`), including the new `synthesis_verify.py` | all exit 0 | | Repo checks | `check-tests-in-ci.py`, `check-workflow-concurrency.sh`, `check-spec-refs.py`, `check-wai-section-refs.py`, `check-no-vanity-metrics.sh`, `test-public-text-checks.sh`, `check-comparative-prose.sh`, `check-orphan-sources.py` | all clean | ## Falsifications (committed first, restored after) **Rust.** Each rule was disabled in turn on the build host: - recompute; - class composition; - generator floor; - layer agreement; - review tier; - first-exposure deadline; - AI track check; - the room's AI rule; - a convert's source. Each time the generator's intent assertion fires (exit 101), and `tests/synthesis.rs every_case_gets_its_stated_outcome` FAILS, naming the vector. Without the AI rule, `tests/live_room.rs` FAILS. **Python.** The same checks, plus the upscale rounding and the signature check, were disabled one at a time in a copy of `synthesis_verify.py`. Each run exits 1, naming the vector. **One real finding.** The first corpus's reconstruction cleared the low 3 bits, so every pair sum was even and a changed upscale rounding went **uncaught**. The corpus now quantises to multiples of 3, and the falsification is caught. `synthesis_verify.py` also mutates the corpus 17 ways. Each mutated copy fails. ## What is NOT done - **No watermark scheme (SYN-2).** Detection records are signed statements. - **Not built:** - the detection signpost and resolver of Measure 3.4(c) (R2); - the system/personal provenance compartments and the "not stripped" verifier output (R3); - the GB 45438 Annex E export (R12); - an HLS `public.machine-generated` writer (§6 states a SHOULD only). - **No model-backed assistive derivation is registered.** The slot is described in §4.3. - **No relay code.** The relay MUSTs (do not forward `ai_unmarked` events or unlabelled AI tracks) are normative text only. - **No authority registered in jwp-receipts §7.5** for these records. Which signers a verifier trusts is left to its policy. - **Art. 50 OJ text not read directly** (WAF). The Omnibus date, India and China were not verified at primary source. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
live-events §4.4 and §4.5: a chat and a reaction may state an origin after their last
field (1 human, 2 machine, 3 machine-reviewed, with the model's digest for 2 and 3), as a
caption does. live-rooms §4.4: the grant attribute `ai` names the model that acts for an AI
participant; §9.2 step 6 refuses its chat, reaction or caption that does not state origin 2
or 3 with that model (`ai_unmarked`), and a relay does not forward one. Both corpora gain
vectors (additions only); both second implementations read the new fields.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
extensions/synthesis.md: the origin claim of an object, a group or a track (captured,
reconstructed, assistive, synthesized; the class rises along a chain of derivations and
never falls), its IPTC digital source type and C2PA statement as functions of the claim,
two pinned integer derivations whose recomputation proves an assistive claim, the marking
and detection records of the second layer and their agreement with the first, AI
participants' tracks, reviews a player presents only on a decode path of the review's
tier, and a player's signed label log with the EU icons pinned by digest. The wai-rs
module (feature `synthesis`), its vectors generator and the corpus.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Written from extensions/synthesis.md: strict JSON and JCS of its own, the pinned
derivations in its own arithmetic, the digital source type and the C2PA statement written
from §5 and §6, rooms through live_rooms_verify.py, Ed25519 and BLAKE3 through the
claim-conformance helpers. It agrees with wai-rs on every vector and refuses every mutated
copy of the corpus.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The registry lists the record wai.media.synthesis and its six document kinds; the export
is regenerated (registry export --check is up to date). SPEC §5 says what the record is.
The conformance workflow runs the module's unit tests, tests/synthesis.rs and
synthesis_verify.py, and fires on an edit of the extension, whose tables the tests read.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-live-web's decoded view of a chat carries its stated origin and model, and its chat
payload states none, as before.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
synthesis corpus: a reconstruction whose samples make both derivations' roundings decide
Some checks failed
WAI energy receipts / does this change touch it (pull_request) Successful in 1m24s
wai-web wasm32 / does this change touch it (pull_request) Successful in 1m11s
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
wai-pack / wai-pack · linux (pull_request) Has been cancelled
wai-pack / wai-pack · linux-arm64 (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-pack / wai-pack · independent verifier (Python) (pull_request) Has been cancelled
wai-pack / wai-pack · the floor through a media prober (pull_request) Has been cancelled
wai-pack / wai-pack · dependency licences (pull_request) Has been cancelled
wai-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
720c40e9ad
The reconstruction cleared the photo's low three bits, so every pair of samples summed to
an even number and the upscale's rounding never decided a sample: a falsification that
dropped it went uncaught. It now quantises to multiples of 3.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The rooms corpus gained grant_ai_malformed with the synthesis slice; the gateway's own grant
reader now refuses it as wai-rs does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
# Conflicts:
#	.github/workflows/wai-conformance.yml
#	wai/CHANGELOG.md
#	wai/REGISTRY.md
#	wai/SPEC.md
#	wai/live-conformance/README.md
#	wai/registry/capabilities.json
#	wai/wai-rs/Cargo.toml
#	wai/wai-rs/src/codecs/registry.rs
registry export: regenerated after merging main (live provenance + synthesis)
All checks were successful
jouleclaw fabrics / metal (macOS, Apple GPU) (pull_request) Successful in 50s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 5m49s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m13s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m3s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m50s
wai-pack / wai-pack · linux (pull_request) Successful in 1m29s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m17s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m26s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m10s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 28s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 3m11s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 9s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 24s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m19s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 6m59s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m15s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 14m33s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 1m11s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 3m46s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m4s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 21m49s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 7m17s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m5s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 18s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 42s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 5m17s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 2m53s
wai-pack / wai-pack · macos (pull_request) Successful in 1m7s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m46s
f733e28854
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
registry export: regenerated after merging main (deriving edge + synthesis)
Some checks failed
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Has been cancelled
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Has been cancelled
WAI energy receipts / does this change touch it (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / does this change touch it (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
standards workspaces build + test / which workspaces this change touches (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-relay, every target (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Has been cancelled
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Has been cancelled
96095b511d
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!387
No description provided.