AI Slop Code Risk Monitor

tubearchivist/tubearchivist

SlopCodeMonitor badge for tubearchivist/tubearchivist Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Your self hosted YouTube media server

3.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for tubearchivist/tubearchivist, a Python project with 8,561 GitHub stars. SynthScan examined 39,036 lines of code across 351 source files, recording 96 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 3.8 (Low 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.

3.8
Adjusted Signal
3.8
Raw Pattern Score
100%
Time Factor
2026-10-25
Last Push
8.6K
Stars
Python
Language
39.0K
Lines of Code
351
Files
96
Pattern Hits
2026-10-31
Scan Date
0.03
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 8.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.6/100 · LOW

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

Agent Over-Engineering Ratio 15.0/100 · LOW

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

PR Review Velocity Impact 17.6/100 · LOW

Which changes need focused human review? 96 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 0LOW 85

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 96 distinct pattern matches across 10 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 Identifiers45 hits · 54 pts
SeverityFileLineSnippetContext
LOWbackend/video/src/meta_embed.py244 def _process_embedded_playlist(self, playlist_data) -> dict | None:CODE
LOWbackend/playlist/src/index.py180 def remove_vids_from_playlist(self):CODE
LOWbackend/playlist/src/index.py393 def remove_playlist_from_video(self, video_id):CODE
LOWbackend/playlist/src/index.py472 def playlist_entries_contains(self, video_id):CODE
LOWbackend/config/management/commands/ta_startup.py236 def _create_default_schedules(self) -> None:CODE
LOWbackend/config/management/commands/ta_startup.py316 def _mig_fix_playlist_description(self) -> None:CODE
LOWbackend/config/management/commands/ta_startup.py351 def _mig_fix_channel_art_types(self) -> None:CODE
LOWbackend/config/management/commands/ta_startup.py379 def _mig_fix_channel_description(self) -> None:STRING
LOWbackend/config/management/commands/ta_startup.py405 def _mig_fix_video_description(self) -> None:CODE
LOWbackend/config/management/commands/ta_envcheck.py94 def _additional_auth_vars_expectations(self):CODE
LOWbackend/channel/tests/test_src/test_remote_query.py40def test_build_all_queries_with_limit(default_config, empty_overwrites):CODE
LOWbackend/channel/tests/test_src/test_remote_query.py52def test_build_all_queries_without_limit(default_config, empty_overwrites):CODE
LOWbackend/channel/tests/test_src/test_remote_query.py64def test_build_specific_query(default_config, empty_overwrites):CODE
LOWbackend/channel/tests/test_src/test_remote_query.py82def test_build_multiple_queries(default_config, empty_overwrites):CODE
LOW⚡backend/channel/tests/test_src/test_remote_query.py103def test_no_limit_ignores_config_and_overwrites(default_config, overwrites):CODE
LOW⚡backend/channel/tests/test_src/test_remote_query.py110def test_zero_query_not_included(default_config):CODE
LOW⚡backend/channel/tests/test_src/test_remote_query.py118def test_zero_config_overwrite(default_config):CODE
LOWbackend/channel/tests/test_src/test_remote_query.py137def test_invalid_video_type_is_ignored(default_config):CODE
LOWbackend/common/views_base.py166 def validate_channel_art_type(self, channel_art: str) -> None:CODE
LOWbackend/common/tests/test_src/test_pagination.py72def test_result_window_boundary(make_pagination, total, page_size, last_page):CODE
LOWbackend/common/tests/test_src/test_pagination.py87def test_page_beyond_result_window(make_pagination, page, page_size):CODE
LOW⚡backend/common/tests/test_src/test_helper.py14def test_randomizor_with_positive_length():CODE
LOW⚡backend/common/tests/test_src/test_helper.py22def test_date_parser_with_int():CODE
LOW⚡backend/common/tests/test_src/test_helper.py29def test_date_parser_with_digit():CODE
LOW⚡backend/common/tests/test_src/test_helper.py36def test_date_parser_with_float():CODE
LOW⚡backend/common/tests/test_src/test_helper.py43def test_date_parser_with_str():CODE
LOW⚡backend/common/tests/test_src/test_helper.py50def test_date_parser_with_invalid_input():CODE
LOW⚡backend/common/tests/test_src/test_helper.py57def test_date_parser_with_invalid_string_format():CODE
LOW⚡backend/common/tests/test_src/test_helper.py64def test_time_parser_with_numeric_string():CODE
LOW⚡backend/common/tests/test_src/test_helper.py71def test_time_parser_with_hh_mm_ss_format():CODE
LOW⚡backend/common/tests/test_src/test_helper.py78def test_time_parser_with_empty_string():CODE
LOW⚡backend/common/tests/test_src/test_helper.py84def test_time_parser_with_invalid_format():CODE
LOW⚡backend/common/tests/test_src/test_helper.py91def test_time_parser_with_non_numeric_input():CODE
LOWbackend/common/tests/test_src/test_streaming.py38def test_parse_range_unsupported_returns_none(range_header):CODE
LOWbackend/common/tests/test_src/test_streaming.py53def test_parse_range_not_satisfiable(range_header, file_size):CODE
LOWbackend/common/src/search_processor.py174 def _playlist_thumb_vid_check(playlist_dict: dict):CODE
LOW⚡backend/download/tests/test_src/test_pending_list.py8def test_returns_scientific_timestamp_if_present():CODE
LOW⚡backend/download/tests/test_src/test_pending_list.py14def test_returns_scientific_timestamp_string_if_present():CODE
LOW⚡backend/download/tests/test_src/test_pending_list.py20def test_returns_timestamp_if_present():CODE
LOW⚡backend/download/tests/test_src/test_pending_list.py26def test_returns_iso_date_if_upload_date_present():CODE
LOWbackend/download/src/yt_dlp_handler.py186 def _build_obs_postprocessors(self):CODE
LOWbackend/appsettings/tests/test_src/test_index_setup.py56def test_classify_mapping_diff(CODE
LOWbackend/appsettings/tests/test_src/test_index_setup.py72def test_removed_field_cleanup(CODE
LOWbackend/appsettings/src/manual.py191 def _extract_id_from_filename(file_name):CODE
LOWbackend/task/serializers.py77def create_dynamic_notification_serializer():CODE
Empty Error Handlers7 hits · 35 pts
SeverityFileLineSnippetContext
HIGHbackend/video/src/index.py238except (TypeError, ValueError):CODE
HIGHbackend/config/settings.py26except ModuleNotFoundError:CODE
HIGHbackend/config/settings.py227except ValueError:CODE
HIGHbackend/channel/views.py175except FileNotFoundError:CODE
HIGHbackend/common/src/env_settings.py14except ModuleNotFoundError:CODE
HIGHbackend/common/src/ta_redis.py65except redis.exceptions.ResponseError:CODE
HIGHbackend/download/src/queue.py416except (TypeError, ValueError):CODE
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHbackend/video/src/index.py0functionality: - get metadata from youtube for a channel - index and update in esSTRING
HIGHbackend/playlist/src/index.py0functionality: - get metadata from youtube for a channel - index and update in esSTRING
HIGHbackend/channel/src/index.py0functionality: - get metadata from youtube for a channel - index and update in esSTRING
AI Structural Patterns9 hits · 9 pts
SeverityFileLineSnippetContext
LOWbackend/video/src/subtitle.py119CODE
LOWbackend/playlist/src/index.py109CODE
LOWbackend/common/src/ta_redis.py133CODE
LOWbackend/common/src/ta_redis.py142CODE
LOWbackend/appsettings/src/backup.py155CODE
LOWbackend/appsettings/src/membership.py31CODE
LOWbackend/appsettings/src/membership.py54CODE
LOWbackend/stats/src/aggs.py320CODE
LOWbackend/stats/src/aggs.py373CODE
Excessive Try-Catch Wrapping8 hits · 8 pts
SeverityFileLineSnippetContext
LOWbackend/video/src/index.py165 except Exception: # pylint: disable=broad-exceptCODE
LOWbackend/video/src/index.py389 except Exception as err:CODE
LOWbackend/video/src/meta_embed.py130 except Exception as exc: # pylint: disable=broad-exception-caughtCODE
LOWbackend/config/management/commands/ta_connection.py55 except Exception: # pylint: disable=broad-exceptCODE
LOWbackend/config/management/commands/ta_connection.py63 except Exception as err: # pylint: disable=broad-exceptCODE
LOWbackend/channel/src/index.py44 except Exception: # pylint: disable=broad-exceptCODE
LOWbackend/appsettings/src/manual.py466 except Exception as exc: # pylint: disable=broad-exceptCODE
LOWbackend/task/src/notify.py62 except Exception as err: # pylint: disable=broad-exception-caughtCODE
Deep Nesting8 hits · 8 pts
SeverityFileLineSnippetContext
LOWbackend/video/src/index.py351CODE
LOWbackend/playlist/src/index.py402CODE
LOWbackend/config/management/commands/ta_envcheck.py94CODE
LOWbackend/common/src/searching.py26CODE
LOWbackend/common/src/helper.py106CODE
LOWbackend/download/src/queue.py459CODE
LOWbackend/download/src/thumbnails.py35CODE
LOWbackend/appsettings/src/reindex.py278CODE
Unused Imports8 hits · 8 pts
SeverityFileLineSnippetContext
LOWbackend/config/settings.py148CODE
LOWbackend/config/settings.py150CODE
LOWbackend/config/settings.py161CODE
LOWbackend/config/settings.py167CODE
LOWbackend/config/settings.py169CODE
LOWbackend/task/__init__.py3CODE
LOWbackend/task/__init__.py3CODE
LOWbackend/task/__init__.py5CODE
Modern Structural Boilerplate6 hits · 6 pts
SeverityFileLineSnippetContext
LOWbackend/config/management/commands/ta_startup.py287 def _update_schedule_tz(self) -> None:CODE
LOWbackend/config/management/commands/ta_startup.py305 def _set_ta_startup_time(self) -> None:CODE
LOWbackend/user/src/user_config.py107 def update_config(self, to_update: dict) -> None:CODE
LOWbackend/common/src/ta_redis.py222 def set_command(self, task_id: str, command: str) -> None:CODE
LOWbackend/common/src/urlparser.py179 def _set_cache(url, channel_id) -> None:CODE
LOWbackend/download/src/yt_dlp_handler.py201 def _set_overwrites(self, obs: dict, channel_id: str) -> None:CODE
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHbackend/download/src/queue_interact.py60 ctx._source.message = null;CODE
Over-Commented Block1 hit · 1 pts
SeverityFileLineSnippetContext
LOWdeploy.sh1#!/bin/bashCOMMENT