Landscape package LS-08, its library level. Four drafts read whole at the latest revision in the IETF archive on 10 November 2026: draft-jennings-moq-metrics-03, draft-jennings-moq-log-04, draft-pardue-moq-qlog-moq-events-08 and draft-liu-moq-feedback-01. - joule_moq::metrics_track: one group a capture, made from the text exposition GET /metrics answers with, and equal_to_exposition, which refuses the first number, kind or series in which a group and its exposition differ. - joule_moq::log_track: one group a second; an attribute whose value is a network address is refused. - joule_moq::qlog (feature qlog): the draft's fifteen events from the crate's own messages and headers, a sink, and a checker of a log's order. Lengths, never bytes. - joule_moq::feedback: the MQF report and a consumer's mapping of every field: written as an observation a sink may already report, kept as a tally, consumed, or withheld with its reason. The feedback-source-id is not read; a field with no mapping is refused. The draft's two unassigned code points are placeholders in that module (D8). No identifier of a person or a device is added: a resource is named from a public key it already publishes. Decision D14 records the readings. Corpora with Python second implementations sharing no code, 98 planted faults each refused with its own reason by both, every changed copy caught and every weakened verifier caught. Left: the relay publishes no metrics or log track, writes no qlog and consumes no Feedback Track yet; no text says it does. Co-Authored-By: Claude Fable 5.2 <[email protected]>
66 lines
3.3 KiB
TOML
66 lines
3.3 KiB
TOML
[package]
|
|
name = "joule-moq"
|
|
version = "0.3.0"
|
|
description = "MoQT (Media over QUIC Transport, draft-ietf-moq-transport-22, with -18 and -16 for interoperation) wire protocol + JWP receipt extension for WAI broadcast media. Trait surface lets the Realtime stack publish, subscribe, and relay tracks with object-level signed provenance and joule receipts."
|
|
edition = "2024"
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/transaction-science/open-standards"
|
|
|
|
[dependencies]
|
|
bytes = "1"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "2"
|
|
blake3 = "1"
|
|
ed25519-dalek = { version = "2", features = ["serde", "rand_core"] }
|
|
# SHA-256 for a room grant's digest (WAI live-rooms §4.2), the one a proof names.
|
|
sha2 = "0.10"
|
|
# The async surface's dependencies (feature `runtime`).
|
|
jwp = { path = "../jwp", optional = true }
|
|
async-trait = { version = "0.1", optional = true }
|
|
tracing = { version = "0.1", optional = true }
|
|
tokio = { version = "1", features = ["sync", "rt", "macros", "io-util", "net", "time"], optional = true }
|
|
uuid = { version = "1", features = ["v4", "v5", "v7", "serde", "js"], optional = true }
|
|
chrono = { version = "0.4", features = ["serde"], optional = true }
|
|
rand_core_06 = { package = "rand_core", version = "0.6", features = ["getrandom"], optional = true }
|
|
futures = { version = "0.3", optional = true }
|
|
# End-to-end sealed objects (feature `secure-objects`): RustCrypto's AES-GCM, AES-CTR,
|
|
# HMAC and HKDF, all Apache-2.0 OR MIT, at the versions this workspace's lock already
|
|
# holds. No default features: nothing here draws randomness.
|
|
aes-gcm = { version = "0.10", default-features = false, features = ["aes", "alloc"], optional = true }
|
|
aes = { version = "0.8", optional = true }
|
|
ctr = { version = "0.9", optional = true }
|
|
hmac = { version = "0.12", optional = true }
|
|
hkdf = { version = "0.12", optional = true }
|
|
|
|
[features]
|
|
default = ["runtime"]
|
|
# The async surface: the endpoint traits, the in-memory mock, and (with `quic`) the QUIC
|
|
# transport, on tokio and the JWP framing crate. Without it the crate is the -22 codec,
|
|
# the carriage of objects and receipts, the receipts and the session's setup rules, with
|
|
# no runtime and no native dependency, and it builds for wasm32-unknown-unknown
|
|
# (`joule-moq-web` builds it so).
|
|
runtime = ["dep:jwp", "dep:async-trait", "dep:tracing", "dep:tokio", "dep:uuid", "dep:chrono", "dep:rand_core_06", "dep:futures"]
|
|
quic = ["runtime", "dep:quinn", "dep:rustls", "dep:rcgen"]
|
|
# Sealing and opening objects end to end (WAI confidentiality §4, §6): no runtime, so it
|
|
# builds for wasm32-unknown-unknown beside the codec.
|
|
secure-objects = ["dep:aes-gcm", "dep:aes", "dep:ctr", "dep:hmac", "dep:hkdf"]
|
|
# MOQT events for qlog (draft-pardue-moq-qlog-moq-events-08): the event types, a sink a
|
|
# session or a relay logs to, and the checker of a log. No dependency of its own.
|
|
qlog = []
|
|
|
|
[dependencies.quinn]
|
|
version = "0.11"
|
|
optional = true
|
|
|
|
[dependencies.rustls]
|
|
version = "0.23"
|
|
features = ["ring", "std"]
|
|
optional = true
|
|
|
|
[dependencies.rcgen]
|
|
version = "0.14"
|
|
optional = true
|
|
|
|
[dev-dependencies]
|
|
tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread"] }
|