AI Slop Code RIsk Monitor

makerspet/oomwoo

Open-source vacuum robot cleaner

5.4 Moderate pattern signal View on GitHub

Maintenance and Governance Review

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.

5.4
Adjusted Signal
5.4
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
11.4K
Stars
Python
Language
13.4K
Lines of Code
97
Files
57
Pattern Hits
2026-10-12
Scan Date
0.02
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 19.1/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 46 finding(s).

Hallucinated Dependency & Supply Chain Risk 2.6/100 · LOW

Are imports declared and package/API names verified? 7 finding(s).

Agent Over-Engineering Ratio 19.4/100 · LOW

Are wrappers, guards, and repeated structures necessary? 47 finding(s).

PR Review Velocity Impact 22.1/100 · LOW

Which changes need focused human review? 57 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 2MEDIUM 0LOW 55

Directory Score Breakdown

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.

Pattern Findings

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.

Hyper-Verbose Identifiers43 hits · 50 pts
SeverityFileLineSnippetContext
LOW⚡…dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py20 def test_centered_final_approach_has_balanced_front_receivers(self):CODE
LOW⚡…dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py28 def test_offset_final_approach_requests_correct_turn(self):CODE
LOW⚡…dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py35 def test_search_receiver_detects_side_beacon_when_front_is_not_visible(self):CODE
LOW⚡…dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py43 def test_blocker_occludes_beacon(self):CODE
LOW…dock-cycle/xbattlax/tests/test_oomwoo_dock_ir_model.py55 def test_signal_attenuates_with_range(self):CODE
LOW…omwoo_recovery_safety/test/test_recovery_controller.py8def test_bumper_recovery_escalates_and_terminates():CODE
LOW…omwoo_recovery_safety/test/test_recovery_controller.py34def test_success_stops_ladder():CODE
LOW…omwoo_recovery_safety/test/test_recovery_controller.py54def test_safety_events_pause_immediately(situation, reason):CODE
LOW…omwoo_recovery_safety/test/test_recovery_controller.py65def test_duplicate_trigger_is_ignored_while_recovering():CODE
LOW…omwoo_recovery_safety/test/test_recovery_controller.py76def test_reset_returns_to_idle_after_pause():CODE
LOW…omwoo_recovery_safety/test/test_recovery_controller.py87def test_paused_controller_ignores_new_recovery_until_reset():CODE
LOW…omwoo_recovery_safety/test/test_recovery_controller.py112def test_external_steps_have_separate_completion_timeout():CODE
LOW…woo_recovery_safety/test/test_recovery_node_adapter.py134def test_twist_step_is_republished_while_deadline_is_active(monkeypatch):CODE
LOW…woo_recovery_safety/test/test_recovery_node_adapter.py152def test_delegated_command_uses_completion_timeout(monkeypatch):CODE
LOW…omwoo_recovery_safety/launch/recovery_safety.launch.py5def generate_launch_description():CODE
LOW…io-board-interface/smailzhu/tests/test_command_gate.py38 def test_oracle_matches_authored_outcomes(self):CODE
LOW…io-board-interface/smailzhu/tests/test_command_gate.py52 def test_schema_is_self_consistent(self):CODE
LOW⚡…io-board-interface/smailzhu/tests/test_command_gate.py65 def test_every_command_has_an_accepted_vector(self):CODE
LOW⚡…io-board-interface/smailzhu/tests/test_command_gate.py71 def test_each_reason_code_is_exercised(self):CODE
LOW⚡…io-board-interface/smailzhu/tests/test_command_gate.py79 def test_committed_json_is_current(self):CODE
LOW…io-board-interface/smailzhu/tests/test_command_gate.py93 def test_table_matches_contract_manifest(self):CODE
LOW…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py71 def test_feed_never_raises_and_emits_only_valid_frames(self):CODE
LOW…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py108 def test_chunk_boundary_invariance(self):CODE
LOW…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py146 def test_valid_frames_recovered_through_non_magic_noise(self):CODE
LOW⚡…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py174 def test_oversized_declared_length_is_skipped(self):CODE
LOW⚡…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py181 def test_bad_crc_then_valid_frame(self):CODE
LOW⚡…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py188 def test_empty_and_max_payload_round_trip(self):CODE
LOW⚡…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py194 def test_max_payload_fed_in_fragments_stays_bounded(self):CODE
LOW…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py207 def test_stalled_header_documents_known_limitation(self):CODE
LOW…-interface/xbattlax/tests/test_protocol_conformance.py33 def test_generated_outputs_are_current(self):CODE
LOW…-interface/xbattlax/tests/test_protocol_conformance.py39 def test_manifest_covers_every_message_id(self):CODE
LOW…-interface/xbattlax/tests/test_protocol_conformance.py54 def test_every_vector_round_trips_and_survives_byte_fragmentation(self):CODE
LOW⚡…-interface/xbattlax/tests/test_protocol_conformance.py71 def test_every_vector_rejects_crc_corruption(self):CODE
LOW⚡…-interface/xbattlax/tests/test_protocol_conformance.py79 def test_safety_event_vectors_cover_all_current_codes(self):CODE
LOW⚡…-interface/xbattlax/tests/test_protocol_conformance.py87 def test_open_payloads_are_explicit_in_generated_output(self):CODE
LOW…oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py34 def test_round_trip_heartbeat(self):CODE
LOW…oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py53 def test_stream_decoder_handles_noise_and_partial_frames(self):CODE
LOW…oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py74 def test_stream_decoder_preserves_split_magic(self):CODE
LOW…oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py85 def test_drive_setpoint_limits(self):CODE
LOW…oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py102 def test_percent_payload_limits(self):CODE
LOW…oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py107 def test_fast_telemetry_payload(self):CODE
LOW…oard-interface/xbattlax/tests/test_oomwoo_mcu_frame.py134 def test_safety_state_carries_all_defined_events(self):CODE
LOWdocs/blog/oomwoo-one-first-ros2-package.md114def generate_launch_description():CODE
Unused Imports7 hits · 7 pts
SeverityFileLineSnippetContext
LOW…ions/dock-cycle/xbattlax/tools/sim_dock_ir_scenario.py2CODE
LOW…ions/dock-cycle/xbattlax/tools/oomwoo_dock_ir_model.py1CODE
LOW…ecovery_safety/oomwoo_recovery_safety/recovery_node.py1CODE
LOW…/oomwoo_recovery_safety/oomwoo_recovery_safety/core.py1CODE
LOW…/io-board-interface/xbattlax/tools/oomwoo_mcu_frame.py4CODE
LOW…ributions/io-board-interface/xbattlax/tools/sim_mcu.py4CODE
LOW…ard-interface/xbattlax/conformance/generate_vectors.py4CODE
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGH…ecovery_safety/oomwoo_recovery_safety/recovery_node.py174except (KeyboardInterrupt, ExternalShutdownException, ROSInterruptException):CODE
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGH…-board-interface/smailzhu/tools/oomwoo_command_gate.py131Decide how the MCU command gate would treat this decoded frame. Args: message_type: 16-bit message id. STRING
Excessive Try-Catch Wrapping3 hits · 3 pts
SeverityFileLineSnippetContext
LOW…ecovery_safety/oomwoo_recovery_safety/recovery_node.py176 except Exception as exc:CODE
LOW…ecovery_safety/oomwoo_recovery_safety/recovery_node.py184 except Exception as exc:CODE
LOW…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py81 except Exception as exc: # noqa: BLE001 - robustness is the pointCODE
Deep Nesting2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…-board-interface/smailzhu/tools/oomwoo_command_gate.py94CODE
LOW…d-interface/xbattlax/tests/test_stream_decoder_fuzz.py108CODE