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]>
41 lines
1.9 KiB
TOML
41 lines
1.9 KiB
TOML
[package]
|
|
name = "wai-fleet"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.97"
|
|
license = "Apache-2.0"
|
|
description = "A WAI fleet as a service: an organisation's nodes enrolled by their signing keys, the session summaries and per-hop records they sign verified and kept append-only, and the fleet report the organisation signs for a period, exported as a bundle that verifies offline."
|
|
repository = "https://git.transaction.science/Transaction-Science/open-standards"
|
|
publish = false
|
|
|
|
# Its own workspace and Cargo.lock, like the other crates beside wai-rs.
|
|
[workspace]
|
|
|
|
# The relay's wtransport, vendored with its WebTransport session close, as the relay's own
|
|
# workspace patches it (joule-code/joule-code-rs/vendor/wtransport/VENDORED.md): the relay is a
|
|
# dev-dependency here, for its own types in the tests.
|
|
[patch.crates-io]
|
|
wtransport = { path = "../../joule-code/joule-code-rs/vendor/wtransport" }
|
|
|
|
[dependencies]
|
|
axum = "0.8"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "sync", "signal", "io-util", "time"] }
|
|
serde_json = { version = "1", features = ["preserve_order"] }
|
|
ed25519-dalek = "2"
|
|
getrandom = "0.4"
|
|
# `wai-fleet collect` reads a node's published summary file over https: rustls with ring, as the
|
|
# relay's own upstream does, and the platform's roots.
|
|
rustls = { version = "0.23", default-features = false, features = ["ring", "std"] }
|
|
tokio-rustls = { version = "0.26", default-features = false, features = ["ring"] }
|
|
rustls-native-certs = "0.8"
|
|
wai = { path = "../wai-rs", default-features = false, features = ["fleet"] }
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
|
|
[dev-dependencies]
|
|
sha2 = "0.10"
|
|
# The reference relay, for its own types: the corpus's summaries read and re-serialised by them,
|
|
# and summaries and per-hop records signed by its own code, collected from a file it would write.
|
|
joule-moq-relay = { path = "../../joule-code/joule-code-rs/crates/joule-moq-relay" }
|
|
hex = "0.4"
|