Skip to content

feat(server): opt-in phase-channel diagnostics - #1810

Open
clonea1 wants to merge 2 commits into
ruvnet:mainfrom
clonea1:contrib/server-phase-diag
Open

clonea1 wants to merge 2 commits into
ruvnet:mainfrom
clonea1:contrib/server-phase-diag

Conversation

@clonea1

@clonea1 clonea1 commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Phase is the channel every published CSI technique leans on -- Doppler,
direction of arrival, breathing extraction -- and there is no way to see what
the phase channel on a given deployment actually contains. When a phase-based
method fails, nothing distinguishes "the algorithm is wrong" from "the phase on
this hardware is unusable".

Adds phase_diag.rs (600 lines, 8 tests): an opt-in sink recording raw and
sanitised per-frame phase to CSV for offline analysis, behind
--phase-diagnostics

. Off unless the flag is given.

Single-antenna ESP32 CSI carries a packet-detection timing offset appearing as
a phase slope across subcarrier index, and it is large -- on this hardware
roughly 758 radians per ADC sample of jitter. That is not noise to be averaged
away; it swamps the physical phase entirely, and the sanitised channel is what
remains after detrending it. Comparing the two on real captures is the only way
to judge whether a phase-based method has signal to work with on a given board.


Rebased onto current main before opening: staged before today's seven merges, so it needed replaying to avoid reading as a revert of them. Clean rebase, no files deleted.

Joe and others added 2 commits September 4, 2026 15:02
Phase is the channel every published CSI technique leans on -- Doppler,
direction of arrival, breathing extraction -- and there is no way to see what
the phase channel on a given deployment actually contains. When a phase-based
method fails, nothing distinguishes "the algorithm is wrong" from "the phase on
this hardware is unusable".

Adds phase_diag.rs (600 lines, 8 tests): an opt-in sink recording raw and
sanitised per-frame phase to CSV for offline analysis, behind
--phase-diagnostics <dir>. Off unless the flag is given.

Single-antenna ESP32 CSI carries a packet-detection timing offset appearing as
a phase slope across subcarrier index, and it is large -- on this hardware
roughly 758 radians per ADC sample of jitter. That is not noise to be averaged
away; it swamps the physical phase entirely, and the sanitised channel is what
remains after detrending it. Comparing the two on real captures is the only way
to judge whether a phase-based method has signal to work with on a given board.

Co-Authored-By: claude-flow <ruv@ruv.net>

This branch has not been deployed

No deployments
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