wai: one operation catalogue (noun.verb) for every door, wai ops, the agent rules on every command, and the wai-* service binaries #506
Merged
dcharlot
merged 26 commits from 2026-10-28 11:17:27 -04:00
wai/ops-catalogue into main 2026-10-28
wai-app e2e: read
wai app check's envelope as envelope/1 lays it out
All checks were successful
wai-ledger service / service · macos (pull_request) Successful in 58s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 9m51s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 18m30s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 13m52s
wai-pack / wai-pack · macos (pull_request) Successful in 2m49s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 10m16s
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Successful in 6m24s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 4m9s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m39s
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Successful in 33m27s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 55s
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Successful in 6m39s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 5s
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Successful in 32m48s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m50s
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Successful in 32m47s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m20s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 21s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 9m33s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m2s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m39s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m32s
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Successful in 6m58s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m4s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 59m15s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 16m40s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m34s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m6s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 7m30s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 15m49s
The catalogue's agent rules carry an operation's answer under `data` (envelope/1); the Create e2e still read the older `result`, so each refusal case found no failures and failed. The passing case only read `ok`. Co-Authored-By: Claude Opus 5.5 <[email protected]>
WAI Studio reads the catalogue; dev.start declares --show, --audience and Studio's route
Some checks failed
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (pull_request) Successful in 39s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 56s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m14s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m23s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m32s
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Successful in 31m45s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 24s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m18s
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Successful in 31m16s
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Successful in 31m25s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m16s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 6m32s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 8m42s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 14m40s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 1m22s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Failing after 6m51s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 27s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 57m7s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 1m8s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 7m22s
wai-fleet service / service · macos (pull_request) Successful in 42s
wai-ledger service / service · macos (pull_request) Successful in 48s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 20m3s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 9m41s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 11m56s
wai-pack / wai-pack · macos (pull_request) Successful in 2m41s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m20s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 6m30s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 8m57s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 14m53s
With the catalogue on this branch, Studio's pending copy of it goes: wai/wai-studio/ops.pending.json is removed, and src/actions.generated.js is generated from wai/catalogue/ops.json (96 operations). The fleet's four operations, placed on the client, are bound as run from the command line, as the drift check requires. dev.start's usage, help and inputs now name --show and --audience, which `wai dev` already took, and say that Studio is served at /_wai/ when its files are found. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge remote-tracking branch 'origin/main' into wai/ops-catalogue
# Conflicts: # wai/CHANGELOG.md # wai/wai-rs/src/bin/wai_cli/dx/dev.rs
CHANGELOG: the breaks this branch makes on purpose, each by the id wai breaking gives it
Some checks failed
wai-fleet service / service · macos (pull_request) Successful in 43s
wai-ledger service / service · macos (pull_request) Successful in 52s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 3m21s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m40s
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Successful in 6m45s
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Successful in 33m25s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 6s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 19m3s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 14m4s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m14s
wai-pack / wai-pack · macos (pull_request) Successful in 2m47s
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Successful in 32m20s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m25s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 10m1s
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Successful in 32m31s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 18s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m41s
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Successful in 6m8s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m32s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m19s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m34s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h0m5s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m14s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m10s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 17m15s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m22s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m19s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 59s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Failing after 8m0s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 15m39s
wai::ops gives way to wai::catalogue, and the room service's three challenges take the operationIds the naming rule gives them; wai breaking --against main names these eight and nothing else. Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-examples.yml: the browser's path marked as the file path it is (allow-name)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The fleet's operations in the catalogue, and one confirmation flag, --yes
enrolment.create, enrolment.list, report.create and report.export join the catalogue as the other operations are: placed on the client against a fleet service, with their effect, toolset, input and output schemas, receipt and the features they need (fleet for the two that sign or verify). wai enrolment|report run through the door, and the fleet's command module keeps the agent rules of dx/envelope.rs instead of its own copy of them: the envelope with --json, every file through out.rs and every request to the service named in a dry run's plan and not sent (out::would_send), and --yes before the service is changed or a file replaced, exit 4 off a terminal with the proposal and the confirming command. A catalogue entry now says when it waits for confirmation (Op::confirms: never, a file the command line did not name, any file, the target or a file, always), and the rules refuse a change to a target that does not wait and a read that does. The export carries it and the agent flags (AGENT_FLAGS), from which wai --help is written: --yes is the one confirmation flag, and --confirm, which wai conform, wai setup-agent and the fleet took, is its deprecated spelling, still accepted, so named in help, in every confirming operation's help and in the export. wai conform confirms through the same module. wai verify's entry names the conformance results and fleet bundles it reads. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge origin/main into wai/ops-catalogue: #507, #518 and #521 as they landed
Main's final #507 replaces the copy this branch carried: wai breaking's base holds every standard its crate reaches by path (rust_api.rs), and the conform adapter is main's. The agent rules stay in one module, dx/envelope.rs, as this branch extended it; the command line stays the catalogue's (door.rs, dx::VERBS by operation id). wai verify reads fleet bundles as main has it, its errors the envelope's. The quickstart build carries fleet; cli_ops and cli_fleet are both test targets; lib.rs gates strict_json on fleet too. The changelog keeps this branch's entry above #507's and the fleet's. The fleet's command module is declared and is routed through the catalogue in the next commit. Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27
cli_breaking: the measurement test reads the envelope's data
Some checks failed
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 1m42s
WAI conformance / cargo-class corpora · macos (pull_request) Failing after 2m10s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 27s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 10m2s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 1m22s
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Successful in 35m20s
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Successful in 34m51s
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Successful in 6m22s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 7s
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Successful in 34m48s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m23s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m29s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m42s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 6m21s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 26s
wai-ledger service / service · macos (pull_request) Successful in 56s
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Successful in 7m3s
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Successful in 6m30s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m32s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m50s
wai-pack / wai-pack · macos (pull_request) Successful in 3m10s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m27s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m54s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h3m30s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 15m39s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 3m1s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 2m4s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 11m6s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 8m4s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 18m1s
wai breaking's report is the data of the agent rules' envelope; the test added with the measurement list read its findings and notes at the top level. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge remote-tracking branch 'origin/wai/breaking-conform' into wai/ops-catalogue
# Conflicts: # wai/wai-rs/Cargo.toml
Bring wai mcp, wai setup-agent, Create and the room service's API into the catalogue, renamed to N3
Some checks failed
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-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-quantum WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-sink-android native sink library / does this change touch it (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / does this change touch it (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (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-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-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Has been cancelled
Merged #508 (wai/create-2, stacked on #505) before they reach main, as the coordinator directs: they merge before this branch, which builds the catalogue over them. - The catalogue holds every operation they add: mcp.start (wai mcp; it was agent.mcp), agent.setup, app.guide, app.check, app.export (wai app export, also wai create --from), app.stream, registry.show, docs.search, dev.stop, room.join, room.leave, session.show (it was room.session), and the room service's 40 operations at their routes. - Renamed to the verb rule: the MCP tool package_build is envelope_wrap (it does what wai wrap does; package.build stays for real packaging); the room service's challenges are watch.setup, conversation.setup and call.setup (no compound nouns); in the OpenAPI document, its contract test, the MCP table and tests, the docs. - wai::ops is folded into wai::catalogue: the tool table's tests hold it to the catalogue both ways (every tool an operation the catalogue says wai mcp serves, in its toolset, and every such operation a tool; a tool of MCP alone takes the catalogue's input), and the room service's contract test holds its OpenAPI the same way. - wai setup-agent and wai app check answer in the one envelope (wai: envelope/1, data), JSON with --json; wai mcp and setup-agent take --dry-run through the door; the binaries wai-relay and wai-room in the MCP dev room and Create's end-to-end script. Co-Authored-By: Claude Opus 5.5 <[email protected]>
conform-result-conformance: each summary count wrong alone, its other counts right
Some checks failed
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 21s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Failing after 3m41s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Failing after 4m59s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 19s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 35s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 3m19s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 6m37s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m25s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 1m47s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 15m15s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 1m0s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 12m5s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m41s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m22s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m0s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 17m37s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 1m34s
WAI conformance / cargo-class corpora · macos (pull_request) Failing after 2m20s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 29s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 1m23s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 11m57s
wai-ledger service / service · macos (pull_request) Successful in 1m58s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 7m44s
wai-pack / wai-pack · macos (pull_request) Successful in 3m56s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m18s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 12m55s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 16m43s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m28s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h8m37s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 19m4s
The falsification of the reference found that leaving out the check of summary.cases alone left the corpus passing: every summary vector had passed and failed wrong too. Three vectors now carry each count wrong alone. Co-Authored-By: Claude Opus 5.5 <[email protected]>
conformance-results: conform-result/1 in the standard, its corpus and a second verifier
extensions/conformance-results.md specifies the record a conformance run signs: its members (§2) and corpus digest (§2.1), its signing input (the domain `wai:conform-result` and 0x01, then the record without `sig` in RFC 8785 form) and Ed25519 signature under SPEC §7's strict rule (§3), what a verifier checks and in what order (§4: it reads, its version, its members, its signature, its summary, its verdict) and the codes of each refusal (§5). conform-result/1 is registered as a document kind (registry export and REGISTRY.md regenerated); SPEC §7 points to it. wai-rs gains the module conform_result (feature conform_result, in quickstart): sign, check and verdict, the corpus digest, and the corpus of §7, whose outcomes are stated from the text and asserted before anything is written. `wai conform` signs with it and `wai verify` checks with it. conform-result-conformance/ holds accepted records and refused ones (a case flipped, the corpus digest changed, the summary alone changed, a bad signature, S past L, a small-order key, a summary or verdict that disagrees though signed, an unknown version, members missing, added or named twice, a fractional count, a digest out of form, bytes that are not JSON); wai_conform_result_vectors generates and verifies it, and conform_result_verify.py, written from the text and sharing no code with wai-rs, reaches every outcome and fails the corpus with each check of §4 left out. `wai conform` gains the verifier suite conform-result. `wai breaking` leaves out an explicit list of corpus files that record a measured run (the format probes' external decodes, the relay's recorded metering run), each with its reason, and says so in a note; the vectors built from them stay compared. A command `wai conform` runs is put in a process group of its own, so a timed-out command's children are stopped too. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge remote-tracking branch 'origin/wai/create-2' into tc-a-int2
# Conflicts: # joule-code/joule-code-rs/crates/joule-moq-room/README.md # joule-code/joule-code-rs/crates/joule-moq-room/src/main.rs # wai/CHANGELOG.md # wai/examples/android-app/README.md # wai/examples/apple-app/README.md # wai/examples/encoder-ingest/README.md # wai/examples/messaging/README.md # wai/examples/package-and-deliver/README.md # wai/examples/remote-desktop/README.md # wai/examples/verify-receipts/README.md # wai/examples/video-room/README.md # wai/examples/watch-together/README.md # wai/wai-rs/src/bin/wai.rs # wai/wai-rs/src/bin/wai_cli/dx/create.rs # wai/wai-rs/src/bin/wai_cli/dx/dev.rs # wai/wai-rs/src/bin/wai_cli/dx/mod.rs
Merge TC-B's wai/breaking-conform (#507) into the catalogue: one agent-rules module
Some checks failed
WAI examples / WAI examples · portable · linux (pull_request) Has been cancelled
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Has been cancelled
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Has been cancelled
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-key-proxy / proxy · linux (pull_request) Has been cancelled
wai-ledger service / service · linux (pull_request) Has been cancelled
wai-ledger service / service · macos (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-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-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
The coordinator's direction: the catalogue's agent rules build on #507's wai_cli/dx/envelope.rs, the one place the exit codes and the JSON envelope live. agent.rs is folded into it (OpError holds the confirmation proposal and a reported exit); the envelope is {"wai": "envelope/1", "op", "ok", "data" | "error", "exit"} for every command, wai breaking and wai conform among them, their bodies now data; JSON with --json (or a parent's), text otherwise. The exit-code table is the study's in both; 3 (permission) joins the module's constants. compat.check, conformance.run and conformance.list join the catalogue and dx::VERBS; every id now ends in an N3 verb (toolchain.test for wai hello, stage.encode for wai stage refine, playlist.lock for wai http seal-playlist, ops.show for wai ops show, ...), the command lines unchanged. conform names its record in a dry run's plan. Co-Authored-By: Claude Opus 5.5 <[email protected]>
tests/cli_conform.rs: the origin picks its own port and says which
Some checks failed
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / each feature of the independent verifiers' steps compiles alone (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-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 conformance / cargo-class corpora · 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 examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Has been cancelled
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Has been cancelled
wai-ledger service / service · 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-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 / desktop app · macos (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI examples / WAI examples · portable · linux (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
wai-pack / wai-pack · linux (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (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-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
Co-Authored-By: Claude Opus 5.5 <[email protected]>
CI: wai breaking reads the checkout as its owner and fetches main's tip into origin/main
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai breaking: a registry string reads as itself in a finding; CI builds the tools unoptimised
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai ops: the command line carries only the operations it implements; the door check reads a tool table by operation
Some checks failed
standards workspaces build + test / macOS energy backends (pull_request) Successful in 9m22s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 9m23s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 26s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 1m1s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 18m50s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Has been cancelled
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 / energy receipts · macos (pull_request) Has been cancelled
wai-ledger service / service · 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-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 conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Has been cancelled
An operation served only over HTTP or MCP has no command line: it does not resolve, help does not list it as a command, and the dry-run test asks no sample of it. check-wai-ops-doors.py reads an MCP tool named by its operation (op: "noun.verb") as well as one named outright. Co-Authored-By: Claude Opus 5.5 <[email protected]>
CI: the WAI operation catalogue workflow; the catalogue's README, the changelog
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-key-proxy / does this change touch it (pull_request) Has been cancelled
wai-key-proxy / proxy · linux (pull_request) Has been cancelled
wai-ledger service / does this change touch it (pull_request) Has been cancelled
wai-ledger service / service · linux (pull_request) Has been cancelled
wai-ledger service / service · macos (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-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-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-sink-android native sink library / does this change touch it (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / does this change touch it (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
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 builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
.github/workflows/wai-catalogue.yml fails on drift: the export against the table, every door's names against the catalogue (with the check's selftest), the catalogue's rules, and the command line's tests in the archive's build and with every command-line feature that needs no system library. Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai: tests/cli_ops.rs holds every command to the catalogue and the agent rules
wai ops list, search, schema and export (the export is the committed file, a drifted copy exits 1); every operation's help from its entry and its mechanical form; the exit codes 1 to 6 each from a real case; the envelope on success, failure and confirmation; --yes; and --dry-run on every operation of the build whose effect is not reads, each shown to write nothing with it and to write without it, with generate, score and stage covered in a build that has them. A new operation that writes cannot join the catalogue without a sample here. Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai breaking and wai conform: the compatibility gate, and conformance anyone can run
`wai breaking --against <git-ref>` (operation compat.check) reports what the working tree breaks against the merge base of a ref, in three cumulative categories: wire (the registry export, the media and delivery corpora), record (the signing domains, magics and versions in the WAI crates' sources, the record corpora, the published JSON Schemas) and API (the Rust public API of wai and wai-quantum from rustdoc's JSON, the C header, the room service's OpenAPI document). Each finding names its item, category, what changed and why it breaks; additions are compatible. A break passes only when a line the change adds to wai/CHANGELOG.md, in an entry that says Breaking, names its id. `wai conform <kind> --suite <suite> --impl <command or URL>` (operation conformance.run) runs a corpus against another implementation through a command-line or an HTTP adapter: verifiers (claim, jwp, signer), a decoder (score), a packager (policy) and an origin (http). The result is a signed conform-result/1 record that `wai verify` checks. Both follow the agent rules: the envelope/1 JSON output, the exit statuses, --dry-run. .github/workflows/wai-breaking.yml runs the gate on every pull request that touches WAI, the tests of both commands, and the corpora's independent Python verifiers and the reference packager through wai conform. Co-Authored-By: Claude Opus 5.5 <[email protected]>
scripts: check-wai-ops-doors.py holds every door's names to the operation catalogue
MCP tool names (noun_verb), the services' OpenAPI operationIds (the id, placed on a service, at its route), the C header's functions (wai_noun_verb where the noun is the catalogue's and the verb an operation verb) and the Swift and Kotlin sinks' public methods (Wai<Noun>.<verb>) are read and held to wai/catalogue/ops.json; a door with no operation yet says so. The selftest misnames each door's operation and requires the check to fail and say which. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The service binaries are wai-relay, wai-room and wai-ingest; the crates keep their names
WAI toolchain decision 11: joule-moq-relay builds wai-relay, joule-moq-room wai-room, and joule-moq-ingest wai-ingest. wai dev finds them by those names (WAI_RELAY_BIN, WAI_ROOM_BIN), and the quickstart archive, the release workflow, the examples' workflow, the browser tests, the interop scripts, the example host script, the Scoop manifest and the crates' READMEs and example configurations name them so. Wire and record identifiers that carry a crate's name (joule-moq-relay/session-summary/2, joule-moq-ingest/session/1, the relay's MOQT implementation string) and the log variables (JOULE_MOQ_*_LOG) are unchanged. Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai/examples: every template Apache-2.0, its LICENSE carried into the project
Each example holds the license's text as LICENSE (wai/LICENSE, byte for byte) and says so in its README; wai create writes it with the rest of the template, from one copy in the binary. Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai: the command line through the catalogue, and the agent rules on every command
Every command line resolves through the catalogue (wai_cli/door.rs): its CLI spelling, an alias, or its mechanical form wai <noun> <verb>; an implementation is found by operation id, and help is written from the catalogue's entries. dx::VERBS is the developer path's view of it. Every command keeps the agent rules (wai_cli/agent.rs): exit codes 0 to 7, --json (a versioned envelope, envelope/1, carrying a command's own JSON or its text in data), --dry-run on every operation that is not read-only (every write goes through wai_cli/out.rs), and --yes where a change waits for confirmation (exit 4 off a terminal). wai ops list, search, schema and export. The tests and the quickstart's packaging check read the JSON forms from the envelope's data. Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai: the operation catalogue, every operation once as noun.verb (wai::catalogue)
One Rust table in the wai crate holds every operation the toolchain offers: its id (noun.verb), summary, CLI spelling and aliases, placement, input and output JSON Schemas, stream, effect, route, toolset, stability, since/deprecated, whether it writes a receipt, and the build features it needs. It lists only operations that work today. Its tests hold the naming rules (noun.verb, no near-synonym verb, singular nouns, one command line per operation, a route exactly when it runs on a service) and break each rule to show it is refused. wai/catalogue/ops.json is its export (wai.ops/1). Co-Authored-By: Claude Opus 5.5 <[email protected]>