Repository Analysis

PatchMon/PatchMon

Linux Patch Management & Automation Platform

3.9 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of PatchMon/PatchMon, a Go project with 3,230 GitHub stars. SynthScan v2.0 examined 217,976 lines of code across 627 source files, recording 431 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 3.9 places this repository in the Likely human-written band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

3.9
Adjusted Score
3.9
Raw Score
100%
Time Factor
2026-08-08
Last Push
3.2K
Stars
Go
Language
218.0K
Lines of Code
627
Files
431
Pattern Hits
2026-08-09
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 3MEDIUM 124LOW 304

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 431 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Decorative Section Separators114 hits · 392 pts
SeverityFileLineSnippetContext
MEDIUMsetup.sh2# =============================================================================COMMENT
MEDIUMsetup.sh4# =============================================================================COMMENT
MEDIUMsetup.sh8# =============================================================================COMMENT
MEDIUMsetup-docker.sh18# =============================================================================COMMENT
MEDIUMsetup-docker.sh22# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh24# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh30# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh32# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh40# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh42# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh55# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh57# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh62# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh64# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh144# =============================================================================COMMENT
MEDIUMsetup-docker.sh146# =============================================================================COMMENT
MEDIUMsetup-docker.sh152# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh154# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh171# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh173# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh184# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh186# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh263# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh265# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh277# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh279# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh288# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh290# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh299# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh301# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh314# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh316# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh325# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh327# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh355# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh357# -----------------------------------------------------------------------------COMMENT
MEDIUMsetup-docker.sh2# =============================================================================COMMENT
MEDIUMsetup-docker.sh4# =============================================================================COMMENT
MEDIUMsetup-docker.sh79# =============================================================================COMMENT
MEDIUMsetup-docker.sh81# =============================================================================COMMENT
MEDIUMtools/migrate1-4-2_to_2-0-0.sh16# ── 1. Back up existing files ─────────────────────────────────────────────────COMMENT
MEDIUMtools/migrate1-4-2_to_2-0-0.sh38# ── 2. Download new 2.0.0 files ───────────────────────────────────────────────COMMENT
MEDIUMtools/migrate1-4-2_to_2-0-0.sh54# ── 3. Extract inline values from the old docker-compose.yml ──────────────────COMMENT
MEDIUMtools/migrate1-4-2_to_2-0-0.sh90# ── 4. Carry forward values into the new .env ─────────────────────────────────COMMENT
MEDIUMtools/migrate1-4-2_to_2-0-0.sh104# ── CORS_ORIGINS → CORS_ORIGIN merge ──────────────────────────────────────────COMMENT
MEDIUMtools/migrate1-4-2_to_2-0-0.sh268# ── 6. Done ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/diagnostics.sh279 # ========================================COMMENT
MEDIUMtools/diagnostics.sh281 # ========================================COMMENT
MEDIUMtools/diagnostics.sh290 # ========================================COMMENT
MEDIUMtools/diagnostics.sh292 # ========================================COMMENT
MEDIUMtools/diagnostics.sh589 # ========================================COMMENT
MEDIUMtools/diagnostics.sh591 # ========================================COMMENT
MEDIUMtools/diagnostics.sh597 # ========================================COMMENT
MEDIUMtools/diagnostics.sh599 # ========================================COMMENT
MEDIUMtools/diagnostics.sh191 # ========================================COMMENT
MEDIUMtools/diagnostics.sh193 # ========================================COMMENT
MEDIUMtools/diagnostics.sh217 # ========================================COMMENT
MEDIUMtools/diagnostics.sh219 # ========================================COMMENT
MEDIUMtools/diagnostics.sh241 # ========================================COMMENT
MEDIUMtools/diagnostics.sh243 # ========================================COMMENT
54 more matches not shown…
Structural Annotation Overuse98 hits · 146 pts
SeverityFileLineSnippetContext
LOWsetup-docker.sh153# Step 1: Check if PatchMon is already installedCOMMENT
LOWsetup-docker.sh172# Step 2: Detect OSCOMMENT
LOWsetup-docker.sh185# Step 3: Check / Install Docker EngineCOMMENT
LOWsetup-docker.sh264# Step 4: Check Docker ComposeCOMMENT
LOWsetup-docker.sh278# Step 5: Create PatchMon directoryCOMMENT
LOWsetup-docker.sh289# Step 6: Download compose file and env templateCOMMENT
LOWsetup-docker.sh300# Step 7: Run the env setup script (generates secrets, configures URL)COMMENT
LOWsetup-docker.sh315# Step 8: Pull imagesCOMMENT
LOWsetup-docker.sh326# Step 9: Start PatchMonCOMMENT
LOWsetup-docker.sh356# Step 10: SummaryCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go688 // Step 1: Detect OSCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go707 // Step 2: Install OpenSCAP packagesCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go746 // Step 3: Verify installation and SSG contentCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go808 // Step 4: Docker Bench (if docker enabled)COMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go848 // Step 5: CompleteCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go2564 // Step 1: WUA - install approved OS/KB updatesCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go2585 // Step 2: WinGet - upgrade all applicationsCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go2595 // Step 3: report reboot statusCOMMENT
LOWagents/patchmon_remove.sh74# Step 1: Stop systemd/OpenRC service if it existsCOMMENT
LOWagents/patchmon_remove.sh222# Step 2: Remove crontab entriesCOMMENT
LOWagents/patchmon_remove.sh232# Step 3: Remove agent binaries and scriptsCOMMENT
LOWagents/patchmon_remove.sh270# Step 4: Remove configuration directory and filesCOMMENT
LOWagents/patchmon_remove.sh290# Step 5: Remove log filesCOMMENT
LOWagents/patchmon_remove.sh300# Step 6: Clean up backup filesCOMMENT
LOWagents/patchmon_remove.sh398# Step 7: Final verificationCOMMENT
LOWagents/patchmon_install.sh497# Step 1: Handle existing configuration directoryCOMMENT
LOWagents/patchmon_install.sh546# Step 2: Create configuration filesCOMMENT
LOWagents/patchmon_install.sh614# Step 3: Download the PatchMon agent binary using API credentialsCOMMENT
LOWagents/patchmon_install.sh670# Step 4: Test the configurationCOMMENT
LOWagents/patchmon_install.sh678# Step 5: Setup service for WebSocket connectionCOMMENT
LOWdocs/patchmon-admin-guide.md439### Step 1: Choose OSCOMMENT
LOWdocs/patchmon-admin-guide.md451### Step 2: Host DetailsCOMMENT
LOWdocs/patchmon-admin-guide.md478### Step 3: Copy the Install CommandCOMMENT
LOWdocs/patchmon-admin-guide.md512### Step 4: Waiting for ConnectionCOMMENT
LOWdocs/patchmon-api-integrations-guide.md63### Step 1: Find your callback URLCOMMENT
LOWdocs/patchmon-api-integrations-guide.md73### Step 2: Create a Discord applicationCOMMENT
LOWdocs/patchmon-api-integrations-guide.md90### Step 3: Configure PatchMonCOMMENT
LOWdocs/patchmon-api-integrations-guide.md102### Step 4: TestCOMMENT
LOWdocs/patchmon-api-integrations-guide.md173### Step 1: Create a Discord incoming webhookCOMMENT
LOWdocs/patchmon-api-integrations-guide.md186### Step 2: Add the webhook to PatchMonCOMMENT
LOWdocs/patchmon-api-integrations-guide.md200### Step 3: Route alerts to the destinationCOMMENT
LOWdocs/patchmon-api-integrations-guide.md371#### Step 1: Create a GetHomepage API keyCOMMENT
LOWdocs/patchmon-api-integrations-guide.md382#### Step 2: Copy the credentialsCOMMENT
LOWdocs/patchmon-api-integrations-guide.md393#### Step 3: Configure GetHomepageCOMMENT
LOWdocs/patchmon-api-integrations-guide.md656#### Step 1: Find out your top 3 operating systemsCOMMENT
LOWdocs/patchmon-api-integrations-guide.md677#### Step 2: Add the counts to the widget, using the names as labelsCOMMENT
LOWdocs/patchmon-api-integrations-guide.md691#### Step 3: Restart GetHomepageCOMMENT
LOWdocs/patchmon-api-integrations-guide.md837# Step 1: encodeCOMMENT
LOWdocs/patchmon-api-integrations-guide.md840# Step 2: testCOMMENT
LOWdocs/patchmon-api-integrations-guide.md1417#### Step 1: Create Auto-Enrollment TokenCOMMENT
LOWdocs/patchmon-api-integrations-guide.md1454#### Step 2: Prepare Proxmox HostCOMMENT
LOWdocs/patchmon-api-integrations-guide.md1499#### Step 3: Test with Dry RunCOMMENT
LOWdocs/patchmon-api-integrations-guide.md1519#### Step 4: Run Actual EnrollmentCOMMENT
LOWdocs/patchmon-api-integrations-guide.md1531#### Step 5: Verify in PatchMonCOMMENT
LOWdocs/patchmon-operator-guide.md3824# Step 1: Check service statusCOMMENT
LOWdocs/patchmon-operator-guide.md3827# Step 2: Check recent logs for errorsCOMMENT
LOWdocs/patchmon-operator-guide.md3832# Step 3: Run diagnostics for full pictureCOMMENT
LOWdocs/patchmon-operator-guide.md3835# Step 4: Test connectivity explicitlyCOMMENT
LOWdocs/patchmon-operator-guide.md3838# Step 5: If needed, restart with debug logging temporarilyCOMMENT
LOWdocs/patchmon-operator-guide.md1308### Step 1: Create Admin AccountCOMMENT
38 more matches not shown…
Over-Commented Block112 hits · 110 pts
SeverityFileLineSnippetContext
LOWsetup-docker.sh1#!/bin/bashCOMMENT
LOWdocker/setup-env.sh1#!/usr/bin/env bashCOMMENT
LOWdocker/build.sh1#!/usr/bin/env bashCOMMENT
LOWdocker/docker-compose.yml1# =============================================================================COMMENT
LOWfrontend/src/utils/hostStatus.js1// Reporting-state derivation shared by the Hosts table, the Reporting filterCOMMENT
LOWfrontend/src/components/PatchWizard.jsx141 isPatchAll || isApprove || lockPackages || (packageNames?.length || 0) <= 1;COMMENT
LOWfrontend/src/components/PatchWizard.jsx161 // Build the list of enabled steps from props. We use string IDs so theCOMMENT
LOWfrontend/src/components/HostStatusPills.jsx161 tooltip={tooltip}COMMENT
LOWfrontend/src/pages/Billing.jsx741 </button>COMMENT
LOWfrontend/src/pages/Login.jsx141 fetchOidcConfig();COMMENT
LOW…rce-code/cmd/patchmon-agent/commands/version_update.go841 if err := os.MkdirAll("/etc/patchmon", 0700); err != nil {COMMENT
LOW…rce-code/cmd/patchmon-agent/commands/version_update.go941 // os.Exit never returns, but we need this for code flowCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go301 case <-effectiveStopCh:COMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/report.go541}COMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/report.go561}COMMENT
LOWagent-source-code/internal/config/config.go441 return writeConfigAtomically(configViper, m.configFile)COMMENT
LOWagent-source-code/internal/config/transient_windows.go1//go:build windowsCOMMENT
LOWagent-source-code/internal/utils/offset.go1// Package utils provides utility functions for common operationsCOMMENT
LOWagent-source-code/internal/textsan/textsan.go1// Package textsan normalises text collected from the host before the agentCOMMENT
LOWagent-source-code/internal/system/reboot.go281// hasVersionCore reports whether a release string carries a numeric version atCOMMENT
LOW…rce-code/internal/packages/windows_integration_test.go21// customer's machine. These tests are the only thing that executes thoseCOMMENT
LOWagent-source-code/internal/packages/apt.go241 }COMMENT
LOWagent-source-code/internal/packages/apt.go381// Inst linux-generic [6.8.0-136.136] (6.8.0-137.137 Ubuntu:24.04/noble-updates [amd64]) []COMMENT
LOWagent-source-code/internal/packages/apt_test.go101 assert.Equal(t, len(tt.expected), len(result))COMMENT
LOWagent-source-code/internal/winexec/powershell.go1// Package winexec centralises how the agent shells out to Windows PowerShell.COMMENT
LOWagent-source-code/internal/pkgversion/version.go1// Package pkgversion provides version information for the agentCOMMENT
LOWagents/patchmon_remove.sh1#!/bin/shCOMMENT
LOWagents/direct_host_auto_enroll.sh1#!/bin/shCOMMENT
LOWagents/proxmox_auto_enroll.sh1#!/bin/bashCOMMENT
LOWdocs/patchmon-operator-guide.md4661COMMENT
LOWdocs/patchmon-operator-guide.md4681# This value is synced from the server on startup. If the server hasCOMMENT
LOWdocs/patchmon-operator-guide.md4701integrations:COMMENT
LOWdocs/patchmon-operator-guide.md4721 # SECURITY: This setting can ONLY be enabled by manually editingCOMMENT
LOW.github/workflows/docker.yml261 tags: ${{ steps.meta-harbor.outputs.tags }}COMMENT
LOW.github/actions/release-context/action.yml61 VERSION="${TAG#v}"COMMENT
LOWserver-source-code/cmd/server/startup_checks.go21// 100->150, 200->300.COMMENT
LOWserver-source-code/cmd/server/startup_checks.go81// This gives roughly 1.5 connections per active host, which covers concurrentCOMMENT
LOWserver-source-code/internal/handler/marketing.go61 return nilCOMMENT
LOWserver-source-code/internal/handler/billing.go1// Package handler - billing.go implements the two thin proxy endpoints that backCOMMENT
LOWserver-source-code/internal/handler/billing.go81// currentTenantID returns the context ("tenant") id from the multi-context registry.COMMENT
LOWserver-source-code/internal/handler/billing.go321// PostMyBillingTierChange returns the handler for POST /me/billing/tier-change.COMMENT
LOWserver-source-code/internal/handler/billing.go341// 3. The provisioner's JSON response (including the freshly-projectedCOMMENT
LOWserver-source-code/internal/handler/auth.go901// hidden rather than clicking through to a 403.COMMENT
LOWserver-source-code/internal/handler/patching_stream.go21}COMMENT
LOW…r-source-code/internal/handler/compliance_hash_test.go81// TestCanonicalComplianceHashFromPayload_CarriesRemediationFields is the directCOMMENT
LOWserver-source-code/internal/handler/dashboard.go101 return falseCOMMENT
LOWserver-source-code/internal/handler/agent_disconnect.go21COMMENT
LOWserver-source-code/internal/handler/integrations.go481 "install_events": payload.InstallEvents,COMMENT
LOWserver-source-code/internal/handler/hash_canonical.go1// Package handler — canonical content hashes for hash-gated check-in.COMMENT
LOWserver-source-code/internal/handler/install.go301 }COMMENT
LOWserver-source-code/internal/handler/install.go721 if len(payload.Sections) > 0 {COMMENT
LOWserver-source-code/internal/middleware/realip.go1package middlewareCOMMENT
LOW…rver-source-code/internal/middleware/ratelimit_test.go41}COMMENT
LOWserver-source-code/internal/database/retry.go21// isolation when the read/write set conflicts with a concurrent committedCOMMENT
LOWserver-source-code/internal/database/retry.go81func sqlStateOf(err error) string {COMMENT
LOWserver-source-code/internal/database/retry.go121 if attempt >= cfg.MaxAttempts {COMMENT
LOWserver-source-code/internal/context/middleware.go161//COMMENT
LOWserver-source-code/internal/config/config.go181COMMENT
LOWserver-source-code/internal/config/config.go281 MaxLoginAttempts: getEnvInt("MAX_LOGIN_ATTEMPTS", 5),COMMENT
LOWserver-source-code/internal/auth/oidc/client.go401 return ""COMMENT
52 more matches not shown…
Verbosity Indicators42 hits · 76 pts
SeverityFileLineSnippetContext
LOWsetup-docker.sh153# Step 1: Check if PatchMon is already installedCOMMENT
LOWsetup-docker.sh172# Step 2: Detect OSCOMMENT
LOWsetup-docker.sh185# Step 3: Check / Install Docker EngineCOMMENT
LOWsetup-docker.sh264# Step 4: Check Docker ComposeCOMMENT
LOWsetup-docker.sh278# Step 5: Create PatchMon directoryCOMMENT
LOWsetup-docker.sh289# Step 6: Download compose file and env templateCOMMENT
LOWsetup-docker.sh300# Step 7: Run the env setup script (generates secrets, configures URL)COMMENT
LOWsetup-docker.sh315# Step 8: Pull imagesCOMMENT
LOWsetup-docker.sh326# Step 9: Start PatchMonCOMMENT
LOWsetup-docker.sh356# Step 10: SummaryCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go688 // Step 1: Detect OSCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go707 // Step 2: Install OpenSCAP packagesCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go746 // Step 3: Verify installation and SSG contentCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go808 // Step 4: Docker Bench (if docker enabled)COMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go848 // Step 5: CompleteCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go2564 // Step 1: WUA - install approved OS/KB updatesCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go2585 // Step 2: WinGet - upgrade all applicationsCOMMENT
LOWagent-source-code/cmd/patchmon-agent/commands/serve.go2595 // Step 3: report reboot statusCOMMENT
LOWagents/patchmon_remove.sh74# Step 1: Stop systemd/OpenRC service if it existsCOMMENT
LOWagents/patchmon_remove.sh222# Step 2: Remove crontab entriesCOMMENT
LOWagents/patchmon_remove.sh232# Step 3: Remove agent binaries and scriptsCOMMENT
LOWagents/patchmon_remove.sh270# Step 4: Remove configuration directory and filesCOMMENT
LOWagents/patchmon_remove.sh290# Step 5: Remove log filesCOMMENT
LOWagents/patchmon_remove.sh300# Step 6: Clean up backup filesCOMMENT
LOWagents/patchmon_remove.sh398# Step 7: Final verificationCOMMENT
LOWagents/patchmon_install.sh497# Step 1: Handle existing configuration directoryCOMMENT
LOWagents/patchmon_install.sh546# Step 2: Create configuration filesCOMMENT
LOWagents/patchmon_install.sh614# Step 3: Download the PatchMon agent binary using API credentialsCOMMENT
LOWagents/patchmon_install.sh670# Step 4: Test the configurationCOMMENT
LOWagents/patchmon_install.sh678# Step 5: Setup service for WebSocket connectionCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh74# Step 1: Stop systemd/OpenRC service if it existsCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh222# Step 2: Remove crontab entriesCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh232# Step 3: Remove agent binaries and scriptsCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh270# Step 4: Remove configuration directory and filesCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh290# Step 5: Remove log filesCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh300# Step 6: Clean up backup filesCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh398# Step 7: Final verificationCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh497# Step 1: Handle existing configuration directoryCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh546# Step 2: Create configuration filesCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh614# Step 3: Download the PatchMon agent binary using API credentialsCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh670# Step 4: Test the configurationCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh678# Step 5: Setup service for WebSocket connectionCOMMENT
Redundant / Tautological Comments46 hits · 74 pts
SeverityFileLineSnippetContext
LOWtools/diagnostics.sh37# Check if running as rootCOMMENT
LOWtools/diagnostics.sh78 # Check if it's a PatchMon installationCOMMENT
LOWdocker/frontend.docker-entrypoint.sh22 # Check if file is different from default (user uploaded a custom one)COMMENT
LOWdocker/frontend.docker-entrypoint.sh45 # Set ownership to backend user (1000:1000) and permissions to 1777 (world-writable + sticky)COMMENT
LOWagents/patchmon_remove.sh23# Check if backup files should be removed (default: preserve for safety)COMMENT
LOWagents/patchmon_remove.sh66# Check if running as rootCOMMENT
LOWagents/patchmon_remove.sh82 # Check if service is activeCOMMENT
LOWagents/patchmon_remove.sh103 # Check if service is enabledCOMMENT
LOWagents/patchmon_remove.sh195 # Check if processes still existCOMMENT
LOWagents/direct_host_auto_enroll.sh77# Check if running as rootCOMMENT
LOWagents/patchmon_install.sh500# Check if configuration directory already existsCOMMENT
LOWagents/patchmon_install.sh549# Check if config file already existsCOMMENT
LOWagents/patchmon_install.sh620# Check if agent binary already existsCOMMENT
LOWagents/patchmon_install.sh38# Check if running as rootCOMMENT
LOWagents/patchmon_install.sh58 # Check if we can read from stdin (interactive terminal)COMMENT
LOWagents/patchmon_install.sh196# Check if --force flag is set (for bypassing broken packages)COMMENT
LOWagents/patchmon_install.sh515# Check if agent is already configured and working (before we overwrite anything)COMMENT
LOWagents/patchmon_install.sh562# Check if credentials file already existsCOMMENT
LOWagents/patchmon_install.sh732 # Check if service started successfullyCOMMENT
LOWagents/patchmon_install.sh794 # Check if service started successfullyCOMMENT
LOWagents/proxmox_auto_enroll.sh79# Check if running on ProxmoxCOMMENT
LOWagents/proxmox_auto_enroll.sh142 # Check if container is stoppedCOMMENT
LOWagents/proxmox_auto_enroll.sh200 # Check if agent is already installed and working BEFORE enrollmentCOMMENT
LOWagents/proxmox_auto_enroll.sh345 # Check if it's a dpkg errorCOMMENT
LOW.github/workflows/agent-release.yml148 # Check if binary is statically linked (should have minimal or no dynamic dependencies)COMMENT
LOW.github/workflows/agent-release.yml166 # Check if any version is > 2.28 (Debian Buster)COMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh23# Check if backup files should be removed (default: preserve for safety)COMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh66# Check if running as rootCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh82 # Check if service is activeCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh103 # Check if service is enabledCOMMENT
LOWserver-source-code/internal/agents/patchmon_remove.sh195 # Check if processes still existCOMMENT
LOW…source-code/internal/agents/direct_host_auto_enroll.sh77# Check if running as rootCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh500# Check if configuration directory already existsCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh549# Check if config file already existsCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh620# Check if agent binary already existsCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh38# Check if running as rootCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh58 # Check if we can read from stdin (interactive terminal)COMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh196# Check if --force flag is set (for bypassing broken packages)COMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh515# Check if agent is already configured and working (before we overwrite anything)COMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh562# Check if credentials file already existsCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh732 # Check if service started successfullyCOMMENT
LOWserver-source-code/internal/agents/patchmon_install.sh794 # Check if service started successfullyCOMMENT
LOW…ver-source-code/internal/agents/proxmox_auto_enroll.sh79# Check if running on ProxmoxCOMMENT
LOW…ver-source-code/internal/agents/proxmox_auto_enroll.sh142 # Check if container is stoppedCOMMENT
LOW…ver-source-code/internal/agents/proxmox_auto_enroll.sh200 # Check if agent is already installed and working BEFORE enrollmentCOMMENT
LOW…ver-source-code/internal/agents/proxmox_auto_enroll.sh345 # Check if it's a dpkg errorCOMMENT
Self-Referential Comments3 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMdocker/docker-compose.dev.yml4# This file contains hardcoded credentials for LOCAL DEVELOPMENT ONLY.COMMENT
MEDIUMagents/patchmon_install.sh582# Create main config fileCOMMENT
MEDIUMserver-source-code/internal/agents/patchmon_install.sh582# Create main config fileCOMMENT
Example Usage Blocks5 hits · 10 pts
SeverityFileLineSnippetContext
LOWdocker/build.sh12# Usage:COMMENT
LOWagents/direct_host_auto_enroll.sh16# Usage:COMMENT
LOWagents/proxmox_auto_enroll.sh16# Usage:COMMENT
LOW…source-code/internal/agents/direct_host_auto_enroll.sh16# Usage:COMMENT
LOW…ver-source-code/internal/agents/proxmox_auto_enroll.sh16# Usage:COMMENT
Magic Placeholder Names2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHfrontend/src/pages/settings/Integrations.jsx1494 {`echo -n "YOUR_API_KEY:YOUR_API_SECRET" | base64`}CODE
HIGHfrontend/src/pages/settings/Integrations.jsx1497 Replace YOUR_API_KEY and YOUR_API_SECRET with your actualCODE
Excessive Try-Catch Wrapping5 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMdocs/patchmon-api-integrations-guide.md4618 print(f"Error: {response.status_code} - {response.json()}")CODE
MEDIUMdocs/patchmon-api-integrations-guide.md4698 print(f"Error: {response.status_code} - {response.json()}")CODE
MEDIUMdocs/patchmon-api-integrations-guide.md4751 print(f"Error fetching hosts: {response.status_code}")CODE
MEDIUMdocs/patchmon-api-integrations-guide.md4855 print("Error: PATCHMON_API_KEY and PATCHMON_API_SECRET must be set", file=sys.stderr)CODE
MEDIUMdocs/patchmon-api-integrations-guide.md4865 print(f"Error fetching inventory: {e}", file=sys.stderr)CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHserver-source-code/internal/handler/rdp.go538 // these fields are intentionally named as requested values rather than theCOMMENT
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMfrontend/src/pages/hostdetail/WaitingForConnection.jsx11 // Check multiple fields to be more robust - if any of these are populated, we have a reportCOMMENT
MEDIUM…urce-code/internal/integrations/compliance/openscap.go1872 // Extract Rule elements using a more robust approach:COMMENT
Hyper-Verbose Identifiers1 hit · 0 pts
SeverityFileLineSnippetContext
LOWdocs/patchmon-api-integrations-guide.md4745def generate_ansible_inventory():CODE