AI Slop Code Risk Monitor

shaka-project/shaka-player

SlopCodeMonitor badge for shaka-project/shaka-player Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

JavaScript player library / DASH & HLS client / MSE-EME player

0.5 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for shaka-project/shaka-player, a JavaScript project with 8,266 GitHub stars. SynthScan examined 629,065 lines of code across 1196 source files, recording 157 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-31
Last Push
8.3K
Stars
JavaScript
Language
629.1K
Lines of Code
1.2K
Files
157
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 1.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.9/100 · LOW

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

Agent Over-Engineering Ratio 0.6/100 · LOW

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

PR Review Velocity Impact 2.1/100 · LOW

Which changes need focused human review? 157 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 9HIGH 0MEDIUM 12LOW 136

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

Hallucination Indicators9 hits · 115 pts
SeverityFileLineSnippetContext
CRITICALtest/test/util/manifest_generator.js748 this.manifest_.shaka_.media.SegmentIndex.forSingleSegment(CODE
CRITICALlib/msf/packaging/mpeg2ts_program.js160 if (shaka.msf.packaging.Mpeg2tsProgram.VIDEO_STREAM_TYPES_.has(CODE
CRITICALlib/msf/drafts/draft18/session.js1059 if (!shaka.msf.draft18.Session.END_OF_RANGE_.includes(flags)) {CODE
CRITICALlib/msf/drafts/draft18/messages.js261 return shaka.msf.draft18.MessageWriter.PARAMETER_ENCODINGS_.get(type) ??CODE
CRITICAL⚡lib/cea/cea608_memory.js175 if (shaka.cea.Cea608Memory.CharSet.BasicNorthAmericanChars.has(b)) {CODE
CRITICAL⚡lib/cea/cea608_memory.js177 shaka.cea.Cea608Memory.CharSet.BasicNorthAmericanChars.get(b);CODE
CRITICAL⚡lib/cea/cea608_memory.js185 shaka.cea.Cea608Memory.CharSet.SpecialNorthAmericanChars.get(b);CODE
CRITICAL⚡lib/cea/cea608_memory.js191 shaka.cea.Cea608Memory.CharSet.ExtendedSpanishFrench.get(b);CODE
CRITICAL⚡lib/cea/cea608_memory.js196 shaka.cea.Cea608Memory.CharSet.ExtendedPortugueseGerman.get(b);CODE
Over-Commented Block64 hits · 64 pts
SeverityFileLineSnippetContext
LOWkarma.conf.js501 clientArgs.setupFiles = resolveGlobs([COMMENT
LOWkarma.conf.js641 * @param {!Object} configCOMMENT
LOWkarma.conf.js841COMMENT
LOWapp-engine/shaka-player-demo/app.yaml1# Copyright 2016 Google LLCCOMMENT
LOWapp-engine/shaka-player-demo/main.py1# Shaka Player Demo - Appspot Compatibility ShimCOMMENT
LOWtest/player_external.js41 player = new compiledShaka.Player();COMMENT
LOWtest/test/boot.js101 // https://developer.mozilla.org/en-US/docs/Web/API/ErrorEventCOMMENT
LOWtest/test/boot.js441 });COMMENT
LOWtest/test/boot.js781 // other than those in the Shaka Player library, tracked by the ClosureCOMMENT
LOWtest/test/util/test_scheme.js241 // does, we use them in preference over everything else. There is aCOMMENT
LOWtest/cast/cast_receiver_integration.js141 const p = waitForLoadedData();COMMENT
LOWtest/cea/mp4_cea_parser_unit.js141 it('parses cea data from a segment with multiple trun boxes', () => {COMMENT
LOWtest/hls/hls_parser_unit.js7981 const originalSegmentIndex = video.segmentIndex;COMMENT
LOWtest/offline/storage_integration.js441 });COMMENT
LOWtest/offline/storage_mechanism_unit.js61 // The mechanism used to drop such a connection on the floor: destroy() sawCOMMENT
LOWtest/media/region_observer_unit.js161 // will step up our timeline and then step through it in small steps so thatCOMMENT
LOWtest/media/streaming_engine_unit.js221 setupManifest(COMMENT
LOWtest/media/streaming_engine_unit.js601 });COMMENT
LOWtest/media/streaming_engine_integration.js421 expect(video.currentTime).toBeGreaterThan(0);COMMENT
LOWtest/media/media_source_engine_integration.js1201 // The 0.001 fudge that MediaSourceEngine applies to negative timestampCOMMENT
LOWtest/media/media_source_engine_unit.js1261 }COMMENT
LOWtest/media/media_source_engine_unit.js1821COMMENT
LOW.github/workflows/release-please.yaml21 pull-requests: writeCOMMENT
LOW.github/workflows/release-please.yaml221 # the tag. So if you fork this package, update repository.url inCOMMENT
LOW.github/workflows/compute-incremental-coverage.py1#!/usr/bin/env python3COMMENT
LOW.github/workflows/compute-incremental-coverage.py81 # }COMMENT
LOW.github/workflows/compute-incremental-coverage.py101 # }COMMENT
LOW.github/workflows/compute-incremental-coverage.py121 # },COMMENT
LOW.github/workflows/shaka-bot-commands/command-help.sh1# Copyright 2016 Google LLCCOMMENT
LOW.github/workflows/shaka-bot-commands/main.sh1# Copyright 2016 Google LLCCOMMENT
LOW.github/workflows/shaka-bot-commands/command-test.sh1# Copyright 2016 Google LLCCOMMENT
LOW.github/workflows/shaka-bot-commands/lib.sh1# Copyright 2016 Google LLCCOMMENT
LOWlib/player.js3821 }COMMENT
LOWlib/player.js4081 this.adManager_.onManifestUpdated(this.isDynamic());COMMENT
LOWlib/drm/drm_engine.js1761 * @param {shaka.extern.Request} requestCOMMENT
LOWlib/drm/drm_engine.js2841 // specified.COMMENT
LOWlib/net/http_fetch_plugin.js161 const contentLength =COMMENT
LOWlib/msf/msf_parser.js1801COMMENT
LOWlib/msf/loc_parser.js481COMMENT
LOWlib/msf/packaging/loc.js61 const basicInfo = shaka.media.SegmentUtils.getBasicInfoFromMimeType(COMMENT
LOWlib/util/player_configuration.js41 const bandwidthEstimate = 1e6; // 1MbpsCOMMENT
LOWlib/util/ts_parser.js781 let pesPts = null;COMMENT
LOWlib/util/ts_parser.js1761COMMENT
LOWlib/util/mp4_parser.js341 // 4 bytes channel countCOMMENT
LOWlib/util/mime_utils.js361 ('000' + parseInt(avcData.shift(), 10).toString(16)).slice(-4);COMMENT
LOWlib/util/periods.js1401 if (candidateRoleMatches.length > bestRoleMatches.length) {COMMENT
LOWlib/cast/cast_receiver.js981 */COMMENT
LOWlib/cast/cast_sender.js181 if (!this.receiverAppId_.length) {COMMENT
LOWlib/codec/h264.js301 if (spsFound && data.length > 4) {COMMENT
LOWlib/transmuxer/loc_transmuxer.js181 const MimeUtils = shaka.util.MimeUtils;COMMENT
LOWlib/hls/hls_parser.js4401 // set a presentation start time. We will assert later that this isCOMMENT
LOWlib/hls/hls_parser.js5521 }COMMENT
LOWlib/text/ui_text_displayer.js1821 // Using 'break-spaces' would be better, as it would preserve even trailingCOMMENT
LOWlib/text/ui_text_displayer.js2041 // - The Start alignment means the text container’s top side (for horizontalCOMMENT
LOWlib/text/ui_text_displayer.js2181 // interpreted as a percentage of the video, as defined by the writingCOMMENT
LOWlib/text/text_utils.js501 // rejected by Edge. See https://bit.ly/2K9VX3sCOMMENT
LOWlib/polyfill/mediasource.js41 shaka.log.info('Patching Safari 8-12 MSE bugs.');COMMENT
LOWlib/polyfill/video_play_promise.js21 */COMMENT
LOWlib/offline/indexeddb/storage_mechanism.js81 const open = window.indexedDB.open(name, version);COMMENT
LOWlib/media/media_source_engine.js1501 // per-segment recomputation below instead.COMMENT
4 more matches not shown…
Hyper-Verbose Identifiers62 hits · 62 pts
SeverityFileLineSnippetContext
LOWkarma.conf.js644function allUsableBrowserLaunchers(config) {CODE
LOWkarma.conf.js717function WebDriverScreenshotMiddlewareFactory(launcher) {CODE
LOWdemo/load.js8function shakaUncompiledModeSupported() {CODE
LOWexterns/mediasession.js189function MediaSessionActionDetails() {}CODE
LOWtest/player_unit.js6623 function defaultStreamingFailureCallback(error) {CODE
LOWtest/player_external.js271 async function getManifestUriFromAdManager(asset) {CODE
LOWtest/player_external.js316 async function getManifestUriFromMediaTailorAdManager(asset) {CODE
LOWtest/ads/interstitial_ad_unit.js64 function leavePreviousAdMediaLoaded() {CODE
LOWtest/drm/drm_engine_unit.js3263 function createMockMediaKeySystemAccess() {CODE
LOWtest/ui/ui_integration.js337 async function verifyLanguageChangeViaUI(playerEventName, getTracks) {CODE
LOWtest/ui/ui_integration.js353 async function verifyLanguageChangeViaAPI(CODE
LOWtest/ui/ui_integration.js724 function updateResolutionButtonsAndMap() {CODE
LOWtest/msf/msf_parser_unit.js1671 async function givenALiveStreamWithTimeline() {CODE
LOWtest/test/boot.js20function failTestsOnFailedAssertions() {CODE
LOWtest/test/boot.js46function failTestsOnNamespacedElementOrAttributeNames() {CODE
LOWtest/test/boot.js92function failTestsOnUnhandledErrors() {CODE
LOWtest/test/boot.js165function workAroundLegacyEdgePromiseIssues() {CODE
LOWtest/test/boot.js183function installPromiseWithResolversPolyfill() {CODE
LOWtest/test/boot.js203function installStructuredClonePolyfill() {CODE
LOWtest/test/boot.js404function configureJasmineEnvironment() {CODE
LOWtest/test/boot.js598function checkWidevinePersistentSupport() {CODE
LOWtest/test/boot.js668function isReadableStreamSupported() {CODE
LOWtest/test/boot.js688function isWritableStreamSupported() {CODE
LOWtest/test/closure-boot.js45 function installRetryingScriptLoader() {CODE
LOWtest/test/assets/screenshots/review.html350function appendScreenshotLineBreak() {CODE
LOWtest/util/video_frame_callback_handler_unit.js61 function createMockVideoWithoutRVFC() {CODE
LOWtest/util/video_frame_callback_handler_unit.js71 function fireLastRegisteredCallback(now = 100, metadata = null) {CODE
LOWtest/cast/cast_receiver_integration.js334 function waitForUpdateMessageWrapper(prototype, name, methodName) {CODE
LOWtest/cast/cast_receiver_integration.js364 async function averageUpdateMessageLength() {CODE
LOWtest/cast/cast_receiver_integration.js412 function createMockReceiverManager() {CODE
LOWtest/cast/cast_receiver_unit.js1014 function createMockReceiverManager() {CODE
LOWtest/cast/cast_sender_unit.js923 function fakeSessionConnectionFailure(code) {CODE
LOWtest/abr/simple_abr_manager_integration.js199 function createMultiBitrateManifest(duration) {CODE
LOWtest/abr/simple_abr_manager_integration.js373 async function setupDroppedFramesPlayback(disableStreamSpy) {CODE
LOWtest/hls/hls_live_unit.js123 function configureNetEngineForInitialManifest(master, media1, media2) {CODE
LOWtest/dash/dash_parser_manifest_unit.js1651 async function testAudioChannelConfiguration(CODE
LOWtest/dash/dash_parser_manifest_unit.js3082 function buildManifestWithPeriodStartTime(periods) {CODE
LOWtest/dash/dash_parser_live_unit.js131 function makeSimpleLiveManifestText(lines, updateTime, duration) {CODE
LOWtest/text/native_text_displayer_unit.js470 function FakeVTTCueWithoutAlignCenter(start, end, text) {CODE
LOWtest/offline/storage_integration.js1550 function makeManifestWithVideoInitSegments() {CODE
LOWtest/offline/storage_integration.js1606 function makeManifestWithPerStreamBandwidth() {CODE
LOWtest/offline/storage_integration.js1652 function makeManifestWithoutPerStreamBandwidth() {CODE
LOWtest/offline/storage_integration.js1666 function makeManifestWithNonZeroStart() {CODE
LOWtest/offline/storage_integration.js1686 function makeManifestWithLiveTimeline() {CODE
LOWtest/offline/storage_integration.js1696 function makeManifestWithAlternateSegments() {CODE
LOWtest/media/closed_caption_parser_unit.js47 function getCurrentContinuityTimeline(parser) {CODE
LOWtest/media/streaming_engine_unit.js5053 function slideSegmentAvailabilityWindow() {CODE
LOWtest/media/streaming_engine_unit.js5099 function failFirstRequestForTarget(netEngine, targetUri, errorCode) {CODE
LOWtest/media/streaming_engine_unit.js5154 function createAlternateSegmentIndex(baseStream, alternateStream) {CODE
LOWtest/media/streaming_engine_integration.js198 function createLiveStreamGenerator(metadata, type, timeShiftBufferDepth) {CODE
LOWtest/media/media_source_engine_integration.js229 function appendWithSeekAndClosedCaptions(type, segmentNumber) {CODE
LOWtest/media/media_source_engine_integration.js242 function appendInitWithClosedCaptions(type) {CODE
LOWtest/media/media_source_engine_unit.js2102 function simulatePlaybackBeginning() {CODE
LOWdocs/upgrades/upgrade-v2.1-to-v2.4.md286function retryLiveOnFailureCallback(error) {CODE
LOWdocs/upgrades/upgrade-v2.1-to-v2.4.md292function retryOnSpecificHttpErrorsCallback(error) {CODE
LOWdocs/upgrades/upgrade-v1-to-v2.md103function interpretContentProtection(schemeIdUri, contentProtectionElement) {CODE
LOWdocs/upgrades/upgrade-v1-to-v2.md156function interpretContentProtection(contentProtectionElement) {CODE
LOWdocs/upgrades/upgrade-v1-to-v2.md193function interpretContentProtection(schemeIdUri, contentProtectionElement) {CODE
LOWdocs/upgrades/upgrade-v1-to-v2.md310function interpretContentProtection(schemeIdUri, contentProtectionElement) {CODE
LOWdocs/upgrades/upgrade-v2.0-to-v2.4.md493function retryLiveOnFailureCallback(error) {CODE
2 more matches not shown…
Self-Referential Comments5 hits · 15 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/release-please.yaml290 # Create a simple README for the repoCOMMENT
MEDIUM.github/workflows/release-please.yaml298 # Create a clean commit for the new demo release.COMMENT
MEDIUM.github/workflows/report-incremental-coverage.yaml51 # Create a new commentCOMMENT
MEDIUM.github/workflows/update-screenshots.yaml155 # Create a local branch.COMMENT
MEDIUM.github/workflows/update-screenshots.yaml183 # Create a PR.COMMENT
Decorative Section Separators4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMui/playback_rate_selection.js111 // Slider row: [−] ──────slider────── [+]COMMENT
MEDIUMlib/codec/av1.js269 // ── color_config() (AV1 §5.5.2) ──────────────────────────────────────COMMENT
MEDIUMlib/transmuxer/loc_transmuxer.js296 // ── AnnexB mode (LOC §2.1.4) ───────────────────────────────────────COMMENT
MEDIUMlib/transmuxer/loc_transmuxer.js317 // ── Length-prefix mode (LOC §2.1.3, AVCC/HVCC) ────────────────────COMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMtest/test/boot.js415 // nuanced version. You can't set this to null, since jasmine still triesCOMMENT
MEDIUMtest/test/boot.js794 // and on certain platforms. So this seems to be the more robust solution.COMMENT
MEDIUMlib/player.js9593 // Get the safeMargin to ensure a seamless playbackCOMMENT
Verbosity Indicators2 hits · 4 pts
SeverityFileLineSnippetContext
LOW⚡lib/dash/mpd_utils.js607 // Step 3: integrate the imported content into the Linked Period.COMMENT
LOW⚡lib/dash/mpd_utils.js615 // Step 2: fall back to a regular Period instead of failing the parse.COMMENT
Structural Annotation Overuse2 hits · 4 pts
SeverityFileLineSnippetContext
LOW⚡lib/dash/mpd_utils.js607 // Step 3: integrate the imported content into the Linked Period.COMMENT
LOW⚡lib/dash/mpd_utils.js615 // Step 2: fall back to a regular Period instead of failing the parse.COMMENT
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtest/test/assets/mkv/generate.py44CODE
LOW.github/workflows/compute-incremental-coverage.py207CODE
LOW.github/workflows/compute-incremental-coverage.py70CODE
LOW.github/workflows/compute-incremental-coverage.py171CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/workflows/update-screenshots.yaml164 # Check if a PR already exists.COMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWui/locales/dashboard.html1335 'placeholder': st.status === 'missing' ? 'Missing translation' : null,CODE