Sister-ADR to ADR-108. Where ADR-108 closes the confidentiality side (Kyber key exchange), ADR-109 closes the integrity side (Dilithium signatures) of the post-quantum migration. Replaces Ed25519 in ADR-100 cog signing with Dilithium-3 (NIST FIPS 204, ~AES-192 equivalent, CNSA 2.0 default). Migration timeline (matches ADR-108): - Phase 0 (NOW 2026): Ed25519 only - Phase 1 (Q4 2026): Dual-sig (Ed25519 + Dilithium-3), accepts either - Phase 2 (Q2 2027): BOTH required (defence in depth) - Phase 3 (2030+): Pure Dilithium-3 Why now (backdating argument): An adversary who can break Ed25519 in 2035 with quantum computers can backdate signatures on cog binaries to install malicious code retroactively. The provenance chain breaks even for binaries deployed today. Hybrid mode prevents this: forging a 2026 cog signature still requires breaking BOTH Ed25519 AND Dilithium-3. Manifest size: 64 B (Ed25519) + 3293 B (Dilithium-3) = ~4 kB per cog. 50-cog catalogue overhead ~200 kB. Negligible. LOC: +270 on top of ADR-100. Combined chain budget (ADR-105+106+107+108+109): ~1,820 LOC, ~7 weeks. ADR CHAIN (8 ADRs) complete for both confidentiality and integrity at quantum-resistant tier: - ADR-100: cog packaging - ADR-103: cog-person-count - ADR-104: MCP + CLI - ADR-105: within-installation federation - ADR-106: DP-SGD + primitive isolation - ADR-107: cross-installation + secure aggregation - ADR-108: PQC key exchange (Kyber-768) - ADR-109: PQC signatures (Dilithium-3) <-- THIS Future ADRs catalogued: - ADR-110: PQC hardware acceleration on Cognitum-v0 - ADR-111: Owner key rotation policy - ADR-112: Cross-signing with external CA - ADR-113: Multistatic placement strategy (R6 family findings -> ADR-029 amendment) Composes: - R14/R15 privacy + biometric requires provenance integrity - R12 PABS / R12.1: intruder-detection cog must itself be signed - R10/R11 long-deployment cogs most affected by backdating - R7 mincut adversarial assumes the model is trustworthy Honest scope: - Dilithium ~5 years old; hybrid mitigates uncertainty - ESP32-S3 verification ~5-10 ms estimated; needs benchmarking - pqcrypto-dilithium Rust crate dependency - Owner key management = highest-risk operational change - Phase 3 Ed25519 retirement needs future decision Coordination: ticks/tick-30.md, no PROGRESS.md edit. |
||
|---|---|---|
| .. | ||
| .issue-177-body.md | ||
| ADR-001-wifi-mat-disaster-detection.md | ||
| ADR-002-ruvector-rvf-integration-strategy.md | ||
| ADR-003-rvf-cognitive-containers-csi.md | ||
| ADR-004-hnsw-vector-search-fingerprinting.md | ||
| ADR-005-sona-self-learning-pose-estimation.md | ||
| ADR-006-gnn-enhanced-csi-pattern-recognition.md | ||
| ADR-007-post-quantum-cryptography-secure-sensing.md | ||
| ADR-008-distributed-consensus-multi-ap.md | ||
| ADR-009-rvf-wasm-runtime-edge-deployment.md | ||
| ADR-010-witness-chains-audit-trail-integrity.md | ||
| ADR-011-python-proof-of-reality-mock-elimination.md | ||
| ADR-012-esp32-csi-sensor-mesh.md | ||
| ADR-013-feature-level-sensing-commodity-gear.md | ||
| ADR-014-sota-signal-processing.md | ||
| ADR-015-public-dataset-training-strategy.md | ||
| ADR-016-ruvector-integration.md | ||
| ADR-017-ruvector-signal-mat-integration.md | ||
| ADR-018-esp32-dev-implementation.md | ||
| ADR-019-sensing-only-ui-mode.md | ||
| ADR-020-rust-ruvector-ai-model-migration.md | ||
| ADR-021-vital-sign-detection-rvdna-pipeline.md | ||
| ADR-022-windows-wifi-enhanced-fidelity-ruvector.md | ||
| ADR-023-trained-densepose-model-ruvector-pipeline.md | ||
| ADR-024-contrastive-csi-embedding-model.md | ||
| ADR-025-macos-corewlan-wifi-sensing.md | ||
| ADR-026-survivor-track-lifecycle.md | ||
| ADR-027-cross-environment-domain-generalization.md | ||
| ADR-028-esp32-capability-audit.md | ||
| ADR-029-ruvsense-multistatic-sensing-mode.md | ||
| ADR-030-ruvsense-persistent-field-model.md | ||
| ADR-031-ruview-sensing-first-rf-mode.md | ||
| ADR-032-multistatic-mesh-security-hardening.md | ||
| ADR-033-crv-signal-line-sensing-integration.md | ||
| ADR-034-expo-mobile-app.md | ||
| ADR-035-live-sensing-ui-accuracy.md | ||
| ADR-036-rvf-training-pipeline-ui.md | ||
| ADR-037-multi-person-pose-detection.md | ||
| ADR-038-sublinear-goal-oriented-action-planning.md | ||
| ADR-039-esp32-edge-intelligence.md | ||
| ADR-040-wasm-programmable-sensing.md | ||
| ADR-041-wasm-module-collection.md | ||
| ADR-042-coherent-human-channel-imaging.md | ||
| ADR-043-sensing-server-ui-api-completion.md | ||
| ADR-044-geospatial-satellite-integration.md | ||
| ADR-045-amoled-display-support.md | ||
| ADR-046-android-tv-box-armbian-deployment.md | ||
| ADR-047-psychohistory-observatory-visualization.md | ||
| ADR-048-adaptive-csi-classifier.md | ||
| ADR-049-cross-platform-wifi-interface-detection.md | ||
| ADR-050-provisioning-tool-enhancements.md | ||
| ADR-050-quality-engineering-security-hardening.md | ||
| ADR-052-ddd-bounded-contexts.md | ||
| ADR-052-tauri-desktop-frontend.md | ||
| ADR-053-ui-design-system.md | ||
| ADR-054-desktop-full-implementation.md | ||
| ADR-055-integrated-sensing-server.md | ||
| ADR-056-ruview-desktop-capabilities.md | ||
| ADR-057-firmware-csi-build-guard.md | ||
| ADR-058-ruvector-wasm-browser-pose-example.md | ||
| ADR-059-live-esp32-csi-pipeline.md | ||
| ADR-060-provision-channel-mac-filter.md | ||
| ADR-061-qemu-esp32s3-firmware-testing.md | ||
| ADR-062-qemu-swarm-configurator.md | ||
| ADR-063-mmwave-sensor-fusion.md | ||
| ADR-064-multimodal-ambient-intelligence.md | ||
| ADR-065-happiness-scoring-seed-bridge.md | ||
| ADR-066-esp32-swarm-seed-coordinator.md | ||
| ADR-067-ruvector-v2.0.5-upgrade.md | ||
| ADR-068-per-node-state-pipeline.md | ||
| ADR-069-cognitum-seed-csi-pipeline.md | ||
| ADR-070-self-supervised-pretraining.md | ||
| ADR-071-ruvllm-training-pipeline.md | ||
| ADR-072-wiflow-architecture.md | ||
| ADR-073-multifrequency-mesh-scan.md | ||
| ADR-074-spiking-neural-csi-sensing.md | ||
| ADR-075-mincut-person-separation.md | ||
| ADR-076-csi-spectrogram-embeddings.md | ||
| ADR-077-novel-rf-sensing-applications.md | ||
| ADR-078-multifreq-mesh-applications.md | ||
| ADR-079-camera-ground-truth-training.md | ||
| ADR-080-qe-remediation-plan.md | ||
| ADR-081-adaptive-csi-mesh-firmware-kernel.md | ||
| ADR-082-pose-tracker-confirmed-output-filter.md | ||
| ADR-083-per-cluster-pi-compute-hop.md | ||
| ADR-084-rabitq-similarity-sensor.md | ||
| ADR-085-rabitq-pipeline-expansion.md | ||
| ADR-086-edge-novelty-gate.md | ||
| ADR-089-nvsim-nv-diamond-simulator.md | ||
| ADR-090-nvsim-lindblad-extension.md | ||
| ADR-091-stand-off-radar-tier-research.md | ||
| ADR-092-nvsim-dashboard-implementation.md | ||
| ADR-093-dashboard-gap-analysis.md | ||
| ADR-094-pointcloud-github-pages-deployment.md | ||
| ADR-095-rvcsi-edge-rf-sensing-platform.md | ||
| ADR-096-rvcsi-ffi-crate-layout.md | ||
| ADR-097-adopt-rvcsi-as-ruview-csi-runtime.md | ||
| ADR-098-evaluate-midstream-fit.md | ||
| ADR-099-midstream-introspection-tap.md | ||
| ADR-100-cog-packaging-specification.md | ||
| ADR-101-pose-estimation-cog.md | ||
| ADR-102-edge-module-registry.md | ||
| ADR-103-learned-multi-person-counter.md | ||
| ADR-104-ruview-mcp-cli-distribution.md | ||
| ADR-105-federated-csi-training.md | ||
| ADR-106-dp-sgd-and-primitive-isolation.md | ||
| ADR-107-cross-installation-federation.md | ||
| ADR-108-kyber-post-quantum-key-exchange.md | ||
| ADR-109-dilithium-pqc-signatures.md | ||
| README.md | ||
README.md
Architecture Decision Records
This folder contains 44 Architecture Decision Records (ADRs) that document every significant technical choice in the RuView / WiFi-DensePose project.
Why ADRs?
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.
ADRs capture the context, options considered, decision made, and consequences for each of these choices. They serve three purposes:
-
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.
-
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.
-
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.
ADRs and Domain-Driven Design
The project uses Domain-Driven Design (DDD) to organize code into bounded contexts — each with its own language, types, and responsibilities. ADRs and DDD work together:
- 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.
- DDD models define the language: The RuvSense domain model defines terms like "coherence gate", "dwell time", and "TDM slot" that ADRs reference precisely.
- 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.
How ADRs are structured
Each ADR follows a consistent format:
- Context — What problem or gap prompted this decision
- Decision — What we chose to do and how
- Consequences — What improved, what got harder, and what risks remain
- References — Related ADRs, papers, and code paths
Statuses: Proposed (under discussion), Accepted (approved and/or implemented), Superseded (replaced by a later ADR).
ADR Index
Hardware and firmware
| ADR | Title | Status |
|---|---|---|
| ADR-012 | ESP32 CSI Sensor Mesh for Distributed Sensing | Accepted (partial) |
| ADR-018 | ESP32 Development Implementation Path | Proposed |
| ADR-028 | ESP32 Capability Audit and Witness Record | Accepted |
| ADR-029 | RuvSense Multistatic Sensing Mode (TDM, channel hopping) | Proposed |
| ADR-032 | Multistatic Mesh Security Hardening | Accepted |
| ADR-039 | ESP32-S3 Edge Intelligence Pipeline (on-device vitals) | Accepted (hardware-validated) |
| ADR-040 | WASM Programmable Sensing (Tier 3) | Accepted |
| ADR-041 | WASM Module Collection (65 edge modules) | Accepted (hardware-validated) |
| ADR-044 | Provisioning Tool Enhancements | Proposed |
Signal processing and sensing
| ADR | Title | Status |
|---|---|---|
| ADR-013 | Feature-Level Sensing on Commodity Gear | Accepted |
| ADR-014 | SOTA Signal Processing Algorithms | Accepted |
| ADR-021 | Vital Sign Detection (breathing, heart rate) | Partial |
| ADR-030 | Persistent Field Model and Drift Detection | Proposed |
| ADR-033 | CRV Signal Line Sensing Integration | Proposed |
| ADR-037 | Multi-Person Pose Detection from Single ESP32 | Proposed |
| ADR-042 | Coherent Human Channel Imaging (beyond CSI) | Proposed |
Machine learning and training
| ADR | Title | Status |
|---|---|---|
| ADR-005 | SONA Self-Learning for Pose Estimation | Partial |
| ADR-006 | GNN-Enhanced CSI Pattern Recognition | Partial |
| ADR-015 | Public Dataset Strategy (MM-Fi, Wi-Pose) | Accepted |
| ADR-016 | RuVector Training Pipeline Integration | Accepted |
| ADR-017 | RuVector Signal + MAT Integration | Proposed |
| ADR-020 | Migrate AI Inference to Rust (ONNX Runtime) | Accepted |
| ADR-023 | Trained DensePose Model with RuVector Pipeline | Proposed |
| ADR-024 | Project AETHER: Contrastive CSI Embeddings | Required |
| ADR-027 | Project MERIDIAN: Cross-Environment Generalization | Proposed |
Platform and UI
| ADR | Title | Status |
|---|---|---|
| ADR-019 | Sensing-Only UI with Gaussian Splats | Accepted |
| ADR-022 | Windows WiFi Enhanced Fidelity (multi-BSSID) | Partial |
| ADR-025 | macOS CoreWLAN WiFi Sensing | Proposed |
| ADR-031 | RuView Sensing-First RF Mode | Proposed |
| ADR-034 | Expo React Native Mobile App | Accepted |
| ADR-035 | Live Sensing UI Accuracy and Data Transparency | Accepted |
| ADR-036 | Training Pipeline UI Integration | Proposed |
| ADR-043 | Sensing Server UI API Completion (14 endpoints) | Accepted |
Architecture and infrastructure
| ADR | Title | Status |
|---|---|---|
| ADR-001 | WiFi-Mat Disaster Detection Architecture | Accepted |
| ADR-002 | RuVector RVF Integration Strategy | Superseded |
| ADR-003 | RVF Cognitive Containers for CSI | Proposed |
| ADR-004 | HNSW Vector Search for Fingerprinting | Partial |
| ADR-007 | Post-Quantum Cryptography for Sensing | Proposed |
| ADR-008 | Distributed Consensus for Multi-AP | Proposed |
| ADR-009 | RVF WASM Runtime for Edge Deployment | Proposed |
| ADR-010 | Witness Chains for Audit Trail Integrity | Proposed |
| ADR-011 | Proof-of-Reality and Mock Elimination | Proposed |
| ADR-026 | Survivor Track Lifecycle (MAT crate) | Accepted |
| ADR-038 | Sublinear GOAP for Roadmap Optimization | Proposed |
| ADR-095 | rvCSI — Edge RF Sensing Runtime Platform | Proposed |
| ADR-096 | rvCSI — Crate Topology, the napi-c Shim, and the napi-rs Node Surface | Proposed |
| ADR-097 | Adopt rvCSI as RuView's primary CSI runtime (phased adoption) | Proposed |
| ADR-098 | Evaluate ruvnet/midstream for RuView's CSI / WebSocket / mesh pipeline |
Rejected |
| ADR-099 | Adopt midstream as RuView's real-time introspection + low-latency tap | Proposed |
Related
- DDD Domain Models — Bounded context definitions, aggregate roots, and ubiquitous language
- User Guide — Setup, API reference, and hardware instructions
- Build Guide — Building from source