# WAI Extension: Unidirectional Delivery > Status: Draft. Covers bearers with **no return path** — terrestrial broadcast, > satellite, and multicast object carriage — where the sink receives and can > never answer. Generalised from deployed national early-warning systems, which > are the only place these seams are currently exercised at scale. > WAI defines no bearer here and none of this requires one. > Keywords **MUST**, **MUST NOT**, **SHOULD**, **MAY** are RFC 2119/8174. ## 1. What breaks without a return path Three assumptions in the tree quietly presume the sink can talk back: - [`jwp-receipts`](jwp-receipts.md) assumes relay-chain linkage throughout, and a chain implies hops that report. - Targeting presumes the source can learn something about the sink. - Pre-emption — an object that must displace what is playing — has no signer class, because nothing in WAI has needed to assert authority over a sink before. None of these is repaired by defining a bearer. Each is a seam that can be specified transport-independently, and each is specified below at the strength it actually holds — which in one case is considerably weaker than it looks. ## 2. Sink-evaluated predicates A **predicate capability** carries, in the object, a condition the **sink** evaluates against locally-held state the source never learns. The canonical deployed instance is geographic: an object is relevant to a region, the receiver holds its own location, and the source is told nothing. The determinism contract is *predicate-equivalence*, in the shape [`state-feeds`](state-feeds.md) §3 uses: two conforming sinks holding the same local state **MUST** reach the same verdict on the same predicate. - A predicate **MUST** be a total function of the object and the sink's declared state class. A predicate that can consult anything else is not evaluable twice. - A predicate **MUST NOT** be able to cause a request. The moment evaluation emits a signal, the privacy property is gone and this is ordinary targeting. **The specifiable property is determinism and auditability, not enforcement.** Every sink on the bearer receives every byte, and a sink can lie about its own state. Nothing here prevents that and nothing here should claim to. The real claim is narrow and worth having: **the source learns nothing** — which is the dual of source-side targeting, where the source learns everything and the sink is told nothing. ## 3. Authority and pre-emption Pre-emption is the highest-authority instruction a media object can carry: it displaces what a person chose to watch. WAI has no signer class for it, so today an object either has no such field or has one anyone may set. - An object asserting pre-emption **MUST** carry a priority field **and** be signed by a key the sink holds in a **trust anchor** for that assertion. - The trust anchor **MUST** be sink-held and provisioned out of band. A trust anchor delivered over the bearer it authorises is not a trust anchor. - A sink **MUST NOT** act on pre-emption from an unanchored key, and **MUST NOT** treat a valid signature alone as authority — signature validity establishes who signed, never that they were entitled to. - Authority **MUST NOT** be inferred from position in the delivery chain. The entity that transmits is not thereby entitled to interrupt. - A key-log anchor a sink fetched from an origin on first use ([`jwp-receipts`](jwp-receipts.md) §7.3) is not a trust anchor here. When a class is registered for pre-emption, its authority is confirmed only under a pinned anchor, and only for a key the pinned revision itself lists with it (jwp-receipts §7.4, §7.5). - The same holds for receipts: a sink with no return path confirms keys only under anchors provisioned in advance, and a key log that reaches it over the bearer is held but anchors nothing (`anchor_on_bearer`, [`bearer-receipts`](bearer-receipts.md) §8). ## 4. Detached receipts A unidirectional bearer cannot carry a receipt back, so `jwp-receipts`' relay-chain model does not apply. The deliverable is an honest profile, not a proof, and [`bearer-receipts`](bearer-receipts.md) specifies it: - A publisher **MAY** emit receipts for objects sent over a unidirectional bearer. They are the receipts it emits for any bearer, byte for byte, and they attest what was published, not what was received and not what was rendered. - A publisher that does so **MUST** declare the bearer: for each group, a `transmission` claim ([`jwp-receipts`](jwp-receipts.md) §2.4.14) naming the bearer as `unidirectional`, signed by the group's key, whose subject is the group's link hash (bearer-receipts §4). The declaration sits beside the receipt and changes none of its bytes, so a group carried on several bearers has one receipt and one declaration for each. It attests transmission, so a relying party cannot mistake transmission for delivery: a group with declarations and no reconciliation is `transmitted`, and a group presented as delivered on that evidence is refused (`delivery_not_reconciled`, bearer-receipts §6.3, §6.4). A sink that received a group over a unidirectional bearer with no declaration for it reports `bearer_not_declared` (bearer-receipts §6.5). - A sink **MAY** retain object commitments and reconcile them out of band later, in a `reconciliation` claim (jwp-receipts §2.4.15, bearer-receipts §5): signed by the sink and never by the publisher, it names the group by its link hash and the objects it received by a bitmap and a root under the group's own Merkle tree, so it is checked against the publisher's root without the objects. A reconciliation **MUST** be reported apart from the publisher's chain and never folded into it as though it had been a hop. Like a `binding-recovery` record (jwp-receipts §2.6.3), it attests less than a hop would, and says so (`attests: "received"`). - A transmission over a bearer whose receivers are not known is shared by them, and its energy per receiver is stated only as an upper bound that tightens as reconciliations arrive, never as a measurement (bearer-receipts §7). **No receipt can prove rendering over a bearer with no return path.** This section does not attempt it. What it prevents is the quieter error: a receipt that says "delivered" because the transmitter transmitted, on a link that cannot tell it whether anyone was listening. ## 5. Framing These seams are exercised today in national early-warning deployments, which is where a sink evaluating a condition the source never learns has had to be made to work at scale. The mechanisms are worth having for that reason and not only that one: a container that can only describe two-way delivery cannot describe broadcast, and broadcast is not a legacy case.