| Filename | Latest commit message | Latest commit date |
|---|---|---|
Four advisories against the zstd crates, published October 2026, failed the repository check on every pull request: - RUSTSEC-2026-0391 (zstd < 0.14.3): data from an abandoned stream leaks into the next stream on a reused context; - RUSTSEC-2026-0398 (zstd-safe < 8.2.0): Seekable::decompress sets a Vec length past its capacity; - RUSTSEC-2026-0403 (zstd-safe < 8.2.0): uninitialised memory when a legacy frame's streaming decompression fails; - RUSTSEC-2026-0410 (zstd-sys < 2.1.2): the wasm allocator shim corrupts memory on allocation failure. Every direct use moves: wai (zstd 0.14.3, zstd-safe 8.2), jwp and joule-moq-interop (zstd 0.14.3). Five lockfiles change exactly the three zstd packages and nothing else: wai-rs, wai-rs/fuzz, joule-code-rs, joule-moq-room and examples/transport-moqt. The one copy left is wasmtime 49's, under wasmtime-internal-cache, which compresses compiled modules for wasmtime's on-disk cache. sandbox-exec-wasm builds its engine from Config::new() with fuel metering only and never configures a cache, so zstd's code does not run in the sandbox. It is allowed in scripts/check-advisories.py at those exact versions, so a direct use regressing to them is not excused. Co-Authored-By: Claude Opus 5.5 <[email protected]> |
||
| .. | ||
| tests | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
transport-moqt — CommunicationOS transport binding (the last federation layer)
A consumer binding showing a Joule Code collaboration's committed coding
operations carried over CommunicationOS's MoQT transport — the network wire
layer left deferred by spec/collab.md §2.
It closes the loop on the federation stack. The other three layers are already
built and tested in joule-code-collab:
BFT consensus (LockstepCluster), FROST threshold authorization (protected),
and MLS group keying (tests/mls_keying.rs). This example adds the transport.
What it demonstrates
The whole stack, end to end, in one in-process test:
BFT consensus (LockstepCluster) → committed, op_id-ordered coding ops
→ published as MoQT objects over CommunicationOS's transport (inv-moq)
→ each object carries a real Ed25519 / BLAKE3 signed receipt
→ a subscriber receives every op, verifies the signed receipts against the
publisher's key, and recovers the original SignedOp intact
A second test shows the ownerless-trust property: a subscriber that requires receipts rejects a group whose signed receipt does not chain to a trusted publisher key — no central authority decides who is authentic.
The transport
The carrier is inv-moq —
joulesperbit's MoQT (Media over QUIC Transport) wire protocol plus its JWP
receipt extension, the CommunicationOS broadcast-media transport. It exposes
Publisher / Subscriber / GroupHandle / Relay traits with object-level
signed provenance and joule receipts.
The test drives inv-moq through its MockFabric, which runs the real
publish/subscribe/receipt machinery in-process — real Ed25519 signatures, real
BLAKE3 merkle receipts — with no QUIC and no network. inv-moq's quic
feature is the real-wire path (quinn/rustls); the trait surface is identical, so
this binding moves to the network by swapping the fabric, not the code.
This is a standalone workspace (path-deps inv-moq from joulesperbit and the
joule-code-* crates), so the standard's reference library stays free of a
joulesperbit dependency — the same discipline as examples/l3-jouleclaw.
Run
cargo test
Expected:
test untrusted_publisher_is_rejected ... ok
test committed_ops_replicate_over_communicationos_moqt_with_signed_receipts ... ok