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.