Repository navigation
Bound open-mesh routing and expose field diagnostics - #26
Merged
Merged
Conversation
TimoWielink
marked this pull request as ready for review
October 22, 2026 09:46
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
42e9ec82262aea457fccee46ca52cf14c7f2eb7e(run).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.mdfor the wire contract, diagnostics and acceptance limits. Deployment pin, boot formatting fix and external harness are onProject-Owl/phoenix-zoo:fir-23-soak-candidate.The final portability fix includes
<optional>explicitly inDuckWifi.h, correcting the fresh GitHub runner build with the newer ESP32 toolchain.Tracking: FIR-23, FIR-15, FIR-8.