|
| 1 | +# Architecture Decision Records |
| 2 | + |
| 3 | +This folder contains 44 Architecture Decision Records (ADRs) that document every significant technical choice in the RuView / WiFi-DensePose project. |
| 4 | + |
| 5 | +## Why ADRs? |
| 6 | + |
| 7 | +Building a system that turns WiFi signals into human pose estimation involves hundreds of non-obvious decisions: which signal processing algorithms to use, how to bridge ESP32 firmware to a Rust pipeline, whether to run inference on-device or on a server, how to handle multi-person separation with limited subcarriers. |
| 8 | + |
| 9 | +ADRs capture the **context**, **options considered**, **decision made**, and **consequences** for each of these choices. They serve three purposes: |
| 10 | + |
| 11 | +1. **Institutional memory** — Six months from now, anyone (human or AI) can read *why* we chose IIR bandpass filters over FIR for vital sign extraction, not just see the code. |
| 12 | + |
| 13 | +2. **AI-assisted development** — When an AI agent works on this codebase, ADRs give it the constraints and rationale it needs to make changes that align with the existing architecture. Without them, AI-generated code tends to drift — reinventing patterns that already exist, contradicting earlier decisions, or optimizing for the wrong tradeoffs. |
| 14 | + |
| 15 | +3. **Review checkpoints** — Each ADR is a reviewable artifact. When a proposed change touches the architecture, the ADR forces the author to articulate tradeoffs *before* writing code, not after. |
| 16 | + |
| 17 | +### ADRs and Domain-Driven Design |
| 18 | + |
| 19 | +The project uses [Domain-Driven Design](../ddd/) (DDD) to organize code into bounded contexts — each with its own language, types, and responsibilities. ADRs and DDD work together: |
| 20 | + |
| 21 | +- **ADRs define boundaries**: ADR-029 (RuvSense) established multistatic sensing as a separate bounded context from single-node CSI. ADR-042 (CHCI) defined a new aggregate root for coherent channel imaging. |
| 22 | +- **DDD models define the language**: The [RuvSense domain model](../ddd/ruvsense-domain-model.md) defines terms like "coherence gate", "dwell time", and "TDM slot" that ADRs reference precisely. |
| 23 | +- **Together they prevent drift**: An AI agent reading ADR-039 knows that edge processing tiers are configured via NVS keys, not compile-time flags — because the ADR says so. The DDD model tells it which aggregate owns that configuration. |
| 24 | + |
| 25 | +### How ADRs are structured |
| 26 | + |
| 27 | +Each ADR follows a consistent format: |
| 28 | + |
| 29 | +- **Context** — What problem or gap prompted this decision |
| 30 | +- **Decision** — What we chose to do and how |
| 31 | +- **Consequences** — What improved, what got harder, and what risks remain |
| 32 | +- **References** — Related ADRs, papers, and code paths |
| 33 | + |
| 34 | +Statuses: **Proposed** (under discussion), **Accepted** (approved and/or implemented), **Superseded** (replaced by a later ADR). |
| 35 | + |
| 36 | +--- |
| 37 | + |
| 38 | +## ADR Index |
| 39 | + |
| 40 | +### Hardware and firmware |
| 41 | + |
| 42 | +| ADR | Title | Status | |
| 43 | +|-----|-------|--------| |
| 44 | +| [ADR-012](ADR-012-esp32-csi-sensor-mesh.md) | ESP32 CSI Sensor Mesh for Distributed Sensing | Accepted (partial) | |
| 45 | +| [ADR-018](ADR-018-esp32-dev-implementation.md) | ESP32 Development Implementation Path | Proposed | |
| 46 | +| [ADR-028](ADR-028-esp32-capability-audit.md) | ESP32 Capability Audit and Witness Record | Accepted | |
| 47 | +| [ADR-029](ADR-029-ruvsense-multistatic-sensing-mode.md) | RuvSense Multistatic Sensing Mode (TDM, channel hopping) | Proposed | |
| 48 | +| [ADR-032](ADR-032-multistatic-mesh-security-hardening.md) | Multistatic Mesh Security Hardening | Accepted | |
| 49 | +| [ADR-039](ADR-039-esp32-edge-intelligence.md) | ESP32-S3 Edge Intelligence Pipeline (on-device vitals) | Accepted (hardware-validated) | |
| 50 | +| [ADR-040](ADR-040-wasm-programmable-sensing.md) | WASM Programmable Sensing (Tier 3) | Accepted | |
| 51 | +| [ADR-041](ADR-041-wasm-module-collection.md) | WASM Module Collection (65 edge modules) | Accepted (hardware-validated) | |
| 52 | +| [ADR-044](ADR-044-provisioning-tool-enhancements.md) | Provisioning Tool Enhancements | Proposed | |
| 53 | + |
| 54 | +### Signal processing and sensing |
| 55 | + |
| 56 | +| ADR | Title | Status | |
| 57 | +|-----|-------|--------| |
| 58 | +| [ADR-013](ADR-013-feature-level-sensing-commodity-gear.md) | Feature-Level Sensing on Commodity Gear | Accepted | |
| 59 | +| [ADR-014](ADR-014-sota-signal-processing.md) | SOTA Signal Processing Algorithms | Accepted | |
| 60 | +| [ADR-021](ADR-021-vital-sign-detection-rvdna-pipeline.md) | Vital Sign Detection (breathing, heart rate) | Partial | |
| 61 | +| [ADR-030](ADR-030-ruvsense-persistent-field-model.md) | Persistent Field Model and Drift Detection | Proposed | |
| 62 | +| [ADR-033](ADR-033-crv-signal-line-sensing-integration.md) | CRV Signal Line Sensing Integration | Proposed | |
| 63 | +| [ADR-037](ADR-037-multi-person-pose-detection.md) | Multi-Person Pose Detection from Single ESP32 | Proposed | |
| 64 | +| [ADR-042](ADR-042-coherent-human-channel-imaging.md) | Coherent Human Channel Imaging (beyond CSI) | Proposed | |
| 65 | + |
| 66 | +### Machine learning and training |
| 67 | + |
| 68 | +| ADR | Title | Status | |
| 69 | +|-----|-------|--------| |
| 70 | +| [ADR-005](ADR-005-sona-self-learning-pose-estimation.md) | SONA Self-Learning for Pose Estimation | Partial | |
| 71 | +| [ADR-006](ADR-006-gnn-enhanced-csi-pattern-recognition.md) | GNN-Enhanced CSI Pattern Recognition | Partial | |
| 72 | +| [ADR-015](ADR-015-public-dataset-training-strategy.md) | Public Dataset Strategy (MM-Fi, Wi-Pose) | Accepted | |
| 73 | +| [ADR-016](ADR-016-ruvector-integration.md) | RuVector Training Pipeline Integration | Accepted | |
| 74 | +| [ADR-017](ADR-017-ruvector-signal-mat-integration.md) | RuVector Signal + MAT Integration | Proposed | |
| 75 | +| [ADR-020](ADR-020-rust-ruvector-ai-model-migration.md) | Migrate AI Inference to Rust (ONNX Runtime) | Accepted | |
| 76 | +| [ADR-023](ADR-023-trained-densepose-model-ruvector-pipeline.md) | Trained DensePose Model with RuVector Pipeline | Proposed | |
| 77 | +| [ADR-024](ADR-024-contrastive-csi-embedding-model.md) | Project AETHER: Contrastive CSI Embeddings | Required | |
| 78 | +| [ADR-027](ADR-027-cross-environment-domain-generalization.md) | Project MERIDIAN: Cross-Environment Generalization | Proposed | |
| 79 | + |
| 80 | +### Platform and UI |
| 81 | + |
| 82 | +| ADR | Title | Status | |
| 83 | +|-----|-------|--------| |
| 84 | +| [ADR-019](ADR-019-sensing-only-ui-mode.md) | Sensing-Only UI with Gaussian Splats | Accepted | |
| 85 | +| [ADR-022](ADR-022-windows-wifi-enhanced-fidelity-ruvector.md) | Windows WiFi Enhanced Fidelity (multi-BSSID) | Partial | |
| 86 | +| [ADR-025](ADR-025-macos-corewlan-wifi-sensing.md) | macOS CoreWLAN WiFi Sensing | Proposed | |
| 87 | +| [ADR-031](ADR-031-ruview-sensing-first-rf-mode.md) | RuView Sensing-First RF Mode | Proposed | |
| 88 | +| [ADR-034](ADR-034-expo-mobile-app.md) | Expo React Native Mobile App | Accepted | |
| 89 | +| [ADR-035](ADR-035-live-sensing-ui-accuracy.md) | Live Sensing UI Accuracy and Data Transparency | Accepted | |
| 90 | +| [ADR-036](ADR-036-rvf-training-pipeline-ui.md) | Training Pipeline UI Integration | Proposed | |
| 91 | +| [ADR-043](ADR-043-sensing-server-ui-api-completion.md) | Sensing Server UI API Completion (14 endpoints) | Accepted | |
| 92 | + |
| 93 | +### Architecture and infrastructure |
| 94 | + |
| 95 | +| ADR | Title | Status | |
| 96 | +|-----|-------|--------| |
| 97 | +| [ADR-001](ADR-001-wifi-mat-disaster-detection.md) | WiFi-Mat Disaster Detection Architecture | Accepted | |
| 98 | +| [ADR-002](ADR-002-ruvector-rvf-integration-strategy.md) | RuVector RVF Integration Strategy | Superseded | |
| 99 | +| [ADR-003](ADR-003-rvf-cognitive-containers-csi.md) | RVF Cognitive Containers for CSI | Proposed | |
| 100 | +| [ADR-004](ADR-004-hnsw-vector-search-fingerprinting.md) | HNSW Vector Search for Fingerprinting | Partial | |
| 101 | +| [ADR-007](ADR-007-post-quantum-cryptography-secure-sensing.md) | Post-Quantum Cryptography for Sensing | Proposed | |
| 102 | +| [ADR-008](ADR-008-distributed-consensus-multi-ap.md) | Distributed Consensus for Multi-AP | Proposed | |
| 103 | +| [ADR-009](ADR-009-rvf-wasm-runtime-edge-deployment.md) | RVF WASM Runtime for Edge Deployment | Proposed | |
| 104 | +| [ADR-010](ADR-010-witness-chains-audit-trail-integrity.md) | Witness Chains for Audit Trail Integrity | Proposed | |
| 105 | +| [ADR-011](ADR-011-python-proof-of-reality-mock-elimination.md) | Proof-of-Reality and Mock Elimination | Proposed | |
| 106 | +| [ADR-026](ADR-026-survivor-track-lifecycle.md) | Survivor Track Lifecycle (MAT crate) | Accepted | |
| 107 | +| [ADR-038](ADR-038-sublinear-goal-oriented-action-planning.md) | Sublinear GOAP for Roadmap Optimization | Proposed | |
| 108 | + |
| 109 | +--- |
| 110 | + |
| 111 | +## Related |
| 112 | + |
| 113 | +- [DDD Domain Models](../ddd/) — Bounded context definitions, aggregate roots, and ubiquitous language |
| 114 | +- [User Guide](../user-guide.md) — Setup, API reference, and hardware instructions |
| 115 | +- [Build Guide](../build-guide.md) — Building from source |
0 commit comments