AI Slop Code Risk Monitor

jellyfin/jellyfin

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

The Free Software Media System - Server Backend & API

3.6 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for jellyfin/jellyfin, a C# project with 58,846 GitHub stars. SynthScan examined 417,022 lines of code across 2560 source files, recording 1485 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 3.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.

3.6
Adjusted Signal
3.6
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
58.8K
Stars
C#
Language
417.0K
Lines of Code
2.6K
Files
1.5K
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 16.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

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

Agent Over-Engineering Ratio 0.0/100 · LOW

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

PR Review Velocity Impact 16.6/100 · LOW

Which changes need focused human review? 1485 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 1HIGH 0MEDIUM 12LOW 1472

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

Over-Commented Block1443 hits · 1422 pts
SeverityFileLineSnippetContext
LOWMediaBrowser.Providers/MediaInfo/ProbeProvider.cs61 /// <param name="blurayExaminer">Instance of the <see cref="IBlurayExaminer"/> interface.</param>COMMENT
LOWMediaBrowser.Providers/MediaInfo/MediaInfoResolver.cs41 /// <summary>COMMENT
LOWMediaBrowser.Providers/MediaInfo/MediaInfoResolver.cs381 }COMMENT
LOWMediaBrowser.Providers/MediaInfo/AudioFileProber.cs41 private readonly IMediaStreamRepository _mediaStreamRepository;COMMENT
LOWMediaBrowser.Providers/Music/AlbumMetadataService.cs21/// <summary>COMMENT
LOW…ders/Plugins/MusicBrainz/MusicBrainzQueryExtensions.cs101COMMENT
LOW…ders/Plugins/MusicBrainz/MusicBrainzQueryExtensions.cs121 /// <param name="searchQuery">The search query.</param>COMMENT
LOWMediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs61 public override string Name => "MusicBrainz";COMMENT
LOWMediaBrowser.Providers/Plugins/Tmdb/TmdbUtils.cs21 {COMMENT
LOWMediaBrowser.Providers/Plugins/Tmdb/TmdbUtils.cs101 return TryParseTmdbId(value, out tmdbId);COMMENT
LOWMediaBrowser.Providers/Plugins/Tmdb/TmdbUtils.cs461 /// Determines the language code to report for an image.COMMENT
LOW…diaBrowser.Providers/Plugins/Tmdb/TmdbClientManager.cs241COMMENT
LOW…diaBrowser.Providers/Plugins/Tmdb/TmdbClientManager.cs421 /// <summary>COMMENT
LOW…diaBrowser.Providers/Plugins/Tmdb/TmdbClientManager.cs581 /// <summary>COMMENT
LOW…diaBrowser.Providers/Plugins/Tmdb/TmdbClientManager.cs601 /// Converts backdrop <see cref="ImageData"/>s into <see cref="RemoteImageInfo"/>s.COMMENT
LOW…diaBrowser.Providers/Plugins/Tmdb/TmdbClientManager.cs621 /// <param name="images">The input images.</param>COMMENT
LOW…ders/Plugins/Tmdb/Configuration/PluginConfiguration.cs1#pragma warning disable CA1819 // Properties should not return arraysCOMMENT
LOW…ders/Plugins/Tmdb/Configuration/PluginConfiguration.cs21 public bool IncludeAdult { get; set; }COMMENT
LOW…ders/Plugins/Tmdb/Configuration/PluginConfiguration.cs41 /// Enabling this will increase scan times.COMMENT
LOW…ders/Plugins/Tmdb/Configuration/PluginConfiguration.cs61 /// libraries for which the unaired/missing episode provider is enabled. Whether episodes areCOMMENT
LOW…ders/Plugins/Tmdb/Configuration/PluginConfiguration.cs81 public int UpcomingEpisodeGracePeriodDays { get; set; } = 7;COMMENT
LOW…ders/Plugins/Tmdb/Configuration/PluginConfiguration.cs101 public bool HideMissingCrewMembers { get; set; }COMMENT
LOW…roviders/Plugins/Tmdb/TV/TmdbMissingEpisodeProvider.cs501 false);COMMENT
LOW…gins/ListenBrainz/Configuration/SimilarityAlgorithm.cs1namespace MediaBrowser.Providers.Plugins.ListenBrainz.Configuration;COMMENT
LOWMediaBrowser.Providers/Books/IComicProvider.cs21COMMENT
LOW…rs/Books/ComicBookInfo/Models/ComicBookInfoMetadata.cs61 /// Gets or sets the number of volumes.COMMENT
LOWMediaBrowser.Providers/TV/SeriesMetadataService.cs21COMMENT
LOWMediaBrowser.Providers/TV/SeriesMetadataService.cs341COMMENT
LOWMediaBrowser.Providers/Manager/ItemImageProvider.cs261 }COMMENT
LOWMediaBrowser.Providers/Manager/ImageSaver.cs341 if (!saveLocally || (_config.Configuration.ImageSavingConvention == ImageSavingConvention.Legacy))COMMENT
LOWMediaBrowser.Providers/Manager/ImageSaver.cs361 private ItemImageInfo GetCurrentImage(BaseItem item, ImageType type, int imageIndex)COMMENT
LOWMediaBrowser.Providers/Manager/ImageSaver.cs381COMMENT
LOW…n.Server.Implementations/Trickplay/TrickplayManager.cs41 private readonly IDbContextFactory<JellyfinDbContext> _dbProvider;COMMENT
LOW…ver.Implementations/Extensions/ExpressionExtensions.cs41COMMENT
LOW…rver.Implementations/FullSystemBackup/BackupService.cs601COMMENT
LOWJellyfin.Server.Implementations/Item/BaseItemMapper.cs481 /// Checks whether a type requires JSON deserialization.COMMENT
LOW…er.Implementations/Item/BaseItemRepository.Querying.cs261 /// <remarks>COMMENT
LOWJellyfin.Server.Implementations/Item/OrderMapper.cs21public static class OrderMapperCOMMENT
LOWEmby.Naming/Video/ExtraResult.cs1using MediaBrowser.Model.Entities;COMMENT
LOWEmby.Naming/Video/CleanDateTimeResult.cs21 /// <summary>COMMENT
LOWEmby.Naming/Video/ExtraRuleType.cs1namespace Emby.Naming.VideoCOMMENT
LOWEmby.Naming/Video/VideoFileInfo.cs1using System;COMMENT
LOWEmby.Naming/Video/VideoFileInfo.cs41 /// Gets or sets the path.COMMENT
LOWEmby.Naming/Video/VideoFileInfo.cs61 /// <value>The year.</value>COMMENT
LOWEmby.Naming/Video/VideoFileInfo.cs81COMMENT
LOWEmby.Naming/Video/VideoInfo.cs21 AlternateVersions = [];COMMENT
LOWEmby.Naming/AudioBook/AudioBookInfo.cs1using System.Collections.Generic;COMMENT
LOWEmby.Naming/AudioBook/AudioBookInfo.cs41 /// <value>The files.</value>COMMENT
LOWEmby.Naming/AudioBook/AudioBookFileInfo.cs21 PartNumber = partNumber;COMMENT
LOWEmby.Naming/TV/EpisodeInfo.cs1namespace Emby.Naming.TVCOMMENT
LOWEmby.Naming/TV/EpisodeInfo.cs21 public string Path { get; set; }COMMENT
LOWEmby.Naming/TV/EpisodeInfo.cs41 /// <summary>COMMENT
LOWEmby.Naming/TV/EpisodeInfo.cs61 /// </summary>COMMENT
LOWEmby.Naming/TV/SeriesResolver.cs1using System.IO;COMMENT
LOWEmby.Naming/TV/SeriesResolver.cs21 private static partial Regex SeriesNameRegex();COMMENT
LOWEmby.Naming/TV/SeasonPathParserResult.cs1namespace Emby.Naming.TVCOMMENT
LOWEmby.Naming/TV/EpisodePathParserResult.cs1namespace Emby.Naming.TVCOMMENT
LOWEmby.Naming/TV/EpisodePathParserResult.cs21 public int? EndingEpisodeNumber { get; set; }COMMENT
LOWEmby.Naming/TV/SeriesInfo.cs1namespace Emby.Naming.TVCOMMENT
LOWEmby.Naming/ExternalFiles/ExternalPathParserResult.cs21 }COMMENT
1383 more matches not shown…
AI Slop Vocabulary11 hits · 33 pts
SeverityFileLineSnippetContext
MEDIUMJellyfin.Api/Controllers/AudioController.cs42 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/AudioController.cs206 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/DynamicHlsController.cs114 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/DynamicHlsController.cs353 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/DynamicHlsController.cs529 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/DynamicHlsController.cs696 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/DynamicHlsController.cs867 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/DynamicHlsController.cs1037 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/DynamicHlsController.cs1221 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/VideosController.cs266 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
MEDIUMJellyfin.Api/Controllers/VideosController.cs504 /// <param name="deviceProfileId">Optional. The dlna device profile id to utilize.</param>COMMENT
Verbosity Indicators10 hits · 20 pts
SeverityFileLineSnippetContext
LOW…er.Implementations/Item/BaseItemRepository.Querying.cs287 // Step 1: Find the top N series with recently added content, ordered by most recent additionCOMMENT
LOW…er.Implementations/Item/BaseItemRepository.Querying.cs339 // Step 3: Analyze each series to identify recent additions within the time windowCOMMENT
LOW…er.Implementations/Item/BaseItemRepository.Querying.cs380 // Step 4: Batch fetch counts - episodes per season and seasons per seriesCOMMENT
LOW…er.Implementations/Item/BaseItemRepository.Querying.cs402 // Step 5: Apply the container selection logic for each series.COMMENT
LOW⚡…er.Implementations/Item/BaseItemRepository.Querying.cs492 // Step 6: Fetch the Season/Series entities we decided to returnCOMMENT
LOW⚡…er.Implementations/Item/BaseItemRepository.Querying.cs501 // Step 7: Build final results, preferring Season > Series > Episode.COMMENT
LOW⚡…nes/20260115120000_FixIncorrectOwnerIdRelationships.cs55 // Step 1: Find and remove duplicate database entries (same Path, different IDs)COMMENT
LOW⚡…nes/20260115120000_FixIncorrectOwnerIdRelationships.cs58 // Step 2: Clear incorrect OwnerId for video/movie items that are children of other video/movie itemsCOMMENT
LOW⚡…nes/20260115120000_FixIncorrectOwnerIdRelationships.cs61 // Step 3: Reassign orphaned extras to correct parentsCOMMENT
LOW⚡…nes/20260115120000_FixIncorrectOwnerIdRelationships.cs64 // Step 4: Populate PrimaryVersionId for alternate version childrenCOMMENT
Structural Annotation Overuse10 hits · 20 pts
SeverityFileLineSnippetContext
LOW…er.Implementations/Item/BaseItemRepository.Querying.cs287 // Step 1: Find the top N series with recently added content, ordered by most recent additionCOMMENT
LOW…er.Implementations/Item/BaseItemRepository.Querying.cs339 // Step 3: Analyze each series to identify recent additions within the time windowCOMMENT
LOW…er.Implementations/Item/BaseItemRepository.Querying.cs380 // Step 4: Batch fetch counts - episodes per season and seasons per seriesCOMMENT
LOW…er.Implementations/Item/BaseItemRepository.Querying.cs402 // Step 5: Apply the container selection logic for each series.COMMENT
LOW⚡…er.Implementations/Item/BaseItemRepository.Querying.cs492 // Step 6: Fetch the Season/Series entities we decided to returnCOMMENT
LOW⚡…er.Implementations/Item/BaseItemRepository.Querying.cs501 // Step 7: Build final results, preferring Season > Series > Episode.COMMENT
LOW⚡…nes/20260115120000_FixIncorrectOwnerIdRelationships.cs55 // Step 1: Find and remove duplicate database entries (same Path, different IDs)COMMENT
LOW⚡…nes/20260115120000_FixIncorrectOwnerIdRelationships.cs58 // Step 2: Clear incorrect OwnerId for video/movie items that are children of other video/movie itemsCOMMENT
LOW⚡…nes/20260115120000_FixIncorrectOwnerIdRelationships.cs61 // Step 3: Reassign orphaned extras to correct parentsCOMMENT
LOW⚡…nes/20260115120000_FixIncorrectOwnerIdRelationships.cs64 // Step 4: Populate PrimaryVersionId for alternate version childrenCOMMENT
Fake / Example Data7 hits · 10 pts
SeverityFileLineSnippetContext
LOW…fin.Api.Tests/Auth/CustomAuthenticationHandlerTests.cs138 authorizationInfo.Token = "fake-token";CODE
LOW⚡tests/Jellyfin.LiveTv.Tests/RecordingHelperTests.cs89 "Lorem ipsum dolor sit amet: consect 2018_12_06_21_06_00",CODE
LOW⚡tests/Jellyfin.LiveTv.Tests/RecordingHelperTests.cs89 "Lorem ipsum dolor sit amet: consect 2018_12_06_21_06_00",CODE
LOW⚡tests/Jellyfin.LiveTv.Tests/RecordingHelperTests.cs92 Name = "Lorem ipsum dolor sit amet: consect",CODE
LOW⚡tests/Jellyfin.LiveTv.Tests/RecordingHelperTests.cs92 Name = "Lorem ipsum dolor sit amet: consect",CODE
LOW⚡tests/Jellyfin.LiveTv.Tests/RecordingHelperTests.cs96 EpisodeTitle = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidiCODE
LOW⚡tests/Jellyfin.LiveTv.Tests/RecordingHelperTests.cs96 EpisodeTitle = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidiCODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALJellyfin.Api/Helpers/FileStreamResponseHelpers.cs51 requestMessage.Headers.Range = System.Net.Http.Headers.RangeHeaderValue.Parse(rangeString);CODE
Hyper-Verbose Identifiers2 hits · 2 pts
SeverityFileLineSnippetContext
LOW….Server.Implementations/Library/ExternalDataManager.cs17public class ExternalDataManager : IExternalDataManagerCODE
LOWEmby.Server.Implementations/Library/UserDataManager.cs26 public class UserDataManager : IUserDataManagerCODE
Self-Referential Comments1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUM…Server.Implementations/AppBase/BaseApplicationPaths.cs118 + "# This file is a cache directory tag created by Jellyfin.\n"CODE