ruv
ffeaa46bc6
feat(firmware): QEMU ESP32-S3 testing platform (ADR-061)
...
Implement full QEMU emulation framework for firmware testing without
physical hardware:
Mock CSI Generator (mock_csi.c):
- 10 test scenarios: empty room, static/walking person, fall, multi-person,
channel sweep, MAC filter, ring overflow, boundary RSSI, zero-length
- Physics-based signal model with breathing modulation and Doppler
- LFSR pseudo-random noise, CONFIG_CSI_MOCK_ENABLED Kconfig guard
- Scenario 255 runs all sequentially
QEMU Runner & CI:
- qemu-esp32s3-test.sh: build, merge flash image, run QEMU, validate
- validate_qemu_output.py: 14 automated checks (boot, NVS, edge, vitals,
crash detection) with colored output and severity-based exit codes
- generate_nvs_matrix.py: 14 NVS provisioning configs for matrix testing
- firmware-qemu.yml: GitHub Actions CI with 4-scenario matrix
Fuzz Testing:
- 3 libFuzzer targets: CSI serialize, NVS config validation, ring buffer
- Host-compilable ESP-IDF stubs (no ESP-IDF dependency for fuzzing)
- 6 seed corpus files for guided fuzzing
- Makefile with ASAN + UBSAN sanitizers
Documentation:
- firmware/esp32-csi-node/README.md: comprehensive QEMU testing guide
- Root README.md: collapsed QEMU testing section
Build verified: normal firmware build (RC=0) with mock_csi excluded.
Closes #259
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-13 09:17:07 -04:00
ruv
8b57a6f64c
docs: update README with ADR-045–048, Observatory, adaptive classifier, AMOLED display
...
- Update ADR count from 44 to 48
- Add adaptive classifier (ADR-048) to Intelligence features
- Add Observatory visualization (ADR-047) and AMOLED display (ADR-045) to Deployment features
- Update screenshot to v2-screen.png
- Add ADR-045 (AMOLED), ADR-046 (Android TV), ADR-047 (Observatory), DDD deployment model
- Add AMOLED display firmware (display_hal, display_task, display_ui, LVGL config)
- Add Observatory UI (13 Three.js modules, CSS, HTML entry point)
- Add trained adaptive model JSON
- Update .gitignore for managed_components, recordings, .swarm
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-05 10:20:48 -05:00
ruv
4b1005524e
feat: complete vendor repos, add edge intelligence and WASM modules
...
- Add 154 missing vendor files (gitignore was filtering them)
- vendor/midstream: 564 files (was 561)
- vendor/sublinear-time-solver: 1190 files (was 1039)
- Add ESP32 edge processing (ADR-039): presence, vitals, fall detection
- Add WASM programmable sensing (ADR-040/041) with wasm3 runtime
- Add firmware CI workflow (.github/workflows/firmware-ci.yml)
- Add wifi-densepose-wasm-edge crate for edge WASM modules
- Update sensing server, provision.py, UI components
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-02 23:53:25 -05:00
ruv
7872987ee6
fix(docker): Update Dockerfile paths from src/ to v1/src/
...
The source code was moved to v1/src/ but the Dockerfile still
referenced src/ directly, causing build failures. Updated all
COPY paths, uvicorn module paths, test paths, and bandit scan
paths. Also added missing v1/__init__.py for Python module
resolution.
Fixes #33
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-02-28 13:38:21 -05:00
rUv
92a5182dc3
feat(adr-018): ESP32-S3 firmware, Rust aggregator, and live CSI pipeline
...
Complete end-to-end WiFi CSI capture pipeline verified on real hardware:
- ESP32-S3 firmware: WiFi STA + promiscuous mode CSI collection,
ADR-018 binary serialization, UDP streaming at ~20 Hz
- Rust aggregator CLI binary (clap): receives UDP frames, parses with
Esp32CsiParser, prints per-frame summary (node, seq, rssi, amp)
- UDP aggregator module with per-node sequence tracking and drop detection
- CsiFrame bridge to detection pipeline (amplitude/phase/SNR conversion)
- Python ESP32 binary parser with UDP reader
- Presence detection confirmed: motion score 10/10 from live CSI variance
Hardware verified: ESP32-S3-DevKitC-1 (CP2102, MAC 3C:0F:02:EC:C2:28),
Docker ESP-IDF v5.2 build, esptool 5.1.0 flash, 20 Rust + 6 Python tests pass.
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-02-28 13:22:04 -05:00