mirror of
https://github.com/ruvnet/RuView.git
synced 2026-10-23 07:02:44 -05:00
A C6 node's CSI callbacks stopped for 473 s while Wi-Fi, ping, ESP-NOW, the console and RUVIEW_HELLO stayed healthy. The uplink watchdog cannot see this: adaptive-controller and mesh packets keep sendto() succeeding. Capture watchdog (ADR-364): - the CSI callback stamps raw-callback and CSI-send liveness (uint32 ms) - a pure, host-tested policy (csi_stall_policy.c) escalates one CSI_STALL_TIMEOUT_S (15 s) step at a time: re-arm the capture path, force reassociation, restart; paused while the link is down, armed only after first capture, off under power duty-cycling, radio-only liveness when a source-MAC filter is active - test-only CONFIG_CSI_STALL_INJECT_MODE to prove the ladder on silicon Send gate: a second 20 ms gate timed from the send, not the accept, discarded frames the mesh-aligned process gate accepted 10-20 ms apart (seq steps were only +1/+2). It is now a burst guard at the process gate's floor. MEASURED on ESP32-C6 node 42 (scripts/benchmark-esp32-csi.py, new): - sequence loss 21-28% -> 0.08-0.15%; 0 false triggers over 855 s - injected transient stall: detected +15.0 s, re-armed, host outage 15.2-15.3 s, no reassoc/reboot (2 runs) - injected persistent stall: re-arm, reassoc, restart; outage 52.9 s Host tests (make host_tests) pass; ASan/UBSan clean; C6 and S3 build with no new warnings. Co-Authored-By: claude-flow <ruv@ruv.net>