wai.live.remote: remote desktop in a WAI room — screen statements, input under the control power, outcomes recomputed, the floor, latency records; host agent and browser viewer #481

Closed
dcharlot wants to merge 0 commits from wai/remote-desktop into main
Owner

What this is

wai.live.remote: remote desktop as a WAI live-room capability. One principal's screen is shared into a room and controlled from it.

  • The extension (wai/extensions/remote-desktop.md):
    • Screen statement WDS1. The host publishes its screen as the room's screen track, one frame a group, each frame with its jwp receipts. The statement says what it captures: scope (display, window or region), the redactions it blanks before encoding, whether the pointer is drawn, and whether capture is paused. It also gives the frame size, which is the coordinate space of every input; which action types it injects; the clipboard bound; the oldest an action may be; whether it keeps a floor; and the encoder with its version, as packaging §7 (paragraph 7.5) has a floor name an encoder that is not a pure function of its input. No rule reads the encoder, no digest a verifier recomputes covers it, and nothing re-encodes a frame.
    • Input statement WDI1. Up to 32 actions: move, button, wheel (pixels, as UI Events states them), key (HID Usage Tables 1.5 §10 usage IDs), composed text, touch, and clipboard text.
    • The control power and the host mark. The control power is the grant attribute remote_control (classes: pointer, keys, touch, clipboard); the host mark is remote_host. They are attributes, not power bits, because live-rooms §3.4 refuses any power above bit 4, as co-watch and co-performance already found.
    • Outcome WDO1. The host decides every input by seven pinned rules (§5.3) at the input's place in the merged order, applies all of an input's actions or none, and signs an outcome for every input it receives. An applied outcome is anchored on the first frame captured after the injection. A refused one carries the rule's number. A verifier recomputes every outcome and refuses a host that applied what a rule refuses (outcome_mismatch).
    • Handover. Control passes by grant exchange (open screens) or by floor statements WDF1 (request, give, release, take). The floor is lost on the holder's leave, or on a grant exchange that drops its control power.
    • Latency record WDL1. Signed on its own as well as by its event. It states the action's instant and the frame's presentation, both on the viewer's own estimate (so the room clock's offset cancels). The source is the frame-timing interface, a light sensor, or 3 (no display: the instant the frame was held verified). A verifier states the up, host and down legs; the two that cross estimates carry an uncertainty of half the sum of the stated round trips.
    • Session records and metering are the room's: lifecycle, chains, and live-metering per-hop records. No new record.
    • Privacy. What is captured is the host's choice, stated, and shown by sinks. There are no consent gates; the operator's lawful basis is a lawful-basis claim, as elsewhere.
  • wai-rs, feature remote_desktop. The statements, decide (the host's rules, which the host agent calls), the floor, the legs and the verifier. Corpus live-conformance/remote/ (wai_remote_desktop_vectors gen, byte-stable):
    • a floor session that gives every host refusal;
    • an open session whose control passes by grant exchange;
    • a gap;
    • 36 refused vectors, one defect each, giving every verification reason. Among them, a host applying an input that each of the seven rules refuses, a host refusing a good input, and a host stating the wrong rule.
  • remote_desktop_verify.py. The second implementation, written from the text. It shares no code with wai-rs, verifies rooms with live_rooms_verify.py, and checks Ed25519 by the strict rule. It agrees with wai-rs on every vector. All 15 mutated copies of the corpus fail, and the corpus catches each of the verifier's 32 checks when that check is dropped.
  • joule-moq-remote, the host agent (a workspace of its own, as joule-moq-room is):
    • wai-remote-host room makes a self-hosted room: descriptor, grants, keys, a file per participant, the room page's test-room file, and the relay's config lines.
    • wai-remote-host run hosts it. The agent is its room's clock: a participant joins when its events track appears.
    • It decides inputs with a gate that keeps grants, screens and the floor in room-clock order and calls wai::remote_desktop::decide.
    • It injects on a thread that captures after it injects, so the anchored frame is the first that can show the input.
    • Behind small traits:
      • capture: a pattern source, the macOS display stream, X11 on Linux;
      • encode: an H.264 encoder that writes every macroblock I_PCM (a pure function every decoder decodes), and the macOS media framework's hardware encoder (AVC High 4.0 or HEVC Main), read back as Annex B;
      • input: a recorder, the macOS event services, the Linux kernel's input device.
    • Platform API names live only in adapter_* files, on lines marked allow-name.
    • viewer::Viewer is a headless viewer: it verifies every frame's receipt, sends input and floor statements, and signs source 3 latency records.
  • The room page (joule-moq-web/web/room/remote.js). It draws the host's screen: WebCodecs decode of AVC or HEVC Annex B, every frame verified against its receipt first. It shows the scope, redactions, state, encoder and floor; batches pointer, keys, composed text and pasted text into input statements under the grant's classes; asks for the floor and gives it back; and signs source 1 latency records at the refresh that showed the frame. remote.test.mjs holds it to the corpus.
  • CI:
    • a remote desktop step in wai-conformance.yml;
    • a new joule-moq-remote.yml (linux-arm64 and macos: every target and clippy --no-deps -D warnings);
    • the e2e remote scenario in joule-moq-web.yml's paths.

The wai/encode-avc-hevc builder's platform_encode module is not landed or pushed (one local WIP commit), so it is not used. The encoder sits behind encode::Encoder, which mirrors its capability strings and interface roles, so its adapters plug in.

Checks

check where result
cargo test --locked --no-default-features --features remote_desktop --lib remote_desktop:: Framework box 6 passed
cargo test --locked --no-default-features --features remote_desktop --test remote_desktop (regenerates byte for byte, every outcome, §12's two tables) Framework box, after the merge 3 passed
cargo test --locked --no-default-features --lib codecs:: (registry, wire identifiers, SPEC §5) Framework box, after the merge 53 passed
cargo clippy --no-default-features --features remote_desktop --all-targets Framework box no note in the slice's files
registry export then registry export --check Framework box, after the merge up to date
python3 -I live-conformance/remote_desktop_verify.py live-conformance/remote Framework box PASS
every other live-conformance/*_verify.py with its README corpus line (not dred, which needs a weights file) Framework box, after the merge all PASS
joule-moq-remote: cargo test --locked --all-targets -- --test-threads=1 Framework box 11 unit + the pure-encoder session, passed
the same Studio (M3 Ultra) 11 unit + 3 loopback (pure encoder, hardware encoder, Annex B units), passed
joule-moq-remote: cargo clippy --all-targets --no-deps -- -D warnings Framework box and Studio clean
node --test web/room/remote.test.mjs and the other page-module tests Studio 53 of 53
e2e/run.sh --only remote (the host's installed browser, headless, under memguard) Studio 10 of 10 checks: the page decodes the hardware-encoded screen; the floor is asked for and given; click and key applied; 2 source 1 latency records with legs; an input without the power refused by the host; the recorded session verifies by remote_desktop_verify.py --room
wfsteps.py HEAD 96117c570 origin/main HEAD^1 after merging main local 0 problems
ruby -ryaml over .github/workflows/*.yml local parse
check-tests-in-ci, check-workflow-concurrency, check-spec-refs, check-wai-section-refs, check-no-vanity-metrics, test-public-text-checks, check-comparative-prose, check-orphan-sources, check-lockfiles local all pass
public-name check over every changed file, the added workflow lines and the commit messages local clean. One hit is on joule-moq-web.yml:206, the e2e job's browser path, which is on main as it is and is not a line this PR adds

The hardware path ran on the M3 Ultra's media engine. The session reports hardware 1, and the platform encoder's UsingHardwareAcceleratedVideoEncoder property is true. Screen capture and input injection were not run on that host: over SSH the OS grants neither (wai-remote-host check: capture false, injection false), and the agent refuses to start display capture and says why.

Falsifications

All on the committed tree. Each case breaks one check, runs what guards it, and restores the file from git; the worktree is clean afterwards.

broken ran result
wai-rs: the floor rule (§5.3 step 3) dropped the wai-rs tests (Framework box) exit 101; the generator's assertion fails: applies_no_floor comes out Accept, not OutcomeMismatch
wai-rs: the age rule taken at or past the bound the wai-rs tests exit 101 (the_rules_refuse_in_their_order)
wai-rs: a latency record presented after its event not refused the wai-rs tests exit 101 (latency_ahead accepted)
wai-rs: a non-host's screen statement taken the wai-rs tests exit 101 (refused at the later rule, not rd_not_permitted)
host agent: the gate treats every author as holding the floor loopback session exit 101 (tests/loopback.rs:100, carol off the floor applied)
host agent: the gate gives every author every class loopback session exit 101 (:97, bob applied)
host agent: each frame's last byte changed after signing loopback session exit 101 (:79, the viewers refuse frames)
page module: the control-power rule dropped remote.test.mjs (Studio) exit 1, 2 tests fail
page module: dt_us written big-endian remote.test.mjs exit 1, the byte-for-byte test fails

What is not done

  • No deploy, and no change to remoteOS's hosts or sites.
  • joule-moq-room does not issue host or controller grants yet, does not watch a screen track, and does not give viewers meta and remote_control. A hosted room (page-made keys) is the next slice. Today a room is self-hosted with wai-remote-host room, and a participant's page file carries its key.
  • The host agent captures a whole display only: the window and region scopes are defined but not captured. It has no Windows host, no multi-monitor, no host-to-viewer clipboard, no file transfer, and no MLS (confidential rooms are defined by WAI, but the agent does not join the group).
  • The Linux encoder is the I_PCM one: correct, high bitrate. VA-API, NVENC and software AVC are the parallel builder's.
  • Touch is defined and refused by both injectors (accepts says so).
  • The page's latency in a headless browser was about 315 ms. It is dominated by the headless page's frame callbacks and the 15 fps pattern capture, and is not a product figure; the loopback Rust viewers measured 20–45 ms.

🤖 Generated with Claude Code


Closed: Landed on main through merge train E (#499, merge bf39ec9a); verified by content: this PR's head is in main

## What this is `wai.live.remote`: remote desktop as a WAI live-room capability. One principal's screen is shared into a room and controlled from it. - **The extension** (`wai/extensions/remote-desktop.md`): - **Screen statement `WDS1`.** The host publishes its screen as the room's `screen` track, one frame a group, each frame with its jwp receipts. The statement says what it captures: scope (display, window or region), the redactions it blanks before encoding, whether the pointer is drawn, and whether capture is paused. It also gives the frame size, which is the coordinate space of every input; which action types it injects; the clipboard bound; the oldest an action may be; whether it keeps a floor; and the encoder with its version, as packaging §7 (paragraph 7.5) has a floor name an encoder that is not a pure function of its input. No rule reads the encoder, no digest a verifier recomputes covers it, and nothing re-encodes a frame. - **Input statement `WDI1`.** Up to 32 actions: move, button, wheel (pixels, as UI Events states them), key (HID Usage Tables 1.5 §10 usage IDs), composed text, touch, and clipboard text. - **The control power and the host mark.** The control power is the grant attribute `remote_control` (classes: pointer, keys, touch, clipboard); the host mark is `remote_host`. They are attributes, not power bits, because live-rooms §3.4 refuses any power above bit 4, as co-watch and co-performance already found. - **Outcome `WDO1`.** The host decides every input by seven pinned rules (§5.3) at the input's place in the merged order, applies all of an input's actions or none, and signs an outcome for every input it receives. An applied outcome is anchored on the first frame captured after the injection. A refused one carries the rule's number. A verifier recomputes every outcome and refuses a host that applied what a rule refuses (`outcome_mismatch`). - **Handover.** Control passes by grant exchange (open screens) or by floor statements `WDF1` (request, give, release, take). The floor is lost on the holder's leave, or on a grant exchange that drops its control power. - **Latency record `WDL1`.** Signed on its own as well as by its event. It states the action's instant and the frame's presentation, both on the viewer's own estimate (so the room clock's offset cancels). The source is the frame-timing interface, a light sensor, or 3 (no display: the instant the frame was held verified). A verifier states the up, host and down legs; the two that cross estimates carry an uncertainty of half the sum of the stated round trips. - **Session records and metering** are the room's: lifecycle, chains, and live-metering per-hop records. No new record. - **Privacy.** What is captured is the host's choice, stated, and shown by sinks. There are no consent gates; the operator's lawful basis is a `lawful-basis` claim, as elsewhere. - **`wai-rs`, feature `remote_desktop`.** The statements, `decide` (the host's rules, which the host agent calls), the floor, the legs and the verifier. Corpus `live-conformance/remote/` (`wai_remote_desktop_vectors gen`, byte-stable): - a floor session that gives every host refusal; - an open session whose control passes by grant exchange; - a gap; - 36 refused vectors, one defect each, giving every verification reason. Among them, a host applying an input that each of the seven rules refuses, a host refusing a good input, and a host stating the wrong rule. - **`remote_desktop_verify.py`.** The second implementation, written from the text. It shares no code with `wai-rs`, verifies rooms with `live_rooms_verify.py`, and checks Ed25519 by the strict rule. It agrees with `wai-rs` on every vector. All 15 mutated copies of the corpus fail, and the corpus catches each of the verifier's 32 checks when that check is dropped. - **`joule-moq-remote`, the host agent** (a workspace of its own, as `joule-moq-room` is): - `wai-remote-host room` makes a self-hosted room: descriptor, grants, keys, a file per participant, the room page's test-room file, and the relay's config lines. - `wai-remote-host run` hosts it. The agent is its room's clock: a participant joins when its events track appears. - It decides inputs with a gate that keeps grants, screens and the floor in room-clock order and calls `wai::remote_desktop::decide`. - It injects on a thread that captures after it injects, so the anchored frame is the first that can show the input. - Behind small traits: - capture: a pattern source, the macOS display stream, X11 on Linux; - encode: an H.264 encoder that writes every macroblock I_PCM (a pure function every decoder decodes), and the macOS media framework's hardware encoder (AVC High 4.0 or HEVC Main), read back as Annex B; - input: a recorder, the macOS event services, the Linux kernel's input device. - Platform API names live only in `adapter_*` files, on lines marked `allow-name`. - `viewer::Viewer` is a headless viewer: it verifies every frame's receipt, sends input and floor statements, and signs `source` 3 latency records. - **The room page** (`joule-moq-web/web/room/remote.js`). It draws the host's screen: WebCodecs decode of AVC or HEVC Annex B, every frame verified against its receipt first. It shows the scope, redactions, state, encoder and floor; batches pointer, keys, composed text and pasted text into input statements under the grant's classes; asks for the floor and gives it back; and signs `source` 1 latency records at the refresh that showed the frame. `remote.test.mjs` holds it to the corpus. - **CI**: - a remote desktop step in `wai-conformance.yml`; - a new `joule-moq-remote.yml` (linux-arm64 and macos: every target and `clippy --no-deps -D warnings`); - the e2e `remote` scenario in `joule-moq-web.yml`'s paths. The `wai/encode-avc-hevc` builder's `platform_encode` module is not landed or pushed (one local WIP commit), so it is not used. The encoder sits behind `encode::Encoder`, which mirrors its capability strings and interface roles, so its adapters plug in. ## Checks | check | where | result | |---|---|---| | `cargo test --locked --no-default-features --features remote_desktop --lib remote_desktop::` | Framework box | 6 passed | | `cargo test --locked --no-default-features --features remote_desktop --test remote_desktop` (regenerates byte for byte, every outcome, §12's two tables) | Framework box, after the merge | 3 passed | | `cargo test --locked --no-default-features --lib codecs::` (registry, wire identifiers, SPEC §5) | Framework box, after the merge | 53 passed | | `cargo clippy --no-default-features --features remote_desktop --all-targets` | Framework box | no note in the slice's files | | `registry export` then `registry export --check` | Framework box, after the merge | up to date | | `python3 -I live-conformance/remote_desktop_verify.py live-conformance/remote` | Framework box | PASS | | every other `live-conformance/*_verify.py` with its README corpus line (not dred, which needs a weights file) | Framework box, after the merge | all PASS | | `joule-moq-remote`: `cargo test --locked --all-targets -- --test-threads=1` | Framework box | 11 unit + the pure-encoder session, passed | | the same | Studio (M3 Ultra) | 11 unit + 3 loopback (pure encoder, hardware encoder, Annex B units), passed | | `joule-moq-remote`: `cargo clippy --all-targets --no-deps -- -D warnings` | Framework box and Studio | clean | | `node --test web/room/remote.test.mjs` and the other page-module tests | Studio | 53 of 53 | | `e2e/run.sh --only remote` (the host's installed browser, headless, under memguard) | Studio | 10 of 10 checks: the page decodes the hardware-encoded screen; the floor is asked for and given; click and key applied; 2 `source` 1 latency records with legs; an input without the power refused by the host; the recorded session verifies by `remote_desktop_verify.py --room` | | `wfsteps.py HEAD 96117c570 origin/main HEAD^1` after merging main | local | 0 problems | | `ruby -ryaml` over `.github/workflows/*.yml` | local | parse | | check-tests-in-ci, check-workflow-concurrency, check-spec-refs, check-wai-section-refs, check-no-vanity-metrics, test-public-text-checks, check-comparative-prose, check-orphan-sources, check-lockfiles | local | all pass | | public-name check over every changed file, the added workflow lines and the commit messages | local | clean. One hit is on `joule-moq-web.yml:206`, the e2e job's browser path, which is on main as it is and is not a line this PR adds | The hardware path ran on the M3 Ultra's media engine. The session reports `hardware 1`, and the platform encoder's `UsingHardwareAcceleratedVideoEncoder` property is true. Screen capture and input injection were not run on that host: over SSH the OS grants neither (`wai-remote-host check`: capture false, injection false), and the agent refuses to start display capture and says why. ## Falsifications All on the committed tree. Each case breaks one check, runs what guards it, and restores the file from git; the worktree is clean afterwards. | broken | ran | result | |---|---|---| | wai-rs: the floor rule (§5.3 step 3) dropped | the wai-rs tests (Framework box) | exit 101; the generator's assertion fails: `applies_no_floor` comes out Accept, not OutcomeMismatch | | wai-rs: the age rule taken at or past the bound | the wai-rs tests | exit 101 (`the_rules_refuse_in_their_order`) | | wai-rs: a latency record presented after its event not refused | the wai-rs tests | exit 101 (`latency_ahead` accepted) | | wai-rs: a non-host's screen statement taken | the wai-rs tests | exit 101 (refused at the later rule, not `rd_not_permitted`) | | host agent: the gate treats every author as holding the floor | loopback session | exit 101 (`tests/loopback.rs:100`, carol off the floor applied) | | host agent: the gate gives every author every class | loopback session | exit 101 (`:97`, bob applied) | | host agent: each frame's last byte changed after signing | loopback session | exit 101 (`:79`, the viewers refuse frames) | | page module: the control-power rule dropped | `remote.test.mjs` (Studio) | exit 1, 2 tests fail | | page module: `dt_us` written big-endian | `remote.test.mjs` | exit 1, the byte-for-byte test fails | ## What is not done - No deploy, and no change to remoteOS's hosts or sites. - `joule-moq-room` does not issue host or controller grants yet, does not watch a `screen` track, and does not give viewers `meta` and `remote_control`. A hosted room (page-made keys) is the next slice. Today a room is self-hosted with `wai-remote-host room`, and a participant's page file carries its key. - The host agent captures a whole display only: the window and region scopes are defined but not captured. It has no Windows host, no multi-monitor, no host-to-viewer clipboard, no file transfer, and no MLS (confidential rooms are defined by WAI, but the agent does not join the group). - The Linux encoder is the I_PCM one: correct, high bitrate. VA-API, NVENC and software AVC are the parallel builder's. - Touch is defined and refused by both injectors (`accepts` says so). - The page's latency in a headless browser was about 315 ms. It is dominated by the headless page's frame callbacks and the 15 fps pattern capture, and is not a product figure; the loopback Rust viewers measured 20–45 ms. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- **Closed:** Landed on main through merge train E (#499, merge bf39ec9a); verified by content: this PR's head is in main
The extension text (wai/extensions/remote-desktop.md); the remote_desktop module of wai-rs behind
its own feature: the statements WDS1, WDI1, WDO1, WDF1 and WDL1, the grant attributes
remote_host and remote_control, the host's rules of §5.3 (decide), the floor in effect, latency
legs, and the verifier over a room the live-rooms verifier replays. The corpus
live-conformance/remote/ written by wai_remote_desktop_vectors from fixed seeds: a floor session,
an open session whose control passes by grant exchange, a gap, and refused vectors giving every
reason of both tables of §12. Its second implementation, remote_desktop_verify.py, written from
the text and sharing no code with wai-rs, agrees on every vector, fails every mutated copy and
catches each of its 32 checks dropped.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
An agent that reads the screen, or a test harness, states the instant it held the frame verified
against its receipt; no photon is involved, and the record measures the path to the viewer alone.
wai-rs and remote_desktop_verify.py read source 1 to 3.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The host is its room's clock and its screen's publisher: it makes a room (descriptor and grants,
the host marked remote_host, each participant's control classes in remote_control) and the lines
a relay's configuration takes for it; signs each participant's join when its events track
appears; publishes the screen as the room's screen track, one frame a group with its receipts,
and a screen statement naming the encoder; decides every input by wai-rs's rules at its place in
room-clock order (gate.rs) and injects what they accept on a thread that captures after it
injects, so the outcome it signs names the first frame that can show the input; and passes the
floor on request or when told.

Behind small traits: capture (a pattern source; the macOS display stream; X11 on Linux), encode
(an H.264 encoder with every macroblock I_PCM, a pure function every decoder decodes; the macOS
media framework's hardware encoder, AVC or HEVC, read back as Annex B), and input (a recorder;
the macOS event services; the Linux kernel's input device). Platform API names are in the
adapter files, each line marked for the public-name check.

tests/loopback.rs: a session over a relay that requires grants with their proofs, three viewers,
floor handover, refusals for no control power, no floor and a paused screen, latency records,
and the session's chains verified whole by wai-rs; run with the pure-function encoder, and on
macOS again with the hardware encoder. A workflow runs it on linux-arm64 and macos.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
web/room/remote.js: input statements, floor statements and latency records written byte for byte,
every statement read, the host's rules and the floor replayed over a room's records, the table
from keyboard codes to HID usages; and RemoteViewer, which draws the host's screen (the page's
WebCodecs decoder, AVC or HEVC in Annex B, every frame verified against its receipt first), shows
what the host captures and who holds the floor, batches pointer, keys, composed text and pasted
text into input statements under the grant's classes, asks for and gives back the floor, and signs
a latency record of each applied input's frame at the display refresh that showed it.
remote.test.mjs checks it against wai/live-conformance/remote/, the host agent's key table among
it. The page draws a room with no composition descriptor, and names a screen track by its
namespace.

e2e: the remote scenario runs wai-remote-host with a pattern source (the platform's hardware
encoder on macOS), two pages, the floor asked for and given, a click and a key applied with their
latency records, an input with no control power refused, and the session the host records
verified by remote_desktop_verify.py.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
A participant that joins late fetches what the clock and the host said before it came (live-rooms
§10.6), the host's screen statement among it. `room` writes participant-<name>.page.json, the room
page's test-room file; `run --record` writes the session as a verifier takes it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai.live.remote: a corpus member's type named, for clippy's type_complexity
Some checks failed
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, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Has been cancelled
joule-code conformance gate / Build + round-trip C1-C4 vectors (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
5458920846
Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot closed this pull request 2026-10-26 20:59:12 -04:00
Some checks failed
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-quantum studio and desktop / does this change touch it (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-pack / wai-pack · does this change touch it (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-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (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 / 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, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Has been cancelled
joule-code conformance gate / Build + round-trip C1-C4 vectors (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

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