AI Slop Code Risk Monitor

hestiacp/hestiacp

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

Hestia Control Panel | A lightweight and powerful control panel for the modern web.

2.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for hestiacp/hestiacp, a Shell project with 4,558 GitHub stars. SynthScan examined 96,850 lines of code across 621 source files, recording 199 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 2.7 (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.

2.7
Adjusted Signal
2.7
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
4.6K
Stars
Shell
Language
96.8K
Lines of Code
621
Files
199
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 12.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

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

Agent Over-Engineering Ratio 0.3/100 · LOW

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

PR Review Velocity Impact 10.7/100 · LOW

Which changes need focused human review? 199 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 10LOW 189

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 199 distinct pattern matches across 10 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 Block112 hits · 112 pts
SeverityFileLineSnippetContext
LOWinstall/hst-install.sh1#!/bin/bashCOMMENT
LOWinstall/hst-install-debian.sh1#!/bin/bashCOMMENT
LOWinstall/hst-install-ubuntu.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.8.8.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.10.0.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.0.4.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.9.9.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.4.16.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.10.4.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.6.12.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.8.11.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.9.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.4.9.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.4.17.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.10.5.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.6.13.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.8.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.8.9.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.4.13.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.10.1.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.2.3.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.0.5.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.3.2.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.9.8.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.7.1.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.8.2.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.7.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.9.3.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.6.0.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.8.6.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.7.5.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.6.4.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.3.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.7.4.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.9.6.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.6.5.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.2.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.8.3.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.7.0.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.6.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.6.1.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.9.2.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.10.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.7.7.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.9.5.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.6.6.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.1.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.8.0.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.7.3.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.5.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.6.2.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.9.1.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.7.2.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.8.1.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.4.5.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.4.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.9.0.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.6.3.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.5.11.sh1#!/bin/bashCOMMENT
LOWinstall/upgrade/versions/1.4.1.sh1#!/bin/bashCOMMENT
52 more matches not shown…
Redundant / Tautological Comments58 hits · 91 pts
SeverityFileLineSnippetContext
LOWinstall/hst-install.sh46 # Check if lsb_release is installedCOMMENT
LOWinstall/hst-install-debian.sh486# Check if apparmor is installedCOMMENT
LOWinstall/hst-install-debian.sh932# Check if package installation is done, print a spinnerCOMMENT
LOWinstall/hst-install-debian.sh1144# Check if package installation is done, print a spinnerCOMMENT
LOWinstall/hst-install-debian.sh2457 # Check if package installation is done, print a spinnerCOMMENT
LOWinstall/hst-install-ubuntu.sh904# Check if package installation is done, print a spinnerCOMMENT
LOWinstall/hst-install-ubuntu.sh1138# Check if package installation is done, print a spinnerCOMMENT
LOWinstall/hst-install-ubuntu.sh2510 # Check if package installation is done, print a spinnerCOMMENT
LOWinstall/upgrade/versions/1.3.3.sh9# Check if keys folder exists and adjust permissionsCOMMENT
LOWinstall/upgrade/versions/1.4.13.sh19# Check if hostname is valid according to RFC1178COMMENT
LOWinstall/upgrade/versions/1.9.3.sh39# Check if file existsCOMMENT
LOWinstall/upgrade/versions/1.9.3.sh43 # Check if not duplicateCOMMENT
LOWinstall/upgrade/versions/1.9.6.sh24# Set UPGRADE_REBUILD_USERS to true to fix the bug that removes ssl conf for webmailCOMMENT
LOWinstall/upgrade/versions/1.00.0-190618.sh180# Set Purge to false in Roundcube configuration - https://goo.gl/3Nja3uCOMMENT
LOWinstall/upgrade/versions/1.4.0.sh27 # Check if we've already done this upgrade before proceedingCOMMENT
LOW⚡install/upgrade/versions/1.9.0.sh30# Check if hestiaweb existsCOMMENT
LOW⚡install/upgrade/versions/1.9.0.sh44# Check if cronjobs have been migratedCOMMENT
LOW⚡install/upgrade/manual/migrate_mpm_event.sh12# Check if apache2 is in useCOMMENT
LOW⚡install/upgrade/manual/migrate_mpm_event.sh17# Check if PHP-FPM is instaledCOMMENT
LOW⚡install/upgrade/manual/migrate_mpm_event.sh22# Check if mod_event is already enabledCOMMENT
LOWinstall/upgrade/manual/migrate_mpm_event.sh47# Check if all went wellCOMMENT
LOWinstall/upgrade/manual/migrate_apache.sh54 # Check if user is suspendedCOMMENT
LOWinstall/upgrade/manual/migrate_apache.sh62 # Check if web domain is suspendedCOMMENT
LOWinstall/upgrade/manual/migrate_multiphp.sh65 # Check if user is suspendedCOMMENT
LOWinstall/upgrade/manual/migrate_multiphp.sh73 # Check if web domain is suspendedCOMMENT
LOW…es/web/nginx/php-fpm/wordpress-disable-xmlrpc-http3.sh13# Check if any file under /etc/nginx/conf.d/domains/ contains a lineCOMMENT
LOW…mplates/web/nginx/php-fpm/wordpress_mu_subdir-http3.sh13# Check if any file under /etc/nginx/conf.d/domains/ contains a lineCOMMENT
LOW…all/deb/templates/web/nginx/php-fpm/wordpress-http3.sh13# Check if any file under /etc/nginx/conf.d/domains/ contains a lineCOMMENT
LOWweb/edit/web/index.php35# Check if domain exists if not return /list/web/COMMENT
LOWweb/api/index.php296 # Check if API access is enabled for nonadmin usersCOMMENT
LOWsrc/chroot_build_all.sh417# Set packages to compileCOMMENT
LOWsrc/hst_autocompile.sh243# Set packages to compileCOMMENT
LOWsrc/hst_autocompile.sh516 # Check if target directory existCOMMENT
LOWsrc/hst_autocompile.sh645 # Check if target directory existCOMMENT
LOWsrc/hst_autocompile.sh758 # Check if target directory existCOMMENT
LOWsrc/hst_autocompile.sh835 # Check if target directory existCOMMENT
LOWfunc/ip.sh20# Check if ip address is freeCOMMENT
LOWfunc/main.sh398# Check if object is newCOMMENT
LOWfunc/main.sh412# Check if object is validCOMMENT
LOWfunc/main.sh435# Check if a object string with key values pairs has the correct format and load it afterwardsCOMMENT
LOWfunc/main.sh468# Check if a object string with key values pairs has the correct format and load it afterwardsCOMMENT
LOWfunc/main.sh634# Check if object is supendedCOMMENT
LOWfunc/main.sh646# Check if object is unsupendedCOMMENT
LOWfunc/main.sh658# Check if object value is emptyCOMMENT
LOWfunc/main.sh669# Check if object value is emptyCOMMENT
LOWfunc/main.sh680# Check if password is transmitted via fileCOMMENT
LOWfunc/main.sh691# Check if hash is transmitted via fileCOMMENT
LOWfunc/main.sh702# Check if directory is a symlinkCOMMENT
LOWfunc/main.sh2044 # Check if the system php also has php-fpm enabled, otherwise returnCOMMENT
LOWfunc/db.sh429# Check if database host do not exist in configCOMMENT
LOWfunc/db.sh594# Check if database server is in useCOMMENT
LOWfunc/domain.sh116 # Check if multiple-PHP installedCOMMENT
LOWfunc/domain.sh247 # Check if folder already existsCOMMENT
LOWfunc/domain.sh684# Check if this is a last recordCOMMENT
LOWfunc/domain.sh698# Check if dns record is validCOMMENT
LOWfunc/domain.sh835 # Check if using custom / wildcard mail certificateCOMMENT
LOWfunc/remote.sh9# Check if script already running or notCOMMENT
LOWfunc/upgrade.sh617 # Check if MariaDB/MySQL is installed on the server before attempting to install or upgrade phpMyAdminCOMMENT
Self-Referential Comments10 hits · 32 pts
SeverityFileLineSnippetContext
MEDIUMinstall/hst-install-debian.sh183# Define the default backend portCOMMENT
MEDIUMinstall/hst-install-debian.sh1206# Create the new hestiaweb userCOMMENT
MEDIUMinstall/hst-install-ubuntu.sh184# Define the default backend portCOMMENT
MEDIUMinstall/hst-install-ubuntu.sh1200# Create the new hestiaweb userCOMMENT
MEDIUM⚡install/upgrade/versions/1.9.0.sh34 # Create the new hestiaweb userCOMMENT
MEDIUMinstall/upgrade/manual/migrate_phpmyadmin.sh34 # Create an backup of current configCOMMENT
MEDIUMinstall/upgrade/manual/configure-server-smtp.sh8# This function provides an user-interactive configuration of a SMTP accountCOMMENT
MEDIUMsrc/hst_autocompile.sh388# Define a timestamp functionCOMMENT
MEDIUMsrc/hst_autocompile.sh561 # Create the files and install themCOMMENT
MEDIUMsrc/hst_autocompile.sh675 # Create the files and install themCOMMENT
Structural Annotation Overuse5 hits · 8 pts
SeverityFileLineSnippetContext
LOWREADME.md62### Step 1: Log inCOMMENT
LOWREADME.md70### Step 2: DownloadCOMMENT
LOWREADME.md84### Step 3: RunCOMMENT
LOWdocs/docs/introduction/getting-started.md41### Step 1: DownloadCOMMENT
LOWdocs/docs/introduction/getting-started.md55### Step 2: RunCOMMENT
Hyper-Verbose Identifiers5 hits · 5 pts
SeverityFileLineSnippetContext
LOWweb/js/src/ftpAccounts.js24function handlePasswordInputChange() {CODE
LOWweb/js/src/ftpAccounts.js33function handleGeneratePasswordClick() {CODE
LOWweb/js/src/ftpAccounts.js110function handleToggleFtpAccountsCheckbox() {CODE
LOWweb/js/src/passwordInput.js27function recalculatePasswordStrength(input) {CODE
LOWweb/list/notifications/index.php5function formatNotificationTimestamps(&$note) {CODE
AI Slop Vocabulary2 hits · 3 pts
SeverityFileLineSnippetContext
LOWinstall/hst-install-debian.sh1234 # If first attempt fails just add itCOMMENT
LOWinstall/hst-install-ubuntu.sh1228 # If first attempt fails just add itCOMMENT
Verbosity Indicators2 hits · 3 pts
SeverityFileLineSnippetContext
LOWweb/inc/main.php181//accessing main.php via CLI doesn't set $_SESSION["userContext"], so we need to check if it's set before including poliCOMMENT
LOWfunc/ip.sh72# New method that is improved on a later date we need to check if we can improve it for other locationsCOMMENT
Slop Phrases2 hits · 2 pts
SeverityFileLineSnippetContext
LOWinstall/upgrade/versions/1.6.0.sh75# Changes have been made make sure to overwrite them to prevent issues in the futureCOMMENT
LOWinstall/deb/phpmyadmin/create_tables.sql12-- Please don't forget to set up the tablenames in config.inc.phpCODE
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWweb/templates/pages/setup_webapp.php51 $field_placeholder = !empty($form_control["placeholder"]) ? $form_control["placeholder"] : "";CODE
LOWweb/src/app/WebApp/AppWizard.php89 'placeholder' => 'auto',CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/chroot_build_all.sh12# Usage:COMMENT