Goal
Advance the TRI-NET radio link from a validated single-burst modem to an end-to-end encrypted mesh running over the modem transport, all HOST-TESTABLE (no new hardware). Continues tri-net#9 (radio PHY) and feeds #11-#14 (M2-M5) over radio.
Where we are (merged on trios-mesh main)
Incremental increments (host-testable, in order)
- CFO-robust streaming receiver. Turn
rx_recover from single-burst into a continuous-stream receiver: idle-noise burst detection, retry-next-excursion when a lock fails to demodulate, multi-burst demux, and a normalized/differential detector so the sync gate holds near the CFO edge (0.03-0.038 cyc/sym) instead of the current ~3% loss. (This is the already-flagged follow-up.)
- Mesh-over-modem. Wire
ModemTransport into the meshd so the encrypted mesh (X25519/ChaCha20 M1 + ETX routing/forwarding M2/M3) runs OVER the modem transport through a simulated radio channel (fractional delay + CFO + AWGN), proving multi-hop mesh-over-radio end-to-end in simulation.
- (Hardware-gated) AD9361 cabled loopback TX/RX on a Mini for a real 2-node radio link — needs an SMA cable + 30-40 dB attenuator (OTA illegal in Thailand). Do NOT attempt without confirmed cabling; leave a clear hook.
Method & gates
Same as what worked: deterministic fuzz (LCG+Box-Muller, no rand), then an adversarial refute pass on each new behavior. cargo fmt + clippy -D warnings + bash scripts/verify.sh green; add tests per increment; small reviewable PRs.
Done
A host test shows an encrypted mesh frame routed 2 hops through the modem transport over a delay+CFO+AWGN channel and decrypted intact; streaming RX recovers back-to-back bursts with leading idle noise. Hardware step left as a gated hook.
phi^2 + phi^-2 = 3
Goal
Advance the TRI-NET radio link from a validated single-burst modem to an end-to-end encrypted mesh running over the modem transport, all HOST-TESTABLE (no new hardware). Continues tri-net#9 (radio PHY) and feeds #11-#14 (M2-M5) over radio.
Where we are (merged on trios-mesh main)
ModemTransport(PR feat(mesh) P1: radio-Transport -> end-to-end mesh-over-modem (streaming RX + meshd integration), host-testable #15). bpsk host-fuzzed at 0 loss; CFO clean to ~0.03 cyc/sym.rx_recoveris a SINGLE-burst decoder;ModemTransportis an in-process burst queue.Incremental increments (host-testable, in order)
rx_recoverfrom single-burst into a continuous-stream receiver: idle-noise burst detection, retry-next-excursion when a lock fails to demodulate, multi-burst demux, and a normalized/differential detector so the sync gate holds near the CFO edge (0.03-0.038 cyc/sym) instead of the current ~3% loss. (This is the already-flagged follow-up.)ModemTransportinto the meshd so the encrypted mesh (X25519/ChaCha20 M1 + ETX routing/forwarding M2/M3) runs OVER the modem transport through a simulated radio channel (fractional delay + CFO + AWGN), proving multi-hop mesh-over-radio end-to-end in simulation.Method & gates
Same as what worked: deterministic fuzz (LCG+Box-Muller, no
rand), then an adversarial refute pass on each new behavior.cargo fmt+clippy -D warnings+bash scripts/verify.shgreen; add tests per increment; small reviewable PRs.Done
A host test shows an encrypted mesh frame routed 2 hops through the modem transport over a delay+CFO+AWGN channel and decrypted intact; streaming RX recovers back-to-back bursts with leading idle noise. Hardware step left as a gated hook.
phi^2 + phi^-2 = 3