AI Slop Code Risk Monitor

koreader/koreader

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

An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices

0.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for koreader/koreader, a Lua project with 30,763 GitHub stars. SynthScan examined 238,253 lines of code across 773 source files, recording 68 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 0.4 (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.4
Adjusted Signal
0.4
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
30.8K
Stars
Lua
Language
238.3K
Lines of Code
773
Files
68
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 1.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.4/100 · LOW

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

Agent Over-Engineering Ratio 0.8/100 · LOW

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

PR Review Velocity Impact 1.5/100 · LOW

Which changes need focused human review? 68 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 2LOW 66

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 68 distinct pattern matches across 9 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.

Hyper-Verbose Identifiers35 hits · 38 pts
SeverityFileLineSnippetContext
LOWtools/logcat.py196 def _check_for_birth_or_death(self, rec):CODE
LOWtools/logcat.py220 def _update_packages_and_pids(self, rec):CODE
LOWtools/ja_keyboard_generate.py102def generate_alphabet_shift_cycle(letter):CODE
LOWfrontend/pluginloader.lua158local function sandboxPluginEventHandlers(plugin)CODE
LOWfrontend/docsettings.lua101local function getOrderedLocationCandidates()CODE
LOWfrontend/depgraph.lua59local function getOrCreateNode(self, node_key)CODE
LOWfrontend/ui/wikipedia.lua135local function getWikimediaThumbnailStep(width)CODE
LOWfrontend/ui/widget/booklist.lua43local function getLeadingArticlePrefixes(lang)CODE
LOWfrontend/ui/elements/common_settings_menu_table.lua598local function genMetadataFolderMenuItem(value)CODE
LOWfrontend/ui/elements/menu_keyboard_layout.lua19local function getOrderedActivatedKeyboardLayouts()CODE
LOWfrontend/ui/elements/menu_keyboard_layout.lua38local function getActivatedKeyboardsStringCount(compact)CODE
LOWfrontend/ui/elements/menu_keyboard_layout.lua48local function genKeyboardLayoutsSubmenu()CODE
LOWfrontend/document/djvudocument.lua104local function groupWordsIntoLinesInOrder(words)CODE
LOWfrontend/document/djvudocument.lua127local function groupWordsIntoLinesByGeometry(words)CODE
LOWfrontend/document/koptinterface.lua481 local function buildOptimizedFullPageTile()CODE
LOWfrontend/document/koptinterface.lua492 local function buildOptimizedPagePartTile()CODE
LOWfrontend/device/gesturedetector.lua1408local function translateMultiswipeGesDirCoordinate(multiswipe_directions, translation_table)CODE
LOWfrontend/device/kindle/device.lua104local function kindleAuthenticateNetwork(essid)CODE
LOWfrontend/device/sdl/device.lua218 local function dispatchGamepadAxisMotion(axis, value, event_time)CODE
LOWfrontend/apps/reader/modules/readerstyletweak.lua473local function dispatcherRegisterStyleTweak(tweak_id, tweak_title)CODE
LOW⚡frontend/apps/reader/modules/readerlink.lua275local function isLargerTapAreaToFollowLinksEnabled()CODE
LOW⚡frontend/apps/reader/modules/readerlink.lua279local function isTapIgnoreExternalLinksEnabled()CODE
LOW⚡frontend/apps/reader/modules/readerlink.lua283local function isFootnoteLinkInPopupEnabled()CODE
LOW⚡frontend/apps/reader/modules/readerlink.lua295local function isSwipeToFollowNearestLinkEnabled()CODE
LOW⚡frontend/apps/reader/modules/readerlink.lua299local function isSwipeIgnoreExternalLinksEnabled()CODE
LOW⚡frontend/apps/reader/modules/readerlink.lua303local function isSwipeToJumpToLatestBookmarkEnabled()CODE
LOWfrontend/apps/reader/modules/readerwikipedia.lua46local function getKeyboardLayoutLanguage()CODE
LOWfrontend/apps/filemanager/filemanagercollection.lua514 local function genFilterByMetadataButton(button_prop)CODE
LOWplugins/hotkeys.koplugin/main.lua402local function attachNewTableToExistingTable(original_table, second_table)CODE
LOWplugins/newsdownloader.koplugin/main.lua298local function parseCommaSeparatedOption(opt)CODE
LOWplugins/profiles.koplugin/main.lua67local function dispatcherRegisterProfile(name)CODE
LOWplugins/profiles.koplugin/main.lua72local function dispatcherUnregisterProfile(name)CODE
LOWplugins/bookshortcuts.koplugin/main.lua24local function dispatcherRegisterShortcut(name)CODE
LOWspec/unit/readhistory_spec.lua310 local function testAutoRemoveDeletedItems()CODE
LOWspec/unit/readhistory_spec.lua329 local function testDoNotAutoRemoveDeletedItems()CODE
Fake / Example Data12 hits · 16 pts
SeverityFileLineSnippetContext
LOWfrontend/apps/reader/modules/readerdictionary.lua650 local preview_definition = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " ..CODE
LOWfrontend/apps/reader/modules/readerdictionary.lua650 local preview_definition = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " ..CODE
LOW⚡spec/unit/newsdownloader_url_normalization_spec.lua14 <title>Lorem Ipsum Feed</title>CODE
LOW⚡spec/unit/newsdownloader_url_normalization_spec.lua16 <description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>CODE
LOW⚡spec/unit/newsdownloader_url_normalization_spec.lua16 <description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>CODE
LOW⚡spec/unit/newsdownloader_url_normalization_spec.lua19 <title><![CDATA[Lorem Ipsum Article]]></title>CODE
LOW⚡spec/unit/newsdownloader_url_normalization_spec.lua23 <description><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit.]]></description>CODE
LOW⚡spec/unit/newsdownloader_url_normalization_spec.lua23 <description><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit.]]></description>CODE
LOW⚡spec/unit/newsdownloader_url_normalization_spec.lua24 <content:encoded><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit.]]></content:encoded>CODE
LOW⚡spec/unit/newsdownloader_url_normalization_spec.lua24 <content:encoded><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit.]]></content:encoded>CODE
LOWspec/unit/newsdownloader_url_normalization_spec.lua54 assert.equals("Lorem Ipsum Feed", feeds.rss.channel.title)CODE
LOWspec/unit/newsdownloader_url_normalization_spec.lua59 assert.equals("Lorem Ipsum Article", first_item.title)CODE
Redundant / Tautological Comments10 hits · 15 pts
SeverityFileLineSnippetContext
LOWplatform/kindle/libkohelper.sh18## Check if we have an FBInk binary available somewhere...COMMENT
LOWplatform/kindle/koreader.sh252 # Check if KPVBooklet was launched more than once, if not we will disable pillowCOMMENT
LOWplatform/kindle/extensions/koreader/bin/koreader-ext.sh33 # Check if we were called by install_koreader...COMMENT
LOWplatform/cervantes/koreader.sh129 # Check if the user requested to always abort on crashCOMMENT
LOWplatform/bookeen/wlan.sh51 # Check if wlan driver is already up.COMMENT
LOWplatform/remarkable/koreader.sh156 # Check if the swap has been disabled...COMMENT
LOWplatform/remarkable/koreader.sh214 # Check if the user requested to always abort on crashCOMMENT
LOWplatform/kobo/koreader.sh179 # Check if Nickel is our parent...COMMENT
LOWplatform/kobo/koreader.sh370 # Check if the swap has been disabled...COMMENT
LOWplatform/kobo/koreader.sh446 # Check if the user requested to always abort on crashCOMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtools/mkrelease.sh371 # Create the initial uncompressed TAR file.COMMENT
MEDIUMtools/mkrelease.sh377 # Create the final TAR.XZ file.COMMENT
Over-Commented Block5 hits · 5 pts
SeverityFileLineSnippetContext
LOWtools/ja_keyboard_generate.py1#!/usr/bin/env python3COMMENT
LOWplatform/remarkable/koreader.sh121ORIG_FB_BPP=""COMMENT
LOWplatform/mac/do_mac_bundle.sh1#!/bin/bashCOMMENT
LOWplatform/kobo/koreader.sh61 # but it unfortunately defaults to its lowest possible setting...COMMENT
LOWplatform/kobo/koreader.sh461 # Height @ ~56.7%, w/ a margin worth 1.5 linesCOMMENT
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
LOWtools/ja_keyboard_generate.py130# NOTE: If we ever want to enable looping for these modifiers, just setCOMMENT
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWplatform/kobo/koreader.sh60 # NOTE: The default sampling_rate is a bit high for my tastes,COMMENT
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtools/ja_keyboard_generate.py15CODE
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
LOWfrontend/device/kindle/device.lua774 -- Don't forget to flag ourselves in ScreenSaver mode like Screensaver:show would,CODE