open-standards/wai/changes/2026-11-09-command-line-doors-rooms-sessions-logs-priors.md
Transaction Science 009e44c2d2
Some checks failed
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 10s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 12s
wai-fleet service / does this change touch it (push) Successful in 23s
wai-quantum docs, course and locales / does this change touch it (push) Successful in 21s
wai-quantum contract / does this change touch it (push) Successful in 23s
wai-ledger service / does this change touch it (push) Successful in 27s
wai-quantum contract / the policy is linked, and the deprecations page reads (push) Successful in 15s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (push) Successful in 19s
wai-quantum for Python / does this change touch it (push) Successful in 25s
wai-quantum service / does this change touch it (push) Successful in 24s
wai-quantum studio and desktop / does this change touch it (push) Successful in 28s
wai-quantum views in agent hosts / does this change touch it (push) Successful in 24s
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (push) Successful in 54s
wai-sink-android native sink library / does this change touch it (push) Successful in 15s
wai-sink-swift native sink package / does this change touch it (push) Successful in 14s
wai-fleet service / service · macos (push) Successful in 46s
WAI Studio / does this change touch it (push) Successful in 12s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 1m28s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 1m38s
wai-audit collector and player integration / does this change touch it (push) Successful in 1m34s
wai-quantum for JavaScript / does this change touch it (push) Successful in 1m23s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 1m38s
wai-key-proxy / does this change touch it (push) Successful in 1m29s
wai-app and Create / wai-app · does this change touch it (push) Successful in 1m36s
WAI operation catalogue / does this change touch it (push) Successful in 1m33s
wai-ledger service / service · macos (push) Successful in 1m11s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m44s
wai-fleet service / service · linux (push) Successful in 2m22s
wai-quantum service / service energy · linux packages (push) Successful in 2m10s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m0s
joule-code conformance gate / Build + round-trip C1-C4 vectors (push) Successful in 4m20s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 32s
wai-quantum for Python / python · macos (push) Successful in 4m8s
wai-ledger service / service · linux (push) Successful in 4m29s
wai-quantum service / service · macos (push) Failing after 4m37s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 5m24s
wai-audit collector and player integration / collector · linux (push) Successful in 1m15s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 1m6s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 5m20s
wai-key-proxy / proxy · linux (push) Successful in 57s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 6m35s
wai-quantum views in agent hosts / views · a scripted host (push) Successful in 6m0s
wai-quantum views in agent hosts / views · the page and its engine (push) Successful in 7m23s
wai-quantum docs, course and locales / the course and the command line's languages · linux (push) Successful in 8m8s
wai-quantum for JavaScript / javascript · linux (push) Successful in 2m40s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 2m31s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 7m58s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 7m31s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 9m21s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 9m24s
wai-quantum service / service · linux (push) Failing after 8m42s
wai-quantum contract / API compatibility · linux (push) Successful in 9m12s
wai-quantum for Python / python · linux (push) Successful in 9m17s
wai-quantum studio and desktop / studio · browser (push) Successful in 9m15s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 10m25s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 8m0s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 8m31s
wai-quantum contract / schemas and the committed tool lists · linux (push) Successful in 13m18s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 14m15s
WAI Studio / Studio in WebKit · linux (push) Successful in 11m57s
wai release binaries build on Windows / the seven release binaries · windows (push) Successful in 17m21s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 17m13s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 16m37s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (push) Successful in 24m40s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 16m50s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 5m27s
joule-code conformance gate / joule-moq-ingest, every target (push) Successful in 6m30s
joule-code conformance gate / joule-moq-relay, every target (push) Successful in 8m3s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 1m45s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 5m18s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 6m26s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 12m43s
wai: the development room, its logs and sessions, and parameter sets on the command line; the catalogue over MCP, --fields and --features full
The operations wai mcp's dev tools served get doors on the command line, on
the stack wai dev runs here (.wai/dev/stack.json, refused as stale when that
stack is not running): wai room join --principal NAME asks the stack's room
service for a publisher's grant for the test principal's key, derived from its
name as wai mcp derives it, and enters it through the stack's synthetic
participants; wai room leave closes its session; wai session show gives the
room as a verifier is given it. The stack takes those lines on its origin,
POST /_wai/api/control, under the rules of Studio's routes, and starts its
participants on the first when --control did not; none starts once the stack
has stopped. wai room invite (room.invite) signs an invitation to host the
room's remote desktop from the room's keys, by the room service's invite mode.
--target local is that stack's room service, so wai room show and wai room
grant reach it.

