wifi-densepose/ui/components
arsen 6ce25cec79 feat(adr-117): process hygiene + pose path honesty + audit sweep
Audit fix bundle (10 areas; details in ADR-117 + commit body below).

Server (main.rs / wiflow_v1.rs):
- UDP receiver filters loopback/multicast/unspecified before NODE_ADDRS
  registration. Defends against `cargo test` cross-talk that spawned
  250+ ping zombies on the production server's :5005 port.
- csi_keepalive_task pre-reaps `/sbin/ping -i 0.040` orphans at task
  entry. macOS doesn't propagate parent death, so killed servers used
  to leave init-parented pings running indefinitely.
- run_wiflow_inference stamps real classifier confidence onto every
  keypoint (was hardcoded 1.0) — reads 0.037 on live data, honest.
- run_wiflow_inference clones only the tail-20 frames inside the lock,
  not the full 600-deep VecDeque (~270 KB → ~9 KB per tick).
- wiflow_v1::build_input_from_history: zero-pad dead channel slots
  instead of duplicating subcarrier 0 across all of them. Comment said
  "zero the rest", prior code did the opposite.
- GET / now 308-redirects to /ui/index.html; API index moved to /api.

UI (ui/index.html, ui/components/LiveDemoTab.js):
- <section id="sensing"> gets a <div id="sensing-container"> child so
  app.js::SensingTab.mount has its mount point. Sensing tab was
  permanently blank.
- LiveDemoTab.fetchModels: only inject WiFlow into the dropdown if no
  RVF model is already active. Prevents silent flip back to WiFlow
  after every poll.

Tests (multi_node_test.rs):
- test_multi_node_udp_send probes 127.0.0.1:5005 first; if bind fails
  (e.g. a dev server is running), skip the send. Two-layer defense
  with the server-side filter above.

Docs (CHECKLIST.md, ADR-115, espectre-gap-analysis.md, ota-pipeline.md):
- CHECKLIST head sha + count refreshed (43→47 Done, head 0ec1e4b0,
  ADR range to 001-117 with ADR-111 noted as intentionally absent).
- ADR-115 typo fixes: "ADR-100" → "ADR-110" (TP-Link WISP),
  "ADR-111" → "ADR-109" (AP-MAC tracking actually lives there).
- gap-analysis "Still open" table: 8 shipped items annotated with
  commit hashes; remainder reclassified Deferred with reason.
- ota-pipeline.md: new "Operator REST endpoints" section listing
  /ota/recalibrate (ADR-109) and /ota/set-target (ADR-115) with
  unauthed + bearer-token curl examples.

Verified post-restart:
- exactly 2 ping children, both parented to current PID, one per real
  sensor IP, no 127.0.0.1.
- GET / → 308 → /ui/index.html.
- /api/v1/info: pose_estimation=true, version 0.3.0.
- /api/v1/pose/current: 17 COCO keypoints, confidence 0.037 (real).
- cargo test --workspace: 13 passed / 0 failed / 5 ignored.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:24:04 +07:00
..
DashboardTab.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
HardwareTab.js security: Fix XSS vulnerabilities in UI components 2026-02-28 20:40:00 +01:00
LiveDemoTab.js feat(adr-117): process hygiene + pose path honesty + audit sweep 2026-05-17 19:24:04 +07:00
ModelPanel.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
PoseDetectionCanvas.js feat(adr-105): hide pose canvas in Docker SPA when no model is loaded 2026-05-17 16:34:04 +07:00
SensingTab.js feat: dynamic classifier classes, per-node UI, XSS fix, RSSI fix 2026-03-27 21:21:15 -07:00
SettingsPanel.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
TabManager.js Add comprehensive CSS styles for UI components and dark mode support 2025-06-07 13:28:02 +00:00
TrainingPanel.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
body-model.js feat: CI pipeline verification, 3D body model, auth fixes, requirements lock 2026-02-28 06:20:08 +00:00
dashboard-hud.js feat: Add hardware requirement notice to README, additional Three.js viz components 2026-02-28 06:26:10 +00:00
environment.js feat: Add hardware requirement notice to README, additional Three.js viz components 2026-02-28 06:26:10 +00:00
gaussian-splats.js feat: dynamic classifier classes, per-node UI, XSS fix, RSSI fix 2026-03-27 21:21:15 -07:00
scene.js feat: Add commodity sensing, proof bundle, Three.js viz, mock isolation 2026-02-28 06:18:58 +00:00
signal-viz.js feat: Add hardware requirement notice to README, additional Three.js viz components 2026-02-28 06:26:10 +00:00