AI Slop Code Risk Monitor

ArchiveTuneApp/ArchiveTune

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

🌸 The Cutest Music Player With Support Local File and Youtube Music for Android!

2.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for ArchiveTuneApp/ArchiveTune, a Kotlin project with 7,834 GitHub stars. SynthScan examined 287,150 lines of code across 1129 source files, recording 115 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 2.2 (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.2
Adjusted Signal
2.2
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
7.8K
Stars
Kotlin
Language
287.1K
Lines of Code
1.1K
Files
115
Pattern Hits
2026-10-31
Scan Date
0.05
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 0.2/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 8.2/100 · LOW

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

Agent Over-Engineering Ratio 2.2/100 · LOW

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

PR Review Velocity Impact 11.7/100 · LOW

Which changes need focused human review? 115 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 56HIGH 0MEDIUM 48LOW 11

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 115 distinct pattern matches across 8 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.

Hallucination Indicators56 hits · 490 pts
SeverityFileLineSnippetContext
CRITICAL…mori/archivetune/cast/DefaultCastPlaybackRepository.kt563 moe.rukamori.archivetune.models.MediaMetadata.Album(CODE
CRITICAL…c/main/kotlin/moe/rukamori/archivetune/MainActivity.kt672 androidx.media3.exoplayer.offline.DownloadService.sendAddDownload(CODE
CRITICAL…c/main/kotlin/moe/rukamori/archivetune/MainActivity.kt845 moe.rukamori.archivetune.ui.theme.ThemeSeedPalette(CODE
CRITICAL…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt1370 androidx.compose.ui.graphics.Brush.horizontalGradient(CODE
CRITICAL…ukamori/archivetune/ui/screens/HomeScreenComponents.kt2072 author = subtitle?.let { moe.rukamori.archivetune.innertube.models.Artist(name = it, id = null) },CODE
CRITICAL…e/rukamori/archivetune/ui/screens/NavigationBuilder.kt442 moe.rukamori.archivetune.ui.screens.settings.ModulesSettings(navController)CODE
CRITICAL…tlin/moe/rukamori/archivetune/ui/screens/HomeScreen.kt660private fun androidx.compose.foundation.lazy.LazyListScope.sectionSpacer(key: String) {CODE
CRITICAL…hivetune/ui/screens/downloads/DownloadLibraryScreen.kt289 moe.rukamori.archivetune.ui.component.IconButton(CODE
CRITICAL…amori/archivetune/viewmodels/LocalPlaylistViewModel.kt527 moe.rukamori.archivetune.db.entities.PlaylistEntity(CODE
CRITICAL…amori/archivetune/viewmodels/LocalPlaylistViewModel.kt546 moe.rukamori.archivetune.db.entities.PlaylistSongMap(CODE
CRITICAL⚡…tlin/moe/rukamori/archivetune/playback/MusicService.kt5028 moe.rukamori.archivetune.together.TogetherSessionState.HostingOnline(CODE
CRITICAL⚡…tlin/moe/rukamori/archivetune/playback/MusicService.kt5037 moe.rukamori.archivetune.together.TogetherOnlineEndpoint.onlineWebSocketUrlOrNull(CODE
CRITICAL⚡…tlin/moe/rukamori/archivetune/playback/MusicService.kt5044 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt4062 moe.rukamori.archivetune.together.TogetherGuestPlaybackPlanner.planPlayTrackNow(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt4879 moe.rukamori.archivetune.together.TogetherSessionState.Hosting(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt4954 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt4969 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt4991 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5107 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5172 moe.rukamori.archivetune.together.TogetherSessionState.Joined(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5215 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5249 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5271 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5285 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5316 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5340 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5355 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5371 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5429 moe.rukamori.archivetune.together.TogetherSessionState.Joined(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5472 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5506 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5528 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5542 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5561 moe.rukamori.archivetune.together.TogetherOnlineEndpoint.onlineWebSocketUrlOrNull(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5568 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5821 moe.rukamori.archivetune.together.TogetherSessionState.Error(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt5982 moe.rukamori.archivetune.together.TogetherSessionState.Joined(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt6003 moe.rukamori.archivetune.together.TogetherSessionState.Joined(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt6157 moe.rukamori.archivetune.playback.queues.ListQueue(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt6208 moe.rukamori.archivetune.together.TogetherSessionState.Joined(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt6285 private fun moe.rukamori.archivetune.together.TogetherTrack.toMediaMetadata(): moe.rukamori.archivetune.models.MediaCODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt6364 androidx.media3.exoplayer.offline.DownloadService.sendAddDownload(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt7047 moe.rukamori.archivetune.together.ControlAction.SeekToIndex(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt7052 moe.rukamori.archivetune.together.ControlAction.SeekToTrack(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt7564 moe.rukamori.archivetune.together.ControlAction.SetShuffleEnabled(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt7596 moe.rukamori.archivetune.together.ControlAction.SetRepeatMode(CODE
CRITICAL…tlin/moe/rukamori/archivetune/playback/MusicService.kt8669 moe.rukamori.archivetune.models.QueueData.YouTubeData(CODE
CRITICAL…amori/archivetune/playback/stream/AudioStreamModels.kt58fun moe.rukamori.archivetune.modules.ModuleAudioSelection.toResolvedAudioStream() = ResolvedAudioStream(CODE
CRITICAL…kamori/archivetune/backup/ScheduledBackupRepository.kt144 private fun androidx.datastore.preferences.core.Preferences.toScheduledBackupSettings(): ScheduledBackupSettCODE
CRITICAL…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt701 return moe.rukamori.archivetune.spotify.models.SpotifyLibraryFolder(CODE
CRITICAL…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1389 return@runCatching moe.rukamori.archivetune.spotify.models.SpotifyHomeFeed(CODE
CRITICAL…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1402 moe.rukamori.archivetune.spotify.models.SpotifyHomeFeed(CODE
CRITICAL…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1428 return moe.rukamori.archivetune.spotify.models.SpotifyHomeFeedSection(CODE
CRITICAL…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1472 return moe.rukamori.archivetune.spotify.models.SpotifyHomeFeedItem.Playlist(CODE
CRITICAL…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1500 return moe.rukamori.archivetune.spotify.models.SpotifyHomeFeedItem.Album(CODE
CRITICAL…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1521 return moe.rukamori.archivetune.spotify.models.SpotifyHomeFeedItem.Artist(CODE
Decorative Section Separators45 hits · 122 pts
SeverityFileLineSnippetContext
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt133// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt135// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt167// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt169// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt1098// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt1100// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt1219// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt1221// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt1391// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt1393// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt1524// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/ui/component/LyricsV2.kt1526// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…ri/archivetune/utils/potoken/BotGuardTokenGenerator.kt104 // ── state ────────────────────────────────────────────────────────COMMENT
MEDIUM…ri/archivetune/utils/potoken/BotGuardTokenGenerator.kt125 // ── public API ───────────────────────────────────────────────────COMMENT
MEDIUM…ri/archivetune/utils/potoken/BotGuardTokenGenerator.kt276 // ── internal ─────────────────────────────────────────────────────COMMENT
MEDIUM…ri/archivetune/utils/potoken/BotGuardTokenGenerator.kt432 // ── WebView wrapper ──────────────────────────────────────────────COMMENT
MEDIUM…tlin/moe/rukamori/archivetune/playback/MusicService.kt8910 // ── Widget Support ────────────────────────────────────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt146 // ── JSON navigation helpers ──────────────────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt176 // ── GraphQL core ─────────────────────────────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt309 // ── REST core (fallback for endpoints without GQL equivalent) ────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt363 // ── GQL response converters ──────────────────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt457 // ── User Profile (GQL with REST fallback) ──────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt483 // ── Playlists (GQL: libraryV3) ──────────────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt543 // ── Library hierarchy (GQL: libraryV3, folders preserved) ───────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt708 // ── Library Artists (GQL: libraryV3 with Artists filter) ───────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt786 // ── Playlist detail (GQL: fetchPlaylist) ────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt876 // ── Playlist Mutations (GQL) ──────────────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt998 // ── Liked Songs (GQL: fetchLibraryTracks) ───────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1041 // ── Library Mutations (GQL: addToLibrary / removeFromLibrary) ──────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1081 // ── Top Tracks (REST fallback — no GQL equivalent) ──────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1096 // ── Top Artists (REST fallback — no GQL equivalent) ─────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1111 // ── Recommendations (REST fallback — no GQL equivalent) ─────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1128 // ── Search (GQL: searchDesktop) ─────────────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1281 // ── Browse: New Releases (GQL: queryWhatsNewFeed) ───────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1341 // ── Home feed (GQL: home) ──────────────────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1529 // ── Albums (GQL: getAlbum) ──────────────────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1589 // ── Artists (GQL: queryArtistOverview) ───────────────────────────────COMMENT
MEDIUM…fycore/src/moe/rukamori/archivetune/spotify/Spotify.kt1697 // ── Related Artists (REST fallback) ─────────────────────────────────COMMENT
MEDIUM…/moe/rukamori/archivetune/canvas/AppleMusicProvider.kt38 // ── Logging ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…/moe/rukamori/archivetune/canvas/AppleMusicProvider.kt54 // ── Constants ────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…/moe/rukamori/archivetune/canvas/AppleMusicProvider.kt59 // ── Networking ───────────────────────────────────────────────────────────────────COMMENT
MEDIUM…/moe/rukamori/archivetune/canvas/AppleMusicProvider.kt88 // ── Cache ────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…/moe/rukamori/archivetune/canvas/AppleMusicProvider.kt144 // ── Public API ───────────────────────────────────────────────────────────────────COMMENT
MEDIUM…/moe/rukamori/archivetune/canvas/AppleMusicProvider.kt193 // ── Core Logic ───────────────────────────────────────────────────────────────────COMMENT
MEDIUM…/moe/rukamori/archivetune/canvas/AppleMusicProvider.kt386 // ── Helpers ──────────────────────────────────────────────────────────────────────COMMENT
Deep Nesting5 hits · 5 pts
SeverityFileLineSnippetContext
LOWscripts/package_module.py53CODE
LOWscripts/package_module.py144CODE
LOWscripts/package_module.py258CODE
LOWscripts/package_module.py433CODE
LOWscripts/package_module.py644CODE
Excessive Try-Catch Wrapping3 hits · 4 pts
SeverityFileLineSnippetContext
LOWduplicate_checker.py369 except Exception:CODE
MEDIUMscripts/package_module.py800 print("Error: " + safe_text(error), file=sys.stderr)CODE
LOW.github/workflows/deploy_artifacts.py136 except Exception as e:CODE
Hyper-Verbose Identifiers3 hits · 3 pts
SeverityFileLineSnippetContext
LOWduplicate_checker.py299def read_positive_integer_environment(name: str) -> int:CODE
LOW.github/workflows/cleanup.yml253 def normalize_resources_wrapper(path: Path, text: str) -> str:CODE
LOW.github/workflows/cleanup.yml443 def find_tools_keep_string_names(CODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM…moe/rukamori/archivetune/ui/player/PlayerComponents.kt4340 // speed MUST be an integer to ensure seamless looping when progress wraps from 1f to 0f.COMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/deploy_artifacts.py30# Create the client with bot token directlyCOMMENT
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWduplicate_checker.py1CODE