Nordhavn / specs / convene / mix / Entropy

convene / mixport

Entropy

Purpose

The capability that supplies the randomness the mix needs — the other seam to the floor. Mixing is nothing without unpredictability: a tumbler that released its cells in the order they arrived would mix nothing, and a route an observer could predict would hide nothing. Rather than reach for ambient randomness in the middle of a context — which would make the transport untestable and its scenarios non-reproducible — the mix layer names randomness as a port it is given, so a scenario can inject a fixed draw and pin the behaviour exactly. This is a port: the host crate binds it to an operating-system random source; the gate binds a seeded, deterministic one so the whole stack's scenarios reproduce.

Operations

shuffle

Given some Cells, produces them in a freshly randomised order — the reordering a tumbler applies before it releases a batch. Result: the Cells in their freshly randomised order

pick

Given some Peers, yields one of them at random — the next hop a cell is routed to. Result: the Peer it picked

nonce

Yields a fresh opaque value, no two alike — the per-cell salt that makes each detection tag and each sealing look unrelated to every other. Result: the fresh value as Text

Notes

Naming entropy as a port is the DCI-honest way to keep an impure, non-reproducible source out of the pure transport logic: the contexts stay deterministic given their inputs, and the one place unpredictability enters is visible and swappable. The strength of the underlying source — a CSPRNG, seeded from the OS — is the floor's concern, asserted where the port is bound, not here.

spoken of by