wai.media.influence (CO6): who conditioned an output, and their share of what it earns #421

Closed
dcharlot wants to merge 0 commits from wai/influence into main
Owner

wai.media.influence (CO6): who conditioned an output, and their share of what it earns

Registers the record wai.media.influence (extensions/influence.md) and gives settlement statements their attribution lines (line kind 2, reserved until now).

What is in it

  • Terms and catalogues (§3). An owner, any key (a person, a collective, a label), publishes a work's terms (wai-terms): its wai.ai.usage statement, the acts it allows its work to condition, a tariff (per_use and/or share_ppm, in a currency), the tier a use must reach (attribution), and when the terms are in force. A catalogue (wai-catalogue) is a signed set of works that one set of terms governs. Both are their owner's only by its signature (not_signed_by_owner). A work is an image, a voice model, an adapter, a prior, a taste prior or a catalogue, named by digest; an owner's prior is published unchanged and pinned as SPEC §3.1 pins any parameter set.
  • Conditioning (§4). A generate, candidates or inpaint step names every work that conditioned it in a wai-conditioning record beside the step, bound by the step's link hash: work, size (images), catalogue, terms in force, weight, and the use in ai-usage §6.1's form. The pinned conditioned generator wai-influence:spectral-blend blends wai.generate.spectral's picture with each reference image (tiled) and adapter (a second spectral model file) by weight, in integers, so a verifier regenerates the step from exactly the works named. A work left out, added or reweighted fails (conditioning_mismatch); a reference named for a step of the exact generator, which reads none, is refused the same way. Each reference is held to its owner's terms: terms_mismatch, not_in_catalogue, terms_not_in_force, and ai-usage's usage_unanswered / usage_disallowed (statement disallow, or an act the terms do not allow).
  • Attribution (§5). Each output sample gets the steps that made it (contribution §7.2's rules with the step in place of its performer). The declared rule wai-influence:share/1 divides the output, 10^6 units a sample, among the people who made samples, the owners of what conditioned the model by declared weights (or equal shares, the model counted as one, where none is declared), the model's owner, works with no owner, and unknown / undisclosed. The shares always sum to the whole. The tool signs wai-attribution. When every step behind the output is disclosed, the verifier recomputes the shares: unknown_attributed (units no rule fixes, credited, including to the tool's own terms), estimate_mixed (a training-time estimate's units added to an owner's share), and shares_mismatch for any other difference. The record also refuses shares_not_whole and rule_unknown. A training-time estimate is carried with its class beside the shares and is never added to them.
  • Tier of a use (§5.5). A use is recomputed where the generation was regenerated with its works, checked where a pinned step was not regenerated, and stated for an attested generator or for shares that could not be compared. An owner's terms set the lowest tier they accept (attribution_not_met).
  • Payment (§6, settlement §7.8). An accepted attribution is a basis. An attribution line (kind 2) covers one payee, one class and one basis, and carries the output's acknowledged deliveries and bytes. Its amount is per_use × deliveries + ⌊revenue × share × units / (10^6 × whole)⌋, rounded down once per bucket, and what the rounding leaves stays with the party. The statement's amount and classes still cover delivery lines only. A statement verifier refuses a basis it is not given (record_missing at basis), a basis it refuses (a disallowed use paid), a tariff in another currency (currency_mismatch), and a statement that settles an output's deliveries with no line for owners whose attribution it holds (attribution_unsettled). Lines that don't recompute are statement_mismatch or bytes_not_acknowledged.
  • Transparency report (§7, wai-influence-report). For one owner and one statement, signed by the statement's party: the outputs the owner's works had units in, its buckets, the deliveries, the revenue and the amounts. It names no other owner. The owner recomputes every amount from its own terms. An auditor holding the statement checks that the report lists exactly the owner's lines (report_incomplete, report_mismatch).
  • Amendments. contribution.md §1 and §4.4 now point to influence. Nothing changes for contribution verifiers. settlement.md: kind 2 is defined (§7.2, §7.5, §7.6, new §7.8), with a new step 6 "the bases" in §8.2, an amended §8.3 outcome, and §1, §12 and §13. The settlement corpus's reserved-line vector becomes attribution_line_without_basis (record_missing at ["basis", 0]), and settlement_verify.py now reads kind 2 lines.
  • Reference: wai-rs module influence (feature influence = ["contribution", "settlement", "ai_usage"], no new dependency), bin wai_influence_vectors, test tests/influence.rs. settlement.rs gains Basis, attribution_lines, with_attribution, revenue, basis_order and Inputs.bases. contribution::corpus::{case_json, case_from_json} are now pub(crate).
  • Corpus live-conformance/influence/vectors.json has cases, statements and reports, with a README carrying a Provenance. line. Every reason of §9 and every reused code refuses at least one vector. The independent verifier live-conformance/influence_verify.py is also added.
  • Registry (CAP_MEDIA_INFLUENCE and five document-kind wire identifiers), the export (capabilities.json, vocab/v2.ttl, the REGISTRY table), SPEC §5, CHANGELOG, the CI step, the workflow paths: and the corpus-rules entry in int_kernels_vectors.rs (the live-conformance reason from main). This merges origin/main (#416): shared lists now name their tables, so this PR adds nothing to them.

Design decisions and why

  • A record beside the step, not a member of it. contribution §2 reads every record with exactly its listed members. A step carrying a conditioning member would make every contribution verifier refuse the step and the whole session. The sibling record leaves steps byte for byte as they are and binds to its step by link hash, which the step's signature and the record's root fix. The attribution record lists the conditioning records it reads, so they are committed. The reasons table is influence §4.2.
  • The conditioned generator is pinned here, and is attest to contribution. contribution §4.4 gives any generator other than wai.generate.spectral the check attest. So contribution verifiers accept such a session as attested, and this extension does the regeneration. The outcome tier counts a regenerated blend step as checked.
  • Omission is caught by recomputation. For the pinned generator, the picture is a function of the named works, so a record that omits one fails. For any other generator the record is the tool's signed statement, the use's tier is stated, and owners choose the tier they require.
  • Shares are compared only when nothing behind the output is undisclosed. Splitting a sample among its makers depends on how many makers there are. A verifier that sees undisclosed cannot know the true split, so it checks only the sum, and every owner bucket's tier is stated. This is what gives an owner's attribution requirement teeth (see the attribution_not_met control with a step undisclosed).
  • Integer units with a declared remainder. A sample is 10^6 units. Within a sample, the first maker takes the remainder. Within a step, the model takes what the weights leave. In a payment, each bucket's revenue share is rounded down once, and the remainder stays with the party.
  • Payees are owners with checked terms. Party buckets (people's own samples), unowned, unknown and undisclosed pay no one in this revision. A party's samples are its own share and are paid outside this revision. A work with no owner has no payee. Units no rule fixes are never paid.
  • Settlement stays independent of influence. Settlement verifies kind 2 lines from Basis facts it is handed; influence §6.2 verifies the cases and supplies them. Run alone, settlement refuses a kind 2 line with record_missing at its basis.
  • No dependency on #406. A taste prior is a work kind named by digest, with the owner's terms; the text names wai.media.exploration without linking a file that is not on main.
  • No consent rules for the service's own mechanics (§3.4). Where a regime asks for a lawful basis, it points to the lawful-basis declaration (jwp-receipts §2.4.6).

Checks (run on the build host through rb unless marked local)

check command result
influence lib tests cargo test --locked --no-default-features --features influence --lib influence:: ok, 3 passed
influence corpus tests cargo test --locked --no-default-features --features influence --test influence ok, 4 passed
settlement lib / corpus cargo test --locked --no-default-features --features settlement --lib settlement:: and --test settlement ok, 5 passed and 4 passed
contribution lib / corpus cargo test --locked --no-default-features --features contribution --lib contribution:: and --test contribution ok, 3 passed and 4 passed
ai_usage corpus cargo test --locked --no-default-features --features ai_usage --test ai_usage ok, 4 passed
registry cargo test --locked --lib codecs::registry ok, 14 passed
corpus rules cargo test --locked --features neural_int,video_int,audio_int,world_int,splat_int --test int_kernels_vectors every_decoded_output_states_a_sha256 ok
registry export cargo run --no-default-features --bin wai -- registry export (with --pull), then registry export --check up to date
clippy cargo clippy --locked --no-default-features --features influence --all-targets no notes in any touched file (the existing notes elsewhere are unchanged)
bins cargo build --locked --no-default-features --features influence --bins ok
lockfile cargo metadata --locked --offline --format-version 1 (wai-rs) ok, Cargo.lock unchanged (no new dependency)
corpus regenerates wai_influence_vectors gen (asserts every vector's intent) and wai_settlement_vectors gen regenerated byte-stable
influence verifier (local) python3 -I live-conformance/influence_verify.py live-conformance/influence exit 0: every vector agrees with wai-rs; every mutated copy fails; each dropped check is caught
neighbouring verifiers (local) contribution_verify.py, settlement_verify.py (amended), ai_usage_verify.py all PASS
repo checks (local) 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 exit 0
public names scripts/check-public-names.sh not run locally: WAI_NAME_DENYLIST is not set here; CI runs it from its secret

Falsifications (committed first, each mutation applied on the build host, then restored)

mutation of the reference result of cargo test --features influence --test influence
regeneration mismatch ignored exit 101 (every_vector_gets_its_stated_outcome)
a disallowed use not refused exit 101
an estimate mixed in not named exit 101
an owner's required tier not held exit 101
unknown units credited exit 101
settlement's attribution lines not compared exit 101
the shares not compared at all exit 101
a §9 row dropped from the extension exit 101 (the_extension_lists_the_reasons)
restored exit 0

Python: influence_verify.py mutates copies of the corpus (signatures, a weight, a withheld reference image or adapter, units moved, a catalogue changed, stated outcomes, an attribution line's amount, given attributions emptied, a statement byte, a report's amount, audit or terms, a model file byte) and every copy fails. It also drops each of its own checks in turn, every §9 reason and the reused codes past reading plus settlement's two attribution-line checks, and the corpus catches each one. A corpus copy with one attribution-line amount changed makes it exit 1. settlement_verify.py's own drop list now includes "§8.2 step 6: an attribution line's basis is given", which its corpus catches.

Not done

  • Session parties (people's own samples) are attributed but not paid by attribution lines, and estimates are never paid; both are stated as out of scope.
  • Conditioned transforms (a style transfer as a derivation) are out of scope. A style transfer is expressed as an inpainting over the whole picture.
  • Audio and video conditioning wait on contribution mapping those media. voice is a work kind now, so its terms can be published.
  • Whether a statement leaves an output out entirely can only be checked by a party that holds that output's attribution (§6.2 step 4).
  • #406 (exploration) is not merged. When it is, its taste prior can be linked from §3.1. Expect merge conflicts in shared files (CHANGELOG, Cargo.toml, lib.rs, registry.rs, capabilities.json, v2.ttl, the workflow).

🤖 Generated with Claude Code


Closed: Landed in #428 (merge train, merged as aa61ab3b with all 65 checks green).

## wai.media.influence (CO6): who conditioned an output, and their share of what it earns Registers the record `wai.media.influence` ([extensions/influence.md](wai/extensions/influence.md)) and gives settlement statements their attribution lines (line kind 2, reserved until now). ### What is in it - **Terms and catalogues** (§3). An owner, any key (a person, a collective, a label), publishes a work's terms (`wai-terms`): its `wai.ai.usage` statement, the acts it allows its work to condition, a tariff (`per_use` and/or `share_ppm`, in a currency), the tier a use must reach (`attribution`), and when the terms are in force. A catalogue (`wai-catalogue`) is a signed set of works that one set of terms governs. Both are their owner's only by its signature (`not_signed_by_owner`). A work is an image, a voice model, an adapter, a prior, a taste prior or a catalogue, named by digest; an owner's prior is published unchanged and pinned as SPEC §3.1 pins any parameter set. - **Conditioning** (§4). A `generate`, `candidates` or `inpaint` step names every work that conditioned it in a `wai-conditioning` record beside the step, bound by the step's link hash: work, size (images), catalogue, terms in force, weight, and the use in ai-usage §6.1's form. The pinned conditioned generator `wai-influence:spectral-blend` blends `wai.generate.spectral`'s picture with each reference image (tiled) and adapter (a second spectral model file) by weight, in integers, so a verifier regenerates the step from exactly the works named. A work left out, added or reweighted fails (`conditioning_mismatch`); a reference named for a step of the exact generator, which reads none, is refused the same way. Each reference is held to its owner's terms: `terms_mismatch`, `not_in_catalogue`, `terms_not_in_force`, and ai-usage's `usage_unanswered` / `usage_disallowed` (statement disallow, or an act the terms do not allow). - **Attribution** (§5). Each output sample gets the steps that made it (contribution §7.2's rules with the step in place of its performer). The declared rule `wai-influence:share/1` divides the output, 10^6 units a sample, among the people who made samples, the owners of what conditioned the model by declared weights (or equal shares, the model counted as one, where none is declared), the model's owner, works with no owner, and `unknown` / `undisclosed`. The shares always sum to the whole. The tool signs `wai-attribution`. When every step behind the output is disclosed, the verifier recomputes the shares: `unknown_attributed` (units no rule fixes, credited, including to the tool's own terms), `estimate_mixed` (a training-time estimate's units added to an owner's share), and `shares_mismatch` for any other difference. The record also refuses `shares_not_whole` and `rule_unknown`. A training-time estimate is carried with its class beside the shares and is never added to them. - **Tier of a use** (§5.5). A use is `recomputed` where the generation was regenerated with its works, `checked` where a pinned step was not regenerated, and `stated` for an attested generator or for shares that could not be compared. An owner's terms set the lowest tier they accept (`attribution_not_met`). - **Payment** (§6, settlement §7.8). An accepted attribution is a basis. An attribution line (kind 2) covers one payee, one class and one basis, and carries the output's acknowledged deliveries and bytes. Its amount is `per_use × deliveries + ⌊revenue × share × units / (10^6 × whole)⌋`, rounded down once per bucket, and what the rounding leaves stays with the party. The statement's `amount` and `classes` still cover delivery lines only. A statement verifier refuses a basis it is not given (`record_missing` at `basis`), a basis it refuses (a disallowed use paid), a tariff in another currency (`currency_mismatch`), and a statement that settles an output's deliveries with no line for owners whose attribution it holds (`attribution_unsettled`). Lines that don't recompute are `statement_mismatch` or `bytes_not_acknowledged`. - **Transparency report** (§7, `wai-influence-report`). For one owner and one statement, signed by the statement's party: the outputs the owner's works had units in, its buckets, the deliveries, the revenue and the amounts. It names no other owner. The owner recomputes every amount from its own terms. An auditor holding the statement checks that the report lists exactly the owner's lines (`report_incomplete`, `report_mismatch`). - **Amendments.** contribution.md §1 and §4.4 now point to influence. Nothing changes for contribution verifiers. settlement.md: kind 2 is defined (§7.2, §7.5, §7.6, new §7.8), with a new step 6 "the bases" in §8.2, an amended §8.3 outcome, and §1, §12 and §13. The settlement corpus's reserved-line vector becomes `attribution_line_without_basis` (`record_missing` at `["basis", 0]`), and `settlement_verify.py` now reads kind 2 lines. - **Reference**: `wai-rs` module `influence` (feature `influence = ["contribution", "settlement", "ai_usage"]`, no new dependency), bin `wai_influence_vectors`, test `tests/influence.rs`. `settlement.rs` gains `Basis`, `attribution_lines`, `with_attribution`, `revenue`, `basis_order` and `Inputs.bases`. `contribution::corpus::{case_json, case_from_json}` are now `pub(crate)`. - **Corpus** `live-conformance/influence/vectors.json` has cases, statements and reports, with a README carrying a **Provenance.** line. Every reason of §9 and every reused code refuses at least one vector. The independent verifier `live-conformance/influence_verify.py` is also added. - Registry (`CAP_MEDIA_INFLUENCE` and five document-kind wire identifiers), the export (`capabilities.json`, `vocab/v2.ttl`, the REGISTRY table), SPEC §5, CHANGELOG, the CI step, the workflow `paths:` and the corpus-rules entry in `int_kernels_vectors.rs` (the live-conformance reason from main). This merges origin/main (#416): shared lists now name their tables, so this PR adds nothing to them. ### Design decisions and why - **A record beside the step, not a member of it.** contribution §2 reads every record with exactly its listed members. A step carrying a `conditioning` member would make every contribution verifier refuse the step and the whole session. The sibling record leaves steps byte for byte as they are and binds to its step by link hash, which the step's signature and the record's root fix. The attribution record lists the conditioning records it reads, so they are committed. The reasons table is influence §4.2. - **The conditioned generator is pinned here, and is `attest` to contribution.** contribution §4.4 gives any generator other than `wai.generate.spectral` the check `attest`. So contribution verifiers accept such a session as attested, and this extension does the regeneration. The outcome tier counts a regenerated blend step as checked. - **Omission is caught by recomputation.** For the pinned generator, the picture is a function of the named works, so a record that omits one fails. For any other generator the record is the tool's signed statement, the use's tier is `stated`, and owners choose the tier they require. - **Shares are compared only when nothing behind the output is undisclosed.** Splitting a sample among its makers depends on how many makers there are. A verifier that sees `undisclosed` cannot know the true split, so it checks only the sum, and every owner bucket's tier is `stated`. This is what gives an owner's `attribution` requirement teeth (see the `attribution_not_met` control with a step undisclosed). - **Integer units with a declared remainder.** A sample is 10^6 units. Within a sample, the first maker takes the remainder. Within a step, the model takes what the weights leave. In a payment, each bucket's revenue share is rounded down once, and the remainder stays with the party. - **Payees are owners with checked terms.** Party buckets (people's own samples), `unowned`, `unknown` and `undisclosed` pay no one in this revision. A party's samples are its own share and are paid outside this revision. A work with no owner has no payee. Units no rule fixes are never paid. - **Settlement stays independent of influence.** Settlement verifies kind 2 lines from `Basis` facts it is handed; influence §6.2 verifies the cases and supplies them. Run alone, settlement refuses a kind 2 line with `record_missing` at its basis. - **No dependency on #406.** A taste prior is a work kind named by digest, with the owner's terms; the text names `wai.media.exploration` without linking a file that is not on main. - **No consent rules** for the service's own mechanics (§3.4). Where a regime asks for a lawful basis, it points to the `lawful-basis` declaration (jwp-receipts §2.4.6). ### Checks (run on the build host through `rb` unless marked local) | check | command | result | |---|---|---| | influence lib tests | `cargo test --locked --no-default-features --features influence --lib influence::` | ok, 3 passed | | influence corpus tests | `cargo test --locked --no-default-features --features influence --test influence` | ok, 4 passed | | settlement lib / corpus | `cargo test --locked --no-default-features --features settlement --lib settlement::` and `--test settlement` | ok, 5 passed and 4 passed | | contribution lib / corpus | `cargo test --locked --no-default-features --features contribution --lib contribution::` and `--test contribution` | ok, 3 passed and 4 passed | | ai_usage corpus | `cargo test --locked --no-default-features --features ai_usage --test ai_usage` | ok, 4 passed | | registry | `cargo test --locked --lib codecs::registry` | ok, 14 passed | | corpus rules | `cargo test --locked --features neural_int,video_int,audio_int,world_int,splat_int --test int_kernels_vectors every_decoded_output_states_a_sha256` | ok | | registry export | `cargo run --no-default-features --bin wai -- registry export` (with `--pull`), then `registry export --check` | up to date | | clippy | `cargo clippy --locked --no-default-features --features influence --all-targets` | no notes in any touched file (the existing notes elsewhere are unchanged) | | bins | `cargo build --locked --no-default-features --features influence --bins` | ok | | lockfile | `cargo metadata --locked --offline --format-version 1` (wai-rs) | ok, Cargo.lock unchanged (no new dependency) | | corpus regenerates | `wai_influence_vectors gen` (asserts every vector's intent) and `wai_settlement_vectors gen` | regenerated byte-stable | | influence verifier (local) | `python3 -I live-conformance/influence_verify.py live-conformance/influence` | exit 0: every vector agrees with wai-rs; every mutated copy fails; each dropped check is caught | | neighbouring verifiers (local) | `contribution_verify.py`, `settlement_verify.py` (amended), `ai_usage_verify.py` | all PASS | | repo checks (local) | `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 exit 0 | | public names | `scripts/check-public-names.sh` | not run locally: `WAI_NAME_DENYLIST` is not set here; CI runs it from its secret | ### Falsifications (committed first, each mutation applied on the build host, then restored) | mutation of the reference | result of `cargo test --features influence --test influence` | |---|---| | regeneration mismatch ignored | exit 101 (`every_vector_gets_its_stated_outcome`) | | a disallowed use not refused | exit 101 | | an estimate mixed in not named | exit 101 | | an owner's required tier not held | exit 101 | | unknown units credited | exit 101 | | settlement's attribution lines not compared | exit 101 | | the shares not compared at all | exit 101 | | a §9 row dropped from the extension | exit 101 (`the_extension_lists_the_reasons`) | | restored | exit 0 | Python: `influence_verify.py` mutates copies of the corpus (signatures, a weight, a withheld reference image or adapter, units moved, a catalogue changed, stated outcomes, an attribution line's amount, given attributions emptied, a statement byte, a report's amount, audit or terms, a model file byte) and every copy fails. It also drops each of its own checks in turn, every §9 reason and the reused codes past reading plus settlement's two attribution-line checks, and the corpus catches each one. A corpus copy with one attribution-line amount changed makes it exit 1. `settlement_verify.py`'s own drop list now includes "§8.2 step 6: an attribution line's basis is given", which its corpus catches. ### Not done - Session parties (people's own samples) are attributed but not paid by attribution lines, and estimates are never paid; both are stated as out of scope. - Conditioned transforms (a style transfer as a derivation) are out of scope. A style transfer is expressed as an inpainting over the whole picture. - Audio and video conditioning wait on contribution mapping those media. `voice` is a work kind now, so its terms can be published. - Whether a statement leaves an output out entirely can only be checked by a party that holds that output's attribution (§6.2 step 4). - #406 (exploration) is not merged. When it is, its taste prior can be linked from §3.1. Expect merge conflicts in shared files (CHANGELOG, Cargo.toml, lib.rs, registry.rs, capabilities.json, v2.ttl, the workflow). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- **Closed:** Landed in #428 (merge train, merged as aa61ab3b with all 65 checks green).
The extension text (extensions/influence.md), the influence module of wai-rs behind the
feature influence, its corpus generator and committed corpus; settlement gains attribution
lines (kind 2) recomputed from a basis, and contribution notes the sibling record.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
influence_verify.py is the second implementation of extensions/influence.md: it verifies each
session with contribution_verify.py, regenerates every conditioned step, reads usage statements
with ai_usage_verify.py and statements with settlement_verify.py (now amended for kind 2 lines
and their bases), and computes every share, line and report itself. Registers
wai.media.influence (registry, wire identifiers, SPEC §5, CHANGELOG, CI step, export); the
settlement corpus's reserved-line vector becomes a line whose basis is not given.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge origin/main into wai/influence (shared lists name their tables)
Some checks failed
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m52s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m11s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m5s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m55s
wai-pack / wai-pack · linux (pull_request) Successful in 1m22s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m1s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m39s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m6s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 3m30s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 18s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 11s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 27s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 15m11s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m45s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m27s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m27s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 19s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 7m29s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m16s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 31m0s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 8m29s
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
8b2bc0d738
Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot closed this pull request 2026-10-22 12:02:05 -04:00
Some checks failed
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 7s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 6s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 5s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m35s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m45s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 6s
WAI conformance / does this change touch it (pull_request) Successful in 10s
WAI energy receipts / does this change touch it (pull_request) Successful in 9s
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Successful in 6s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 6s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 5s
wai-web wasm32 / does this change touch it (pull_request) Successful in 5s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 1m13s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m52s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m11s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m5s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m55s
wai-pack / wai-pack · linux (pull_request) Successful in 1m22s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m1s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m39s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m6s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 3m30s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 18s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 11s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 27s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 15m11s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m45s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m27s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m27s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 19s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 7m29s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m16s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 31m0s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 8m29s
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled

Pull request closed

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!421
No description provided.