Skip to content

Interoperability Matrix

The v0.4 cycle-C deliverable: for the five focus plugins (LXMF, Meshtastic, MeshCore, MQTT, Signal) every interop dimension is either backed by a named automated test or verified against live infrastructure. No cell is assumed.

Legend: โœ… automated test (named) ยท ๐ŸŒ verified against real infrastructure (Live & Field Testing) ยท โš™ by-construction (provided by a library/daemon mechanism, exercised indirectly).

Dimension MQTT LXMF Signal Meshtastic MeshCore
Inbound โœ… e2e bridges_dedups_and_suppresses_echo ยท ๐ŸŒ tier 0 โœ… suite ยท ๐ŸŒ live RNS backbone โœ… test_inbound_mapped_group_bridges ยท ๐ŸŒ tier 2 โœ… test_text_ok ยท ๐ŸŒ tier 0 + real node โœ… suite ยท ๐ŸŒ hardware
Outbound โœ… e2e + PUBACK-gated DeliveryTracker โœ… test_delivered_when_any_member_succeeds ยท ๐ŸŒ โœ… test_send_success_records_loop_guard ยท ๐ŸŒ โœ… send suite ยท ๐ŸŒ real downlink โœ… suite ยท ๐ŸŒ hardware
Replies (round-trip) โœ… e2e round-trip ยท ๐ŸŒ tier 0 ๐ŸŒ field-tested ๐ŸŒ tier 2 ๐ŸŒ real node ๐ŸŒ hardware
Attachments n/a (text-only capability; daemon demotes: โœ… e2e attachment_egress_is_capability_aware) โœ… media suite (images, codec2 voice, caps) โœ… attachment suite (traversal, caps, notes) n/a (text-only; daemon demotes โœ…) n/a (text-only; daemon demotes โœ…)
Reconnect โš™ rumqttc auto-reconnect โš™ RNS-managed links โš™ SSE reader + supervisor restart โš™ paho connect_async + auto-reconnect, re-subscribe on connect โœ… exits on radio disconnect โ†’ supervisor backoff restart (by design)
Dedup / loop guard โœ… MQTT v5 No-Local + daemon dedup e2e โœ… SentCache suite โœ… test_match_consumes, sync-echo drop โœ… SentCache echo suite โœ… SentCache suite
Offline queue โœ… e2e queues_for_offline_plugin_and_survives_restart (daemon-side, protocol-independent) โœ… same + propagation-node fallback tests โœ… same โœ… same โœ… same
Restart recovery โœ… same e2e (daemon kill + restart, queue + attachments survive) + supervisor backoff ladder โœ… โœ… โœ… โœ…
Max payload โœ… caps + daemon truncation e2e โœ… per-attachment caps โœ… caps โœ… hello_max_payload two-layer cap โœ… hello_max_payload two-layer cap
Failure injection โœ… tracker ignores orphan acks; broker-down tolerated (connect_async) โœ… all-members-fail, double-fire, proof-timeout tests โœ… test_send_failure_reports_detail โœ… publish-failure suite โœ… send-failure suite

The daemon-side dimensions (offline queue, restart recovery, priority ordering, rate limits, transport-class demotion) are protocol-independent and covered once in switchyardd/tests/e2e.rs: every plugin inherits them through the same IPC surface.