AI Slop Code RIsk Monitor

ciromattia/kcc

KCC (a.k.a. Kindle Comic Converter) is a comic and manga converter for ebook readers.

8.3 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for ciromattia/kcc, a Python project with 5,804 GitHub stars. SynthScan examined 24,734 lines of code across 44 source files, recording 169 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 8.3 (Moderate 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.

8.3
Adjusted Signal
8.3
Raw Pattern Score
100%
Time Factor
2026-10-05
Last Push
5.8K
Stars
Python
Language
24.7K
Lines of Code
44
Files
169
Pattern Hits
2026-10-12
Scan Date
0.32
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 10.7/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 10.6/100 · LOW

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

Agent Over-Engineering Ratio 18.3/100 · LOW

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

PR Review Velocity Impact 39.3/100 · MEDIUM

Which changes need focused human review? 169 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 14MEDIUM 4LOW 151

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

Empty Error Handlers13 hits · 65 pts
SeverityFileLineSnippetContext
HIGHkindlecomicconverter/comicarchive.py132except (FileNotFoundError, CalledProcessError):CODE
HIGHkindlecomicconverter/comicarchive.py59except FileNotFoundError:CODE
HIGHkindlecomicconverter/comicarchive.py61except CalledProcessError:CODE
HIGHkindlecomicconverter/comicarchive.py98except CalledProcessError:CODE
HIGHkindlecomicconverter/KCC_gui.py189except Exception:CODE
HIGHkindlecomicconverter/KCC_gui.py600except Exception:CODE
HIGHkindlecomicconverter/KCC_gui.py559except Exception:CODE
HIGHkindlecomicconverter/KCC_gui.py1754except AttributeError:CODE
HIGHkindlecomicconverter/comic2ebook.py1779except Exception:CODE
HIGHkindlecomicconverter/comic2ebook.py1829except IndexError:CODE
HIGHkindlecomicconverter/comic2ebook.py1969except IndexError:CODE
HIGHkindlecomicconverter/comic2ebook.py1771except Exception:CODE
HIGHkindlecomicconverter/comic2ebook.py1039except OSError:CODE
Unused Imports60 hits · 50 pts
SeverityFileLineSnippetContext
LOWkindlecomicconverter/dualmetafix.py21CODE
LOWkindlecomicconverter/KCC_gui.py25CODE
LOWkindlecomicconverter/KCC_gui.py25CODE
LOWkindlecomicconverter/KCC_gui.py26CODE
LOWkindlecomicconverter/KCC_gui.py26CODE
LOWkindlecomicconverter/KCC_gui.py26CODE
LOWkindlecomicconverter/KCC_gui.py26CODE
LOWkindlecomicconverter/KCC_ui_editor.py11CODE
LOWkindlecomicconverter/KCC_ui_editor.py11CODE
LOWkindlecomicconverter/KCC_ui_editor.py11CODE
LOWkindlecomicconverter/KCC_ui_editor.py11CODE
LOWkindlecomicconverter/KCC_ui_editor.py11CODE
LOWkindlecomicconverter/KCC_ui_editor.py11CODE
LOWkindlecomicconverter/KCC_ui_editor.py11CODE
LOWkindlecomicconverter/KCC_ui_editor.py11CODE
LOWkindlecomicconverter/KCC_ui_editor.py11CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py14CODE
LOWkindlecomicconverter/KCC_ui_editor.py18CODE
LOWkindlecomicconverter/KCC_ui_editor.py18CODE
LOWkindlecomicconverter/KCC_ui_editor.py21CODE
LOWkindlecomicconverter/KCC_ui.py11CODE
LOWkindlecomicconverter/KCC_ui.py11CODE
LOWkindlecomicconverter/KCC_ui.py11CODE
LOWkindlecomicconverter/KCC_ui.py11CODE
LOWkindlecomicconverter/KCC_ui.py11CODE
LOWkindlecomicconverter/KCC_ui.py11CODE
LOWkindlecomicconverter/KCC_ui.py11CODE
LOWkindlecomicconverter/KCC_ui.py11CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py14CODE
LOWkindlecomicconverter/KCC_ui.py18CODE
LOWkindlecomicconverter/KCC_ui.py18CODE
LOWkindlecomicconverter/KCC_ui.py18CODE
LOWkindlecomicconverter/KCC_ui.py23CODE
Excessive Try-Catch Wrapping26 hits · 30 pts
SeverityFileLineSnippetContext
LOWkindlecomicconverter/comic2panel.py81 except Exception:CODE
LOWkindlecomicconverter/comic2panel.py223 except Exception:CODE
MEDIUMkindlecomicconverter/comic2panel.py44def mergeDirectory(work):CODE
MEDIUMkindlecomicconverter/comic2panel.py100def splitImage(work):CODE
LOWkindlecomicconverter/KCC_gui.py189 except Exception:CODE
LOWkindlecomicconverter/KCC_gui.py221 except Exception as e:CODE
LOWkindlecomicconverter/KCC_gui.py442 except Exception as e:CODE
LOWkindlecomicconverter/KCC_gui.py488 except Exception as err:CODE
LOWkindlecomicconverter/KCC_gui.py559 except Exception:CODE
LOWkindlecomicconverter/KCC_gui.py600 except Exception:CODE
LOWkindlecomicconverter/KCC_gui.py816 except Exception as err:CODE
LOWkindlecomicconverter/KCC_gui.py1427 except Exception:CODE
LOWkindlecomicconverter/KCC_gui.py1960 except Exception as err:CODE
LOWkindlecomicconverter/KCC_gui.py1992 except Exception as err:CODE
MEDIUMkindlecomicconverter/comic2ebook.py736def imgFileProcessing(work):CODE
MEDIUMkindlecomicconverter/comic2ebook.py1783def _detectKindleGen(GUI=None):CODE
LOWkindlecomicconverter/comic2ebook.py768 except Exception:CODE
LOWkindlecomicconverter/comic2ebook.py941 except Exception:CODE
LOWkindlecomicconverter/comic2ebook.py967 except Exception as e:CODE
LOWkindlecomicconverter/comic2ebook.py1020 except Exception:CODE
LOWkindlecomicconverter/comic2ebook.py1148 except Exception:CODE
LOWkindlecomicconverter/comic2ebook.py1396 except Exception as err:CODE
LOWkindlecomicconverter/comic2ebook.py1771 except Exception:CODE
LOWkindlecomicconverter/comic2ebook.py1779 except Exception:CODE
LOWkindlecomicconverter/comic2ebook.py2131 except Exception as err:CODE
LOWkindlecomicconverter/comic2ebook.py2179 except Exception as e:CODE
Deep Nesting44 hits · 30 pts
SeverityFileLineSnippetContext
LOWsetup.py38CODE
LOWkcc.py31CODE
LOWkindlecomicconverter/comicarchive.py43CODE
LOWkindlecomicconverter/metadata.py77CODE
LOWkindlecomicconverter/comic2panel.py44CODE
LOWkindlecomicconverter/comic2panel.py100CODE
LOWkindlecomicconverter/comic2panel.py227CODE
LOWkindlecomicconverter/shared.py51CODE
LOWkindlecomicconverter/KCC_gui.py171CODE
LOWkindlecomicconverter/KCC_gui.py415CODE
LOWkindlecomicconverter/KCC_gui.py694CODE
LOWkindlecomicconverter/KCC_gui.py776CODE
LOWkindlecomicconverter/KCC_gui.py1056CODE
LOWkindlecomicconverter/KCC_gui.py1353CODE
LOWkindlecomicconverter/KCC_gui.py1396CODE
LOWkindlecomicconverter/KCC_gui.py1827CODE
LOWkindlecomicconverter/KCC_gui.py1915CODE
LOWkindlecomicconverter/KCC_gui.py2001CODE
LOWkindlecomicconverter/KCC_spread_label.py55CODE
LOWkindlecomicconverter/image.py196CODE
LOWkindlecomicconverter/image.py255CODE
LOWkindlecomicconverter/image.py417CODE
LOWkindlecomicconverter/image.py467CODE
LOWkindlecomicconverter/image.py560CODE
LOWkindlecomicconverter/image.py636CODE
LOWkindlecomicconverter/comic2ebook.py100CODE
LOWkindlecomicconverter/comic2ebook.py297CODE
LOWkindlecomicconverter/comic2ebook.py510CODE
LOWkindlecomicconverter/comic2ebook.py736CODE
LOWkindlecomicconverter/comic2ebook.py821CODE
LOWkindlecomicconverter/comic2ebook.py876CODE
LOWkindlecomicconverter/comic2ebook.py917CODE
LOWkindlecomicconverter/comic2ebook.py1067CODE
LOWkindlecomicconverter/comic2ebook.py1121CODE
LOWkindlecomicconverter/comic2ebook.py1215CODE
LOWkindlecomicconverter/comic2ebook.py1297CODE
LOWkindlecomicconverter/comic2ebook.py1325CODE
LOWkindlecomicconverter/comic2ebook.py1376CODE
LOWkindlecomicconverter/comic2ebook.py1441CODE
LOWkindlecomicconverter/comic2ebook.py1618CODE
LOWkindlecomicconverter/comic2ebook.py1756CODE
LOWkindlecomicconverter/comic2ebook.py1783CODE
LOWkindlecomicconverter/comic2ebook.py1876CODE
LOWkindlecomicconverter/comic2ebook.py2151CODE
Over-Commented Block17 hits · 17 pts
SeverityFileLineSnippetContext
LOWkcc-c2e.py1#!/usr/bin/env python3COMMENT
LOWkcc.py1#!/usr/bin/env python3COMMENT
LOWkcc-c2p.py1#!/usr/bin/env python3COMMENT
LOW.github/workflows/codeql-analysis.yml1# For most projects, this workflow file will not need changing; you simply needCOMMENT
LOWkindlecomicconverter/pdfjpgextract.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/comicarchive.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/startup.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/metadata.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/comic2panel.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/kindle.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/shared.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/dualmetafix.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/KCC_gui.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/KCC_spread_label.py41 # print(label.maximumSize())COMMENT
LOWkindlecomicconverter/KCC_ui.py681 self.widthBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:preCOMMENT
LOWkindlecomicconverter/image.py1# -*- coding: utf-8 -*-COMMENT
LOWkindlecomicconverter/comic2ebook.py1# -*- coding: utf-8 -*-COMMENT
Hyper-Verbose Identifiers5 hits · 5 pts
SeverityFileLineSnippetContext
LOWkindlecomicconverter/rainbow_artifacts_eraser.py20def attenuate_diagonal_frequencies(fft_spectrum, freq_threshold=0.30, target_angle=135,CODE
LOWkindlecomicconverter/rainbow_artifacts_eraser.py114def inverse_fourier_transform_image(fft_spectrum, is_color, original_shape=None):CODE
LOWkindlecomicconverter/page_number_crop_alg.py38def get_bbox_crop_margin_page_number(img, power=1, background_color='white'):CODE
LOWkindlecomicconverter/KCC_gui.py1274 def display_kindlegen_missing(self):CODE
LOWkindlecomicconverter/comic2ebook.py876def mupdf_pdf_process_pages_parallel(filename, output_dir, target_width, target_height, pdfwidth):CODE
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHkindlecomicconverter/KCC_gui.py1381 message = unquote(message.toString().replace('file:///', ''))CODE
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippetContext
LOWkindlecomicconverter/KCC_gui.py2008 # Check if it's a range (e.g., "5-10")COMMENT
LOWkindlecomicconverter/KCC_gui.py2023 # Check if it's a comma-separated list (e.g., "1,3,5")COMMENT
LOWkindlecomicconverter/comic2ebook.py1845 # Check if prefix is needed when user-specified ordering differs from OS natural sortingCOMMENT