AI Slop Code Risk Monitor

namidaco/namida

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

A Beautiful and Feature-rich Music & Video Player with Youtube Support, Built in Flutter

1.5 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for namidaco/namida, a Dart project with 6,756 GitHub stars. SynthScan examined 314,154 lines of code across 857 source files, recording 275 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 1.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.

1.5
Adjusted Signal
1.5
Raw Pattern Score
100%
Time Factor
2026-10-26
Last Push
6.8K
Stars
Dart
Language
314.2K
Lines of Code
857
Files
275
Pattern Hits
2026-10-31
Scan Date
0.02
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 4.6/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 2.3/100 · LOW

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

Agent Over-Engineering Ratio 0.3/100 · LOW

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

PR Review Velocity Impact 6.9/100 · LOW

Which changes need focused human review? 275 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 13HIGH 8MEDIUM 8LOW 246

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 275 distinct pattern matches across 12 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 Block227 hits · 217 pts
SeverityFileLineSnippetContext
LOWanalysis_options.yaml41 # Instead of disabling a lint rule for the entire project in theCOMMENT
LOWlinux/packaging/flatpak/app.namida.Namida.yml1# Flatpak manifest for Namida.COMMENT
LOWscripts/splash.dart21 // if (icon == _IconDetails.defaultIcon) {COMMENT
LOWscripts/splash.dart41void _renameAndroidFiles(String suffix) {COMMENT
LOWscripts/make_appimage.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/.obsolete/tr.dart1// ignore_for_file: avoid_printCOMMENT
LOWscripts/.obsolete/tr.dart81 String _getKey(String key) => languageMap[key] ?? languageMapDefault[key] ?? '';COMMENT
LOWscripts/.obsolete/tr.dart101 // await for (final fileSystem in Directory(_languagesDirectoryPath).list()) {COMMENT
LOWscripts/.obsolete/tr.dart141 // final lastPiece = langController.split(splitterTwo).last;COMMENT
LOW.github/workflows/release_beta.yml1# This workflow uses actions that are not certified by GitHub.COMMENT
LOWlib/ui/pages/sync_manager_page.dart1161 required this.onSync,COMMENT
LOWlib/ui/pages/sync_manager_page.dart1181 // ),COMMENT
LOWlib/ui/pages/playlists_page.dart461 padding: const EdgeInsets.symmetric(horizontal: 12.0),COMMENT
LOWlib/ui/pages/playlists_page.dart481 text: lang.add,COMMENT
LOWlib/ui/pages/subpages/most_played_subpage.dart201 dateCustom: _rangeCenteredOnDay(dates.first, daysRadiusRx.value),COMMENT
LOWlib/ui/pages/subpages/most_played_subpage.dart581 ],COMMENT
LOWlib/ui/pages/subpages/most_played_subpage.dart601 // newest: DateTime.fromMillisecondsSinceEpoch(rangeStartMS + intervalMS),COMMENT
LOWlib/ui/pages/subpages/most_played_subpage.dart621 // color: isActive ? CurrentColor.inst.currentColorScheme.withOpacityExt(0.63) : theme.cardColorCOMMENT
LOWlib/ui/pages/subpages/most_played_subpage.dart641 // bgColor: theme.cardColor.withOpacityExt(0.2),COMMENT
LOWlib/ui/widgets/stats.dart181 );COMMENT
LOWlib/ui/widgets/stats.dart201// super.initState();COMMENT
LOWlib/ui/widgets/stats.dart221// // -- only the peak gets a label, anything more turns the line into a wall of text.COMMENT
LOWlib/ui/widgets/stats.dart241// child: CAKineticPathReveal(COMMENT
LOWlib/ui/widgets/custom_widgets.dart6801 // builder: (context, shuffleReflectInQueue) => NamidaTooltip(COMMENT
LOWlib/ui/widgets/jellyfish.dart261COMMENT
LOWlib/ui/widgets/jellyfish.dart781///COMMENT
LOWlib/ui/widgets/jellyfish.dart801// void _swapArt() {COMMENT
LOWlib/ui/widgets/jellyfish.dart821// seed: 11,COMMENT
LOWlib/ui/widgets/jellyfish.dart841// child: Image.asset(COMMENT
LOWlib/ui/widgets/jellyfish.dart861// ),COMMENT
LOWlib/ui/widgets/jellyfish.dart961/// The full artwork, drifting slowly behind whatever sits on top of it.COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart21/// A callback used by [ReorderableList] to report that a list item has movedCOMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart41/// newIndex -= 1;COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart61///COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart81/// the start of an item drag and then start the reorder by callingCOMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart141 /// The [IndexedWidgetBuilder] index parameter indicates the item'sCOMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart161 /// of the items.COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart181 final void Function(int index)? onReorderStart;COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart261 ///COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart301 }COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart321COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart341/// // ...COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart421/// It is up to the application to wrap each child (or an internal part of theCOMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart501 final Widget? prototypeItem;COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart561 ///COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart581/// GlobalKey<SliverReorderableListState> listKey = GlobalKey<SliverReorderableListState>();COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart661 void dispose() {COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart1201/// wrapped item to a new location in a reorderable list.COMMENT
LOWlib/ui/widgets/custom_reorderable_list.dart1261 index: index,COMMENT
LOWlib/ui/widgets/custom_tooltip.dart21///COMMENT
LOWlib/ui/widgets/custom_tooltip.dart81COMMENT
LOWlib/ui/widgets/custom_tooltip.dart101/// the child that Tooltip wraps is hovered over on web or desktop. On mobile,COMMENT
LOWlib/ui/widgets/custom_tooltip.dart121/// `height` has been used to set a specific height of the Tooltip.COMMENT
LOWlib/ui/widgets/custom_tooltip.dart141/// {@end-tool}COMMENT
LOWlib/ui/widgets/custom_tooltip.dart201 /// The text to display in the tooltip.COMMENT
LOWlib/ui/widgets/custom_tooltip.dart221 /// while for mobile platforms the default value is `BoxConstraints(minHeight: 32.0)`.COMMENT
LOWlib/ui/widgets/custom_tooltip.dart241 final EdgeInsetsGeometry? margin;COMMENT
LOWlib/ui/widgets/custom_tooltip.dart261 /// Applying [TooltipThemeData.preferBelow]: `false` for the entire appCOMMENT
LOWlib/ui/widgets/custom_tooltip.dart281 /// The tooltip shape defaults to a rounded rectangle with a border radius ofCOMMENT
LOWlib/ui/widgets/custom_tooltip.dart301 /// [TextAlign.start].COMMENT
167 more matches not shown…
Hallucination Indicators13 hits · 145 pts
SeverityFileLineSnippetContext
CRITICALlib/ui/pages/queues_page.dart38 final queuesKeys = QueueController.inst.queuesMap.valueR.keys.toFixedList();CODE
CRITICALlib/ui/pages/home_page.dart705 List<Track> getFavouritesSample(int count) => PlaylistController.inst.favouritesPlaylist.value.tracks.getRandomSample(CODE
CRITICALlib/ui/pages/home_page.dart1096 List<String> getFavouritesSample(int count) => YoutubePlaylistController.inst.favouritesPlaylist.value.tracks.getRandoCODE
CRITICALlib/ui/pages/playlists_page.dart574 text: HistoryController.inst.topTracksMapListens.valueR.length.formatDecimalCODE
CRITICALlib/ui/pages/subpages/playlist_tracks_subpage.dart73 return _searchableTracks = HistoryController.inst.topTracksMapListens.value.keysSortedByValue.toFixedList();CODE
CRITICAL⚡lib/ui/widgets/stats.dart121 StatsMiniTile(icon: MediaType.album.toIcon(), label: lang.albums, value: Indexer.inst.mainMapAlbums.valuCODE
CRITICAL⚡lib/ui/widgets/stats.dart122 StatsMiniTile(icon: MediaType.artist.toIcon(), label: lang.artists, value: Indexer.inst.mainMapArtists.vCODE
CRITICAL⚡lib/ui/widgets/stats.dart123 StatsMiniTile(icon: MediaType.genre.toIcon(), label: lang.genres, value: Indexer.inst.mainMapGenres.valuCODE
CRITICALlib/ui/widgets/selected_tracks_preview.dart213 List<Track> getSelectedTracks() => SelectedTracksController.inst.selectedTracks.value.tracks.toList();CODE
CRITICALlib/ui/widgets/selected_tracks_preview.dart304 tracksWithDates: SelectedTracksController.inst.selectedTracks.value.tracksWithDates.toList(),CODE
CRITICALlib/ui/widgets/settings/playback_settings.dart1504 final _localNames = PlaylistController.inst.playlistsMap.value.keys.toFixedList();CODE
CRITICALlib/ui/widgets/settings/playback_settings.dart1505 final _ytNames = YoutubePlaylistController.inst.playlistsMap.value.keys.toFixedList();CODE
CRITICALlib/controller/eggs_controller.dart256 final days = HistoryController.inst.historyMap.value.values.toFixedList();CODE
Synthetic Comment Markers7 hits · 52 pts
SeverityFileLineSnippetContext
HIGH…roid/app/src/main/kotlin/com/msob7y/namida/SafUtils.kt16 * Generated by claude code.COMMENT
HIGHscripts/install_linux_tar.sh3# Namida Installation Script, Generated by claude.aiCOMMENT
HIGHscripts/gen_downloads_table.sh3# Generated by claude.aiCOMMENT
HIGHlib/ui/widgets/lyrics_karaoke_text.dart13/// Generated by claude.aiCOMMENT
HIGHlib/ui/widgets/lyrics_karaoke_text.dart396/// Generated by claude.aiCOMMENT
HIGHlib/controller/music_web_server/jellyfin_api.dart1/// This file is generated by claude.aiCOMMENT
HIGHlib/packages/lyrics_lrc_parsed_view.dart1577/// Generated by claude.aiCOMMENT
Deep Nesting12 hits · 12 pts
SeverityFileLineSnippetContext
LOWscripts/gen_app_icons.py95CODE
LOWscripts/unpushed_deps.py113CODE
LOWscripts/chlog.py196CODE
LOWscripts/chlog.py377CODE
LOWscripts/chlog.py552CODE
LOWscripts/chlog.py958CODE
LOWscripts/chlog.py1209CODE
LOWscripts/chlog.py1521CODE
LOWscripts/chlog.py1602CODE
LOWscripts/screenshots/compose.py375CODE
LOWscripts/screenshots/seed.py555CODE
LOWscripts/screenshots/seed_youtube.py231CODE
Excessive Try-Catch Wrapping6 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMscripts/bundle.dart68 print('Error occured while building for linux.. aborting. (err code $buildExitCode)');CODE
MEDIUMscripts/.obsolete/tr_refine.dart15 print('Error parsing the map $e');CODE
MEDIUMscripts/.obsolete/tr_refine.dart25 print('Error parsing the main map, aborting...');CODE
MEDIUMscripts/.obsolete/tr_refine.dart37 print('Error parsing the json of $fileSystem, skipping...');CODE
MEDIUMscripts/.obsolete/tr.dart115 print('Error Adding: $e\nRemoving Keys...');CODE
MEDIUMscripts/.obsolete/tr.dart164 print('Error Removing: $e');CODE
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHscripts/chlog.py1093except FileNotFoundError:CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMlinux/packaging/flatpak/app.namida.Namida.yml14# This file is copied as-is to Flathub, only `namida-source.json` differs there (release url + sha256).COMMENT
Hyper-Verbose Identifiers3 hits · 3 pts
SeverityFileLineSnippetContext
LOWscripts/screenshots/compose.py453def write_metainfo_screenshots():CODE
LOWscripts/screenshots/seed.py835def read_youtube_listens_per_day(data_dir: Path) -> dict:CODE
LOW.github/scripts/issue_triage.js547function isAuthorDuplicateCandidate(item, criteria) {CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMlib/ui/widgets/custom_reorderable_list.dart1474 // won't pick up the scaffold's padding in the overlay.COMMENT
Unused Imports2 hits · 2 pts
SeverityFileLineSnippetContext
LOWscripts/chlog.py17CODE
LOWscripts/chlog.py26CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/install_linux_tar.sh17# Check if running as rootCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/make_appimage.sh13# Usage:COMMENT