Repository navigation
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Description
The community batch from @aepod (PRs #2100-#2157) was integrated and merged in #2163. This issue tracks what that release did not finish, in plain terms, so nothing is lost.
Still to do
Needs hardware evidence
- MR60 radar detection (fix(firmware): stop the MR60 probe claiming LD6002B/LD6004, accept 0x0A04 frames #2142). Held. The new rule only recognises an MR60BHA2 after seeing specific frames, so an idle radar would no longer be detected, and one conflicting frame makes the answer permanently "ambiguous". Needs a captured boot log from a real MR60BHA2 (and ideally an LD6002B) before it can merge.
- OTA health check (ADR-379). Still unverified on hardware: the 120-second "no network" path, a true power cycle, and the ESP32-C6 failure case.
- Re-run the live node check from fix(training): train from real sensing recordings, per node #2101 (training from real recordings) on the merged code.
Known behaviour that is only partly fixed
- Mixed frame shapes still drop frames (fix(sensing-server): lock the CSI grid gate on the majority grid and report a stalled pipeline on /health #2157). If one node alternates between 192- and 306-subcarrier frames, about 47% of its frames can still be dropped. This does not close sensing-server: processing loop silently stops with >1 ESP32 node — /health tick freezes while HTTP keeps serving (stale readings, calibration lost) #1894. Also: calibration can pick a different grid than the gate, and the coherence gate is fed a hard-coded clock-quality score (fix(multistatic): only combine phase across nodes that declare a shared reference #2156).
- Privacy mode is a key allowlist (fix(sensing-server): apply --privacy-mode to REST, WebSocket and recordings #2125). A newly added biometric field leaks until its name is added to the list. States derived from vitals ("sleeping", "distress") still pass through. Consider a deny-by-default design.
- Home Assistant leftovers (feat(mqtt): wire semantic states into the publisher, announce only sourced entities #2117). Installs from before this release keep six retained discovery entries. Publish empty configs to clear them, or document the manual step.
Decisions needed
- Licence (docs(mediatek): OpenWrt WN586X3 CSI patch set, router CSI guide, ADR-266 amendment #2116). The vendored MediaTek CSI patch is BSD-3-Clause-Clear in an MIT OR Apache-2.0 repo.
NOTICErecords it, but a maintainer should confirm this is acceptable and review the patch before anyone flashes it (it changes router firmware). - feat(survey): check-mode node self-survey from pairwise ranges (ADR-381) #2145 size. About 2,050 lines in one change (node self-survey, ADR-381). Consider splitting. Also confirm the "fill" gate in that check-only change is inert.
- feat(wifiscan): optional MacWifi.app for real SSID/BSSID via Location Services #2106 (MacWifi.app, draft). Needs the trust and privacy notes (it runs any helper found in the standard app folders, and shows the real network name in the API) before it can merge.
Issues with no fix yet
-
provision.py --tdm-slot/--tdm-totalis stored in NVS but nothing uses it #2098 Theprovision.py --tdm-slot/--tdm-totalsetting is stored on the device but never used. - Firmware releases: latest stable is v0.8.8, main is 0.8.12, and the 0.8.13 pre-release isn't on main #2092 Firmware release cadence: latest stable is v0.8.8,
mainis 0.8.12, and the 0.8.13 pre-release is not onmain. - MQTT:
presence/statepublishes ~73 msg/s per node; HA devices change id on every restart #2093 The remaining MQTT presence-rate and stable-ID items beyond what feat(mqtt): wire semantic states into the publisher, announce only sourced entities #2117 covered.
Housekeeping
- Close the 38 original PRs as superseded by release: integrate aepod PRs #2100-#2157 (38 PRs, review fixes, validated) #2163 (or note which commits they landed in). They are not closed yet.
- The C5 firmware branch needs a new ADR number: ADR-368 is already used. ADR-379 to 382 are taken by this batch.
- Two private security advisories are in triage (recording path traversal, unauthenticated WASM control on node port 8032). They have no public patch and are tracked separately.
- Add a unit test for the symlink-refusal path in
provision.py(it is skipped on Windows).
Evidence note
Test results on the merged code are MEASURED (see #2163). Live-hardware numbers in the original PRs are the contributor's own and are CLAIMED until reproduced.
🤖 Generated with claude-flow
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Activity
fix(sensing-server): make --privacy-mode deny-by-default