You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
app,server,web: the noise floor the app measures never leaves the phone, so the map and its exports cannot show it #719
The app measures the companion's noise floor per cell (#410, #698), and #708 (PR #711) shows the value in the cell and the HUD. The samples stay on the phone for 7 days. Nothing publishes them:
The site broker gets receptions only. The ingestor subscribes to meshcore/hunter/+/packets and nothing else (server/internal/config/config.go:54).
The wardrive track has no noise field. Its fields are v, origin_id, t0, t1, lat, lon, accuracy, rx_count, listening, src (AGENTS.md:755, app/src/wardrive.js:106).
So the map has no noise layer, and an export (#665) cannot say whether a stretch without a repeater was out of reach or drowned in noise, the question behind #277. The map can only estimate noise from each reception's RSSI and SNR. That estimate is untested: on the export of 7 September 2026 it puts 52 of 174 cells where a repeater was not heard in the loudest band (≥ -101 dBm).
Expected behaviour
Every noise sample the app takes reaches the server, tied to the companion that measured it (rx_pubkey), like a reception. The web map gets a noise layer over all hunters' samples, in the app's bands (NOISE_BANDS, app/src/noise.js:98). Exports read from that layer. The wardrive track carries the noise of its interval.
The ingestor stores the samples. A read API returns the median per cell for a bbox and a time window, with the rule of noiseCells: a parked session counts once per cell. Same role rules as /api/points.
The web map has a noise layer in the app's bands.
The wardrive track gets noise: the median of the samples in its interval, left out when there are none. AGENTS.md §9 lists the new field.
Unit tests for the payload, the per-cell median and the track field; an e2e test for the web layer. Each new test is mutation-checked.
Component:
app,server,webProblem
The app measures the companion's noise floor per cell (#410, #698), and #708 (PR #711) shows the value in the cell and the HUD. The samples stay on the phone for 7 days. Nothing publishes them:
meshcore/hunter/+/packetsand nothing else (server/internal/config/config.go:54).v, origin_id, t0, t1, lat, lon, accuracy, rx_count, listening, src(AGENTS.md:755,app/src/wardrive.js:106).So the map has no noise layer, and an export (#665) cannot say whether a stretch without a repeater was out of reach or drowned in noise, the question behind #277. The map can only estimate noise from each reception's RSSI and SNR. That estimate is untested: on the export of 7 September 2026 it puts 52 of 174 cells where a repeater was not heard in the loudest band (≥ -101 dBm).
Expected behaviour
Every noise sample the app takes reaches the server, tied to the companion that measured it (
rx_pubkey), like a reception. The web map gets a noise layer over all hunters' samples, in the app's bands (NOISE_BANDS,app/src/noise.js:98). Exports read from that layer. The wardrive track carries the noise of its interval.Acceptance criteria
noiseCells: a parked session counts once per cell. Same role rules as/api/points.noise: the median of the samples in its interval, left out when there are none.AGENTS.md§9 lists the new field.Not in this issue
Related
#277, #410, #698, #708, #665.