The Rust port at v2/ has been the primary codebase since the rename in #427. The Python implementation at v1/ is no longer the active target; the only load-bearing path is the deterministic proof bundle at v1/data/proof/ (per ADR-011 / ADR-028 witness verification). Move the whole Python tree into archive/v1/ and document the policy in archive/README.md: no new features, bug fixes only when they affect a still-load-bearing path (currently just the proof), CI continues to verify the proof on every push and PR. Path references updated in 26 files via path-pattern sed (only matches v1/<known-child> patterns, never bare v1 or API URLs like /api/v1/). Two double-prefix typos (archive/archive/v1/) caught and hand-fixed in verify-pipeline.yml and ADR-011. Validated: - Python proof verify.py imports cleanly at archive/v1/data/proof/ (numpy/scipy still required; CI installs requirements-lock.txt from archive/v1/ now) - cargo test --workspace --no-default-features → 1,539 passed, 0 failed, 8 ignored (unaffected by Python tree relocation) - ESP32-S3 on COM7 untouched (no firmware paths changed) After-merge: contributors should re-run any local `python v1/...` commands as `python archive/v1/...` (CLAUDE.md and CHANGELOG already updated).
28 KiB
QE Coverage Gap Analysis Report
Project: wifi-densepose (ruview) Date: 2026-04-05 Analyst: QE Coverage Specialist (V3) Scope: Python v1, Rust workspace (17 crates + ruv-neural), Mobile (React Native), Firmware (ESP32 C)
Executive Summary
| Codebase | Source Files | Files With Tests | Coverage Level | Risk |
|---|---|---|---|---|
| Python v1 | 59 | 18 | ~30% file coverage | High |
| Rust workspace | 293 | 283 (inline #[cfg(test)]) |
~97% file coverage | Low |
| Rust integration tests | -- | 16 test files | Moderate | Medium |
| Mobile (React Native) | 71 | 25 | ~35% file coverage | Medium |
| Firmware (ESP32 C) | 16 .c files | 3 fuzz targets | ~19% file coverage | Critical |
Total source files across all codebases: ~439 Files with some form of test coverage: ~339 Estimated overall file-level coverage: ~77%
Key finding: The Rust codebase has excellent inline test coverage (97% of source files contain #[cfg(test)] modules). The critical gaps are concentrated in Python services/infrastructure (0% coverage on 41 source files), firmware C code (13 of 16 source files untested), and mobile utility/navigation layers.
1. Python v1 Coverage Matrix
1.1 Covered Files (18 source files with dedicated tests)
| Source File | Test File(s) | Coverage Level | Notes |
|---|---|---|---|
core/csi_processor.py (466 LOC) |
test_csi_processor.py, test_csi_processor_tdd.py |
High | Core DSP pipeline, dual test files |
core/phase_sanitizer.py (346 LOC) |
test_phase_sanitizer.py, test_phase_sanitizer_tdd.py |
High | Phase unwrapping, dual test files |
core/router_interface.py (293 LOC) |
test_router_interface.py, test_router_interface_tdd.py |
High | Router communication |
hardware/csi_extractor.py (515 LOC) |
test_csi_extractor.py, _direct.py, _tdd.py, _tdd_complete.py |
High | 4 test files, well covered |
hardware/router_interface.py (240 LOC) |
test_router_interface.py |
Medium | Shared with core test |
models/densepose_head.py (278 LOC) |
test_densepose_head.py |
Medium | Neural network head |
models/modality_translation.py (300 LOC) |
test_modality_translation.py |
Medium | WiFi-to-vision translation |
sensing/* (5 files, ~2,058 LOC) |
test_sensing.py |
Low | Single test file covers 5 source files |
Integration test coverage:
| Area | Test File | Covers |
|---|---|---|
| API endpoints | test_api_endpoints.py |
Partial API router coverage |
| Authentication | test_authentication.py |
Partial middleware/auth |
| CSI pipeline | test_csi_pipeline.py |
End-to-end CSI flow |
| Full system | test_full_system_integration.py |
System-level orchestration |
| Hardware | test_hardware_integration.py |
Hardware service layer |
| Inference | test_inference_pipeline.py |
Model inference path |
| Pose pipeline | test_pose_pipeline.py |
Pose estimation flow |
| Rate limiting | test_rate_limiting.py |
Rate limit middleware |
| Streaming | test_streaming_pipeline.py |
Stream service |
| WebSocket | test_websocket_streaming.py |
WebSocket connections |
1.2 Uncovered Files (41 source files -- NO dedicated tests)
| Source File | LOC | Risk | Rationale |
|---|---|---|---|
services/pose_service.py |
855 | Critical | Core pose estimation orchestration -- highest complexity, production path |
tasks/monitoring.py |
771 | Critical | System monitoring with DB queries, psutil, async tasks |
database/connection.py |
639 | Critical | SQLAlchemy + Redis connection management, pooling, error handling |
cli.py |
619 | High | CLI entry point, command routing |
tasks/backup.py |
609 | High | Database backup operations, file management |
tasks/cleanup.py |
597 | High | Data cleanup, retention policies |
commands/status.py |
510 | High | System status aggregation |
middleware/error_handler.py |
504 | High | Global error handling, affects all requests |
database/models.py |
497 | High | ORM models, schema definitions |
services/hardware_service.py |
481 | High | Hardware abstraction layer |
config/domains.py |
480 | Medium | Domain configuration |
services/health_check.py |
464 | High | Health check logic, dependency monitoring |
middleware/rate_limit.py |
464 | High | Rate limiting implementation |
api/routers/stream.py |
464 | High | Streaming API endpoints |
api/websocket/connection_manager.py |
460 | Critical | WebSocket connection lifecycle management |
middleware/auth.py |
456 | Critical | Authentication middleware -- security-critical |
config/settings.py |
436 | Medium | Settings management |
services/metrics.py |
430 | Medium | Metrics collection |
api/routers/health.py |
420 | Medium | Health check endpoints |
api/routers/pose.py |
419 | High | Pose estimation API endpoints |
services/stream_service.py |
396 | High | Real-time streaming logic |
services/orchestrator.py |
394 | Critical | Service lifecycle orchestration |
api/websocket/pose_stream.py |
383 | High | WebSocket pose streaming |
middleware/cors.py |
374 | Medium | CORS configuration |
commands/start.py |
358 | Medium | Server startup logic |
app.py |
336 | Medium | FastAPI app factory |
api/middleware/rate_limit.py |
325 | Medium | API-level rate limiting |
api/middleware/auth.py |
302 | High | API-level authentication |
commands/stop.py |
293 | Medium | Server shutdown logic |
main.py |
116 | Low | Entry point |
database/model_types.py |
59 | Low | Type definitions |
database/migrations/001_initial.py |
-- | Low | Migration script |
database/migrations/env.py |
-- | Low | Alembic config |
testing/mock_csi_generator.py |
-- | Low | Test utility |
testing/mock_pose_generator.py |
-- | Low | Test utility |
logger.py |
-- | Low | Logging config |
Total uncovered Python LOC: ~12,280 (out of ~18,523 total = 66% of code lacks unit tests)
2. Rust Workspace Coverage Matrix
2.1 Crate-Level Summary
| Crate | Source Files | LOC | Files w/ #[cfg(test)] |
Integration Tests | Coverage |
|---|---|---|---|---|---|
wifi-densepose-core |
5 | 2,596 | 5/5 (100%) | 0 | Excellent |
wifi-densepose-signal |
28 | 16,194 | 28/28 (100%) | 1 (validation_test.rs) |
Excellent |
wifi-densepose-nn |
7 | 2,959 | 5/5 non-meta (100%) | 0 | Excellent |
wifi-densepose-mat |
43 | 19,572 | 36/37 (97%) | 1 (integration_adr001.rs) |
Very Good |
wifi-densepose-hardware |
11 | 4,005 | 7/8 (88%) | 0 | Good |
wifi-densepose-train |
18 | 10,562 | 14/15 (93%) | 6 test files | Excellent |
wifi-densepose-ruvector |
16 | 4,629 | 12/12 non-meta (100%) | 0 | Excellent |
wifi-densepose-vitals |
7 | 1,863 | 6/6 non-meta (100%) | 0 | Excellent |
wifi-densepose-wifiscan |
23 | 5,779 | 16/17 (94%) | 0 | Very Good |
wifi-densepose-sensing-server |
18 | 17,825 | 15/16 (94%) | 3 test files | Very Good |
wifi-densepose-wasm |
2 | 1,805 | 1/1 (100%) | 0 | Good |
wifi-densepose-wasm-edge |
68 | 28,888 | 66/66 non-meta (100%) | 3 test files | Excellent |
wifi-densepose-desktop |
15 | 3,309 | 8/11 (73%) | 1 (api_integration.rs) |
Moderate |
wifi-densepose-cli |
3 | 1,317 | 1/1 (100%) | 0 | Good |
wifi-densepose-api |
1 | 1 | 0 (stub) | 0 | N/A (stub) |
wifi-densepose-db |
1 | 1 | 0 (stub) | 0 | N/A (stub) |
wifi-densepose-config |
1 | 1 | 0 (stub) | 0 | N/A (stub) |
2.2 ruv-neural Sub-Crates
| Sub-Crate | LOC | Files | Files w/ Tests | Coverage |
|---|---|---|---|---|
ruv-neural-core |
2,325 | 11 | 2/11 (18%) | Low |
ruv-neural-signal |
2,157 | 7 | 6/7 (86%) | Good |
ruv-neural-sensor |
1,855 | 7 | 2/7 (29%) | Low |
ruv-neural-mincut |
2,394 | 8 | 7/8 (88%) | Good |
ruv-neural-memory |
1,547 | 6 | 5/6 (83%) | Good |
ruv-neural-graph |
1,887 | 7 | 6/7 (86%) | Good |
ruv-neural-esp32 |
1,501 | 7 | 6/7 (86%) | Good |
ruv-neural-embed |
2,120 | 8 | 8/8 (100%) | Excellent |
ruv-neural-decoder |
1,509 | 6 | 5/6 (83%) | Good |
ruv-neural-cli |
1,701 | 9 | 7/9 (78%) | Good |
ruv-neural-viz |
1,314 | 6 | 5/6 (83%) | Good |
ruv-neural-wasm |
1,507 | 4 | 4/4 (100%) | Excellent |
2.3 Rust Files Without Inline Tests (Specific Gaps)
| File | Crate | LOC (est.) | Risk |
|---|---|---|---|
api/handlers.rs |
wifi-densepose-mat | ~400 | High -- HTTP request handlers for MAT |
adaptive_classifier.rs |
wifi-densepose-sensing-server | ~300 | High -- ML classifier |
port/scan_port.rs |
wifi-densepose-wifiscan | ~200 | Medium -- WiFi scan port |
domain/config.rs |
wifi-densepose-desktop | ~150 | Medium -- Desktop config |
domain/firmware.rs |
wifi-densepose-desktop | ~200 | Medium -- Firmware domain model |
domain/node.rs |
wifi-densepose-desktop | ~150 | Medium -- Node domain model |
core/brain.rs |
ruv-neural-core | ~300 | High -- Neural brain logic |
core/graph.rs |
ruv-neural-core | ~200 | Medium -- Graph construction |
core/topology.rs |
ruv-neural-core | ~200 | Medium -- Topology management |
core/sensor.rs |
ruv-neural-core | ~150 | Medium -- Sensor abstraction |
core/signal.rs |
ruv-neural-core | ~150 | Medium -- Signal types |
core/embedding.rs |
ruv-neural-core | ~150 | Medium -- Embedding logic |
core/rvf.rs |
ruv-neural-core | ~100 | Medium -- RVF format |
core/traits.rs |
ruv-neural-core | ~100 | Low -- Trait definitions |
sensor/calibration.rs |
ruv-neural-sensor | ~200 | High -- Sensor calibration |
sensor/eeg.rs |
ruv-neural-sensor | ~200 | Medium -- EEG processing |
sensor/nv_diamond.rs |
ruv-neural-sensor | ~200 | Medium -- NV diamond sensor |
sensor/quality.rs |
ruv-neural-sensor | ~150 | Medium -- Quality metrics |
sensor/simulator.rs |
ruv-neural-sensor | ~150 | Low -- Simulator |
3. Mobile (React Native) Coverage Matrix
3.1 Covered Components (25 test files)
| Source | Test File | Coverage |
|---|---|---|
components/ConnectionBanner.tsx |
__tests__/components/ConnectionBanner.test.tsx |
Good |
components/GaugeArc.tsx |
__tests__/components/GaugeArc.test.tsx |
Good |
components/HudOverlay.tsx |
__tests__/components/HudOverlay.test.tsx |
Good |
components/OccupancyGrid.tsx |
__tests__/components/OccupancyGrid.test.tsx |
Good |
components/SignalBar.tsx |
__tests__/components/SignalBar.test.tsx |
Good |
components/SparklineChart.tsx |
__tests__/components/SparklineChart.test.tsx |
Good |
components/StatusDot.tsx |
__tests__/components/StatusDot.test.tsx |
Good |
hooks/usePoseStream.ts |
__tests__/hooks/usePoseStream.test.ts |
Good |
hooks/useRssiScanner.ts |
__tests__/hooks/useRssiScanner.test.ts |
Good |
hooks/useServerReachability.ts |
__tests__/hooks/useServerReachability.test.ts |
Good |
screens/LiveScreen/ |
__tests__/screens/LiveScreen.test.tsx |
Medium |
screens/MATScreen/ |
__tests__/screens/MATScreen.test.tsx |
Medium |
screens/SettingsScreen/ |
__tests__/screens/SettingsScreen.test.tsx |
Medium |
screens/VitalsScreen/ |
__tests__/screens/VitalsScreen.test.tsx |
Medium |
screens/ZonesScreen/ |
__tests__/screens/ZonesScreen.test.tsx |
Medium |
services/api.service.ts |
__tests__/services/api.service.test.ts |
Good |
services/rssi.service.ts |
__tests__/services/rssi.service.test.ts |
Good |
services/simulation.service.ts |
__tests__/services/simulation.service.test.ts |
Good |
services/ws.service.ts |
__tests__/services/ws.service.test.ts |
Good |
stores/matStore.ts |
__tests__/stores/matStore.test.ts |
Good |
stores/poseStore.ts |
__tests__/stores/poseStore.test.ts |
Good |
stores/settingsStore.ts |
__tests__/stores/settingsStore.test.ts |
Good |
utils/colorMap.ts |
__tests__/utils/colorMap.test.ts |
Good |
utils/ringBuffer.ts |
__tests__/utils/ringBuffer.test.ts |
Good |
utils/urlValidator.ts |
__tests__/utils/urlValidator.test.ts |
Good |
3.2 Uncovered Files (46 source files -- NO tests)
| Source File | LOC (approx.) | Risk | Rationale |
|---|---|---|---|
components/ErrorBoundary.tsx |
40 | High | Error boundary -- critical for crash resilience |
components/LoadingSpinner.tsx |
30 | Low | Simple presentational |
components/ModeBadge.tsx |
25 | Low | Simple presentational |
components/ThemedText.tsx |
30 | Low | Theme wrapper |
components/ThemedView.tsx |
25 | Low | Theme wrapper |
hooks/useTheme.ts |
20 | Medium | Theme context hook |
hooks/useWebViewBridge.ts |
30 | High | Bridge to native WebView -- complex IPC |
navigation/MainTabs.tsx |
60 | Medium | Tab navigation config |
navigation/RootNavigator.tsx |
50 | Medium | Root navigation tree |
navigation/types.ts |
20 | Low | Type definitions |
screens/LiveScreen/GaussianSplatWebView.tsx |
80 | High | 3D Gaussian splat renderer |
screens/LiveScreen/GaussianSplatWebView.web.tsx |
60 | Medium | Web variant |
screens/LiveScreen/LiveHUD.tsx |
70 | Medium | HUD overlay sub-component |
screens/LiveScreen/useGaussianBridge.ts |
50 | High | Bridge hook for 3D rendering |
screens/MATScreen/AlertCard.tsx |
50 | Medium | Alert display card |
screens/MATScreen/AlertList.tsx |
40 | Low | Alert list container |
screens/MATScreen/MatWebView.tsx |
60 | Medium | MAT WebView integration |
screens/MATScreen/SurvivorCounter.tsx |
30 | Low | Counter display |
screens/MATScreen/useMatBridge.ts |
50 | Medium | Bridge hook |
screens/SettingsScreen/RssiToggle.tsx |
30 | Low | Toggle component |
screens/SettingsScreen/ServerUrlInput.tsx |
40 | Medium | URL input with validation |
screens/SettingsScreen/ThemePicker.tsx |
35 | Low | Theme selection |
screens/VitalsScreen/BreathingGauge.tsx |
50 | Medium | Breathing rate gauge |
screens/VitalsScreen/HeartRateGauge.tsx |
50 | Medium | Heart rate gauge |
screens/VitalsScreen/MetricCard.tsx |
35 | Low | Metric display card |
screens/ZonesScreen/FloorPlanSvg.tsx |
80 | Medium | SVG floor plan rendering |
screens/ZonesScreen/ZoneLegend.tsx |
30 | Low | Legend component |
screens/ZonesScreen/useOccupancyGrid.ts |
50 | Medium | Occupancy calculation hook |
services/rssi.service.android.ts |
40 | Medium | Platform-specific RSSI |
services/rssi.service.ios.ts |
40 | Medium | Platform-specific RSSI |
services/rssi.service.web.ts |
30 | Low | Web fallback |
theme/ThemeContext.tsx |
40 | Medium | Theme provider |
theme/colors.ts |
20 | Low | Color constants |
theme/spacing.ts |
15 | Low | Spacing constants |
theme/typography.ts |
20 | Low | Typography config |
theme/index.ts |
10 | Low | Re-exports |
constants/api.ts |
15 | Low | API constants |
constants/simulation.ts |
10 | Low | Simulation constants |
constants/websocket.ts |
12 | Low | WebSocket constants |
types/api.ts |
40 | Low | Type definitions |
types/mat.ts |
30 | Low | Type definitions |
types/navigation.ts |
15 | Low | Type definitions |
types/sensing.ts |
25 | Low | Type definitions |
utils/formatters.ts |
30 | Medium | Data formatting utilities |
4. Firmware (ESP32 C) Coverage Matrix
4.1 Source Files
| Source File | LOC | Test Coverage | Risk |
|---|---|---|---|
edge_processing.c |
1,067 | Fuzz: fuzz_edge_enqueue.c |
High -- partial fuzz only |
wasm_runtime.c |
867 | None | Critical -- WASM execution on embedded |
mock_csi.c |
696 | None | Low -- test utility |
mmwave_sensor.c |
571 | None | Critical -- 60GHz FMCW sensor driver |
wasm_upload.c |
432 | None | High -- OTA WASM upload, security boundary |
csi_collector.c |
420 | Fuzz: fuzz_csi_serialize.c |
Medium -- partial fuzz |
display_ui.c |
386 | None | Low -- UI rendering |
display_hal.c |
382 | None | Low -- Display HAL |
nvs_config.c |
333 | Fuzz: fuzz_nvs_config.c |
Medium -- config storage |
swarm_bridge.c |
327 | None | Critical -- Multi-node mesh networking |
main.c |
301 | None | Medium -- Startup/init |
ota_update.c |
266 | None | Critical -- OTA firmware updates, security |
rvf_parser.c |
239 | None | High -- Binary format parsing |
display_task.c |
175 | None | Low -- Display task |
stream_sender.c |
116 | None | Medium -- Network data sender |
power_mgmt.c |
81 | None | Medium -- Power management |
Firmware coverage summary:
- 3 fuzz test files cover portions of 3 source files (
csi_collector,edge_processing,nvs_config) - 13 of 16 source files (81%) have zero test coverage
- 4,435 LOC in security/network-critical firmware is completely untested (
wasm_runtime,mmwave_sensor,swarm_bridge,ota_update,wasm_upload)
5. Top 20 Highest-Risk Uncovered Areas
| Rank | File | Codebase | LOC | Risk | Risk Score | Reason |
|---|---|---|---|---|---|---|
| 1 | firmware/main/wasm_runtime.c |
Firmware | 867 | Critical | 0.98 | WASM execution on embedded device, untested attack surface |
| 2 | firmware/main/ota_update.c |
Firmware | 266 | Critical | 0.97 | OTA firmware update -- integrity/authentication critical |
| 3 | firmware/main/swarm_bridge.c |
Firmware | 327 | Critical | 0.96 | Multi-node mesh networking, untested protocol |
| 4 | archive/v1/src/services/pose_service.py |
Python | 855 | Critical | 0.95 | Core production path, highest complexity, no unit tests |
| 5 | archive/v1/src/middleware/auth.py |
Python | 456 | Critical | 0.94 | Authentication -- security-critical, no unit tests |
| 6 | archive/v1/src/api/websocket/connection_manager.py |
Python | 460 | Critical | 0.93 | WebSocket lifecycle, connection state, no tests |
| 7 | firmware/main/mmwave_sensor.c |
Firmware | 571 | Critical | 0.92 | 60GHz FMCW sensor driver, hardware-critical |
| 8 | firmware/main/wasm_upload.c |
Firmware | 432 | Critical | 0.91 | OTA WASM upload, code injection risk |
| 9 | archive/v1/src/services/orchestrator.py |
Python | 394 | Critical | 0.90 | Service lifecycle management, no tests |
| 10 | archive/v1/src/database/connection.py |
Python | 639 | Critical | 0.89 | DB + Redis connection management, pooling |
| 11 | archive/v1/src/middleware/error_handler.py |
Python | 504 | High | 0.87 | Global error handler, affects all requests |
| 12 | archive/v1/src/tasks/monitoring.py |
Python | 771 | High | 0.86 | System monitoring, DB queries, async tasks |
| 13 | archive/v1/src/services/hardware_service.py |
Python | 481 | High | 0.85 | Hardware abstraction, device management |
| 14 | archive/v1/src/middleware/rate_limit.py |
Python | 464 | High | 0.84 | Rate limiting -- DoS protection |
| 15 | archive/v1/src/services/health_check.py |
Python | 464 | High | 0.83 | Health monitoring, dependency checks |
| 16 | archive/v1/src/tasks/backup.py |
Python | 609 | High | 0.82 | Data backup operations |
| 17 | archive/v1/src/tasks/cleanup.py |
Python | 597 | High | 0.81 | Data retention, cleanup logic |
| 18 | firmware/main/rvf_parser.c |
Firmware | 239 | High | 0.80 | Binary format parsing -- buffer overflow risk |
| 19 | archive/v1/src/api/routers/pose.py |
Python | 419 | High | 0.79 | Pose API endpoint handlers |
| 20 | mobile/hooks/useWebViewBridge.ts |
Mobile | 30 | High | 0.78 | Native-WebView IPC bridge |
6. Test Generation Recommendations
6.1 Priority 1: Critical -- Immediate Action Required
P1-1: Firmware Security Tests
Target: wasm_runtime.c, ota_update.c, swarm_bridge.c, wasm_upload.c
Test Type: Unit tests + fuzz tests
Recommended Scenarios:
- Fuzz test for
wasm_runtime.c: malformed WASM bytecode, oversized modules, stack overflow - Fuzz test for
ota_update.c: corrupted firmware images, invalid signatures, partial downloads - Fuzz test for
swarm_bridge.c: malformed mesh packets, replay attacks, node spoofing - Fuzz test for
wasm_upload.c: oversized payloads, interrupted transfers, malicious modules - Unit tests for all boundary conditions in binary parsing paths
P1-2: Python Authentication and Security Middleware
Target: middleware/auth.py, api/middleware/auth.py
Test Type: Unit tests + integration tests
Recommended Scenarios:
- Valid/invalid JWT token handling
- Token expiration and refresh flows
- Missing authorization headers
- Role-based access control enforcement
- SQL injection in authentication queries
- Timing attack resistance on token comparison
- Session fixation prevention
P1-3: Python Core Services
Target: services/pose_service.py, services/orchestrator.py
Test Type: Unit tests (mock-first TDD)
Recommended Scenarios:
PoseService: CSI data processing pipeline, model inference fallback, mock mode vs production mode isolation, concurrent pose estimation, error propagationServiceOrchestrator: Service startup ordering, graceful shutdown, background task management, health aggregation, error recovery
P1-4: Database Connection Management
Target: database/connection.py
Test Type: Unit tests + integration tests
Recommended Scenarios:
- Connection pool exhaustion handling
- Redis connection failure and reconnection
- Async session lifecycle management
- Connection string validation
- Transaction isolation verification
- Graceful degradation when database is unreachable
6.2 Priority 2: High -- Next Sprint
P2-1: Python WebSocket Layer
Target: api/websocket/connection_manager.py, api/websocket/pose_stream.py
Test Type: Unit tests + integration tests
Recommended Scenarios:
- Connection lifecycle (open, message, close, error)
- Concurrent connection handling
- Message serialization/deserialization
- Backpressure handling on slow consumers
- Reconnection logic
- Broadcast to multiple subscribers
P2-2: Python Infrastructure Tasks
Target: tasks/monitoring.py, tasks/backup.py, tasks/cleanup.py
Test Type: Unit tests
Recommended Scenarios:
- Monitoring: metric collection, threshold alerting, database query mocking
- Backup: file creation, rotation policy, error handling on disk full
- Cleanup: retention policy enforcement, safe deletion, dry-run mode
P2-3: Python Error Handling
Target: middleware/error_handler.py, middleware/rate_limit.py
Test Type: Unit tests
Recommended Scenarios:
- Error handler: exception type mapping, response format, stack trace sanitization, logging
- Rate limiter: request counting, window sliding, IP-based limiting, exemption rules
P2-4: Firmware Sensor Drivers
Target: mmwave_sensor.c, rvf_parser.c
Test Type: Fuzz tests + unit tests
Recommended Scenarios:
- mmWave: invalid sensor data, communication timeout, calibration failure
- RVF parser: malformed headers, truncated data, integer overflow in length fields
6.3 Priority 3: Medium -- Scheduled Improvement
P3-1: Mobile Sub-Components
Target: Screen sub-components (GaussianSplatWebView, AlertCard, FloorPlanSvg, etc.)
Test Type: Component tests (React Native Testing Library)
Recommended Scenarios:
- Render with various prop combinations
- Error state rendering
- Loading state transitions
- Accessibility compliance (labels, roles)
- Snapshot tests for visual regression
P3-2: Mobile Hooks and Navigation
Target: useWebViewBridge.ts, useTheme.ts, MainTabs.tsx, RootNavigator.tsx
Test Type: Hook tests + navigation tests
Recommended Scenarios:
- WebView bridge: message passing, error handling, reconnection
- Theme hook: theme switching, default values
- Navigation: screen transitions, deep linking, back button behavior
P3-3: Rust Desktop Domain Models
Target: desktop/src/domain/config.rs, firmware.rs, node.rs
Test Type: Unit tests (inline #[cfg(test)])
Recommended Scenarios:
- Config: serialization roundtrip, default values, validation
- Firmware: version comparison, compatibility checks
- Node: state transitions, connection lifecycle
P3-4: Rust MAT API Handlers
Target: mat/src/api/handlers.rs
Test Type: Integration tests
Recommended Scenarios:
- Request validation for all endpoints
- Error response formatting
- Concurrent request handling
- Authorization enforcement
P3-5: Mobile Utility Functions
Target: utils/formatters.ts
Test Type: Unit tests
Recommended Scenarios:
- Number formatting edge cases
- Date/time formatting across locales
- Null/undefined input handling
6.4 Priority 4: Low -- Backlog
P4-1: Python CLI and Commands
Target: cli.py, commands/start.py, commands/stop.py, commands/status.py
Test Type: Integration tests
Recommended Scenarios:
- Command parsing, help text, invalid arguments
- Startup/shutdown sequence verification
P4-2: Mobile Theme and Constants
Target: theme/, constants/, types/
Test Type: Unit tests (snapshot/value verification)
P4-3: ruv-neural Core Types
Target: ruv-neural-core/src/{brain,graph,topology,sensor,signal,embedding,rvf,traits}.rs
Test Type: Unit tests (inline #[cfg(test)])
P4-4: ruv-neural Sensor Crate
Target: ruv-neural-sensor/src/{calibration,eeg,nv_diamond,quality,simulator}.rs
Test Type: Unit tests (inline #[cfg(test)])
7. Coverage Improvement Roadmap
Phase 1: Security-Critical (Weeks 1-2)
- Add 4 firmware fuzz tests (wasm_runtime, ota_update, swarm_bridge, wasm_upload)
- Add Python auth middleware unit tests (30+ test cases)
- Add Python WebSocket connection manager tests (20+ test cases)
- Expected improvement: Firmware 19% -> 44%, Python 30% -> 38%
Phase 2: Core Business Logic (Weeks 3-4)
- Add pose_service, orchestrator, hardware_service unit tests (60+ test cases)
- Add database/connection integration tests (15+ test cases)
- Add monitoring/backup/cleanup task tests (30+ test cases)
- Expected improvement: Python 38% -> 55%
Phase 3: API and Infrastructure (Weeks 5-6)
- Add error_handler, rate_limit middleware tests (25+ test cases)
- Add API router tests for stream, health, pose endpoints (30+ test cases)
- Add mobile sub-component tests (25+ test cases)
- Expected improvement: Python 55% -> 70%, Mobile 35% -> 55%
Phase 4: Polish and Edge Cases (Weeks 7-8)
- Add Rust desktop domain model tests
- Add mobile navigation and hook tests
- Add firmware rvf_parser and edge_processing unit tests
- Add remaining Python CLI/command tests
- Expected improvement: All codebases at 70%+ file coverage
Target State
| Codebase | Current | Target | Gap to Close |
|---|---|---|---|
| Python v1 | ~30% | 75% | +45% (185+ new tests) |
| Rust workspace | ~97% | 99% | +2% (15+ new tests) |
| Mobile | ~35% | 65% | +30% (50+ new tests) |
| Firmware | ~19% | 50% | +31% (8 new fuzz + 20 unit tests) |
8. Risk Assessment Methodology
Risk scores (0.0 - 1.0) were calculated using:
| Factor | Weight | Description |
|---|---|---|
| Code complexity | 30% | LOC, cyclomatic complexity, dependency count |
| Security criticality | 25% | Authentication, authorization, network boundary, input parsing |
| Change frequency | 15% | Git commit frequency on the file |
| Blast radius | 15% | How many other components depend on this code |
| Data sensitivity | 10% | Handles PII, credentials, or firmware integrity |
| Testability | 5% | How difficult the code is to test (hardware deps, async, etc.) |
Files scoring above 0.85 are flagged as Critical, 0.70-0.85 as High, 0.50-0.70 as Medium, below 0.50 as Low.
Report generated by QE Coverage Specialist (V3) -- Agentic QE v3 Analysis scope: 439 source files across 4 codebases 292 Rust files with inline test modules, 16 integration test files, 32 Python test files, 25 mobile test files, 3 firmware fuzz targets