AI Slop Code Risk Monitor

clementine-player/Clementine

SlopCodeMonitor badge for clementine-player/Clementine Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

:tangerine: Clementine Music Player

2.6 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for clementine-player/Clementine, a C++ project with 4,270 GitHub stars. SynthScan examined 327,553 lines of code across 1839 source files, recording 845 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 2.6 (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.

2.6
Adjusted Signal
2.6
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
4.3K
Stars
C++
Language
327.6K
Lines of Code
1.8K
Files
845
Pattern Hits
2026-10-31
Scan Date
0.00
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 11.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.5/100 · LOW

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

Agent Over-Engineering Ratio 1.3/100 · LOW

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

PR Review Velocity Impact 12.4/100 · LOW

Which changes need focused human review? 845 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 6LOW 837

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 845 distinct pattern matches across 13 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.

Over-Commented Block733 hits · 706 pts
SeverityFileLineSnippetContext
LOWbuf.yaml21 # Enums older than these rules break them, and renaming their values wouldCOMMENT
LOWtools/screenshots/take-screenshots.sh1#!/bin/shCOMMENT
LOWtools/screenshots/post_screenshots.sh1#!/usr/bin/env bashCOMMENT
LOWgst/moodbar/gstfastspectrum.cpp21COMMENT
LOWgst/moodbar/gstfastspectrum.h21// Adapted from gstspectrum for Clementine with the following changes:COMMENT
LOWext/libclementine-common/core/logging.cpp21COMMENT
LOWext/libclementine-common/core/messagehandler.h21#include <QMap>COMMENT
LOWext/libclementine-common/core/logging.h21#include <string>COMMENT
LOWext/libclementine-common/core/lazy.h21#include <functional>COMMENT
LOWext/libclementine-common/core/closure.h21#include <chrono>COMMENT
LOWext/libclementine-common/core/closure.h41// this, &Foo::HandleError, reply, id);COMMENT
LOWext/libclementine-common/core/override.h21// it is available.COMMENT
LOW…/libclementine-common/core/scoped_nsautorelease_pool.h1// Copyright (c) 2011 The Chromium Authors. All rights reserved.COMMENT
LOWext/libclementine-common/core/workerpool.h21#include <QAtomicInt>COMMENT
LOWext/libclementine-tagreader/gmereader.cpp1#include "gmereader.h"COMMENT
LOWext/libclementine-tagreader/tagreader.cpp21#include <apefile.h>COMMENT
LOWext/libclementine-tagreader/tagreader.cpp41#ifdef TAGLIB_HAS_OPUSCOMMENT
LOWext/libclementine-tagreader/tagreader.cpp61#include "core/timeconstants.h"COMMENT
LOWext/libclementine-tagreader/fmpsparser.cpp41// Parses a list of things (of type T) that are separated by two consecutiveCOMMENT
LOWtests/librarywatcher_test.cpp21// main one. Here it's the other way round: the watcher, backend and databaseCOMMENT
LOWtests/librarywatcher_test.cpp41COMMENT
LOWtests/castchannel_test.cpp21#include <QElapsedTimer>COMMENT
LOWtests/castmediaplayer_test.cpp21#include <QElapsedTimer>COMMENT
LOWtests/songloader_test.cpp21#include <QDir>COMMENT
LOWtests/mpris1_test.cpp21COMMENT
LOWtests/mock_networkaccessmanager.h21#include <QByteArray>COMMENT
LOWtests/remotestreaming_test.cpp21#include <memory>COMMENT
LOWtests/upnp_test.cpp21#include <QTcpServer>COMMENT
LOWtests/internetbrowser_test.cpp21#include <QTest>COMMENT
LOWtests/mediasync_test.cpp21#include <QSettings>COMMENT
LOWtests/musicbrainzclient_test.cpp21#include <QEventLoop>COMMENT
LOW.github/workflows/release.yml1# Makes a numbered release every week there's something to tell users, with noCOMMENT
LOW.github/workflows/distro-watch.yml1# Keeps the Linux releases CI builds in all.yml current: weekly, it finds oneCOMMENT
LOW.github/workflows/distro-watch.yml21# 4. In this repository's Settings > Secrets and variables > Actions, add:COMMENT
LOW.github/workflows/all.yml301 - name: ccache statisticsCOMMENT
LOW.github/workflows/all.yml741 runs-on: ${{ matrix.runner }}COMMENT
LOW.github/workflows/all.yml921 artifact: release_fedora_44_aarch64COMMENT
LOW.github/workflows/all.yml1261 cp /clang64/lib/gio/modules/libgiognutls.dll gio-modules/ || trueCOMMENT
LOW.github/workflows/all.yml2241 # .mm files build as Objective-C++; which language CMake assigns themCOMMENT
LOW.github/workflows/all.yml2441 with:COMMENT
LOW.github/workflows/all.yml2541 # Posts the screenshots the Test, Windows and Mac jobs took on the pullCOMMENT
LOW3rdparty/libmygpo-qt5/src/ApiRequest.h21***************************************************************************/COMMENT
LOW3rdparty/libmygpo-qt5/src/mygpo_export.h21***************************************************************************/COMMENT
LOW3rdparty/libmygpo-qt5/src/qjsonwrapper/Json.cpp21COMMENT
LOW3rdparty/taglib/fileref.cpp41#include "oggflacfile.h"COMMENT
LOW3rdparty/taglib/audioproperties.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/taglib_export.h21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/ape/apetag.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/mpeg/mpegfile.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/mpeg/id3v2/id3v2frame.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/mpeg/id3v2/id3v2framefactory.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/mpeg/id3v2/id3v2tag.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/flac/flacfile.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/mpc/mpcfile.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/toolkit/tdebug.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/toolkit/tdebug.h61#elseCOMMENT
LOW3rdparty/taglib/toolkit/tutils.h21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/toolkit/tfile.cpp21 * Alternatively, this file is available under the Mozilla Public *COMMENT
LOW3rdparty/taglib/toolkit/tfile.cpp41# define R_OK 4COMMENT
LOW3rdparty/taglib/toolkit/tfile.cpp281 //COMMENT
673 more matches not shown…
Hyper-Verbose Identifiers57 hits · 65 pts
SeverityFileLineSnippetContext
LOWtools/remote-cli/tests/test_proto.py4def test_new_enums_start_unspecified() -> None:CODE
LOW⚡tools/remote-cli/tests/test_players.py11def test_with_start_replaces_t() -> None:CODE
LOW⚡tools/remote-cli/tests/test_players.py18def test_with_start_zero_removes_t() -> None:CODE
LOW⚡tools/remote-cli/tests/test_players.py22def test_clock_runs_only_while_playing() -> None:CODE
LOWtools/remote-cli/tests/test_formats.py15def test_limits_are_removed_from_the_mime_type() -> None:CODE
LOWtools/remote-cli/tests/smoke/conftest.py45def pytest_collection_modifyitems(CODE
LOWtools/remote-cli/tests/smoke/conftest.py166def clementine_with_stalled_radio(CODE
LOWtools/remote-cli/tests/smoke/conftest.py178def clementine_without_streaming(tmp_path: Path) -> Iterator[Clementine]:CODE
LOWtools/remote-cli/tests/smoke/conftest.py184def clementine_with_auth_code(tmp_path: Path) -> Iterator[Clementine]:CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py49async def test_advertises_rendering(clementine: Clementine) -> None:CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py55async def test_nothing_changes_without_the_setting(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py79async def test_direct_serves_the_file_with_ranges(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py133async def test_media_comes_from_where_the_renderer_connected(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py156async def test_renderers_without_relative_urls_get_clementines_address(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py175async def test_pipeline_encodes_what_the_renderer_cant_play(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py207async def test_refused_format_is_retried_encoded(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py234async def test_track_is_skipped_when_the_retry_fails_too(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py256async def test_gapless_preload_is_used_without_a_reload(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py279async def test_handing_playback_over_keeps_the_position(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py303async def test_losing_the_renderer_pauses_here(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py338async def test_media_urls_are_guarded(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py386async def test_pipelines_per_renderer_are_limited(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py425async def test_start_positions_are_clamped(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py450async def test_a_renderer_id_cant_be_taken_from_another_address(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py475async def test_oversized_request_heads_are_answered_once(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py489async def test_browsing_plays_a_saved_radio_stream(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py501async def test_a_stream_that_sends_nothing_times_out(CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py562async def test_guessing_the_auth_code_is_limited(CODE
LOWtools/mac-update/tests/test_plan.py65def test_publishes_the_newest_release_with_the_notes_since_the_last(CODE
LOWtools/mac-update/tests/test_plan.py85def test_skips_development_builds(repo: Repo) -> None:CODE
LOWtools/mac-update/tests/test_plan.py92def test_a_release_without_notes_gets_the_general_note(repo: Repo) -> None:CODE
LOWtools/mac-update/tests/test_plan.py103def test_nothing_to_publish_when_the_newest_is_published(repo: Repo) -> None:CODE
LOWtools/mac-update/tests/test_plan.py109def test_skips_releases_without_a_dmg(repo: Repo) -> None:CODE
LOWtools/mac-update/tests/test_plan.py122def test_orders_releases_by_version(repo: Repo) -> None:CODE
LOWtools/mac-update/tests/test_plan.py132def test_takes_every_note_of_a_commit(repo: Repo) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py48def test_accepts_a_dmg_signed_with_the_apps_key(dmg: Path) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py53def test_refuses_a_dmg_signed_with_another_key(dmg: Path) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py59def test_refuses_an_app_that_checks_another_feed(dmg: Path) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py66def test_refuses_an_app_built_without_sparkle(dmg: Path) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py72def test_refuses_a_build_the_feed_cant_compare(dmg: Path) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py79def test_refuses_an_info_plist_without_a_key() -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py86def test_entry_describes_the_build_from_its_app(dmg: Path) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py173def test_put_names_the_update_after_its_build(dmg: Path, store: FakeClient) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py181def test_put_keeps_every_update(dmg: Path, store: FakeClient) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py191def test_put_replaces_the_same_build(dmg: Path, store: FakeClient) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py197def test_put_refuses_a_lower_build(dmg: Path, store: FakeClient) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py204def test_put_compares_with_the_most_recent_update(dmg: Path, store: FakeClient) -> None:CODE
LOW⚡tools/mac-update/tests/test_publish.py211def test_builds_compare_as_sparkle_compares_them() -> None:CODE
LOWtools/mac-update/tests/test_sparkle.py39def test_unpacks_the_framework_and_tools(tmp_path: Path) -> None:CODE
LOWtools/mac-update/tests/test_sparkle.py49def test_refuses_an_archive_with_another_checksum(tmp_path: Path) -> None:CODE
LOWtools/apt-repo/tests/test_repo.py31def test_publishes_signed_suites(CODE
LOWtools/apt-repo/tests/test_repo.py72def test_picks_up_where_it_left_off(CODE
LOWtools/apt-repo/tests/test_repo.py91def test_same_version_again_replaces_it(CODE
LOWtools/apt-repo/tests/test_repo.py101def test_prunes_oldest_versions(make_deb: MakeDeb, key: Key, tmp_path: Path) -> None:CODE
LOWtools/apt-repo/tests/test_openpgp.py11def test_public_key_is_what_gpg_reads(key: Key, keyring: Path) -> None:CODE
LOWtools/apt-repo/tests/test_openpgp.py29def test_public_key_is_the_same_every_time(key: Key) -> None:CODE
LOW3rdparty/libmygpo-qt5/src/RequestHandler.h37class RequestHandlerCODE
Unused Imports29 hits · 28 pts
SeverityFileLineSnippetContext
LOWtools/remote-cli/tests/smoke/conftest.py9CODE
LOWtools/remote-cli/tests/smoke/harness.py3CODE
LOWtools/remote-cli/tests/smoke/test_smoke.py3CODE
LOWtools/remote-cli/src/clementine_remote/browse.py7CODE
LOWtools/remote-cli/src/clementine_remote/renderer.py3CODE
LOWtools/remote-cli/src/clementine_remote/events.py3CODE
LOWtools/remote-cli/src/clementine_remote/connection.py3CODE
LOWtools/remote-cli/src/clementine_remote/cli.py3CODE
LOWtools/remote-cli/src/clementine_remote/players.py8CODE
LOWtools/remote-cli/src/clementine_remote/formats.py3CODE
LOWtools/remote-cli/src/clementine_remote/proto.py10CODE
LOWtools/remote-cli/src/clementine_remote/proto.py65CODE
LOWtools/mac-update/tests/test_plan.py1CODE
LOWtools/mac-update/tests/test_publish.py1CODE
LOWtools/mac-update/tests/test_sparkle.py1CODE
LOWtools/mac-update/src/clementine_mac_update/plan.py15CODE
LOWtools/mac-update/src/clementine_mac_update/cli.py9CODE
LOWtools/mac-update/src/clementine_mac_update/sparkle.py8CODE
LOWtools/mac-update/src/clementine_mac_update/publish.py15CODE
LOWtools/apt-repo/tests/test_version.py1CODE
LOWtools/apt-repo/tests/conftest.py3CODE
LOWtools/apt-repo/tests/test_repo.py1CODE
LOWtools/apt-repo/tests/test_openpgp.py1CODE
LOWtools/apt-repo/src/clementine_apt/version.py3CODE
LOWtools/apt-repo/src/clementine_apt/deb.py3CODE
LOWtools/apt-repo/src/clementine_apt/signers.py3CODE
LOWtools/apt-repo/src/clementine_apt/cli.py8CODE
LOWtools/apt-repo/src/clementine_apt/repo.py14CODE
LOWtools/apt-repo/src/clementine_apt/openpgp.py10CODE
AI Slop Vocabulary4 hits · 11 pts
SeverityFileLineSnippetContext
MEDIUM3rdparty/taglib/mpeg/mpegproperties.cpp193 // TODO: Make this more robust with audio property detection for VBR without aCOMMENT
MEDIUM…projectm/src/libprojectM/Renderer/Platform/GLProbe.hpp46 std::string flags; //!< "debug,fwd,robust", "none", "n/a"CODE
MEDIUM3rdparty/gmock/gtest/include/gtest/gtest-death-test.h135// This implementation is *not* meant to be as highly tuned or robustCOMMENT
MEDIUM3rdparty/gmock/gtest/include/gtest/gtest-death-test.h207// In practice, this can be used to test functions that utilize theCOMMENT
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHtools/remote-cli/tests/smoke/test_smoke.py332except TimeoutError:CODE
HIGHtools/remote-cli/src/clementine_remote/cli.py437except KeyboardInterrupt:CODE
Deep Nesting6 hits · 6 pts
SeverityFileLineSnippetContext
LOWtools/remote-cli/src/clementine_remote/renderer.py203CODE
LOWtools/remote-cli/src/clementine_remote/cli.py212CODE
LOWtools/remote-cli/src/clementine_remote/formats.py19CODE
LOWtools/mac-update/src/clementine_mac_update/sparkle.py32CODE
LOWtools/apt-repo/src/clementine_apt/deb.py27CODE
LOWtools/apt-repo/src/clementine_apt/deb.py83CODE
Decorative Section Separators2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM3rdparty/libprojectm/scripts/test-macos-framework.sh229# ============================================================================COMMENT
MEDIUM3rdparty/libprojectm/scripts/test-macos-framework.sh231# ============================================================================COMMENT
Verbosity Indicators2 hits · 4 pts
SeverityFileLineSnippetContext
LOW⚡src/internet/subsonic/subsonicservice.h200 // Step 1: use getAlbumList2 type=alphabeticalByName to list all albumsCOMMENT
LOW⚡src/internet/subsonic/subsonicservice.h202 // Step 2: use getAlbum id=? to list all songs for each albumCOMMENT
Structural Annotation Overuse2 hits · 4 pts
SeverityFileLineSnippetContext
LOW⚡src/internet/subsonic/subsonicservice.h200 // Step 1: use getAlbumList2 type=alphabeticalByName to list all albumsCOMMENT
LOW⚡src/internet/subsonic/subsonicservice.h202 // Step 2: use getAlbum id=? to list all songs for each albumCOMMENT
Modern Structural Boilerplate4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtools/remote-cli/src/clementine_remote/renderer.py108 async def set_state(self, state: pb.RendererState) -> None:CODE
LOWtools/remote-cli/src/clementine_remote/players.py66 async def set_volume(self, volume: int) -> None:CODE
LOWtools/remote-cli/src/clementine_remote/players.py263 async def set_volume(self, volume: int) -> None:CODE
LOWtools/remote-cli/src/clementine_remote/proto.py67__all__ = ["pb"]CODE
Slop Phrases2 hits · 3 pts
SeverityFileLineSnippetContext
LOWsrc/playlist/playlist.cpp302 // Don't forget to change Playlist::CompareItems when adding new columnsCOMMENT
LOWsrc/internet/core/internetmodel.cpp174 // Don't forget to delete from shown_services tooCOMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOW3rdparty/libprojectm/scripts/test-macos-framework.sh257 # Check if any C++ headers exist to determine if we should validate themCOMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…ibprojectm/src/libprojectM/Renderer/TextureManager.cpp29 , m_placeholderTexture(std::make_shared<Texture>("placeholder", 1, 1, false))CODE