AI Slop Code Risk Monitor

crmne/spotifast

SlopCodeMonitor badge for crmne/spotifast Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).
1.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for crmne/spotifast. SynthScan examined 124,188 lines of code across 236 source files, recording 160 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 1.4 (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.

1.4
Adjusted Signal
1.4
Raw Pattern Score
100%
Time Factor
—
Last Push
—
Stars
—
Language
124.2K
Lines of Code
236
Files
160
Pattern Hits
2026-10-31
Scan Date
0.01
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 5.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.5/100 · LOW

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

Agent Over-Engineering Ratio 2.8/100 · LOW

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

PR Review Velocity Impact 6.8/100 · LOW

Which changes need focused human review? 160 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 3MEDIUM 0LOW 157

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 160 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.

Over-Commented Block77 hits · 77 pts
SeverityFileLineSnippetContext
LOWCargo.toml41fastframe-fonts = { git = "https://github.com/crmne/fastframe", tag = "v0.15.2" }COMMENT
LOWCargo.toml61fastframe-graphics = { git = "https://github.com/crmne/fastframe", tag = "v0.15.2" }COMMENT
LOWCargo.toml81fastframe-audio = { git = "https://github.com/crmne/fastframe", tag = "v0.15.2" }COMMENT
LOWCargo.toml101# to the few pages of each font that name it. fastframe-fonts uses both.COMMENT
LOWCargo.toml121# eframe already pulls in, so they add no build. Only compiled with theCOMMENT
LOWCargo.toml141librespot-protocol = { version = "0.8", default-features = false }COMMENT
LOWCargo.toml201# The packaged Dock artwork also identifies unbundled Cargo runs.COMMENT
LOWCargo.toml281COMMENT
LOWCargo.toml321# a background tray has already launched AppKit (winit#4770), and file drag and drop onCOMMENT
LOWCargo.toml341# compatibility fix. Drop this fork when a release includes both changes.COMMENT
LOWpackaging/flatpak/rocks.spotifast.Spotifast.yml1# Spotifast as a Flatpak, built from source: the manifest Flathub buildsCOMMENT
LOWpackaging/windows/update-leftovers.c21 * action library; it never ships on its own.COMMENT
LOWpackaging/windows/running-copy.c21 * architecture and embeds it in the package; it never ships on its own.COMMENT
LOWexamples/default_skin.rs1//! Draws Spotifast's built-in Winamp skin: the one the skinned windowCOMMENT
LOW.github/scripts/indexnow.rb1#!/usr/bin/env rubyCOMMENT
LOWsrc/local_tags.rs1//! Cover art and lyrics from a local file's own tags.COMMENT
LOWsrc/eq.rs1//! Ten-band equalizer for local playback.COMMENT
LOWsrc/vis.rs41/// second on a timer of its own, so a fast or slow frame rate neverCOMMENT
LOWsrc/entrypoint.rs21 #[arg(long)]COMMENT
LOWsrc/entrypoint.rs41 demo_update_feed: Option<String>,COMMENT
LOWsrc/entrypoint.rs61 #[cfg(feature = "demo")]COMMENT
LOWsrc/entrypoint.rs81 #[arg(long, value_name = "MS", default_value_t = 6000)]COMMENT
LOWsrc/entrypoint.rs141 Shuffle { state: Option<OnOff> },COMMENT
LOWsrc/entrypoint.rs601 // A start at login in the tray. A link asked to be seen, so it opensCOMMENT
LOWsrc/entrypoint.rs1281}COMMENT
LOWsrc/emoji.rs1//! Colour emoji in every text, in the platform's own style.COMMENT
LOWsrc/sink.rs1//! Audio output for local playback.COMMENT
LOWsrc/sink.rs41/// Reported when the system has no audio output at all. The interfaceCOMMENT
LOWsrc/sink.rs81/// Default Windows device buffer length in milliseconds.COMMENT
LOWsrc/sink.rs481 envelope: Arc<Envelope>,COMMENT
LOWsrc/sink.rs901 self.apply_volume();COMMENT
LOWsrc/paths.rs1//! Where Spotifast keeps its files.COMMENT
LOWsrc/resample.rs1//! Sample rate conversion for an output that will not take 44.1 kHz.COMMENT
LOWsrc/auth.rs1//! Spotify sign-in with the Authorization Code + PKCE flow.COMMENT
LOWsrc/cast.rs1//! Google Cast speakers on the local network.COMMENT
LOWsrc/cast.rs61/// 10 s to launch.COMMENT
LOWsrc/cast.rs461}COMMENT
LOWsrc/mac_touchbar_crash_guard.rs1//! Guards against a known AppKit bug that turns closing the window into aCOMMENT
LOWsrc/power.rs1//! The device's power, session and network state, and what the app mayCOMMENT
LOWsrc/bidi.rs1//! Right-to-left text support for egui.COMMENT
LOWsrc/limiter.rs1//! Look-ahead soft-knee limiter for final audio output.COMMENT
LOWsrc/milkdrop.rs1//! MilkDrop visualization through libprojectM.COMMENT
LOWsrc/images.rs21/// longer requests its source bytes. Visible images were therefore evicted andCOMMENT
LOWsrc/images.rs261 }COMMENT
LOWsrc/images.rs661 })COMMENT
LOWsrc/sonos.rs1//! Speakers Spotify will not let the Web API control, Sonos above all.COMMENT
LOWsrc/settings.rs261#[derive(Clone, PartialEq, Serialize, Deserialize)]COMMENT
LOWsrc/settings.rs361 /// Show the interactive Now Playing widget when hovering over the MacBook notch.COMMENT
LOWsrc/settings.rs381 /// Interface zoom, egui's zoom factor; Ctrl+plus/minus changes it.COMMENT
LOWsrc/settings.rs441 /// Which proxy to use. Older files without this field stay on `system`.COMMENT
LOWsrc/settings.rs1841 /// One-time player setup, including for installations upgraded from before Soloist.COMMENT
LOWsrc/settings.rs1861 /// from `last_added_queue`; it does not enqueue this list.COMMENT
LOWsrc/settings.rs1881 pub window_pos: Option<[f32; 2]>,COMMENT
LOWsrc/thumbbar.rs1//! The taskbar thumbnail toolbar: the transport buttons Windows drawsCOMMENT
LOWsrc/model.rs741 /// The playlist list or Home is being read again behind what it shows.COMMENT
LOWsrc/model.rs861 pub cache_write_pending: Option<PlaylistCachePending>,COMMENT
LOWsrc/player.rs181 /// The librespot engine's Spotify session is alive. Connect deviceCOMMENT
LOWsrc/zeroconf.rs1//! Spotify Connect receivers on the local network.COMMENT
LOWsrc/single_instance.rs1//! Single-instance guard and remote-control channel.COMMENT
LOWsrc/single_instance.rs21//! `play-uri`, `open-link`, and `transfer` validate their free-text argumentsCOMMENT
17 more matches not shown…
Hyper-Verbose Identifiers61 hits · 56 pts
SeverityFileLineSnippetContext
LOWpackaging/test-release-names.py18 def test_current_version_has_written_release_notes_before_tagging(self):CODE
LOWpackaging/test-release-names.py25 def test_checksums_cover_every_download_and_are_repeatable(self):CODE
LOWpackaging/test-release-names.py52 def test_appimages_and_their_zsync_files_are_checked_and_listed(self):CODE
LOWpackaging/test-release-names.py69 def test_a_wrong_or_missing_update_information_fails(self):CODE
LOWpackaging/test-release-names.py82 def test_every_appimage_needs_a_zsync_file_that_describes_it(self):CODE
LOWpackaging/test-release-names.py95 def test_a_stable_release_has_an_appimage_for_each_linux_archive(self):CODE
LOWpackaging/test-launchers.py44 def test_generated_aur_versions_start_at_the_requested_release(self):CODE
LOWpackaging/test-launchers.py73 def test_aur_payloads_install_the_launcher(self):CODE
LOWpackaging/test-launchers.py92 def test_flatpak_install_commands_keep_app_id_and_icon_aligned(self):CODE
LOWpackaging/test-launchers.py106 def test_native_manifest_installs_the_launcher_and_icon(self):CODE
LOWpackaging/release-names.py48def embedded_update_information(path):CODE
LOW⚡packaging/flatpak/test-metainfo.py31 def test_keeps_the_release_details(self):CODE
LOW⚡packaging/flatpak/test-metainfo.py40 def test_checking_is_idempotent(self):CODE
LOW⚡packaging/flatpak/test-metainfo.py44 def test_rejects_another_version_or_application(self):CODE
LOW⚡packaging/flatpak/test-metainfo.py50 def test_reads_the_tag_when_the_checkout_owner_differs(self):CODE
LOW⚡packaging/windows/test-msi.py362 def test_installs_where_the_updater_says_and_uninstalls_cleanly(self):CODE
LOW⚡packaging/windows/test-msi.py370 def test_uninstall_removes_what_the_updater_staged(self):CODE
LOW⚡packaging/windows/test-msi.py378 def test_uninstall_removes_only_staging_folders_and_goes_on_past_a_held_file(self):CODE
LOWpackaging/windows/test-msi.py397 def test_update_keeps_what_the_updater_staged(self):CODE
LOW⚡packaging/windows/test-msi.py415 def test_uninstall_leaves_links_another_program_took_over(self):CODE
LOW⚡packaging/windows/test-msi.py423 def test_running_copy_stops_a_silent_uninstall_before_anything_goes(self):CODE
LOW⚡packaging/windows/test-msi.py433 def test_portable_copy_does_not_block_uninstall(self):CODE
LOW⚡packaging/windows/test-msi.py440 def test_missing_executable_does_not_block_uninstall(self):CODE
LOW⚡packaging/windows/test-msi.py446 def test_update_closes_only_the_installed_copy_and_keeps_choices(self):CODE
LOWpackaging/windows/test-msi.py457 def test_package_run_by_hand_updates_the_folder_in_use(self):CODE
LOWpackaging/windows/test-msi.py462 def test_older_package_does_not_replace_a_newer_one(self):CODE
LOWpackaging/windows/test-msi.py481 def test_updater_takes_over_an_inno_install(self):CODE
LOW⚡packaging/windows/test-msi.py493 def test_package_run_by_hand_takes_over_an_inno_install_where_it_is(self):CODE
LOW⚡packaging/windows/test-msi.py500 def test_takeover_removes_an_inno_desktop_shortcut_no_longer_wanted(self):CODE
LOW⚡packaging/windows/test-msi.py506 def test_running_inno_copy_is_closed_before_the_takeover(self):CODE
LOW⚡packaging/windows/test-uninstall.py113 def test_running_executable_preserves_the_whole_installation(self):STRING
LOW⚡packaging/windows/test-uninstall.py121 def test_other_copy_does_not_block_uninstall(self):STRING
LOW⚡packaging/windows/test-uninstall.py127 def test_close_terminates_only_the_installed_copy(self):STRING
LOW⚡packaging/windows/test-uninstall.py135 def test_missing_executable_does_not_block_cleanup(self):STRING
LOW⚡.github/scripts/test-policy-checks.py205 def test_the_fields_of_each_settings_struct_are_found(self):STRING
LOW⚡.github/scripts/test-policy-checks.py211 def test_an_unchanged_or_smaller_settings_struct_passes(self):STRING
LOW⚡.github/scripts/test-policy-checks.py216 def test_a_new_field_is_found_with_its_struct(self):STRING
LOW⚡.github/scripts/test-policy-checks.py220 def test_a_field_in_a_nested_settings_struct_counts(self):STRING
LOW⚡.github/scripts/test-policy-checks.py226 def test_a_renamed_field_counts_and_session_state_does_not(self):STRING
LOW⚡.github/scripts/test-policy-checks.py235 def test_an_interface_change_without_media_fails(self):STRING
LOW⚡.github/scripts/test-policy-checks.py240 def test_media_in_the_description_or_an_author_comment_passes(self):STRING
LOW⚡.github/scripts/test-policy-checks.py244 def test_changes_that_draw_nothing_pass(self):STRING
LOW⚡.github/scripts/test-policy-checks.py247 def test_the_maintainer_label_passes_a_change_with_nothing_to_show(self):STRING
LOW⚡.github/scripts/test-policy-checks.py250 def test_a_plain_link_is_not_media(self):STRING
LOW⚡.github/scripts/test-policy-checks.py255 def test_a_pull_request_tests_on_linux_and_windows(self):STRING
LOW⚡.github/scripts/test-policy-checks.py258 def test_main_and_the_label_test_everywhere(self):STRING
LOW⚡.github/scripts/test-policy-checks.py262 def test_dependencies_and_ci_test_everywhere(self):STRING
LOW⚡.github/scripts/test-policy-checks.py266 def test_macos_code_adds_macos(self):STRING
LOW⚡.github/scripts/test-policy-checks.py271 def test_documentation_alone_tests_on_linux(self):STRING
LOW⚡.github/scripts/test-policy-checks.py276 def test_an_unreadable_change_runs_everything(self):STRING
LOW.github/scripts/test-policy-checks.py43 def test_crates_io_and_crmne_repositories_pass(self):STRING
LOW.github/scripts/test-policy-checks.py58 def test_a_contributor_fork_fails_in_the_manifest_and_the_lockfile(self):STRING
LOW.github/scripts/test-policy-checks.py65 def test_lookalike_owners_and_paths_out_of_crmne_fail(self):STRING
LOW.github/scripts/test-policy-checks.py78 def test_patches_from_a_path_or_another_registry_fail(self):STRING
LOW.github/scripts/test-policy-checks.py90 def test_other_registries_and_source_replacement_fail(self):STRING
LOW.github/scripts/test-policy-checks.py114 def test_files_the_documentation_uses_pass(self):STRING
LOW.github/scripts/test-policy-checks.py117 def test_a_review_folder_fails_even_with_its_own_page(self):STRING
LOW.github/scripts/test-policy-checks.py138 def test_code_and_ci_naming_an_asset_do_not_count_as_documentation(self):STRING
LOW.github/scripts/test-policy-checks.py150 def test_a_capture_dumped_beside_the_site_fails(self):STRING
LOW.github/scripts/test-policy-checks.py154 def test_review_named_media_fails_anywhere(self):STRING
1 more matches not shown…
Empty Error Handlers3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHpackaging/windows/test-msi.py184except FileNotFoundError:CODE
HIGHpackaging/windows/test-msi.py192except FileNotFoundError:CODE
HIGH.github/scripts/ci-scope.py67except subprocess.CalledProcessError:CODE
Fake / Example Data12 hits · 14 pts
SeverityFileLineSnippetContext
LOWsrc/credentials.rs1440 username: "dummy-user".into(),CODE
LOWsrc/session_reads.rs2125 "dummy-user",CODE
LOWsrc/session_reads.rs2137 assert_eq!(delta.info.user(), "dummy-user");CODE
LOWsrc/http.rs359 assert_eq!(username, b"dummy-user");CODE
LOWsrc/http.rs391 proxy_username: "dummy-user".into(),CODE
LOW⚡src/settings.rs1604 proxy_username: "dummy-user".into(),CODE
LOW⚡src/settings.rs1614 ("other.invalid", "8080", "dummy-user"),CODE
LOW⚡src/settings.rs1615 ("127.0.0.1", "8081", "dummy-user"),CODE
LOWsrc/zeroconf.rs862 &librespot_core::authentication::Credentials::with_access_token("dummy-token")CODE
LOWsrc/ui/widgets.rs3620 "dummy-user".into(),CODE
LOWsrc/soloist/mod.rs610 value: "dummy-key".into()CODE
LOWsrc/soloist/mod.rs617 value: "dummy-key".into()CODE
Deep Nesting6 hits · 6 pts
SeverityFileLineSnippetContext
LOWpackaging/test-launchers.py73CODE
LOWpackaging/windows/test-msi.py174CODE
LOWpackaging/windows/build-msi.py94CODE
LOW.github/scripts/check-dependency-sources.py60CODE
LOW.github/scripts/check-new-settings.py29CODE
LOW.github/scripts/check-new-settings.py42CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpackaging/macos/bundle.sh6# Set CODESIGN_IDENTITY to sign with a Developer ID; the default is an ad-hocCOMMENT