AI Slop Code RIsk Monitor

ssrajadh/sentrysearch

Semantic search over videos using Gemini Embedding 2 or Qwen3-VL.

55.1 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for ssrajadh/sentrysearch, a Python project with 4,534 GitHub stars. SynthScan examined 12,752 lines of code across 49 source files, recording 449 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 55.1 (High 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.

55.1
Adjusted Signal
55.1
Raw Pattern Score
100%
Time Factor
2026-09-29
Last Push
4.5K
Stars
Python
Language
12.8K
Lines of Code
49
Files
449
Pattern Hits
2026-10-12
Scan Date
0.22
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 71.7/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 7.4/100 · LOW

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

Agent Over-Engineering Ratio 92.9/100 · CRITICAL

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

PR Review Velocity Impact 92.4/100 · CRITICAL

Which changes need focused human review? 449 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 11MEDIUM 76LOW 362

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 449 distinct pattern matches across 9 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 Identifiers298 hits · 314 pts
SeverityFileLineSnippetContext
LOWsentrysearch/metadata.py112def _strip_emulation_prevention_bytes(data: bytes) -> bytes:CODE
LOWsentrysearch/chunker.py67def _parse_duration_from_ffmpeg_output(stderr_text: str) -> float:CODE
LOWsentrysearch/qwen_cloud_embedder.py33def default_dashscope_embedding_model() -> str:CODE
LOWsentrysearch/qwen_cloud_embedder.py68def _is_transient_transport_error(exc: BaseException) -> bool:CODE
LOWsentrysearch/qwen_cloud_embedder.py253 def _parse_embedding_response(resp) -> list[float]:CODE
LOWsentrysearch/cli.py46def _reject_conflicting_model_flags(CODE
LOWsentrysearch/cli.py111def _strip_private_result_fields(results: list[dict]) -> list[dict]:CODE
LOW⚡tests/test_mlx_embedder.py24 def test_hf_id_passed_through(self):CODE
LOW⚡tests/test_mlx_embedder.py28 def test_local_path_passed_through(self):CODE
LOW⚡tests/test_mlx_embedder.py32 def test_env_var_used_when_no_model_given(self, monkeypatch):CODE
LOW⚡tests/test_mlx_embedder.py36 def test_explicit_model_beats_env_var(self, monkeypatch):CODE
LOW⚡tests/test_mlx_embedder.py110 def test_video_pixels_reach_get_input_embeddings(self):CODE
LOW⚡tests/test_mlx_embedder.py116 def test_stub_base_alone_drops_them(self):CODE
LOW⚡tests/test_mlx_embedder.py123 def test_rope_state_reset_for_video_only_call(self):CODE
LOW⚡tests/test_mlx_embedder.py129 def test_rope_state_untouched_without_pixels(self):CODE
LOW⚡tests/test_mlx_embedder.py134 def test_grid_still_forwarded(self):CODE
LOW⚡tests/test_mlx_embedder.py140 def test_pending_cleared_after_call(self):CODE
LOW⚡tests/test_mlx_embedder.py147 def test_pending_cleared_when_call_raises(self):CODE
LOW⚡tests/test_mlx_embedder.py206 def test_missing_chunk_file_raises(self, tmp_path):CODE
LOW⚡tests/test_mlx_embedder.py212 def test_missing_image_file_raises(self, tmp_path):CODE
LOW⚡tests/test_mlx_embedder.py218 def test_missing_local_dir_is_not_sent_to_the_hub(self, tmp_path):CODE
LOW⚡tests/test_mlx_embedder.py227 def test_non_apple_silicon_refuses_to_load(self):CODE
LOW⚡tests/test_mlx_embedder.py235 def test_factory_builds_mlx_backend(self):CODE
LOW⚡tests/test_mlx_embedder.py248 def test_rerank_refuses_rather_than_falling_back_to_gemini(self):CODE
LOW⚡tests/test_mlx_embedder.py256 def test_local_backend_still_gets_the_qwen_reranker(self):CODE
LOW⚡tests/test_mlx_embedder.py265 def test_highlights_backend_flag_accepts_mlx(self):CODE
LOW⚡tests/test_mlx_embedder.py279 def test_mlx_gets_its_own_collection(self):CODE
LOW⚡tests/test_mlx_embedder.py285 def test_mlx_does_not_collide_with_local(self):CODE
LOW⚡tests/test_mlx_embedder.py290 def test_path_reduced_to_basename(self):CODE
LOWtests/test_mlx_embedder.py59 def test_true_on_apple_silicon(self):CODE
LOWtests/test_mlx_embedder.py159 def test_image_path_unaffected(self):CODE
LOWtests/test_mlx_embedder.py171 def test_box_is_not_a_registered_type(self):CODE
LOW⚡tests/test_chunker.py40 def test_ffmpeg_error_message_raised(self):CODE
LOW⚡tests/test_chunker.py57 def test_falls_back_to_imageio(self, _mock_which):CODE
LOW⚡tests/test_chunker.py62 def test_raises_when_no_ffmpeg(self, _mock_which):CODE
LOW⚡tests/test_chunker.py88 def test_short_video_single_chunk(self, tiny_video):CODE
LOW⚡tests/test_chunker.py97 def test_splits_into_multiple_chunks(self, longer_video):CODE
LOW⚡tests/test_chunker.py113 def test_overlap_equal_to_chunk_duration_raises(self, tiny_video):CODE
LOW⚡tests/test_chunker.py117 def test_overlap_greater_than_chunk_duration_raises(self, tiny_video):CODE
LOW⚡tests/test_chunker.py121 def test_nonexistent_file_raises(self):CODE
LOW⚡tests/test_chunker.py127 def test_short_video_single_span(self):CODE
LOW⚡tests/test_chunker.py131 def test_matches_chunk_video_starts(self, longer_video):CODE
LOW⚡tests/test_chunker.py142 def test_invalid_overlap_raises(self):CODE
LOW⚡tests/test_chunker.py146 def test_long_video_multiple_spans(self):CODE
LOW⚡tests/test_chunker.py160 def test_creates_preprocessed_file(self, tiny_video, tmp_path):CODE
LOW⚡tests/test_chunker.py167 def test_falls_back_on_invalid_input(self, tmp_path):CODE
LOW⚡tests/test_chunker.py179 def test_finds_supported_video_files(self, tmp_path):CODE
LOW⚡tests/test_chunker.py207 def test_detected_from_tesla_readme(self, tmp_path):CODE
LOW⚡tests/test_chunker.py215 def test_detected_from_folder_name(self, tmp_path):CODE
LOW⚡tests/test_chunker.py224 def test_unrelated_readme_is_not_tesla(self, tmp_path):CODE
LOW⚡tests/test_chunker.py232 def test_no_readme_is_not_tesla(self, tmp_path):CODE
LOW⚡tests/test_chunker.py241 def test_reports_why_a_file_is_unreadable(self, tmp_path):CODE
LOWtests/test_search.py45 def test_n_results_limits_output(self, tmp_store, mock_embed_query):CODE
LOWtests/test_search.py57 def test_dedupe_drops_near_duplicates(self, tmp_store, mock_embed_query):CODE
LOWtests/test_search.py87 def test_dedupe_none_returns_all(self, tmp_store, mock_embed_query):CODE
LOWtests/test_search.py122 def test_dedupe_single_result(self, tmp_store, mock_embed_query):CODE
LOWtests/test_search.py130 def test_dedupe_still_fills_n_results(self, tmp_store, mock_embed_query):CODE
LOWtests/test_trimmer.py38 def test_special_chars_cleaned(self):CODE
LOWtests/test_trimmer.py51 def test_end_before_start_raises(self, tiny_video, tmp_path):CODE
LOWtests/test_trimmer.py56 def test_creates_output_directory(self, tiny_video, tmp_path):CODE
238 more matches not shown…
Decorative Section Separators76 hits · 280 pts
SeverityFileLineSnippetContext
MEDIUMsentrysearch/store.py232 # ------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/store.py234 # ------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/store.py288 # ------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/store.py290 # ------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/overlay.py51# ---------------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/overlay.py53# ---------------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/overlay.py137# ---------------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/overlay.py139# ---------------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/litellm_embedder.py109 # ------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/litellm_embedder.py111 # ------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/litellm_embedder.py133 # ------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/litellm_embedder.py135 # ------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/_toolkit_cache.py122# ----------------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/_toolkit_cache.py126# ----------------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/gemini_embedder.py22# ---------------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/gemini_embedder.py24# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/gemini_embedder.py106# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/gemini_embedder.py108# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/gemini_embedder.py118# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/gemini_embedder.py120# ---------------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/gemini_embedder.py176# ---------------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/gemini_embedder.py178# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/cli.py766# -----------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/cli.py768# -----------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/cli.py1123# -----------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/cli.py1125# -----------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/cli.py1261# -----------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/cli.py1263# -----------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/cli.py1441# -----------------------------------------------------------------------COMMENT
MEDIUM⚡sentrysearch/cli.py1443# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py356# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py358# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py434# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py436# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py1476# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py1478# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py1508# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py1510# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py1548# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py1550# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py1601# -----------------------------------------------------------------------COMMENT
MEDIUMsentrysearch/cli.py1603# -----------------------------------------------------------------------COMMENT
MEDIUMtests/conftest.py9# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/conftest.py11# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/conftest.py33# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/conftest.py35# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/conftest.py62# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/conftest.py64# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/conftest.py74# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/conftest.py76# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py46# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py48# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py69# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py71# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py83# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py85# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py155# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py157# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py174# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_chunker.py176# ---------------------------------------------------------------------------COMMENT
16 more matches not shown…
Empty Error Handlers11 hits · 55 pts
SeverityFileLineSnippetContext
HIGHsentrysearch/overlay.py37except Exception:CODE
HIGHsentrysearch/overlay.py44except ImportError:CODE
HIGHsentrysearch/overlay.py191except Exception:CODE
HIGHsentrysearch/overlay.py175except ValueError:CODE
HIGHsentrysearch/overlay.py517except OSError:CODE
HIGHsentrysearch/_toolkit_cache.py47except OSError:CODE
HIGHsentrysearch/cli.py174except Exception:CODE
HIGHsentrysearch/cli.py578except Exception:CODE
HIGHsentrysearch/cli.py1432except OSError:CODE
HIGHsentrysearch/cli.py698except OSError:CODE
HIGHsentrysearch/cli.py1367except OSError:CODE
Excessive Try-Catch Wrapping31 hits · 25 pts
SeverityFileLineSnippetContext
LOWsentrysearch/overlay.py37 except Exception:CODE
LOWsentrysearch/overlay.py191 except Exception:CODE
LOWsentrysearch/reranker.py134 except Exception as exc:CODE
LOWsentrysearch/chunker.py39 except Exception:CODE
LOWsentrysearch/chunker.py60 except Exception as exc: # pragma: no cover - environment specificCODE
LOWsentrysearch/chunker.py357 except Exception:CODE
LOWsentrysearch/chunker.py397 except Exception:CODE
LOWsentrysearch/_toolkit_cache.py44 except Exception:CODE
LOWsentrysearch/gemini_embedder.py156 except Exception as exc:CODE
LOWsentrysearch/qwen_cloud_embedder.py128 except Exception as exc: # noqa: BLE001 — narrow follow-up belowCODE
LOWsentrysearch/local_embedder.py64 except Exception:CODE
LOWsentrysearch/local_embedder.py124 except Exception:CODE
LOWsentrysearch/local_embedder.py259 except Exception as e:CODE
LOW⚡sentrysearch/cli.py760 except Exception as e:CODE
LOW⚡sentrysearch/cli.py1117 except Exception as e:CODE
LOW⚡sentrysearch/cli.py1255 except Exception as e:CODE
LOW⚡sentrysearch/cli.py1435 except Exception as e:CODE
LOWsentrysearch/cli.py76 except Exception as e:CODE
LOWsentrysearch/cli.py104 except Exception as e:CODE
LOWsentrysearch/cli.py174 except Exception:CODE
LOWsentrysearch/cli.py224 except Exception as exc:CODE
LOWsentrysearch/cli.py417 except Exception as e:CODE
LOWsentrysearch/cli.py578 except Exception:CODE
LOWsentrysearch/cli.py584 except Exception:CODE
LOWsentrysearch/cli.py937 except Exception as e:CODE
LOWsentrysearch/cli.py1423 except Exception as e:CODE
LOWsentrysearch/cli.py1459 except Exception as e:CODE
LOWsentrysearch/qwen_reranker.py70 except Exception:CODE
LOWsentrysearch/qwen_reranker.py147 except Exception as e:CODE
LOWsentrysearch/qwen_reranker.py158 except Exception:CODE
LOWsentrysearch/mlx_embedder.py209 except Exception as e:CODE
Unused Imports21 hits · 20 pts
SeverityFileLineSnippetContext
LOWsentrysearch/reranker.py3CODE
LOWsentrysearch/litellm_embedder.py18CODE
LOWsentrysearch/highlights.py8CODE
LOWsentrysearch/_toolkit_cache.py8CODE
LOWsentrysearch/qwen_cloud_embedder.py13CODE
LOWsentrysearch/local_embedder.py161CODE
LOWsentrysearch/qwen_reranker.py3CODE
LOWsentrysearch/qwen_reranker.py104CODE
LOWsentrysearch/search.py3CODE
LOWsentrysearch/embedder.py9CODE
LOWsentrysearch/embedder.py9CODE
LOWsentrysearch/embedder.py10CODE
LOWsentrysearch/embedder.py10CODE
LOWsentrysearch/embedder.py10CODE
LOWsentrysearch/gemini_reranker.py3CODE
LOWtests/test_mlx_embedder.py4CODE
LOWtests/test_search.py5CODE
LOWtests/test_metadata.py3CODE
LOWtests/test_toolkit_cache.py3CODE
LOWtests/test_toolkit_cache.py13CODE
LOWtests/test_highlights.py3CODE
Deep Nesting9 hits · 6 pts
SeverityFileLineSnippetContext
LOWsentrysearch/store.py109CODE
LOWsentrysearch/gemini_embedder.py150CODE
LOWsentrysearch/cli.py361CODE
LOWsentrysearch/cli.py474CODE
LOWsentrysearch/cli.py808CODE
LOWsentrysearch/cli.py1057CODE
LOWsentrysearch/cli.py1163CODE
LOWsentrysearch/cli.py1308CODE
LOWsentrysearch/embedder.py19CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsentrysearch/local_embedder.py119 # Check if model is already cached locallyCOMMENT
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsentrysearch/gemini_embedder.py38 def set_rate(self, max_per_minute: int) -> None:CODE
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsentrysearch/local_embedder.py204CODE