wai log tail (log.tail) and wai session list (session.list) read the stack's
directory: a log from a byte or its last 64 KiB, and the relay's signed session
summaries; --follow reads on while the stack runs, and with --json each read is
a line of the stream schema the catalogue gives it.

wai prior verify (prior.verify) holds a directory (its listing, wai.prior.set)
or a file to a pin; wai prior fetch (prior.fetch, prior_carriage and cli_tls)
asks set roots in http-delivery §8.7's order through locations::fetch_set and
writes a listing as a directory of its files.

ops_search and ops_show are core MCP tools. --fields with --json keeps only
the members of data it names and never the envelope's own (ok, error, exit).
--features full is every feature an operation needs (the one with no system
library where any of several will do); the catalogue's tests hold it to the
table both ways, and wai-catalogue.yml runs cli_ops in that build.

ops.json, mcp.json and Studio's actions are regenerated from the table. Tests:
the doors against a stand-in stack (cli_target), the whole stack from the
command line (joule-moq-room tests/cli_dev_room.rs), prior verify's bad pin,
prior fetch's roots, --fields never hiding ok, the full feature against the
table, and the origin's control route's refusals.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 20:06:07 -05:00

41 lines
3.5 KiB
Markdown

### The command line's doors to the development room, its logs and sessions, and parameter sets
- **The development room on the command line**: `wai room join --principal NAME`, `wai room leave
--principal NAME` and `wai session show` are the operations `room.join`, `room.leave` and
`session.show`, which `wai mcp`'s `dev` tools served, on the stack `wai dev` runs on this machine
(its record, `.wai/dev/stack.json`, refused as stale when that stack is not running). A join asks
the stack's room service for a publisher's grant for the test principal's key, derived from its
name as `wai mcp` derives it, and enters it through the stack's synthetic participants, where it
stays until `wai room leave`; a join and a leave wait for `--yes`, as a change to a target does.
`wai room invite` (`room.invite`) signs an invitation to host the room's remote desktop, from the
room's keys in the stack's directory, by the room service's invite mode.
- **The stack takes control lines on its origin**: `POST /_wai/api/control`, under the rules of
Studio's routes (this origin as the host, `X-WAI-Studio: 1`, no other origin), takes the lines
`wai dev --control` takes on standard input, `stop` aside, and starts the synthetic participants
on the first when `--control` did not. One process answers one line at a time from either.
- **`--target local`** is the room service of that stack: `wai room show --target local`, `wai
room grant --target local` and every operation of the room service's API reach it once its origin
says it is the stack recorded there. It was a usage error; with no stack recorded it is exit 5
(`stack-not-found`).
- **The stack's logs and sessions**: `wai log tail` (`log.tail`) reads a log the stack keeps in its
directory (`relay`, `room`, `conversation` or `participants`), from a byte or its last 64 KiB, and
`wai session list` (`session.list`) the relay's signed session summaries (`sessions.jsonl`), the
last 50 by default. With `--follow` each reads on as the file grows while the stack runs, and with
`--json` each read is one line of the stream schema the catalogue gives it.
- **Parameter sets by their pin**: `wai prior verify <path> --sha256 <hex>` (`prior.verify`) holds a
directory (a set of the form `wai.prior.set`: its listing, as `wai prior-set` prints it) or a file
to a pin, exit 1 when its SHA-256 is another. `wai prior fetch <sha256> --out PATH`
(`prior.fetch`, in a build with `prior_carriage` and `cli_tls`) asks set roots in the order
http-delivery §8.7 gives them (each `--root`, a location hint's, the origin's
`/.well-known/wai-sets/`) through `locations::fetch_set`, which holds a response only when its
digest is the one asked for, and writes a listing as a directory of its files, each checked by its
own digest. Every request and what came of it is in the report.
- **The catalogue over MCP**: `ops_search` (`ops.search`) and `ops_show` (`ops.show`) are tools of
the `core` toolset.
- **`--fields a,b.c`** with `--json` keeps only those members of `data` (a dotted path reaches into
one; of each item of a list), and never the envelope's own: `wai`, `op`, `ok`, `error` and `exit`
are there whatever is named. Without `--json` it is a usage error.
- **`--features full`** (wai-rs) holds every operation of the catalogue: each feature an operation
needs, and where it needs any one of several, the one that needs no system library. The
catalogue's tests hold the list to the table both ways, and wai-catalogue.yml runs the command
line's tests in that build.