Aurora Reticulum TCP interop + mesh/RNode reliability fixes #70
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "worktree-reticulum-tcp-interop"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
auto_detect_and_open/open_preferred_pathtried Meshcore and Meshtastic before Reticulum, adding ~10s of unnecessary probing (and, on hardware with slower boot chatter, contributing to missed detections) before a real RNode ever got a turn.ARCHY:n:identity announce created a second, wrongly-keyedMeshPeerrow instead of binding the identity onto the correct RNS-hash-keyed radio peer, so native LXMF sends resolved to a peer keyed by the wrong identifier space and always failed with "Unknown Reticulum prefix ... peer hasn't announced yet" — confirmed live between two real nodes that could see each other's adverts but never exchange a message.Test plan
cargo test -p archipelago— 108/108 mesh tests pass, no regressionsevent: delivered) in both directions after these fixes plus aligning both radios' spreading factor (separate hardware misconfiguration, unrelated to this code, fixed via the archy-rnodeconf tooling in the stacked PR)probe_rnode_detects_real_hardware(ignored, real-hardware test) passes against the fixed timeout🤖 Generated with Claude Code
Review (pre-merge): LGTM — merging (with #71 already folded in). Highlights and one tracked caveat:
PROBE_READ_TIMEOUTbump has a concrete measurement (~1.05s on Heltec V4 fw 1.86) behind it.reticulum_tcp: Noneleaves the serial path untouched, the server bind is loopback-gated in BOTH Python and Rust (defense in depth), and it's deliberately not exposed viamesh.configure. The#[ignore]d end-to-end test spawning two real daemons is a nice touch.ARCHY:identity blob in an RNS announce is claim-based — any RNS identity can assert any archy ed25519 pubkey, there's no proof-of-possession in that blob — andrefresh_contactsnow prefers the in-band value over a previously boundarch_pubkey_hex. A hostile announce could re-bind a contact row to a victim's pubkey and get merged into their conversation bygroup_peer_twins(their signed traffic would still fail verification, but thread-level spoofing/confusion is possible). Suggest a follow-up: only accept an in-band rebind when it matches the existing binding or the slot is empty, or add a signed-announce challenge. Filed mentally against the mesh-signing workstream (§C mesh preimage work is adjacent).Post-merge,
maingets a build + mesh-suite run on .116 before the next fleet deploy.Reviewed and verified: Aurora Reticulum TCP interop (optional plain-TCP Reticulum interface for radio-less interop) plus mesh/RNode reliability fixes — DTR/RTS deassert before serial probes (ESP32-S3 native-USB reset), Reticulum/RNode probed before Meshcore/Meshtastic in auto-detect, peer identity bound directly instead of name-matching, and the KISS-detect read window widened 800ms→2.5s. Includes the #71 rnodeconf packaging via
e64e5615. Branch updated with latest main (83352707), clean merge. Merging into main.