Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

LXMF reference symbol inventory (frozen)

This file is the frozen ground-truth enumeration of every symbol and wire surface in the vendored Python LXMF reference. The specification is written against it; the coverage ledger (Coverage ledger) maps every entry here to a specification section and a proof.

Do not edit by hand to reflect wishful coverage. To refresh, re-enumerate the source at the pinned commit and diff. A new symbol that appears unclassified is a coverage gap.

Pin

ComponentVersionSubmodule commit
LXMF (vendor/LXMF)0.9.68499729024a4cddfceb47ca07188bb5b1d11d179
Reticulum (vendor/Reticulum)RNS 1.3.5d5e62d4e15c5fe2e170f7bd9e120551671f21a27

Reference files under vendor/LXMF/LXMF/: LXMessage.py, LXMF.py, LXMRouter.py, LXMPeer.py, LXStamper.py, Handlers.py, _version.py, Utilities/lxmd.py.

Classification key

  • N normative: crosses the wire or is observable by a Python peer; must be specified exactly and proven.
  • I informative: internal behaviour an implementer may diverge on without breaking interop; described, not byte-proven.
  • X out of scope: daemon, CLI, build or test scaffolding.

LXMessage.py (827 lines) — class LXMessage (line 13)

Constants

SymbolValueLineClass
state GENERATING/OUTBOUND/SENDING/SENT/DELIVERED/REJECTED/CANCELLED/FAILED0x00,0x01,0x02,0x04,0x08,0xFD,0xFE,0xFF14-21I
representation UNKNOWN/PACKET/RESOURCE0x00,0x01,0x0224-26N
method OPPORTUNISTIC/DIRECT/PROPAGATED/PAPER0x01,0x02,0x03,0x0529-32N
unverified SOURCE_UNKNOWN/SIGNATURE_INVALID0x01,0x0235-36N
DESTINATION_LENGTH1639N
SIGNATURE_LENGTH6440N
TICKET_LENGTH1641N
TICKET_EXPIRY/GRACE/RENEW/INTERVAL21d/5d/14d/1d48-51N
COST_TICKET0x10052N
TIMESTAMP_SIZE860N
STRUCT_OVERHEAD861N
LXMF_OVERHEAD11262N
ENCRYPTED_PACKET_MDUderived67N
ENCRYPTED_PACKET_MAX_CONTENT29578N
LINK_PACKET_MDURNS.Link.MDU83N
LINK_PACKET_MAX_CONTENT31989N
PLAIN_PACKET_MDURNS.Packet.PLAIN_MDU93N
PLAIN_PACKET_MAX_CONTENT36894N
ENCRYPTION_DESCRIPTION_AES/EC/UNENCRYPTEDstrings97-99I
URI_SCHEMA“lxm”102N
QR_ERROR_CORRECTION“ERROR_CORRECT_L”103I
QR_MAX_STORAGE2953104N
PAPER_MDU2210105N

Methods (wire-relevant marked N)

MethodLineClass
__init__113N (field defaults)
set_title_from_string/bytes, title_as_string190-196N
set_content_from_string/bytes, content_as_string199-205N
set_fields, get_fields212-218N
validate_stamp270N
get_stamp293N
get_propagation_stamp326N
pack352N
send460I
determine_compression_support507N
determine_transport_encryption517I
__mark_delivered/propagated/paper_generated558-582I
__resource_concluded, __propagation_resource_concluded594-605I
__link_packet_timed_out, __update_transfer_progress613-620I
__as_packet623N
__as_resource637N
packed_container657N
write_to_directory672I
as_uri687N
as_qr707I
unpack_from_bytes (static)735N
unpack_from_file (static)810I

msgpack sites

364 (pack payload, N), 378 (pack payload, N), 433 (propagation envelope, N), 669 (packed_container, N), 741 (unpack payload, N), 747 (re-pack for hash, N), 812 (unpack from file, I).

RNS primitives

Identity.full_hash 365/431, Identity.truncated_hash 274, source.sign 375, identity.validate 794, Destination.encrypt 427/446, Destination.SINGLE/PLAIN/LINK/GROUP 395-548, Packet 476, Link.ACTIVE 647, Resource 651/653, Identity.recall 759/765, size constants Identity.TRUNCATED_HASHLENGTH/SIGLENGTH 39/40, Packet.ENCRYPTED_MDU/PLAIN_MDU 67/93, Link.MDU 83.

Filesystem / time

open/write 677-679 (write_to_directory, I). time.time() 354, 433 (N: payload and envelope timestamps).


LXMF.py (217 lines) — module

Constants

SymbolValueLineClass
APP_NAME“lxmf”1N
FIELD_EMBEDDED_LXMS..FIELD_RENDERER0x01..0x0F8-22N
FIELD_CUSTOM_TYPE/DATA/META0xFB-0xFD34-36N
FIELD_NON_SPECIFIC/DEBUG0xFE-0xFF40-41N
AM_CODEC2_*0x01..0x0955-63N
AM_OPUS_*0x10..0x1966-75N
AM_CUSTOM0xFF79N
RENDERER_PLAIN/MICRON/MARKDOWN/BBCODE0x00-0x0389-92N
PN_META_VERSION..PN_META_CUSTOM0x00..0xFF98-104N
SF_COMPRESSION0x00108N

