wai.delivery.fleet: an organisation's nodes enrolled by their keys, their records verified, and a report it signs (wai-fleet, the fleet's operations, corpus and second verifier) #518

Merged
dcharlot merged 6 commits from wai/fleet into main 2026-10-27 19:44:30 -04:00

2026-10-27

Transaction Science
Merge origin/main into wai/fleet
All checks were successful
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 5m13s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m0s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 31s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m32s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 9m38s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m38s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (pull_request) Successful in 32s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m21s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m46s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 5m10s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 1m45s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 9m58s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 31s
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 8m20s
wai-fleet service / service · macos (pull_request) Successful in 52s
wai-ledger service / service · macos (pull_request) Successful in 59s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m35s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 3m45s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 22m25s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 13m0s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 11m0s
wai-pack / wai-pack · macos (pull_request) Successful in 3m11s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h0m7s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m1s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m34s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 16m15s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 57s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 6m27s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 15m35s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 16:16:20 -04:00
Transaction Science
fleet_verify.py: §10 names every reason the corpus raises
A falsification (§10's report_mismatch row deleted) was caught by
tests/fleet.rs and not by the second implementation, which required every
listed reason to appear in the corpus but not every raised reason to be listed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 16:09:41 -04:00
Transaction Science
wai.delivery.fleet in the registry, SPEC §5 and the changelog; the fleet's steps in CI
The record and its wire identifiers (WFE1, WFR1, the bundle's kind and file
suffix) in the registry and its export; SPEC §5's paragraph; the changelog's
entry. wai-conformance.yml: the extension in its paths, the feature in its
lists, tests/fleet.rs and tests/cli_fleet.rs, and a step that runs the module's
tests and fleet_verify.py. wai-fleet.yml: the service's tests, clippy and its
smoke checks over HTTP.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 15:39:52 -04:00
Transaction Science
wai: the fleet's operations, enrolment.create, enrolment.list, report.create and report.export, and wai verify of a fleet bundle
wai enrolment create signs a node's enrolment with the organisation key and
writes it, or gives it to a fleet service with --target; wai enrolment list;
wai report create has a fleet service sign the report of a period; wai report
export verifies a report's bundle here before writing it. Each prints the
toolchain's JSON envelope when standard output is not a terminal, exits by the
toolchain's table, takes --dry-run when it writes, and waits for --confirm
before it changes a service or replaces a file. wai verify checks
*.wai-fleet.json bundles beside receipt indexes. The quickstart build carries
the fleet feature.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 15:36:44 -04:00
Transaction Science
wai-fleet: a fleet as a service, enrolments and records kept append-only, reports signed and kept with their bundles
The HTTP API of extensions/fleet.md §9 over a directory it owns (two
append-only logs, reports written whole, a lock, everything verified again on
start), and wai-fleet collect, which gives each line of a node's summary file,
a path or an http(s) address, to a running service. Its tests sign the
corpus's report byte for byte, recover the directory, cut off a line a crash
cut short, read every corpus summary back through the reference relay's own
types, and collect records the relay's own code signed from a file over HTTP;
smoke.sh checks the API over HTTP and the bundle with fleet_verify.py.

wai-rs: Held checks a record or an enrolment before it is kept, so the
service keeps one only once it is on disk.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 15:31:13 -04:00
Transaction Science
wai.delivery.fleet: an organisation's nodes enrolled by their keys, their records verified, and a report signed for a period
extensions/fleet.md: the enrolment (WFE1), the records a node contributes as it
signs them (a relay's session summaries, per-hop records with their ledgers, the
room descriptors that place them), placement in time and one thing once, the
fleet report (WFR1) with node and room lines, energy per scope and class with
unmetered figures counted as unmetered, citations, the bundle and its
verification, and the reasons.

wai-rs: the fleet module (feature fleet), its corpus generator
(wai_fleet_vectors), tests/fleet.rs; live-conformance/fleet/ (63 vectors) and
fleet_verify.py, the second implementation.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 15:22:20 -04:00