AI Slop Code Risk Monitor

video-dev/hls.js

SlopCodeMonitor badge for video-dev/hls.js Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.

1.1 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for video-dev/hls.js, a TypeScript project with 17,028 GitHub stars. SynthScan examined 137,471 lines of code across 284 source files, recording 163 pattern matches distributed across 2 syntactic categories. The legacy adjusted pattern signal is 1.1 (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.1
Adjusted Signal
1.1
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
17.0K
Stars
TypeScript
Language
137.5K
Lines of Code
284
Files
163
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 5.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 2.4/100 · LOW

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

PR Review Velocity Impact 5.8/100 · LOW

Which changes need focused human review? 163 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 0HIGH 0MEDIUM 0LOW 163

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 163 distinct pattern matches across 2 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 Block97 hits · 82 pts
SeverityFileLineSnippetContext
LOWtests/unit/types.d.ts1// Import type descriptions for global mocha functions `describe`, `it`, `beforeEach`, etc...COMMENT
LOWtests/unit/controller/level-helper.ts241#EXT-X-DISCONTINUITYCOMMENT
LOWtests/unit/controller/level-helper.ts401fileSequence3.tsCOMMENT
LOWtests/unit/controller/level-helper.ts421fileSequence9.tsCOMMENT
LOWtests/unit/controller/level-helper.ts521COMMENT
LOWtests/unit/controller/level-helper.ts541fileSequence5.tsCOMMENT
LOWtests/unit/controller/level-helper.ts561#EXTINF:6,COMMENT
LOWtests/unit/controller/level-helper.ts581fileSequence5.tsCOMMENT
LOWtests/unit/controller/level-helper.ts761 });COMMENT
LOWtests/unit/controller/level-helper.ts781#EXTINF:6,COMMENT
LOWtests/unit/controller/level-helper.ts801#EXT-X-PART:DURATION=2,URI="ll.m4s?segment=fileSequence7.1.m4s"COMMENT
LOWtests/unit/controller/level-helper.ts961#EXTINF:2.500000,COMMENT
LOWtests/unit/controller/level-helper.ts981#EXT-X-PART:DURATION=1.000000,URI="720p_9_1.m4v"COMMENT
LOWtests/unit/controller/level-helper.ts1001#EXT-X-TARGETDURATION:3COMMENT
LOWtests/unit/controller/level-helper.ts1021#EXT-X-PART:DURATION=0.500000,URI="720p_9_2.m4v"COMMENT
LOWtests/unit/controller/level-helper.ts1101 expect(details2.playlistParsingError).to.be.null;COMMENT
LOWtests/unit/controller/level-helper.ts1141fileSequence15.tsCOMMENT
LOWtests/unit/controller/level-helper.ts1221#EXT-X-SERVER-CONTROL:CAN-SKIP-UNTIL=36COMMENT
LOWtests/unit/controller/level-helper.ts1241#EXTINF:6,COMMENT
LOWtests/unit/controller/level-helper.ts1261#EXTINF:6,COMMENT
LOWtests/unit/controller/level-helper.ts1341#EXT-X-SERVER-CONTROL:CAN-SKIP-UNTIL=36COMMENT
LOWtests/unit/controller/level-helper.ts1401#EXT-X-MAP:URI="video_init.mp4"COMMENT
LOWtests/unit/controller/level-helper.ts1461 });COMMENT
LOWtests/unit/controller/level-helper.ts1481#EXT-X-DISCONTINUITYCOMMENT
LOWtests/unit/controller/level-helper.ts1601#EXT-X-DISCONTINUITY-SEQUENCE:31COMMENT
LOWtests/unit/controller/level-helper.ts1621#EXT-X-TARGETDURATION:3COMMENT
LOWtests/unit/controller/level-helper.ts1661#EXT-X-VERSION:6COMMENT
LOWtests/unit/controller/level-helper.ts1861video_5429.m4sCOMMENT
LOWtests/unit/controller/level-helper.ts1941#EXT-X-PART:DURATION=0.500000,URI="part_2002_0.m4s",INDEPENDENT=YESCOMMENT
LOWtests/unit/controller/level-helper.ts1981#EXTINF:3.989333,COMMENT
LOWtests/unit/controller/level-helper.ts2001#EXT-X-PROGRAM-DATE-TIME:2026-08-04T07:31:49.179+00:00COMMENT
LOWtests/unit/controller/level-helper.ts2021#EXT-X-PART:DURATION=0.490667,URI="part_1_2000_2.m4s",INDEPENDENT=YESCOMMENT
LOWtests/unit/controller/level-helper.ts2041#EXT-X-PART:DURATION=0.490667,URI="part_1_2001_6.m4s",INDEPENDENT=YESCOMMENT
LOWtests/unit/controller/level-helper.ts2061#EXT-X-PROGRAM-DATE-TIME:2026-08-04T07:31:29.121+00:00COMMENT
LOWtests/unit/controller/level-helper.ts2081#EXTINF:4.039156,COMMENT
LOWtests/unit/controller/level-helper.ts2101#EXT-X-PROGRAM-DATE-TIME:2026-08-04T07:32:05.248+00:00COMMENT
LOWtests/unit/controller/level-helper.ts2141#EXTINF:2.000,COMMENT
LOWtests/unit/controller/level-helper.ts2181#EXTINF:2.000,COMMENT
LOWtests/unit/controller/level-helper.ts2221#EXTINF:4.0, no descCOMMENT
LOWtests/unit/controller/level-helper.ts2321 });COMMENT
LOWtests/unit/controller/level-helper.ts2341#EXTINF:4.0, no descCOMMENT
LOWtests/unit/controller/level-helper.ts2401 const playlist1 = `#EXTM3UCOMMENT
LOWtests/unit/controller/level-helper.ts242120260408T181648.m4vCOMMENT
LOWtests/unit/controller/level-helper.ts2441#EXTINF:4.000,COMMENT
LOWtests/unit/controller/level-helper.ts2461#EXTINF:4.000,COMMENT
LOWtests/unit/controller/level-helper.ts2481#EXT-X-PROGRAM-DATE-TIME:2026-04-08T18:17:16.125ZCOMMENT
LOWtests/unit/controller/level-helper.ts2541 });COMMENT
LOWtests/unit/controller/level-helper.ts2561#EXTINF:4.0, no descCOMMENT
LOWtests/unit/controller/level-helper.ts258110.m4sCOMMENT
LOWtests/unit/controller/cmcd-controller.ts21#EXT-X-PROGRAM-DATE-TIME:2024-05-02T18:03:57.020+00:00COMMENT
LOWtests/unit/controller/interstitials-controller.ts321 it('X-RESUME-OFFSET values of interstitials scheduled at the same time are cumulative', function () {COMMENT
LOWtests/unit/controller/interstitials-controller.ts501 },COMMENT
LOWtests/unit/controller/interstitials-controller.ts741 },COMMENT
LOWtests/unit/controller/interstitials-controller.ts1121COMMENT
LOWtests/unit/controller/interstitials-controller.ts2021 describe('Live start', function () {COMMENT
LOWtests/unit/controller/interstitials-controller.ts2441#EXT-X-DATERANGE:ID="pre-resume-at-t15",CLASS="com.apple.hls.interstitial",START-DATE="2024-02-23T15:00:00.000Z",CUE="PRCOMMENT
LOWtests/unit/controller/interstitials-controller.ts2461#EXT-X-VERSION:7COMMENT
LOWtests/unit/controller/interstitials-controller.ts2621#EXTINF:6.5,COMMENT
LOWtests/unit/controller/interstitials-controller.ts2641#EXTINF:6.5,COMMENT
LOWtests/unit/controller/interstitials-controller.ts2661#EXTINF:6.5,COMMENT
37 more matches not shown…
Hyper-Verbose Identifiers66 hits · 66 pts
SeverityFileLineSnippetContext
LOWdemo/metrics.js49function timeRangeCanvasonMouseDown(evt) {CODE
LOWdemo/metrics.js71function timeRangeCanvasonMouseMove(evt) {CODE
LOWdemo/metrics.js105function timeRangeCanvasonMouseOut(evt) {CODE
LOWdemo/main.js1478function getDemoConfigPropOrDefault(propName, defaultVal) {CODE
LOWdemo/main.js1532function onConfigPersistenceChanged(event) {CODE
LOWdemo/canvas.js294function canvasBufferTimeRangeUpdate(CODE
LOWdemo/chart/chartjs-horizontal-bar.ts217export function applyChartInstanceOverrides(chart) {CODE
LOWtests/test-streams.js31function createTestStreamWithConfig(target, config) {CODE
LOWtests/unit/events.js4function getAllCapsSnakeCaseToCamelCase(eventType) {CODE
LOWtests/unit/controller/abr-controller.ts405function getMultiChannelAudioLevels(): {CODE
LOWtests/unit/controller/base-stream-controller.ts109 function levelDetailsWithEndSequenceVodOrLive(CODE
LOWtests/unit/controller/base-stream-controller.ts968 function createMediaFragWithInitSegment(encrypted: boolean = false) {CODE
LOWtests/unit/controller/subtitle-stream-controller.ts282 function buildEncryptedSubtitleFrag() {CODE
LOWtests/unit/controller/buffer-controller-operations.ts60function setSourceBufferBufferedRange(CODE
LOWtests/unit/controller/level-helper.ts2702function expectPlaylistParsingError(object: any, message: string) {CODE
LOWtests/unit/controller/stream-controller.ts1234 function attachMediaAndStubTracker(CODE
LOWtests/unit/controller/interstitials-controller.ts79function expectItemToHaveProperties(CODE
LOWtests/unit/controller/fragment-tracker.ts630function triggerFragLoadedAndFragBuffered(hls: Hls, fragment: Fragment) {CODE
LOWtests/unit/controller/error-controller.ts1167function expectFatalErrorEventToStopPlayer(CODE
LOWtests/unit/loader/m3u8-parser.ts3532function expectPlaylistParsingError(object: any, message: string) {CODE
LOWtests/unit/remux/passthrough-remuxer.ts473function markVideoInitSegmentEncrypted(CODE
LOWtests/functional/auto/testbench.js8function setupConsoleLogRedirection() {CODE
LOWdocs/API.md2298function createHlsIframesOnlyIfNeeded() {CODE
LOWsrc/utils/mediacapabilities-helper.ts53export function requiresMediaCapabilitiesDecodingInfo(CODE
LOWsrc/utils/mediacapabilities-helper.ts116export function getMediaDecodingInfoPromise(CODE
LOWsrc/utils/mediacapabilities-helper.ts280function getVariantDecodingBitrate(level: Level): number {CODE
LOWsrc/utils/mp4-tools.ts897function parseSupplementalDoViCodec(CODE
LOWsrc/utils/discontinuities.ts18export function shouldAlignOnDiscontinuities(CODE
LOWsrc/utils/rendition-helper.ts216function logStartCodecCandidateIgnored(codeSet: string, reason: string) {CODE
LOWsrc/utils/rendition-helper.ts420export function findClosestLevelWithAudioGroup(CODE
LOWsrc/utils/level-helper.ts625export function reassignFragmentLevelIndexes(levels: Level[]) {CODE
LOWsrc/utils/level-helper.ts636function notEqualAfterStrippingQueries(CODE
LOWsrc/utils/error-helper.ts50export function getLoaderConfigWithoutReties(CODE
LOWsrc/utils/user-agent.ts41export function userAgentHevcSupportIsInaccurate() {CODE
LOWsrc/utils/imsc1-ttml-parser.ts264function parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo): number {CODE
LOWsrc/utils/mediakeys-helper.ts24export function keySystemFormatToKeySystemDomain(CODE
LOWsrc/utils/mediakeys-helper.ts48export function keySystemIdToKeySystemDomain(CODE
LOWsrc/utils/mediakeys-helper.ts63export function keySystemDomainToKeySystemFormat(CODE
LOWsrc/utils/mediakeys-helper.ts112export function getSupportedMediaKeySystemConfigurations(CODE
LOWsrc/utils/mediakeys-helper.ts141function createMediaKeySystemConfigurations(CODE
LOWsrc/utils/keysystem-util.ts24export function convertDataUriToArrayBytes(CODE
LOWsrc/utils/codecs.ts93export function areCodecsMediaSourceSupported(CODE
LOWsrc/utils/codecs.ts106function isCodecMediaSourceSupported(CODE
LOWsrc/utils/codecs.ts119export function videoCodecPreferenceValue(CODE
LOWsrc/utils/codecs.ts129export function codecsSetSelectionPreferenceValue(codecSet: string): number {CODE
LOWsrc/utils/codecs.ts152function getCodecCompatibleNameLower(CODE
LOWsrc/utils/codecs.ts224export function pickMostCompleteCodecName(CODE
LOWsrc/utils/encryption-methods-util.ts9export function getAesModeFromFullSegmentMethod(CODE
LOWsrc/utils/timescale-conversion.ts36export function toMpegTsClockFromTimescale(CODE
LOWsrc/controller/iframe-controller.ts349function createHlsImageIFramesOnly(Base: typeof HlsIFramesOnlyClass) {CODE
LOWsrc/controller/base-stream-controller.ts2861export function fragOverlapsQueuedInterstitial(CODE
LOWsrc/controller/buffer-controller.ts2511function mediaErrorRecoveryMessage(CODE
LOWsrc/controller/fragment-finders.ts110function fragmentWithinFastStartSwitch(CODE
LOWsrc/controller/fragment-finders.ts138export function fragmentWithinToleranceTest(CODE
LOWsrc/controller/error-controller.ts644export function createDoNothingErrorAction(resolved?: boolean): IErrorAction {CODE
LOWsrc/controller/level-controller.ts792function setTrackCodecsAndReturnSupported(CODE
LOWsrc/loader/m3u8-parser.ts890function findFragmentWithStartDate(CODE
LOWsrc/loader/m3u8-parser.ts1078function assignMultipleMediaPlaylistTagOccuranceError(CODE
LOWsrc/loader/m3u8-parser.ts1088function assignMustAppearBeforeSegmentsError(CODE
LOWsrc/loader/fragment.ts488function getOwnPropertyDescriptorFromPrototypeChain(CODE
6 more matches not shown…