On-air sequences
This section describes the on-air event sequence for each delivery method. The
bytes placed on the wire are normative (see
Delivery methods and sizing); the scheduling
(retry cadence, timeouts, path-request timing) is informative and lives in
Router internals. The relevant cadence constants are
MAX_DELIVERY_ATTEMPTS = 5 (LXMRouter.py:30), DELIVERY_RETRY_WAIT = 10 s
(LXMRouter.py:32), PATH_REQUEST_WAIT = 7 s (LXMRouter.py:33), and
MAX_PATHLESS_TRIES = 1 (LXMRouter.py:34).
Opportunistic
- If there is no path to the destination, request one and wait (informative
cadence). After
MAX_PATHLESS_TRIESthe message may be sent pathless. - Send a single Reticulum Packet whose payload is
packed[16:](the destination hash is omitted;LXMessage.py:631). - The message state becomes
SENT. Delivery is confirmed by a Reticulum proof; on timeout the router re-queues up toMAX_DELIVERY_ATTEMPTS.
No link is established. Suitable only for messages within the single-packet content limit.
Direct
- Ensure a path, then establish a Reticulum
Linkto the destination’slxmf/deliveryendpoint. - When the link is
ACTIVE(LXMessage.py:647):- if representation is
PACKET, send one Packet carrying the fullpackedbytes over the link (LXMessage.py:633); - if representation is
RESOURCE, transferpackedas a Reticulum Resource over the link (LXMessage.py:650-651), with compression negotiated per the peer’s advertised support.
- if representation is
- On link failure before delivery, tear down and retry.
Propagated
- Establish a
Linkto the configured outbound propagation node. - Send
propagation_packed(the encrypted envelope, see Propagation) as a Packet or Resource depending on size (LXMessage.py:634-635,652-653). - Success marks the message
SENT(notDELIVERED): final delivery to the recipient happens asynchronously when the recipient syncs from the node.
Paper
No Reticulum transport. pack() produces the encrypted paper form; as_uri()
renders it as an lxm:// URI (LXMessage.py:687-702) or as_qr() as a QR code.
The recipient ingests the URI out of band.
State model (informative)
A message moves through the states GENERATING (0x00) -> OUTBOUND (0x01) -> SENDING (0x02) -> SENT (0x04) -> DELIVERED (0x08), with terminal REJECTED (0xFD), CANCELLED (0xFE), and FAILED (0xFF) (LXMessage.py:14-21). These
are local lifecycle states, not on-wire values, and an implementation MAY model
the lifecycle differently.