Open-source vacuum robot cleaner
This report summarizes scanner evidence for makerspet/oomwoo, a Python project with 11,441 GitHub stars. SynthScan examined 13,444 lines of code across 97 source files, recording 57 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 5.4 (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? 46 finding(s).
Are imports declared and package/API names verified? 7 finding(s).
Are wrappers, guards, and repeated structures necessary? 47 finding(s).
Which changes need focused human review? 57 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 57 distinct pattern matches across 6 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⚡ | …dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py | 20 | def test_centered_final_approach_has_balanced_front_receivers(self): | CODE |
| LOW⚡ | …dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py | 28 | def test_offset_final_approach_requests_correct_turn(self): | CODE |
| LOW⚡ | …dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py | 35 | def test_search_receiver_detects_side_beacon_when_front_is_not_visible(self): | CODE |
| LOW⚡ | …dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py | 43 | def test_blocker_occludes_beacon(self): | CODE |
| LOW | …dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py | 55 | def test_signal_attenuates_with_range(self): | CODE |
| LOW | …omwoo_recovery_safety/test/test_recovery_controller.py | 8 | def test_bumper_recovery_escalates_and_terminates(): | CODE |
| LOW | …omwoo_recovery_safety/test/test_recovery_controller.py | 34 | def test_success_stops_ladder(): | CODE |
| LOW | …omwoo_recovery_safety/test/test_recovery_controller.py | 54 | def test_safety_events_pause_immediately(situation, reason): | CODE |
| LOW | …omwoo_recovery_safety/test/test_recovery_controller.py | 65 | def test_duplicate_trigger_is_ignored_while_recovering(): | CODE |
| LOW | …omwoo_recovery_safety/test/test_recovery_controller.py | 76 | def test_reset_returns_to_idle_after_pause(): | CODE |
| LOW | …omwoo_recovery_safety/test/test_recovery_controller.py | 87 | def test_paused_controller_ignores_new_recovery_until_reset(): | CODE |
| LOW | …omwoo_recovery_safety/test/test_recovery_controller.py | 112 | def test_external_steps_have_separate_completion_timeout(): | CODE |
| LOW | …woo_recovery_safety/test/test_recovery_node_adapter.py | 134 | def test_twist_step_is_republished_while_deadline_is_active(monkeypatch): | CODE |
| LOW | …woo_recovery_safety/test/test_recovery_node_adapter.py | 152 | def test_delegated_command_uses_completion_timeout(monkeypatch): | CODE |
| LOW | …omwoo_recovery_safety/launch/recovery_safety.launch.py | 5 | def generate_launch_description(): | CODE |
| LOW | …io-board-interface/smailzhu/tests/test_command_gate.py | 38 | def test_oracle_matches_authored_outcomes(self): | CODE |
| LOW | …io-board-interface/smailzhu/tests/test_command_gate.py | 52 | def test_schema_is_self_consistent(self): | CODE |
| LOW⚡ | …io-board-interface/smailzhu/tests/test_command_gate.py | 65 | def test_every_command_has_an_accepted_vector(self): | CODE |
| LOW⚡ | …io-board-interface/smailzhu/tests/test_command_gate.py | 71 | def test_each_reason_code_is_exercised(self): | CODE |
| LOW⚡ | …io-board-interface/smailzhu/tests/test_command_gate.py | 79 | def test_committed_json_is_current(self): | CODE |
| LOW | …io-board-interface/smailzhu/tests/test_command_gate.py | 93 | def test_table_matches_contract_manifest(self): | CODE |
| LOW | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 71 | def test_feed_never_raises_and_emits_only_valid_frames(self): | CODE |
| LOW | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 108 | def test_chunk_boundary_invariance(self): | CODE |
| LOW | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 146 | def test_valid_frames_recovered_through_non_magic_noise(self): | CODE |
| LOW⚡ | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 174 | def test_oversized_declared_length_is_skipped(self): | CODE |
| LOW⚡ | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 181 | def test_bad_crc_then_valid_frame(self): | CODE |
| LOW⚡ | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 188 | def test_empty_and_max_payload_round_trip(self): | CODE |
| LOW⚡ | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 194 | def test_max_payload_fed_in_fragments_stays_bounded(self): | CODE |
| LOW | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 207 | def test_stalled_header_documents_known_limitation(self): | CODE |
| LOW | …-interface/xbattlax/tests/test_protocol_conformance.py | 33 | def test_generated_outputs_are_current(self): | CODE |
| LOW | …-interface/xbattlax/tests/test_protocol_conformance.py | 39 | def test_manifest_covers_every_message_id(self): | CODE |
| LOW | …-interface/xbattlax/tests/test_protocol_conformance.py | 54 | def test_every_vector_round_trips_and_survives_byte_fragmentation(self): | CODE |
| LOW⚡ | …-interface/xbattlax/tests/test_protocol_conformance.py | 71 | def test_every_vector_rejects_crc_corruption(self): | CODE |
| LOW⚡ | …-interface/xbattlax/tests/test_protocol_conformance.py | 79 | def test_safety_event_vectors_cover_all_current_codes(self): | CODE |
| LOW⚡ | …-interface/xbattlax/tests/test_protocol_conformance.py | 87 | def test_open_payloads_are_explicit_in_generated_output(self): | CODE |
| LOW | …oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py | 34 | def test_round_trip_heartbeat(self): | CODE |
| LOW | …oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py | 53 | def test_stream_decoder_handles_noise_and_partial_frames(self): | CODE |
| LOW | …oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py | 74 | def test_stream_decoder_preserves_split_magic(self): | CODE |
| LOW | …oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py | 85 | def test_drive_setpoint_limits(self): | CODE |
| LOW | …oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py | 102 | def test_percent_payload_limits(self): | CODE |
| LOW | …oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py | 107 | def test_fast_telemetry_payload(self): | CODE |
| LOW | …oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py | 134 | def test_safety_state_carries_all_defined_events(self): | CODE |
| LOW | docs/blog/oomwoo-one-first-ros2-package.md | 114 | def generate_launch_description(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ions/dock-cycle/xbattlax/tools/sim_dock_ir_scenario.py | 2 | CODE | |
| LOW | …ions/dock-cycle/xbattlax/tools/oomwoo_dock_ir_model.py | 1 | CODE | |
| LOW | …ecovery_safety/oomwoo_recovery_safety/recovery_node.py | 1 | CODE | |
| LOW | …/oomwoo_recovery_safety/oomwoo_recovery_safety/core.py | 1 | CODE | |
| LOW | …/io-board-interface/xbattlax/tools/oomwoo_mcu_frame.py | 4 | CODE | |
| LOW | …ributions/io-board-interface/xbattlax/tools/sim_mcu.py | 4 | CODE | |
| LOW | …ard-interface/xbattlax/conformance/generate_vectors.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ecovery_safety/oomwoo_recovery_safety/recovery_node.py | 174 | except (KeyboardInterrupt, ExternalShutdownException, ROSInterruptException): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …-board-interface/smailzhu/tools/oomwoo_command_gate.py | 131 | Decide how the MCU command gate would treat this decoded frame. Args: message_type: 16-bit message id. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ecovery_safety/oomwoo_recovery_safety/recovery_node.py | 176 | except Exception as exc: | CODE |
| LOW | …ecovery_safety/oomwoo_recovery_safety/recovery_node.py | 184 | except Exception as exc: | CODE |
| LOW | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 81 | except Exception as exc: # noqa: BLE001 - robustness is the point | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …-board-interface/smailzhu/tools/oomwoo_command_gate.py | 94 | CODE | |
| LOW | …d-interface/xbattlax/tests/test_stream_decoder_fuzz.py | 108 | CODE |