Wi-Fi CSI motion sensing for ESP32. C++ SDK, ESPHome, Native, and Matter frontends, browser tools, and a CLI for the full device lifecycle. GPLv3 and commercial licensing.
This report summarizes scanner evidence for francescopace/espectre, a Python project with 9,505 GitHub stars. SynthScan examined 220,618 lines of code across 738 source files, recording 2358 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 12.7 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1884 finding(s).
Are imports declared and package/API names verified? 205 finding(s).
Are wrappers, guards, and repeated structures necessary? 1943 finding(s).
Which changes need focused human review? 2358 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2358 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/replay_lightweight_candidates.py | 345 | def resolve_catalog_entry_path( | CODE |
| LOW | tools/replay_lightweight_candidates.py | 652 | def append_training_empty_rows( | CODE |
| LOW | tools/replay_lightweight_candidates.py | 780 | def feature_location_contribution( | CODE |
| LOW | tools/replay_lightweight_candidates.py | 852 | def session_centered_replay_scores( | CODE |
| LOW | tools/replay_lightweight_candidates.py | 1004 | def calibrated_startup_threshold( | CODE |
| LOW | tools/replay_lightweight_candidates.py | 1809 | def iter_calibration_policies( | CODE |
| LOW | tools/compare_detection_methods.py | 89 | def _extract_motion_start_from_description(description): | CODE |
| LOW | tools/compare_detection_methods.py | 134 | def resolve_context_aware_config_for_test(test_entry, static_presence_packets): | CODE |
| LOW | tools/compare_detection_methods.py | 154 | def resolve_context_aware_config(pair, static_presence_packets): | CODE |
| LOW | tools/compare_detection_methods.py | 184 | def calculate_adaptive_threshold(values, auto_factor=DEFAULT_ADAPTIVE_FACTOR): | CODE |
| LOW | tools/compare_detection_methods.py | 380 | def compare_detection_methods( | CODE |
| LOW | tools/fit_lightweight_detector.py | 361 | def base_threshold_from_centered(centered_threshold: float, idle_q95: float) -> float: | CODE |
| LOW | tools/analyze_system_tuning.py | 98 | def _evaluate_classic_configuration( | CODE |
| LOW | tools/analyze_raw_data.py | 149 | def analyze_all_pairs_from_dataset_info() -> list: | CODE |
| LOW | tools/compare_chips.py | 73 | def analyze_amplitudes_per_subcarrier(packets, name, num_subcarriers=64): | CODE |
| LOW | tools/benchmark_lightweight_candidate_pairs.py | 168 | def resolve_candidate_combinations(args: argparse.Namespace) -> List[Tuple[str, ...]]: | CODE |
| LOW | tools/benchmark_lightweight_candidate_pairs.py | 196 | def dataset_entry_by_filename() -> Dict[str, Dict[str, Any]]: | CODE |
| LOW | tools/plot_constellation.py | 69 | def plot_constellation_comparison(static_presence_packets, motion_packets, | CODE |
| LOW | tools/plot_constellation.py | 223 | def plot_single_subcarrier_grid(static_presence_packets, motion_packets, | CODE |
| LOW | tools/compare_reserved_selection.py | 56 | def _print_per_row_regressions(baseline_metrics, candidate_metrics): | CODE |
| LOW | tools/plot_heatmap.py | 153 | def build_samples_from_metadata( | CODE |
| LOW | tools/lib/npz_cache.py | 61 | def performance_report_result_parameters( | CODE |
| LOW | tools/lib/npz_cache.py | 72 | def load_performance_report_result( | CODE |
| LOW | tools/lib/npz_cache.py | 92 | def save_performance_report_result( | CODE |
| LOW | tools/lib/npz_cache.py | 139 | def npz_cache_progress_enabled() -> bool: | CODE |
| LOW | tools/lib/npz_cache.py | 154 | def npz_cache_progress_interval_s() -> float: | CODE |
| LOW | tools/lib/npz_cache.py | 424 | def _source_digest_memo_enabled() -> bool: | CODE |
| LOW | tools/lib/npz_cache.py | 481 | def _ml_feature_source_manifests() -> dict[str, Any]: | CODE |
| LOW | tools/lib/npz_cache.py | 506 | def _replay_policy_source_manifests() -> dict[str, Any]: | CODE |
| LOW | tools/lib/npz_cache.py | 523 | def _lightweight_detector_source_manifests() -> dict[str, Any]: | CODE |
| LOW | tools/lib/npz_cache.py | 695 | def clear_persisted_artifacts(*artifact_names: str) -> None: | CODE |
| LOW | tools/lib/npz_cache.py | 782 | def prune_persisted_artifacts(*artifact_names: str) -> dict[str, int]: | CODE |
| LOW | tools/lib/npz_cache.py | 893 | def _feature_index_parameters(parameters: Mapping[str, Any]) -> dict[str, Any]: | CODE |
| LOW | tools/lib/npz_cache.py | 932 | def _register_feature_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 972 | def load_feature_superset_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1073 | def load_ml_training_source_metadata_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1093 | def save_ml_training_source_metadata_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1113 | def load_host_feature_row_spine_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1137 | def save_host_feature_row_spine_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1162 | def load_host_feature_column_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1180 | def save_host_feature_column_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1199 | def classic_replay_row_parameters( | CODE |
| LOW | tools/lib/npz_cache.py | 1256 | def ml_training_augmentation_row_parameters( | CODE |
| LOW | tools/lib/npz_cache.py | 1279 | def load_ml_training_augmentation_row_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1329 | def save_ml_training_augmentation_row_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1362 | def load_ml_replay_row_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1438 | def save_ml_replay_row_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1473 | def load_classic_replay_row_artifact( | CODE |
| LOW | tools/lib/npz_cache.py | 1513 | def save_classic_replay_row_artifact( | CODE |
| LOW | tools/lib/cpp_parity.py | 257 | def compare_cpp_and_python_report_data( | CODE |
| LOW | tools/lib/temporal_csi_sampler.py | 38 | def minimum_sample_spacing_us(target_pps): | CODE |
| LOW | tools/lib/temporal_csi_sampler.py | 117 | def clear_window_preserving_phase(self): | CODE |
| LOW | tools/lib/temporal_csi_sampler.py | 161 | def _within_neighbor_tolerance(self, slot, elapsed_us): | CODE |
| LOW | tools/lib/runtime_policy.py | 68 | def nominal_packet_interval_us(window_packets): | CODE |
| LOW⚡ | tools/lib/csi_io.py | 992 | def _update_final_raw_diagnostics(self) -> None: | CODE |
| LOW | tools/lib/csi_io.py | 163 | def _raise_unsafe_npz_object_array(filepath: Path, key: str | None = None, exc: Exception | None = None): | CODE |
| LOW | tools/lib/csi_io.py | 178 | def normalize_stored_csi_bin_layout(csi: np.ndarray) -> np.ndarray: | CODE |
| LOW | tools/lib/csi_io.py | 203 | def _load_npz_arrays_uncached(filepath: Path) -> Dict[str, np.ndarray]: | CODE |
| LOW | tools/lib/csi_io.py | 875 | def _widen_raw_receive_window(self) -> None: | CODE |
| LOW | tools/lib/csi_io.py | 1017 | def apply_final_raw_diagnostics(self, packet: CSIPacket) -> None: | CODE |
| 1585 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 112 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 114 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 172 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 174 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 292 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 294 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 359 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 361 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 444 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 446 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 590 | # ============================================================================= | COMMENT |
| MEDIUM | tools/benchmark_subcarrier_aggregation.py | 592 | # ============================================================================= | COMMENT |
| MEDIUM | tools/compare_chips.py | 196 | # ========================================================================= | COMMENT |
| MEDIUM | tools/compare_chips.py | 198 | # ========================================================================= | COMMENT |
| MEDIUM | tools/compare_chips.py | 232 | # ========================================================================= | COMMENT |
| MEDIUM | tools/compare_chips.py | 234 | # ========================================================================= | COMMENT |
| MEDIUM | tools/compare_chips.py | 262 | # ========================================================================= | COMMENT |
| MEDIUM | tools/compare_chips.py | 264 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | tools/compare_chips.py | 289 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | tools/compare_chips.py | 291 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | tools/compare_chips.py | 301 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | tools/compare_chips.py | 303 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | tools/plot_constellation.py | 121 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | tools/plot_constellation.py | 123 | # ======================================================================== | COMMENT |
| MEDIUM | tools/plot_constellation.py | 138 | # ======================================================================== | COMMENT |
| MEDIUM | tools/plot_constellation.py | 140 | # ======================================================================== | COMMENT |
| MEDIUM | tools/plot_constellation.py | 155 | # ======================================================================== | COMMENT |
| MEDIUM | tools/plot_constellation.py | 157 | # ======================================================================== | COMMENT |
| MEDIUM | tools/plot_constellation.py | 174 | # ======================================================================== | COMMENT |
| MEDIUM | tools/plot_constellation.py | 176 | # ======================================================================== | COMMENT |
| MEDIUM | tools/lib/high_accuracy_detector.py | 100 | # ============================================================================ | COMMENT |
| MEDIUM | tools/lib/high_accuracy_detector.py | 102 | # ============================================================================ | COMMENT |
| MEDIUM | tools/lib/high_accuracy_detector.py | 441 | # ============================================================================ | COMMENT |
| MEDIUM | tools/lib/high_accuracy_detector.py | 443 | # ============================================================================ | COMMENT |
| MEDIUM | tools/lib/utils.py | 160 | # ============================================================================= | COMMENT |
| MEDIUM | tools/lib/utils.py | 162 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tools/lib/dataset_quality/runner.py | 127 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tools/lib/dataset_quality/runner.py | 129 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tools/lib/dataset_quality/runner.py | 137 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tools/lib/dataset_quality/runner.py | 139 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 169 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 171 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 245 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 247 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 261 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 263 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 276 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 278 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 303 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/lib/dataset_quality/runner.py | 305 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …_traffic_generator_addon/espectre_traffic_generator.py | 64 | # ========================================= | COMMENT |
| MEDIUM⚡ | test/python/conftest.py | 269 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/python/conftest.py | 271 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/python/conftest.py | 332 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/python/conftest.py | 334 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/python/conftest.py | 410 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/python/conftest.py | 412 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/python/conftest.py | 420 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/python/conftest.py | 422 | # ============================================================================ | COMMENT |
| MEDIUM | test/python/conftest.py | 146 | # ============================================================================ | COMMENT |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 392 | assert "return origin != NULL && origin[0] != '\\0' &&" in source | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 399 | assert "direct_state.event_work_pending || direct_state.heartbeat_work_pending" in source | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 403 | assert "if (active && result != ESP_OK)" in source | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 598 | if (!strict || length != strlen(body) + 1U || json_kind == 0) return NULL; | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 602 | static bool cJSON_IsObject(const cJSON *value) { return value != NULL && value->type == cJSON_Object; } | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 604 | static bool cJSON_IsArray(const cJSON *value) { return value != NULL && value->type == cJSON_Array; } | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 605 | static bool cJSON_IsString(const cJSON *value) { return value != NULL && value->type == cJSON_String; } | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 619 | if (s && strlen(response_body)+length < sizeof(response_body)) strncat(response_body, s, length); | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 624 | if (strcmp(k, "Connection") == 0 && strcmp(v, "close") == 0) close_connection = true; | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 628 | if (content_type == NULL || strlen(content_type) >= size) return ESP_FAIL; | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 695 | CHECK(!queued && snapshot_reads == 0U && parser_calls == 1U); | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 705 | CHECK(snapshot_reads == (request.method == HTTP_GET && strcmp(direct_routes[route].command, "diagnostics") != 0) | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 711 | CHECK(!queued && parser_calls == 0U && direct_state.malformed_requests == 1U); | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 715 | CHECK(!queued && parser_calls == 0U && direct_state.malformed_requests == 1U); | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 719 | CHECK(!queued && close_connection && parser_calls == 0U); | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 724 | CHECK(!queued && parser_calls == 0U); | CODE |
| HIGH⚡ | test/python/micro/test_micro_protocol.py | 730 | CHECK(!queued && strcmp(response_status, "409 Conflict") == 0); | CODE |
| HIGH | test/python/micro/test_micro_protocol.py | 680 | CHECK(queued != oversized && close_connection == oversized); | CODE |
| HIGH | test/python/micro/test_micro_protocol.py | 684 | CHECK(!oversized || (receive_calls == 0U && parser_calls == 0U)); | CODE |
| HIGH⚡ | test/python/micro/test_espectre_cli_micro.py | 1684 | hw = hw || info.rx_ctrl.rxend_state || !info.rx_ctrl.rx_channel_estimate_info_vld; | CODE |
| HIGH⚡ | test/python/micro/test_espectre_cli_micro.py | 1686 | hw = hw || (info.first_word_invalid && (absent || (info.len != 128 && info.len != 256))); | CODE |
| HIGH⚡ | test/python/micro/test_espectre_cli_micro.py | 1687 | const bool rejected = hw || absent || !info.len || (info.len & 1); | CODE |
| HIGH | test/python/micro/test_espectre_cli_micro.py | 887 | assert "max_data_len < 1 || max_data_len > CSI_MAX_DATA_LEN" in source | CODE |
| HIGH | test/python/micro/test_espectre_cli_micro.py | 1056 | if (disable_err == ESP_ERR_WIFI_NOT_STARTED || disable_err == ESP_ERR_WIFI_NOT_INIT) { | CODE |
| HIGH | test/python/micro/test_espectre_cli_micro.py | 1709 | assert(accepted == before + 1 && read_quality() == 1); | CODE |
| HIGH | test/python/micro/test_espectre_cli_micro.py | 864 | if (buffer_size < 1 || buffer_size > CSI_MAX_BUFFER_SIZE) { | STRING |
| HIGH | test/python/micro/test_espectre_cli_micro.py | 918 | if (state == NULL || state->ringbuffer.buf == NULL) { | STRING |
| HIGH | test/python/host/cli/test_espectre_cli_wrappers.py | 2917 | assert command == ["/bin/bash", "-lc", f". {shlex.quote(str(export_script))} >/dev/null && idf.py build"] | CODE |
| HIGH | test/python/host/cli/test_espectre_cli_wrappers.py | 3042 | assert calls == [["cmd.exe", "/d", "/c", f'call "{export_script}" >NUL && idf.py --version']] | CODE |
| HIGH⚡ | src/python/espectre_cli/micro_firmware.py | 812 | if (info->buf == NULL || (info->len != 128 && info->len != 256)) { | CODE |
| HIGH⚡ | src/python/espectre_cli/micro_firmware.py | 820 | centered_energy += info->buf[offset] != 0 || info->buf[offset + 1] != 0; | CODE |
| HIGH⚡ | src/python/espectre_cli/micro_firmware.py | 824 | classic_energy += info->buf[offset] != 0 || info->buf[offset + 1] != 0; | CODE |
| HIGH⚡ | src/python/espectre_cli/micro_firmware.py | 826 | return !((centered_energy == 0 && classic_energy == sizeof(classic_nulls)) || | CODE |
| HIGH⚡ | src/python/espectre_cli/micro_firmware.py | 827 | (classic_energy == 0 && centered_energy == sizeof(centered_nulls))); | CODE |
| HIGH | src/python/espectre_cli/micro_firmware.py | 200 | esp_wifi_sta_get_ap_info(&ap_info) == ESP_OK && ap_info.primary > 14; | CODE |
| HIGH | src/python/espectre_cli/micro_firmware.py | 349 | if (*mac_obj != MP_OBJ_NULL && mp_obj_is_type(*mac_obj, &mp_type_bytes)) { | CODE |
| HIGH | src/python/espectre_cli/micro_firmware.py | 352 | unchanged = current_length == 6 && memcmp(current, mac, 6) == 0; | CODE |
| HIGH | src/python/espectre_cli/micro_firmware.py | 605 | safe_deinit = """ if (state->ringbuffer.buf != NULL && wifi_csi_disable(state) != ESP_OK) { | CODE |
| HIGH | src/python/espectre_cli/micro_firmware.py | 628 | if (state == NULL || state->ringbuffer.buf == NULL) { | CODE |
| HIGH | src/python/espectre_cli/micro_firmware.py | 985 | " if (buffer_size < 1 || buffer_size > CSI_MAX_BUFFER_SIZE) {\n" | CODE |
| HIGH | src/python/espectre_cli/micro_firmware.py | 989 | " if (max_data_len < 1 || max_data_len > CSI_MAX_DATA_LEN) {\n" | CODE |
| HIGH⚡ | src/python/espectre_cli/micro_firmware.py | 836 | " if (hardware_error || info == NULL || info->buf == NULL ||\n" | STRING |
| HIGH | src/python/espectre_cli/micro_firmware.py | 376 | " if (state == NULL || state->ringbuffer.buf == NULL) {\n" | STRING |
| HIGH | src/python/espectre_cli/micro_firmware.py | 379 | " if (info == NULL || state == NULL || state->ringbuffer.buf == NULL) {\n" | STRING |
| HIGH | src/python/espectre_cli/micro_firmware.py | 542 | " if (info == NULL || state == NULL || state->ringbuffer.buf == NULL) {\n" | STRING |
| HIGH | src/python/espectre_cli/micro_firmware.py | 1230 | channel_block = """ if (args[ARG_channel].u_int < 0 || args[ARG_channel].u_int > 255) { | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/compare_detection_methods.py | 515 | except Exception: | CODE |
| HIGH | tools/compare_chips.py | 324 | except Exception: | CODE |
| HIGH | tools/plot_constellation.py | 118 | except Exception: | CODE |
| HIGH | tools/plot_constellation.py | 265 | except Exception: | CODE |
| HIGH | tools/lib/npz_cache.py | 777 | except OSError: | CODE |
| HIGH | tools/lib/npz_cache.py | 773 | except OSError: | CODE |
| HIGH | tools/lib/npz_cache.py | 855 | except OSError: | CODE |
| HIGH | tools/lib/npz_cache.py | 291 | except OSError: | CODE |
| HIGH | tools/lib/ui.py | 25 | except Exception: | CODE |
| HIGH | tools/lib/csi_io.py | 1195 | except (subprocess.TimeoutExpired, FileNotFoundError): | CODE |
| HIGH | tools/lib/csi_io.py | 885 | except OSError: | CODE |
| HIGH | tools/lib/csi_io.py | 1146 | except OSError: | CODE |
| HIGH | tools/lib/csi_io.py | 648 | except OSError: | CODE |
| HIGH | tools/lib/performance_report.py | 562 | except (ImportError, AttributeError): | CODE |
| HIGH | tools/lib/ml_training/training.py | 167 | except (AttributeError, RuntimeError, ValueError): | CODE |
| HIGH | tools/lib/ml_training/training.py | 172 | except AttributeError: | CODE |
| HIGH | tools/lib/dataset_quality/catalog.py | 350 | except (OSError, KeyError, ValueError, TypeError, IndexError): | CODE |
| HIGH | tools/lib/dataset_quality/rendering.py | 608 | except ValueError: | CODE |
| HIGH | tools/lib/dataset_quality/pairing.py | 86 | except (OSError, ValueError): | CODE |
| HIGH | tools/lib/firmware_benchmark/direct.py | 1524 | except (OSError, RuntimeError, TimeoutError): | CODE |
| HIGH | tools/lib/firmware_benchmark/direct.py | 252 | except DeviceDiscoveryError: | CODE |
| HIGH | tools/lib/firmware_benchmark/direct.py | 932 | except RuntimeError: | CODE |
| HIGH | …_traffic_generator_addon/espectre_traffic_generator.py | 318 | except subprocess.TimeoutExpired: | CODE |
| HIGH | tools/ha_traffic_generator_addon/ha_client.py | 104 | except ValueError: | CODE |
| HIGH | tools/ha_traffic_generator_addon/ha_client.py | 227 | except (aiohttp.ClientError, ValueError, TypeError, asyncio.QueueFull): | CODE |
| HIGH | tools/ha_traffic_generator_addon/ha_client.py | 264 | except (HomeAssistantError, TimeoutError): | CODE |
| HIGH | tools/ha_traffic_generator_addon/ha_client.py | 315 | except (aiohttp.ClientError, TimeoutError, ValueError, KeyError, TypeError): | CODE |
| HIGH | tools/ha_traffic_generator_addon/panel.py | 236 | except TimeoutError: | CODE |
| HIGH | …ython/host/dataset/test_dataset_metadata_resolution.py | 337 | except FileNotFoundError: | CODE |
| HIGH | .github/scripts/build_firmware_compliance.py | 173 | except ValueError: | CODE |
| HIGH | .github/scripts/build_firmware_compliance.py | 281 | except importlib.metadata.PackageNotFoundError: | CODE |
| HIGH | src/python/espectre_cli/device_transport.py | 649 | except OSError: | CODE |
| HIGH | src/python/espectre_cli/esphome.py | 89 | except (OSError, ValueError, json.JSONDecodeError): | CODE |
| HIGH | src/python/espectre_cli/serial_monitor.py | 100 | except Exception: | CODE |
| HIGH | src/python/micro_espectre/runtime_main.py | 104 | except (ImportError, AttributeError, OSError, TypeError, ValueError): | CODE |
| HIGH | src/python/micro_espectre/protocol.py | 254 | except Exception: # pragma: no cover | CODE |
| HIGH | src/python/micro_espectre/wifi_bootstrap.py | 26 | except Exception: | CODE |
| HIGH | src/python/micro_espectre/wifi_bootstrap.py | 93 | except Exception: | CODE |
| HIGH | src/python/micro_espectre/wifi_bootstrap.py | 89 | except Exception: | CODE |
| HIGH | src/python/micro_espectre/wifi_bootstrap.py | 158 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tools/train_ml_model.py | 289 | print("Error: --evaluate-gates and --evaluate-selection are mutually exclusive") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 294 | print(f"Error: {exc}") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 297 | print("Error: --timing-warn-weight must be in the range (0.0, 1.0]") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 303 | print(f"Error: {exc}") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 311 | print("Error: --features requires at least one feature name") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 408 | print("Error: experiment campaigns are mutually exclusive") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 413 | print("Error: --force-promote and --no-export are mutually exclusive") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 416 | print("Error: --force-promote requires an explicit --seed so the " | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 446 | print("Error: --gain-stress-gate cannot be combined with experiment flows") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 449 | print("Error: --gain-stress-gate evaluates exported artifacts and cannot use --seed or seed-search") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 452 | print("Error: --gain-stress-gate cannot be combined with --shap, --ablation-feature, or --correlation") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 455 | print("Error: --gain-stress-gate evaluates exported artifacts and cannot use host-only --features") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 468 | print("Error: --cross-environment and --cross-chip are mutually exclusive") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 471 | print(f"Error: {mode} cannot be combined with experiment flows") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 474 | print(f"Error: {mode} cannot be combined with --shap, --ablation-feature, or --correlation") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 477 | print(f"Error: {mode} cannot be combined with seed search") | CODE |
| MEDIUM⚡ | tools/train_ml_model.py | 480 | print(f"Error: {mode} holds out one group at a time and " | CODE |
| MEDIUM | tools/train_ml_model.py | 332 | print("Error: --features contains duplicate names") | CODE |
| MEDIUM | tools/train_ml_model.py | 428 | print("Error: --force-promote applies only to a plain single-seed " | CODE |
| MEDIUM | tools/train_ml_model.py | 557 | print("Error: --seed and --seed-search-until-improvement are mutually exclusive") | CODE |
| MEDIUM | tools/train_ml_model.py | 560 | print("Error: --seed-search-until-improvement cannot be combined with --shap or --ablation-feature") | CODE |
| MEDIUM | tools/replay_lightweight_candidates.py | 2208 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| LOW | tools/compare_detection_methods.py | 515 | except Exception: | CODE |
| MEDIUM | tools/compare_detection_methods.py | 876 | print(f"Error: {e}") | CODE |
| MEDIUM | tools/compare_detection_methods.py | 879 | print(f"Error: {e}") | CODE |
| MEDIUM | tools/analyze_seed_dispersion.py | 156 | print(f"Error: {args.report} not found") | CODE |
| MEDIUM | tools/analyze_seed_dispersion.py | 162 | print("Error: no per-seed runs with paired metrics in this report") | CODE |
| MEDIUM | tools/analyze_seed_dispersion.py | 174 | print("Error: no replay appears in two or more seeds") | CODE |
| MEDIUM | tools/analyze_system_tuning.py | 352 | print(f"Error: {e}") | CODE |
| MEDIUM | tools/analyze_raw_data.py | 78 | print("Error: No packets found") | CODE |
| LOW | tools/compare_chips.py | 324 | except Exception: | CODE |
| MEDIUM | tools/benchmark_lightweight_candidate_pairs.py | 670 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| LOW⚡ | tools/plot_constellation.py | 118 | except Exception: | CODE |
| LOW | tools/plot_constellation.py | 265 | except Exception: | CODE |
| MEDIUM | tools/plot_constellation.py | 390 | print(f"Error: {e}") | STRING |
| LOW | tools/lib/npz_cache.py | 150 | except Exception: | CODE |
| LOW | tools/lib/npz_cache.py | 713 | except Exception: | CODE |
| LOW | tools/lib/npz_cache.py | 886 | except Exception: | CODE |
| LOW | tools/lib/npz_cache.py | 1025 | except Exception: | CODE |
| LOW | tools/lib/ui.py | 25 | except Exception: | CODE |
| LOW⚡ | tools/lib/csi_io.py | 997 | except Exception: | CODE |
| LOW | tools/lib/csi_io.py | 691 | except Exception as exc: | CODE |
| LOW | tools/lib/csi_io.py | 697 | except Exception as exc: | CODE |
| LOW | tools/lib/csi_io.py | 853 | except Exception: | CODE |
| LOW | tools/lib/csi_io.py | 1050 | except Exception as exc: | CODE |
| LOW | tools/lib/csi_io.py | 1078 | except Exception: | CODE |
| LOW | tools/lib/segmentation.py | 103 | except Exception as e: | CODE |
| LOW | tools/lib/segmentation.py | 119 | except Exception as e: | CODE |
| LOW | tools/lib/segmentation.py | 532 | except Exception as e: | CODE |
| LOW | tools/lib/segmentation.py | 540 | except Exception as e: | CODE |
| LOW | tools/lib/ml_training/dataset.py | 670 | except Exception as e: | CODE |
| MEDIUM⚡ | tools/lib/ml_training/training.py | 3442 | print("Error: --ablation-feature requires at least one feature name") | CODE |
| MEDIUM⚡ | tools/lib/ml_training/training.py | 3445 | print("Error: --ablation-feature contains duplicate names") | CODE |
| MEDIUM⚡ | tools/lib/ml_training/training.py | 3455 | print(f"Error: {exc}") | CODE |
| MEDIUM | tools/lib/ml_training/training.py | 731 | print("Error: SHAP not installed. Run: pip install shap") | CODE |
| MEDIUM | tools/lib/ml_training/training.py | 968 | print(f"Error: Missing dependency - {exc}") | CODE |
| MEDIUM | tools/lib/ml_training/training.py | 972 | print(f"Error: {exc}") | CODE |
| MEDIUM | tools/lib/ml_training/training.py | 1024 | print(f"Error: no {unit} metadata available for cross-{unit} CV") | CODE |
| MEDIUM | tools/lib/ml_training/training.py | 1334 | print("Error: SHAP not installed. Run: pip install shap") | CODE |
| MEDIUM | tools/lib/ml_training/training.py | 1822 | print(f"Error: Missing dependency - {e}") | CODE |
| 50 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/train_ml_model.py | 70 | CODE | |
| LOW | tools/train_ml_model.py | 70 | CODE | |
| LOW | tools/replay_lightweight_candidates.py | 26 | CODE | |
| LOW | tools/compare_detection_methods.py | 30 | CODE | |
| LOW | tools/analyze_seed_dispersion.py | 23 | CODE | |
| LOW | tools/fit_lightweight_detector.py | 43 | CODE | |
| LOW | tools/benchmark_subcarrier_aggregation.py | 36 | CODE | |
| LOW | tools/analyze_system_tuning.py | 27 | CODE | |
| LOW | tools/__init__.py | 12 | CODE | |
| LOW | tools/__init__.py | 13 | CODE | |
| LOW | tools/analyze_raw_data.py | 28 | CODE | |
| LOW | tools/prune_npz_cache.py | 12 | CODE | |
| LOW | tools/compare_chips.py | 36 | CODE | |
| LOW | tools/generate_performance_report.py | 12 | CODE | |
| LOW | tools/generate_performance_report.py | 27 | CODE | |
| LOW | tools/benchmark_lightweight_candidate_pairs.py | 28 | CODE | |
| LOW | tools/sweep_occupancy_floor.py | 19 | CODE | |
| LOW | tools/plot_constellation.py | 30 | CODE | |
| LOW | tools/compare_reserved_selection.py | 27 | CODE | |
| LOW | tools/benchmark_firmware.py | 6 | CODE | |
| LOW | tools/plot_heatmap.py | 20 | CODE | |
| LOW | tools/lib/bootstrap.py | 11 | CODE | |
| LOW | tools/lib/npz_cache.py | 12 | CODE | |
| LOW | tools/lib/cpp_parity.py | 11 | CODE | |
| LOW | tools/lib/runtime_policy.py | 23 | CODE | |
| LOW | tools/lib/runtime_policy.py | 23 | CODE | |
| LOW | tools/lib/runtime_policy.py | 23 | CODE | |
| LOW | tools/lib/csi_io.py | 11 | CODE | |
| LOW | tools/lib/occupancy_thinning.py | 5 | CODE | |
| LOW | tools/lib/dataset_metadata.py | 11 | CODE | |
| LOW | tools/lib/candidate_features.py | 14 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| LOW | tools/lib/utils.py | 17 | CODE | |
| 98 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/replay_lightweight_candidates.py | 487 | CODE | |
| LOW | tools/replay_lightweight_candidates.py | 1061 | CODE | |
| LOW | tools/replay_lightweight_candidates.py | 1809 | CODE | |
| LOW | tools/replay_lightweight_candidates.py | 1869 | CODE | |
| LOW | tools/compare_detection_methods.py | 488 | CODE | |
| LOW | tools/compare_detection_methods.py | 800 | CODE | |
| LOW | tools/fit_lightweight_detector.py | 367 | CODE | |
| LOW | tools/benchmark_subcarrier_aggregation.py | 394 | CODE | |
| LOW | tools/benchmark_subcarrier_aggregation.py | 551 | CODE | |
| LOW | tools/compare_chips.py | 155 | CODE | |
| LOW | tools/plot_constellation.py | 69 | CODE | |
| LOW | tools/plot_constellation.py | 223 | CODE | |
| LOW | tools/benchmark_firmware.py | 106 | CODE | |
| LOW | tools/plot_heatmap.py | 273 | CODE | |
| LOW | tools/lib/npz_cache.py | 782 | CODE | |
| LOW | tools/lib/npz_cache.py | 972 | CODE | |
| LOW | tools/lib/temporal_csi_sampler.py | 253 | CODE | |
| LOW | tools/lib/csi_io.py | 203 | CODE | |
| LOW | tools/lib/csi_io.py | 643 | CODE | |
| LOW | tools/lib/csi_io.py | 1920 | CODE | |
| LOW | tools/lib/csi_io.py | 1985 | CODE | |
| LOW | tools/lib/csi_io.py | 2092 | CODE | |
| LOW | tools/lib/csi_io.py | 2182 | CODE | |
| LOW | tools/lib/csi_io.py | 2243 | CODE | |
| LOW | tools/lib/dataset_metadata.py | 551 | CODE | |
| LOW | tools/lib/dataset_metadata.py | 702 | CODE | |
| LOW | tools/lib/candidate_features.py | 253 | CODE | |
| LOW | tools/lib/csi_features.py | 410 | CODE | |
| LOW | tools/lib/csi_features.py | 229 | CODE | |
| LOW | tools/lib/host_feature_trackers.py | 933 | CODE | |
| LOW | tools/lib/ml_feature_trackers.py | 45 | CODE | |
| LOW | tools/lib/ml_feature_trackers.py | 294 | CODE | |
| LOW | tools/lib/performance_report.py | 802 | CODE | |
| LOW | tools/lib/performance_report.py | 2339 | CODE | |
| LOW | tools/lib/lightweight_detector.py | 166 | CODE | |
| LOW | tools/lib/lightweight_detector.py | 305 | CODE | |
| LOW | tools/lib/ml_training/feature_cache.py | 957 | CODE | |
| LOW | tools/lib/ml_training/augmentation.py | 349 | CODE | |
| LOW | tools/lib/ml_training/dataset.py | 351 | CODE | |
| LOW | tools/lib/ml_training/dataset.py | 373 | CODE | |
| LOW | tools/lib/ml_training/dataset.py | 512 | CODE | |
| LOW | tools/lib/ml_training/dataset.py | 749 | CODE | |
| LOW | tools/lib/ml_training/preprocessing.py | 280 | CODE | |
| LOW | tools/lib/ml_training/training.py | 646 | CODE | |
| LOW | tools/lib/ml_training/training.py | 1425 | CODE | |
| LOW | tools/lib/ml_training/training.py | 1677 | CODE | |
| LOW | tools/lib/ml_training/training.py | 1734 | CODE | |
| LOW | tools/lib/ml_training/training.py | 2467 | CODE | |
| LOW | tools/lib/dataset_quality/catalog.py | 134 | CODE | |
| LOW | tools/lib/dataset_quality/catalog.py | 308 | CODE | |
| LOW | tools/lib/dataset_quality/pairing.py | 92 | CODE | |
| LOW | tools/lib/dataset_quality/pairing.py | 222 | CODE | |
| LOW | tools/lib/firmware_benchmark/analysis.py | 65 | CODE | |
| LOW | tools/lib/firmware_benchmark/direct.py | 226 | CODE | |
| LOW | tools/lib/firmware_benchmark/direct.py | 491 | CODE | |
| LOW | tools/lib/firmware_benchmark/direct.py | 622 | CODE | |
| LOW | tools/lib/firmware_benchmark/direct.py | 1134 | CODE | |
| LOW | tools/lib/firmware_benchmark/matter.py | 99 | CODE | |
| LOW | tools/lib/firmware_benchmark/report.py | 355 | CODE | |
| LOW | tools/lib/firmware_benchmark/report.py | 770 | CODE | |
| 50 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/lib/lightweight_detector.py | 61 | # stays high at rest; Lightweight precision is limited there. | COMMENT |
| LOW | test/python/performance/test_low_rssi_lightweight.py | 41 | tuple(config.DEFAULT_SUBCARRIERS), | COMMENT |
| LOW | test/web/generate_firmware_manifest.sh | 1 | #!/bin/bash | COMMENT |
| LOW | test/cpp/run_gcc13_coverage.sh | 1 | #!/bin/bash | COMMENT |
| LOW | test/cpp/run_all_tests.sh | 1 | #!/bin/bash | COMMENT |
| LOW | test/cpp/run_coverage.sh | 1 | #!/bin/bash | COMMENT |
| LOW | test/cpp/suites/core/test_high_accuracy_detector.cpp | 21 | #undef protected | COMMENT |
| LOW | test/cpp/suites/frontend/test_frontend_controls.cpp | 21 | #include "sensing_switch.h" | COMMENT |
| LOW | test/cpp/suites/integration/test_motion_detection.cpp | 21 | #include <string> | COMMENT |
| LOW | test/cpp/suites/runtime/test_direct_http_service.cpp | 1 | /* | COMMENT |
| LOW | test/cpp/suites/runtime/test_csi_pipeline.cpp | 1 | /* | COMMENT |
| LOW | test/cpp/suites/runtime/test_runtime_helpers.cpp | 21 | #include "runtime_diagnostics_protocol.h" | COMMENT |
| LOW | …st/cpp/suites/runtime/test_runtime_detector_switch.cpp | 21 | #define private public | COMMENT |
| LOW | test/cpp/suites/runtime/test_mdns_discovery_service.cpp | 1 | /* | COMMENT |
| LOW | test/cpp/suites/runtime/test_device_identity.cpp | 1 | /* | COMMENT |
| LOW | test/cpp/suites/runtime/test_traffic_generator.cpp | 1 | /* | COMMENT |
| LOW | test/cpp/support/cnpy.cpp | 1 | // SPDX-License-Identifier: MIT | COMMENT |
| LOW | test/cpp/support/benchmark_detector_resources.cpp | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …st/cpp/support/benchmark_lightweight_iqr_resources.cpp | 21 | #include <chrono> | COMMENT |
| LOW | test/cpp/support/cnpy.h | 1 | // SPDX-License-Identifier: MIT | COMMENT |
| LOW | test/cpp/support/csi_test_data.h | 21 | * Commercial licensing available under separate agreement; see LICENSING.md. | COMMENT |
| LOW | .github/dependabot.yml | 1 | # Dependabot Configuration | COMMENT |
| LOW | .github/sdk/optional_services_link_check.cpp | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …/micro_espectre/firmware/boards/mpconfigboard_common.h | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …/micro_espectre/firmware/boards/mpconfigboard_common.h | 21 | #define MICROPY_PY_HASHLIB (1) | COMMENT |
| LOW | …/micro_espectre/firmware/boards/mpconfigboard_common.h | 41 | #define MICROPY_PY_SYS_PS1_PS2 (0) | COMMENT |
| LOW | …e/firmware/boards/ESP32_MICRO_ESPECTRE/mpconfigboard.h | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …firmware/boards/ESP32S2_MICRO_ESPECTRE/mpconfigboard.h | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …firmware/boards/ESP32S3_MICRO_ESPECTRE/mpconfigboard.h | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …firmware/boards/ESP32C6_MICRO_ESPECTRE/mpconfigboard.h | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …firmware/boards/ESP32C3_MICRO_ESPECTRE/mpconfigboard.h | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …firmware/boards/ESP32C5_MICRO_ESPECTRE/mpconfigboard.h | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …ro_espectre/firmware/native_components/native_direct.c | 1 | // SPDX-License-Identifier: GPL-3.0-only | COMMENT |
| LOW | …ro_espectre/firmware/native_components/native_direct.c | 21 | #include "mdns.h" | COMMENT |
| LOW | src/cpp/espectre_sdk.h | 101 | * ESPectre is dual-licensed: GPLv3, or a separately offered commercial license | COMMENT |
| LOW | src/cpp/espectre_sdk.h | 121 | #include "runtime/runtime_snapshot.h" | COMMENT |
| LOW | src/cpp/CMakeLists.txt | 1 | # ESPectre SDK - ESP-IDF component | COMMENT |
| LOW | src/cpp/espectre_core_sdk.h | 21 | COMMENT | |
| LOW | src/cpp/espectre_protocol_sdk.h | 21 | #include "runtime/diagnostic_fields.h" | COMMENT |
| LOW | src/cpp/espectre_services_sdk.h | 21 | #include "espectre_protocol_sdk.h" | COMMENT |
| LOW | src/cpp/espectre_services_sdk.h | 41 | #include "runtime/esp_idf/wifi_lifecycle.h" | COMMENT |
| LOW | src/cpp/core/detector_limits.h | 61 | constexpr uint16_t DETECTOR_AUTOCORR_LAG_DEFAULT = 1U; | COMMENT |
| LOW | src/cpp/core/csi_format.h | 21 | #include "utils.h" | COMMENT |
| LOW | src/cpp/core/high_accuracy_detector.cpp | 321 | COMMENT | |
| LOW | src/cpp/frontend/native/app/main/app_main.cpp | 21 | #include <driver/gpio.h> | COMMENT |
| LOW | src/cpp/frontend/matter/app/CMakeLists.txt | 1 | # ESPectre Matter firmware build | COMMENT |
| LOW | src/cpp/frontend/matter/app/main/app_main.cpp | 1 | /* | COMMENT |
| LOW | src/cpp/frontend/matter/app/main/app_main.cpp | 21 | COMMENT | |
| LOW | …/cpp/frontend/esphome/components/espectre/espectre.cpp | 21 | #include "esphome/core/log.h" | COMMENT |
| LOW | src/cpp/frontend/esphome/components/espectre/espectre.h | 21 | #include "esphome/components/select/select.h" | COMMENT |
| LOW | …rontend/esphome/examples/home-assistant-dashboard.yaml | 1 | # ESPectre - Home Assistant Dashboard | COMMENT |
| LOW | src/cpp/frontend/esphome/examples/espectre-cyd-c5.yaml | 1 | # ESPectre - NM-CYD-C5 (ESP32-C5 Cheap Yellow Display) | COMMENT |
| LOW | src/cpp/frontend/esphome/examples/espectre-cyd-c5.yaml | 21 | COMMENT | |
| LOW | src/cpp/frontend/esphome/examples/espectre-c5.yaml | 1 | # ESPectre - ESP32-C5 Configuration | COMMENT |
| LOW | src/cpp/frontend/esphome/examples/espectre-c3.yaml | 1 | # ESPectre - ESP32-C3 Configuration | COMMENT |
| LOW | …p/frontend/esphome/examples/espectre-s3-touch-lcd.yaml | 1 | # ESPectre - ESP32-S3 Touch LCD 1.47" | COMMENT |
| LOW | …p/frontend/esphome/examples/espectre-s3-webserver.yaml | 1 | # ESPectre - ESP32-S3 with Web Server | COMMENT |
| LOW | src/cpp/frontend/esphome/examples/espectre-s3-led.yaml | 1 | # ESPectre - ESP32-S3 with Onboard LED Feedback | COMMENT |
| LOW | src/cpp/runtime/esp_idf/csi_pipeline.h | 21 | #include "csi_capture_service.h" | COMMENT |
| LOW | src/cpp/runtime/esp_idf/esp_idf_runtime.h | 21 | #include "runtime/pending_event.h" | COMMENT |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/analyze_raw_data.py | 306 | CODE | |
| LOW | tools/plot_heatmap.py | 273 | CODE | |
| LOW | tools/lib/csi_io.py | 2315 | CODE | |
| LOW | tools/lib/csi_io.py | 1348 | CODE | |
| LOW | tools/lib/csi_io.py | 1651 | CODE | |
| LOW | tools/lib/dataset_metadata.py | 551 | CODE | |
| LOW | tools/lib/candidate_features.py | 253 | CODE | |
| LOW | tools/lib/high_accuracy_detector.py | 194 | CODE | |
| LOW | tools/lib/csi_features.py | 410 | CODE | |
| LOW | tools/lib/performance_report.py | 802 | CODE | |
| LOW | tools/lib/lightweight_detector.py | 88 | CODE | |
| LOW | tools/lib/segmentation.py | 37 | CODE | |
| LOW | tools/lib/ml_training/feature_cache.py | 957 | CODE | |
| LOW | tools/lib/ml_training/dataset.py | 749 | CODE | |
| LOW | tools/lib/ml_training/training.py | 465 | CODE | |
| LOW | tools/lib/ml_training/training.py | 646 | CODE | |
| LOW | tools/lib/ml_training/training.py | 923 | CODE | |
| LOW | tools/lib/ml_training/training.py | 1734 | CODE | |
| LOW | tools/lib/ml_training/training.py | 2467 | CODE | |
| LOW | tools/lib/ml_training/training.py | 3423 | CODE | |
| LOW | tools/lib/ml_training/training.py | 3581 | CODE | |
| LOW | tools/lib/ml_training/training.py | 3830 | CODE | |
| LOW | tools/lib/dataset_quality/pairing.py | 273 | CODE | |
| LOW | tools/lib/firmware_benchmark/process.py | 48 | CODE | |
| LOW | test/python/host/cli/test_csi_raw_record.py | 130 | CODE | |
| LOW | src/python/micro_espectre/runtime_diagnostics.py | 144 | CODE | |
| LOW | src/python/micro_espectre/console_output.py | 217 | CODE | |
| LOW | src/python/micro_espectre/device_utils.py | 139 | CODE | |
| LOW | src/python/micro_espectre/lightweight_detector.py | 36 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/lib/host_feature_trackers.py | 1074 | """Return robust change in guarded cross-subcarrier log ratios. | STRING |
| MEDIUM | tools/lib/ml_training/evaluation.py | 422 | """Ranking key for seeds/architectures under the robust evaluation protocol.""" | STRING |
| MEDIUM⚡ | tools/lib/ml_training/training.py | 3417 | """Compare single-run candidates with safety first and robust CV leading.""" | STRING |
| MEDIUM | tools/lib/ml_training/training.py | 1597 | """Print the robust evaluation summary used for model selection.""" | STRING |
| MEDIUM | tools/lib/ml_training/training.py | 2415 | """Require deployment safety plus robust grouped-CV improvement.""" | STRING |
| MEDIUM | tools/lib/ml_training/training.py | 3017 | """Sort safely passing runs by robust grouped-CV performance.""" | STRING |
| MEDIUM | tools/lib/dataset_quality/metrics.py | 252 | """Collapse per-window invariant features into one robust evidence series.""" | STRING |
| MEDIUM | tools/lib/dataset_quality/metrics.py | 276 | """Return directional evidence series and idle robust axis stats.""" | STRING |
| MEDIUM | tools/lib/dataset_quality/replay.py | 338 | # Excursions are read against a robust bound built from the capture itself, | COMMENT |
| MEDIUM⚡ | test/python/micro/test_csi_features.py | 176 | # Aggregated IQR is the production robust-dispersion feature and rises | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/compare_detection_methods.py | 70 | # Check if ML model is available (production implementation). | COMMENT |
| LOW | tools/lib/filters.py | 217 | # Check if current value is an outlier | COMMENT |
| LOW | …_traffic_generator_addon/espectre_traffic_generator.py | 18 | python3 espectre_traffic_generator.py status # Check if running | STRING |
| LOW⚡ | test/python/performance/test_validation_real_data.py | 606 | # Print results | COMMENT |
| LOW | src/cpp/frontend/esphome/examples/espectre-c5.yaml | 49 | direct_api: true # Set false to disable Direct HTTP, SSE, raw CSI, and Direct mDNS discovery | CODE |
| LOW | src/cpp/frontend/esphome/examples/espectre-c3.yaml | 47 | direct_api: true # Set false to disable Direct HTTP, SSE, raw CSI, and Direct mDNS discovery | CODE |
| LOW | src/cpp/frontend/esphome/examples/espectre-esp32.yaml | 41 | direct_api: true # Set false to disable Direct HTTP, SSE, raw CSI, and Direct mDNS discovery | CODE |
| LOW | src/cpp/frontend/esphome/examples/espectre-c6.yaml | 40 | direct_api: true # Set false to disable Direct HTTP, SSE, raw CSI, and Direct mDNS discovery | CODE |
| LOW | src/cpp/frontend/esphome/examples/espectre-s2.yaml | 35 | direct_api: true # Set false to disable Direct HTTP, SSE, raw CSI, and Direct mDNS discovery | CODE |
| LOW | src/cpp/frontend/esphome/examples/espectre-s3.yaml | 46 | direct_api: true # Set false to disable Direct HTTP, SSE, raw CSI, and Direct mDNS discovery | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/web/generate_firmware_manifest.sh | 7 | # Usage: | COMMENT |
| LOW | test/web/run_tests.sh | 7 | # Usage: | COMMENT |
| LOW | test/cpp/run_gcc13_coverage.sh | 8 | # Usage: | COMMENT |
| LOW | test/cpp/run_all_tests.sh | 7 | # Usage: | COMMENT |
| LOW | test/cpp/run_coverage.sh | 8 | # Usage: | COMMENT |
| LOW | …rontend/esphome/examples/home-assistant-dashboard.yaml | 3 | # How to use: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/__init__.py | 15 | __all__ = ['CSICollector', 'get_dataset_stats'] | CODE |
| LOW⚡ | tools/lib/csi_io.py | 992 | def _update_final_raw_diagnostics(self) -> None: | CODE |
| LOW | tools/lib/csi_io.py | 595 | def _update_pps(self) -> None: | CODE |
| LOW | tools/lib/high_accuracy_detector.py | 59 | __all__ = [ | CODE |
| LOW | src/python/espectre_cli/device_discovery.py | 201 | def update_service(self, zeroconf: Zeroconf, service_type: str, name: str) -> None: | CODE |
| LOW | src/python/espectre_cli/device_control.py | 105 | __all__ = [ | CODE |
| LOW | src/python/espectre_cli/mqtt_shell.py | 455 | def _set_active_device(self, device_id: str | None) -> None: | CODE |
| LOW | src/python/espectre_cli/mqtt_shell.py | 482 | def _update_completer(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/python/performance/test_validation_real_data.py | 920 | # Step 1: Fixed-band bootstrap | COMMENT |
| LOW⚡ | test/python/performance/test_validation_real_data.py | 943 | # Step 2: Build the production Lightweight detector with calibration state | COMMENT |
| LOW⚡ | test/python/performance/test_validation_real_data.py | 956 | # Step 3: Replay baseline and movement through the detector | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/python/performance/test_validation_real_data.py | 920 | # Step 1: Fixed-band bootstrap | COMMENT |
| LOW⚡ | test/python/performance/test_validation_real_data.py | 943 | # Step 2: Build the production Lightweight detector with calibration state | COMMENT |
| LOW⚡ | test/python/performance/test_validation_real_data.py | 956 | # Step 3: Replay baseline and movement through the detector | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …t/performance_report/test_performance_report_inputs.py | 303 | binary.write_text("placeholder") | CODE |