Functions

FunctionLineClass
display_name_from_app_data117N
stamp_cost_from_app_data141N
compression_support_from_app_data154N
pn_name_from_app_data169N
pn_stamp_cost_from_app_data182N
pn_announce_data_is_valid191N

msgpack sites

123, 146, 159, 173, 186, 194 (all unpack of announce app_data, N).


LXStamper.py (396 lines) — module

Constants

SymbolValueLineClass
WORKBLOCK_EXPAND_ROUNDS300010N
WORKBLOCK_EXPAND_ROUNDS_PN100011N
WORKBLOCK_EXPAND_ROUNDS_PEERING2512N
STAMP_SIZE3213N
PN_VALIDATION_POOL_MIN_SIZE25614I

Functions

FunctionLineClass
stamp_workblock18N
stamp_value31N
stamp_valid42N
validate_peering_key48N
validate_pn_stamp53N
validate_pn_stamps_job_simple/multip, validate_pn_stamps67-87I (parallelism)
generate_stamp92N (algorithm)
cancel_work113I
job_simple/linux/android145-260I (platform PoW workers)

msgpack sites

24 (salt packb(n), N). RNS: Cryptography.hkdf 22, Identity.full_hash 24/34/44.


Handlers.py (92 lines)

Class / methodLineClass
LXMFDeliveryAnnounceHandler.received_announce9/15N (announce parsing)
LXMFPropagationAnnounceHandler.received_announce35/41N + I (auto-peer is I)

msgpack: 46 (unpack announce, N). RNS: Transport.hops_to 71/72 (I).


LXMRouter.py (2733 lines) — class LXMRouter (line 29)

Mostly I (router internals: jobloop, queues, persistence, peer rotation, retry cadences). The N surfaces are the announce/app-data builders and the propagation request handlers and packers.

Normative surfaces

SymbolLineClass
get_propagation_node_announce_metadata302N
get_propagation_node_app_data307N
get_announce_app_data986N
generate_ticket1025N
message_get_request1427N (/get request shape)
message_list_response1507N
message_get_response1552N
offer_request2142N (/offer handler)
propagation_packet2110N
propagation_resource_concluded2194N
lxmf_propagation2310N (transient ingest)
ingest_lxm_uri2370N (paper ingest)
lxmf_delivery1732N (inbound delivery dispatch)

Informative constants (selected; full set in Router internals)

MAX_DELIVERY_ATTEMPTS=5(30), PROCESSING_INTERVAL=4(31), DELIVERY_RETRY_WAIT=10(32), PATH_REQUEST_WAIT=7(33), MESSAGE_EXPIRY=30d(38), STAMP_COST_EXPIRY=45d(39), MAX_PEERS=20(43), AUTOPEER_MAXDEPTH=4(45), PEERING_COST=18(50), PROPAGATION_COST=16(54), PROPAGATION_LIMIT=256(55), SYNC_LIMIT=256*40(56), DELIVERY_LIMIT=1000(57), PN_STAMP_THROTTLE=180(60), PR_* states 62-77 (N: appear in /get FSM signalling), request paths STATS_GET/SYNC_REQUEST/UNPEER_REQUEST 81-83 (I), JOB_* intervals 853-860 (I).

Persistence / time

Extensive filesystem use (message store, peers, tickets, costs, stats) — all I. 80+ time.time() calls — I except where a value is signed or hashed.


LXMPeer.py (642 lines) — class LXMPeer (line 13)

SymbolLineClass
OFFER_REQUEST_PATH="/offer", MESSAGE_GET_PATH="/get"14-15N
state IDLE..RESOURCE_TRANSFERRING17-22I
ERROR_NO_IDENTITY..ERROR_TIMEOUT24-31N (/offer response codes)
STRATEGY_LAZY/PERSISTENT, DEFAULT_SYNC_STRATEGY33-35I
MAX_UNREACHABLE=14d, SYNC_BACKOFF_STEP=12m, PATH_REQUEST_GRACE=7.539-50I
from_bytes/to_bytes (peer persistence)52/138I
generate_peering_key242N
sync267I + N (offer payload shape)
offer_response396N
resource_concluded488N (sync resource payload)

msgpack: 54/172 (peer persistence, I), 462 (sync resource packb([time, lxm_list]), N).


_version.py (2 lines)

__version__ = "0.9.6" (1) — N (reference pin).

Utilities/lxmd.py (1127 lines)

Daemon and CLI. X out of scope (not protocol). Listed for completeness only.


Deferred RNS primitives (cited into vendor/Reticulum, not re-specified)

RNS.Identity.full_hash (SHA-256), truncated_hash, Ed25519 sign/validate, RNS.Destination.encrypt/decrypt (ECDH + AES token + ratchets), RNS.Cryptography.hkdf, and the size constants RNS.Identity.TRUNCATED_HASHLENGTH (128), SIGLENGTH (512), HASHLENGTH (256), RNS.Packet.ENCRYPTED_MDU/PLAIN_MDU, RNS.Link.MDU. Their exact behaviour-as-used is pinned by the test vectors.