Skip to content

Bound open-mesh routing and expose field diagnostics - #26

Merged
TimoWielink merged 3 commits into
phoenix-2026from
fir-23-open-mesh-reliability
Oct 22, 2026
Merged

TimoWielink merged 3 commits into
phoenix-2026from
fir-23-open-mesh-reliability

Conversation

@TimoWielink

@TimoWielink TimoWielink commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Route discovery can turn a small startup into repeated RREP floods, while public/private join state can stop an otherwise usable open mesh. This makes routing operate whenever the local radio is ready, bounds control propagation and duplicate handling, and sends replies along the reverse path while preserving responder identity and request correlation. In the same four-node, ten-minute host scenario, RREPs fall from 153 to 9 (3 RREQs in both runs).

The change returns the actual next hop, retains fresh alternate routes, separates direct neighbor observations from indirect routes, reports bounded signal snapshots and rotating queue/radio/routing health pages, and returns enqueue failures honestly. Radio completion and timeout handling retain the September IRQ/CRC fixes. The physical LoRa limit is enforced at 255 total bytes / 228 application bytes. Runtime logs identify the source revision.

Validation:

  • GitHub Arduino CI, including cppcheck and clean-runner DuckLink/MamaDuck SX1262 builds, passed at 42e9ec82262aea457fccee46ca52cf14c7f2eb7e (run).
  • Actual CDP code exercised with AddressSanitizer and UndefinedBehaviorSanitizer using the external deployment host harness: route loss/return, reverse paths, duplicate control traffic, reboot recovery, queue pressure, rollover, direct/indirect observations, capacity and serialization boundaries.
  • T-Beam SX1262 and SX1276 builds passed. Deployment builds passed for ML, RP01, RP02 and Papa. Papa also passed a subsequent build using its real locally stored Amsterdam credentials; no credentials or firmware are included in this PR.
  • Actual Loggy packet decoding and physical TX_DONE counting passed; the DMS formatter preserved the three-peer signal fixture.

Hardware qualification remains open after software integration. No boards have been flashed and no 24-hour candidate soak is claimed. All nodes in a qualification run should use the same protocol candidate. See docs/phoenix-open-mesh.md for the wire contract, diagnostics and acceptance limits. Deployment pin, boot formatting fix and external harness are on Project-Owl/phoenix-zoo:fir-23-soak-candidate.

The final portability fix includes <optional> explicitly in DuckWifi.h, correcting the fresh GitHub runner build with the newer ESP32 toolchain.

Tracking: FIR-23, FIR-15, FIR-8.

@TimoWielink
TimoWielink marked this pull request as ready for review October 22, 2026 09:46
@TimoWielink
TimoWielink merged commit 3d85aa0 into phoenix-2026 Oct 22, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant