Weave documentation
Woven

Transport

Explicit Swarm wiring, per-service deduplication and verified local ingestion.

WovenTransport::topic_for_space deterministically derives a Swarm topic from a space. Topic derivation is namespacing, not encryption or a cryptographic guarantee that unrelated traffic is impossible.

encode_event emits the woven.transport.event version-1 envelope. decode_event checks protocol/version, envelope-space equality and event signature/ID validity. It does not resolve the author string to an independently trusted identity.

Service APIBehavior
WovenTransportService::new(spaces, strand)Starts with an empty dedup set.
WovenTransportService::open(spaces, strand).awaitHydrates dedup state from verified persisted event records; use this when reopening a durable Strand.
join_spaces(&swarm).awaitJoins configured topics; does not run the incoming-event loop.
handle_payload(bytes).awaitVerifies an envelope, checks accepted spaces and serializes dedup/append within this service instance.
handle_swarm_event(event).awaitAdditionally checks the topic for SwarmEvent::Data; RawMessage uses payload handling without a topic field.

An empty configured space set accepts any valid payload space; it does not mean reject all. Separate service instances have separate dedup sets. Do not claim global exactly-once ingestion or that a receiver's append order equals each author's original publish order.

broadcast_event(&swarm, &event).await delegates to the Swarm broadcast and returns its send count. That count is not a remote application acceptance/durability receipt. Offline peers require an explicitly configured retrieval/replication path; WOVEN does not create one automatically.

Source declarations