AI Slop Code Risk Monitor

spotiflacapp/SpotiFLAC-Mobile

SlopCodeMonitor badge for spotiflacapp/SpotiFLAC-Mobile Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Mobile music utility built with Flutter and Rust. High-quality audio management for your personal library. open source, no ads, no subscription.

0.5 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for spotiflacapp/SpotiFLAC-Mobile, a Dart project with 7,561 GitHub stars. SynthScan examined 497,296 lines of code across 1917 source files, recording 171 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 0.5 (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.

0.5
Adjusted Signal
0.5
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
7.6K
Stars
Dart
Language
497.3K
Lines of Code
1.9K
Files
171
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 1.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

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

Agent Over-Engineering Ratio 0.8/100 · LOW

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

PR Review Velocity Impact 2.4/100 · LOW

Which changes need focused human review? 171 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 2HIGH 7MEDIUM 7LOW 155

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 171 distinct pattern matches across 11 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 Block102 hits · 100 pts
SeverityFileLineSnippetContext
LOWrust_backend/crates/core/src/native_palette.rs1// Copyright 2021 Google LLCCOMMENT
LOWrust_backend/crates/core/src/fs.rs81/// Unix keeps the exact flags and modes; other platforms apply the closestCOMMENT
LOWrust_backend/crates/core/src/media/hires.rs1//! Sampled Hi-Res analysis. A spectral roll-off is an observation, not proofCOMMENT
LOWrust_backend/crates/core/src/media/hires.rs101 pub cutoff_frequency_hz: f64,COMMENT
LOWrust_backend/crates/core/src/media/hires.rs121 /// or empty when not measured.COMMENT
LOWrust_backend/crates/core/src/media/hires/evidence.rs1//! Evidence that separates a fake Hi-Res file from a genuine master that wasCOMMENT
LOWrust_backend/crates/core/src/media/hires/evidence.rs41const QUIET_FRAME_FRACTION: f64 = 0.1;COMMENT
LOWrust_backend/crates/desktop/src/dispatch.rs1//! The desktop method table: the one place that lists every MethodChannelCOMMENT
LOWrust_backend/crates/desktop/src/discord.rs1//! Discord Rich Presence through the Discord client's local RPC IPC socketCOMMENT
LOWrust_backend/crates/desktop/src/ffi.rs1//! The exported C functions. This is the only module that allows unsafe code:COMMENT
LOWrust_backend/crates/desktop/src/keep_awake.rs1//! Keeps the computer from idle sleeping while the download queue runsCOMMENT
LOW…backend/crates/extensions/tests/windows_path_prefix.rs1// Exercise the production Windows path conversion on every host, includingCOMMENT
LOWrust_backend/crates/extensions/src/windows_path.rs1//! Windows rules for path names that an extension or a package controls.COMMENT
LOWthird_party/audio_service/README.md181 MediaAction.seekForward,COMMENT
LOWthird_party/audio_service/pubspec.yaml21 # Use these deps when pushing to origin (for the benefit of testers)COMMENT
LOW…ava/com/ryanheise/audioservice/AudioServicePlugin.java161 }COMMENT
LOW…ava/com/ryanheise/audioservice/AudioServicePlugin.java181// stateMap.put("playing", AudioService.instance.isPlaying());COMMENT
LOW…ava/com/ryanheise/audioservice/AudioServicePlugin.java201//COMMENT
LOW…ava/com/ryanheise/audioservice/AudioServicePlugin.java421 private static class ClientInterface implements MethodCallHandler {COMMENT
LOWthird_party/audio_service/lib/audio_service.dart141 /// The audio processing state e.g. [AudioProcessingState.buffering].COMMENT
LOWthird_party/audio_service/lib/audio_service.dart161 /// * [MediaAction.pause]COMMENT
LOWthird_party/audio_service/lib/audio_service.dart181 /// * [MediaAction.seekBackward] (enable press-and-hold rewind control)COMMENT
LOWthird_party/audio_service/lib/audio_service.dart581 final String? artist;COMMENT
LOWthird_party/audio_service/lib/audio_service.dart601 /// image.COMMENT
LOWthird_party/audio_service/lib/audio_service.dart801COMMENT
LOWthird_party/audio_service/lib/audio_service.dart821/// resources in `android/app/src/main/res`. Here, you will find a subdirectoryCOMMENT
LOWthird_party/audio_service/lib/audio_service.dart981COMMENT
LOWthird_party/audio_service/lib/audio_service.dart1141 }COMMENT
LOWthird_party/audio_service/lib/audio_service.dart2921 return result;COMMENT
LOWthird_party/audio_service/lib/audio_service.dart2941/// mixins to provide default implementations of certain behaviours:COMMENT
LOWthird_party/audio_service/lib/audio_service.dart2961/// ### Start/stop transitionsCOMMENT
LOWthird_party/audio_service/lib/audio_service.dart2981 ///COMMENT
LOWthird_party/audio_service/lib/audio_service.dart3001COMMENT
LOWthird_party/audio_service/lib/audio_service.dart3021 /// media notification and other clients. Example usage:COMMENT
LOWthird_party/audio_service/lib/audio_service.dart3041 /// Example usage:COMMENT
LOWthird_party/audio_service/lib/audio_service.dart3361 /// instructions to start the new item playing. Some implementations mayCOMMENT
LOWthird_party/audio_service/lib/audio_service.dart3421/// The configuration options to use when intializing the [AudioService].COMMENT
LOWthird_party/audio_service/lib/audio_service.dart3461 /// Whether notification badges (also known as notification dots) shouldCOMMENT
LOWthird_party/audio_service/lib/audio_service.dart3481 /// If not null, causes the artwork specified by [MediaItem.artUri] to beCOMMENT
LOWthird_party/audio_service/lib/audio_service.dart3561/// Key/value codes for use in [MediaItem.extras] andCOMMENT
LOW…dio_service/Sources/audio_service/AudioServicePlugin.m321 }COMMENT
LOW…layers_darwin/darwin/audioplayers_darwin/Package.swift21 // TODO: If your plugin requires a privacy manifestCOMMENT
LOW…dows_audio/media_kit_libs_windows_audio_plugin_c_api.h1#ifndef FLUTTER_PLUGIN_MEDIA_KIT_LIBS_WINDOWS_AUDIO_PLUGIN_C_API_H_COMMENT
LOW…arty/ffmpeg_kit_flutter_new_audio/linux/CMakeLists.txt61COMMENT
LOW…o/lib/media_information_session_complete_callback.dart21COMMENT
LOW…r_new_audio/lib/ffprobe_session_complete_callback.dart21COMMENT
LOW…er_new_audio/lib/ffmpeg_session_complete_callback.dart21COMMENT
LOW…rd_party/ffmpeg_kit_flutter_new_audio/lib/session.dart81 /// set for sessions that end with COMPLETED state. If a session is notCOMMENT
LOW…_flutter_new_audio/windows/ffmpeg_kit_flutter_plugin.h1#ifndef FLUTTER_PLUGIN_FFMPEG_KIT_FLUTTER_PLUGIN_H_COMMENT
LOW…ty/ffmpeg_kit_flutter_new_audio/windows/CMakeLists.txt81# windows/flutter/ephemeral/.plugin_symlinks/<plugin> at the cached package, soCOMMENT
LOW…ty/ffmpeg_kit_flutter_new_audio/windows/CMakeLists.txt101# soxr, speex, twolame. The variant name is an emergent property of that libraryCOMMENT
LOW…ty/ffmpeg_kit_flutter_new_audio/windows/CMakeLists.txt201endif()COMMENT
LOW…lutter_new_audio/windows/ffmpeg_kit_flutter_plugin.cpp1#include "ffmpeg_kit_flutter_plugin.h"COMMENT
LOW…g_kit_flutter_new_audio/windows/src/fftools_cmdutils.c81#include "libavformat/avformat.h"COMMENT
LOW…_kit_flutter_new_audio/windows/src/ffmpegkit_c_api.cpp1#define FFMPEGKIT_EXPORTSCOMMENT
LOW…t_flutter_new_audio/windows/src/fftools_ffmpeg_demux.c41#include "libavutil/avassert.h"COMMENT
LOW…_kit_flutter_new_audio/windows/src/FFmpegKitConfig.cpp21#include <sys/stat.h>COMMENT
LOW…_kit_flutter_new_audio/windows/src/FFmpegKitConfig.cpp41#include "FFprobeKit.h"COMMENT
LOW…kit_flutter_new_audio/windows/src/fftools_ffmpeg_mux.h41#define FFTOOLS_FFMPEG_MUX_HCOMMENT
LOW…eg_kit_flutter_new_audio/windows/src/ffmpegkit_c_api.h1#ifndef FFMPEGKIT_C_API_HCOMMENT
42 more matches not shown…
Hyper-Verbose Identifiers38 hits · 46 pts
SeverityFileLineSnippetContext
LOWscripts/test_check_backend_apk.py43 def test_compressed_assets_pass(self):CODE
LOWscripts/test_check_backend_apk.py60 def test_corrupt_deflate_asset_fails_with_entry_name(self):CODE
LOWscripts/test_check_backend_apk.py72 def test_corrupt_library_past_valid_elf_header_fails(self):CODE
LOW⚡scripts/test_check_backend_apk.py83 def test_missing_backend_in_either_abi_fails(self):CODE
LOW⚡scripts/test_check_backend_apk.py93 def test_wrong_architecture_fails(self):CODE
LOW⚡scripts/test_check_backend_apk.py100 def test_disabled_sdk_cannot_leak_from_build_cache(self):CODE
LOW⚡scripts/test_check_backend_apk.py108 def test_enabled_sdk_requires_both_libraries_for_each_abi(self):CODE
LOW⚡scripts/test_check_backend_ios.py54 def test_unstripped_binary_needs_no_dsym(self):CODE
LOW⚡scripts/test_check_backend_ios.py58 def test_stripped_binary_requires_symbol_evidence(self):CODE
LOW⚡scripts/test_check_backend_ios.py62 def test_matching_dsym_verifies_stripped_binary(self):CODE
LOW⚡scripts/test_check_backend_ios.py65 def test_dsym_from_another_build_is_rejected(self):CODE
LOW⚡scripts/test_check_backend_ios.py70 def test_dsym_from_another_architecture_is_rejected(self):CODE
LOW⚡scripts/test_check_backend_ios.py75 def test_missing_dsym_is_rejected(self):CODE
LOW⚡scripts/test_check_backend_ios.py80 def test_matching_dsym_without_defined_rust_is_rejected(self):CODE
LOW⚡scripts/test_check_backend_ios.py85 def test_matching_dsym_does_not_hide_go_in_shipped_binary(self):CODE
LOW⚡scripts/test_check_backend_ios.py90 def test_matching_dsym_with_go_symbols_is_rejected(self):CODE
LOW⚡scripts/test_check_backend_ios.py95 def test_debug_artifacts_remain_forbidden_with_dsym(self):CODE
LOWscripts/test_prepare_discord_sdk.py49 def test_root_and_prefixed_archives_extract_only_mobile_files(self):CODE
LOWscripts/test_prepare_discord_sdk.py57 def test_source_directory_and_verified_cache(self):CODE
LOW⚡scripts/test_prepare_discord_sdk.py68 def test_corrupt_cache_is_rejected(self):CODE
LOW⚡scripts/test_prepare_discord_sdk.py75 def test_bad_archive_does_not_replace_verified_sdk(self):CODE
LOW⚡scripts/test_prepare_discord_sdk.py85 def test_each_missing_mobile_component_is_rejected(self):CODE
LOW⚡scripts/test_prepare_discord_sdk.py94 def test_duplicate_file_is_rejected(self):CODE
LOW⚡scripts/test_prepare_discord_sdk.py101 def test_oversized_file_is_rejected_before_writing_output(self):CODE
LOW⚡scripts/test_prepare_discord_sdk.py108 def test_missing_configuration_names_the_required_secret(self):CODE
LOW⚡scripts/test_prepare_discord_sdk.py112 def test_decryption_failure_does_not_echo_key(self):CODE
LOW⚡scripts/test_prepare_discord_sdk.py120 def test_missing_gpg_is_actionable(self):CODE
LOW⚡scripts/test_prepare_discord_sdk.py126 def test_encrypted_archive_roundtrip_and_wrong_key(self):CODE
LOWscripts/test_build_android.py92 def test_default_full_audits_two_splits_and_universal(self):STRING
LOWscripts/test_build_android.py109 def test_lite_single_abi_ignores_and_preserves_previous_artifacts(self):STRING
LOW⚡scripts/test_build_android.py128 def test_explicit_sdk_disable_is_honored_without_lite_argument(self):STRING
LOW⚡scripts/test_build_android.py138 def test_fvm_fallback_uses_pinned_version(self):STRING
LOW⚡scripts/test_build_android.py147 def test_production_requires_full_even_with_inherited_sdk_disable(self):STRING
LOW⚡scripts/test_build_android.py157 def test_production_rejects_lite_in_either_argument_order(self):STRING
LOW⚡scripts/test_build_android.py164 def test_production_missing_sdk_components_stops_before_flutter(self):STRING
LOW⚡scripts/test_build_android.py182 def test_wrong_flutter_version_stops_before_build_or_audit(self):STRING
LOW⚡scripts/test_build_android.py189 def test_failed_flutter_patch_stops_before_build_or_audit(self):STRING
LOW⚡scripts/test_build_android.py198 def test_invalid_or_overridden_abis_stop_before_flutter(self):STRING
Cross-File Repetition7 hits · 35 pts
SeverityFileLineSnippetContext
HIGHintegration_test/download_queue_workers_test.dart0create table $_queuetable ( id text primary key, item_json text not null, status text not null, created_at text not nullSTRING
HIGHtest/download_queue_read_test.dart0create table $_queuetable ( id text primary key, item_json text not null, status text not null, created_at text not nullSTRING
HIGHtest/download_queue_legacy_migration_test.dart0create table $_queuetable ( id text primary key, item_json text not null, status text not null, created_at text not nullSTRING
HIGHlib/services/app_state_database.dart0create table $_queuetable ( id text primary key, item_json text not null, status text not null, created_at text not nullSTRING
HIGHintegration_test/download_queue_workers_test.dart0create trigger reject_queue before insert on download_queue_items when new.id = 'reject' begin select raise(abort, 'fixtSTRING
HIGHtest/download_queue_read_test.dart0create trigger reject_queue before insert on download_queue_items when new.id = 'reject' begin select raise(abort, 'fixtSTRING
HIGHtest/download_queue_legacy_migration_test.dart0create trigger reject_queue before insert on download_queue_items when new.id = 'reject' begin select raise(abort, 'fixtSTRING
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICAL…_backend/crates/providers/src/lyrics/builtin/direct.rs338 if parser.tokenizer.sink.sink.0.borrow().tree.nodes().len() > 100_000 {CODE
CRITICALrust_backend/crates/providers/src/resolver/client.rs435 if parser.tokenizer.sink.sink.0.borrow().tree.nodes().len() > 100_000 {CODE
Modern AI Meta-Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMlib/utils/progress_stream_poller.dart3/// Shared scaffold for consuming a native progress stream (EventChannel-backed)COMMENT
MEDIUMlib/screens/extension_collection_screens.dart45/// Shared loading/error+retry scaffold for extension album/playlist/artistCOMMENT
MEDIUMlib/screens/extension_collection_screens.dart181/// Defers swapping the loading scaffold for the loaded screen until the pushCOMMENT
MEDIUMlib/widgets/scroll_edge_fade.dart12 /// Fades the content itself instead of painting the scaffold backgroundCOMMENT
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMthird_party/audio_service/lib/audio_service.dart2940/// You can choose to implement all methods yourself, or you may leverage someCOMMENT
MEDIUMlib/services/audio_analysis_ffmpeg.dart434 // Apply only light smoothing after the robust frequency aggregation. ThisCOMMENT
Example Usage Blocks4 hits · 6 pts
SeverityFileLineSnippetContext
LOWthird_party/audio_service/lib/audio_service.dart3041 /// Example usage:COMMENT
LOWthird_party/audio_service/lib/audio_service.dart3050 /// Example usage:COMMENT
LOWscripts/setup_macos_signing.sh8# Usage:COMMENT
LOWscripts/package_linux.sh4# Usage:COMMENT
Fake / Example Data5 hits · 5 pts
SeverityFileLineSnippetContext
LOWtest/local_library_artwork_test.dart135 return Text(path ?? 'placeholder');CODE
LOWtest/local_library_artwork_test.dart164 builder: (_, path) => Text(path ?? 'placeholder'),CODE
LOWtest/local_library_artwork_test.dart185 builder: (_, cover) => Text(cover ?? 'placeholder'),CODE
LOWrust_backend/crates/extensions/src/manifest.rs154 placeholder: String => "placeholder",CODE
LOWlib/models/extension.dart422 placeholder: json['placeholder'] as String?,CODE
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWscripts/prepare_discord_sdk.py89CODE
LOWscripts/test_check_backend_apk.py83CODE
LOWscripts/check_backend_apk.py69CODE
LOWscripts/check_backend_apk.py127CODE
Excessive Try-Catch Wrapping2 hits · 3 pts
SeverityFileLineSnippetContext
LOWtest/support/sqlite_process_database.dart37 except Exception as error:CODE
MEDIUMthird_party/audio_service/lib/audio_service.dart1267 print('Error loading artUri: $e\n$st');CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/workflows/release.yml41 # Check if version contains -preview, -beta, -rc, or -alpha (NOT -hotfix)COMMENT