AI Slop Code Risk Monitor

MCSManager/MCSManager

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

Quick deployment, distributed, multi-user, modern management panel for Minecraft and Steam game servers / 快速安装,分布式架构,多用户,现代化的 Minecraft 和 Steam 游戏服务器管理面板

0.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for MCSManager/MCSManager, a TypeScript project with 5,007 GitHub stars. SynthScan examined 189,732 lines of code across 675 source files, recording 97 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 0.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.

0.7
Adjusted Signal
0.7
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
5.0K
Stars
TypeScript
Language
189.7K
Lines of Code
675
Files
97
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 3.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

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

Agent Over-Engineering Ratio 0.8/100 · LOW

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

PR Review Velocity Impact 2.9/100 · LOW

Which changes need focused human review? 97 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 1MEDIUM 5LOW 91

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 97 distinct pattern matches across 6 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.

Structural Annotation Overuse23 hits · 50 pts
SeverityFileLineSnippetContext
LOWREADME_KO.md119# Step 1: 설치 디렉토리로 이동 (존재하지 않는 경우 생성)COMMENT
LOW⚡README_KO.md130# Step 3: MCSManager 설치 디렉토리 준비COMMENT
LOW⚡README_KO.md134# Step 4: 최신 MCSManager 릴리스 다운로드COMMENT
LOW⚡README_KO.md138# Step 5: 의존성 설치COMMENT
LOW⚡README_KO.md142# Step 6: 두 개의 터미널 창을 열거나 screen/tmux 사용COMMENT
LOW⚡README_KO.md167# Step 1: Node.js 설치 (이미 설치된 경우 건너뜀)COMMENT
LOW⚡README_KO.md173# Step 2: curl을 사용하여 최신 릴리스 다운로드COMMENT
LOW⚡README_KO.md176# Step 3: 다운로드한 아카이브 압축 해제COMMENT
LOW⚡README_KO.md179# Step 4: 압축이 해제된 디렉토리로 이동COMMENT
LOW⚡README_KO.md182# Step 5: 설치 프로그램에 실행 권한을 부여하고 실행COMMENT
LOW⚡README_KO.md186# Step 6: 두 개의 터미널 창을 열거나 screen/tmux를 사용하여 서비스를 병렬로 실행COMMENT
LOWREADME.md119# Step 1: Navigate to the installation directory (create it if it doesn't exist)COMMENT
LOW⚡README.md130# Step 3: Prepare the MCSManager installation directoryCOMMENT
LOW⚡README.md134# Step 4: Download the latest MCSManager releaseCOMMENT
LOW⚡README.md138# Step 5: Install dependenciesCOMMENT
LOW⚡README.md142# Step 6: Open two terminal windows or use screen/tmuxCOMMENT
LOW⚡README.md150# Step 7: Access the panel in your browserCOMMENT
LOW⚡README.md168# Step 1: Install Node.js (skip if already installed)COMMENT
LOW⚡README.md174# Step 2: Download the latest release using curlCOMMENT
LOW⚡README.md177# Step 3: Extract the downloaded archiveCOMMENT
LOW⚡README.md180# Step 4: Enter the extracted directoryCOMMENT
LOW⚡README.md183# Step 5: Make the installer executable and run itCOMMENT
LOW⚡README.md187# Step 6: Open two terminal windows or use screen/tmux to run services in parallelCOMMENT
Over-Commented Block36 hits · 36 pts
SeverityFileLineSnippetContext
LOWpanel/src/app/entity/setting.ts21 reverseProxyHeader: string = "X-Real-IP";COMMENT
LOWpanel/src/app/service/upgrade_service.ts1// Panel (web) self-update service.COMMENT
LOWpanel/src/app/service/proxy_addr.ts1import { URL } from "node:url";COMMENT
LOWpanel/src/app/service/terminal_bridge.ts21// Wire protocol (matches the daemon's stream_router + instance_event_routerCOMMENT
LOWpanel/src/app/service/gateway_token.ts1import crypto from "crypto";COMMENT
LOW…/test/integration/suites/security_sso_redirect.test.ts1import { describe, it, expect, beforeAll, afterAll } from "vitest";COMMENT
LOW…/test/integration/suites/security_sso_redirect.test.ts21// panel's `redirect_uri` with `?code=...&state=...`COMMENT
LOW…/test/integration/suites/security_sso_redirect.test.ts41// X-Forwarded-Proto / X-Forwarded-Host / Host (no allowlist)COMMENT
LOW…/test/integration/suites/security_sso_redirect.test.ts61// #2 I1(c) forged header, proxy OFF ....... header ignored (RED-able)COMMENT
LOWcommon/test/integration/suites/user.test.ts21// Coverage matrix (see task-6-brief):COMMENT
LOWcommon/test/integration/suites/auth.test.ts1import { describe, it, expect } from "vitest";COMMENT
LOWcommon/test/integration/suites/auth.test.ts221 world.instance.uuid = r.data.instanceUuid;COMMENT
LOWcommon/test/integration/suites/files.test.ts21 downloadFromDaemon,COMMENT
LOWcommon/test/integration/suites/files.test.ts41// mkdir → upload → list paginated · CRUD round-trip (UTF-8 "中文") · zip/decompressCOMMENT
LOWcommon/test/integration/suites/instance.test.ts21// body — NO ~52MB jar download; fast + deterministic), uploads the test.mjsCOMMENT
LOWcommon/test/integration/suites/instance.test.ts501 world.instance.uuid = undefined;COMMENT
LOWcommon/test/integration/suites/streams.test.ts21} from "../lib";COMMENT
LOWcommon/test/integration/suites/streams.test.ts41//COMMENT
LOW…mmon/test/integration/suites/security_instance.test.ts21 di,COMMENT
LOWcommon/test/integration/suites/docker.test.ts21//COMMENT
LOWcommon/test/integration/suites/proxy_advanced.test.ts21 sleep,COMMENT
LOWcommon/test/integration/suites/security_files.test.ts21 di,COMMENT
LOWcommon/test/integration/suites/security_files.test.ts41// GatewayToken instead, so those premises do not hold. Proxy-mode data-planeCOMMENT
LOWcommon/test/integration/suites/security_auth.test.ts21} from "../lib";COMMENT
LOWcommon/test/integration/suites/dataplane.test.ts21 saveState,COMMENT
LOWcommon/test/integration/suites/dataplane.test.ts41// browser connects directly to the daemon.COMMENT
LOWcommon/test/integration/suites/security_user.test.ts21// REAL daemon + panel per invocation. Self-contained: the first `it` ensuresCOMMENT
LOWcommon/test/integration/lib/settings.ts1import { requestPanel } from "./http";COMMENT
LOWcommon/test/integration/lib/security.ts1import { expect } from "vitest";COMMENT
LOWcommon/src/mcping.ts101 let status = await this.getStatus();COMMENT
LOWcommon/src/mcping.ts121// "Heap Used:",COMMENT
LOWdaemon/src/tools/system_user.ts61 gid = result.gid;COMMENT
LOWdaemon/src/service/upgrade_service.ts1// Daemon self-update service.COMMENT
LOWdaemon/src/service/__test__/pentest_security.test.ts41COMMENT
LOWdaemon/src/service/__test__/pentest_security.test.ts261// s2 → "s1/.." (lexically folds to "." — looks safe)COMMENT
LOW.github/workflows/codeql.yml1# For most projects, this workflow file will not need changing; you simply needCOMMENT
Hyper-Verbose Identifiers32 hits · 32 pts
SeverityFileLineSnippetContext
LOWpanel/src/app/middleware/limit.ts39export function requestConcurrencyLimiter(url: string) {CODE
LOWpanel/src/app/utils/integration_test_mode.ts32export function parseUnsafeIntegrationTestModeArg(argv: readonly string[] = process.argv): void {CODE
LOWpanel/src/app/utils/integration_test_mode.ts46export function getUnsafeIntegrationTestModeKey(): string | null {CODE
LOWpanel/src/app/utils/integration_test_mode.ts54export function isUnsafeIntegrationTestRequest(apiKey: unknown): boolean {CODE
LOWpanel/src/app/service/operation_logger.ts40export function getOperationLoggerOperator(ctx: Koa.ParameterizedContext) {CODE
LOWpanel/src/app/service/frontend_layout.ts43export function resetFrontendLayoutConfig() {CODE
LOWpanel/src/app/service/frontend_layout.ts62function getDefaultFrontendLayoutConfig(): IPageLayoutConfig[] {CODE
LOWpanel/src/app/service/instance_service.ts150export function checkInstanceAdvancedParams(CODE
LOWfrontend/src/lang/i18n.ts184export function resolveWithEnglishFallback(translate: TranslateFn, args: any[]): string {CODE
LOWfrontend/src/components/fc/index.ts172export async function useDockerCapabilityEditDialog(data: DockerCapabilityItem[] = []) {CODE
LOWfrontend/src/components/fc/index.ts183export async function useDockerDeviceEditDialog(data: DockerDeviceItem[] = []) {CODE
LOWfrontend/src/components/fc/index.ts247export async function openDockerVersionSelectDialog() {CODE
LOWfrontend/src/components/fc/index.ts265export async function openInstanceReinstallDialog(CODE
LOWfrontend/src/hooks/useTerminalTouch.ts99export function attachTerminalTouchControls({CODE
LOWfrontend/src/hooks/terminalHistoryReplayGate.ts12export function createTerminalHistoryReplayGate() {CODE
LOWfrontend/src/hooks/useOverviewChart.ts146function getSimpleChartDefaultOption() {CODE
LOWcommon/src/upgrade.ts42export function migrateLegacyUpdateSourceUrl(current?: string): string {CODE
LOWcommon/src/docker_utils.ts6export function normalizeDockerArchitecture(architecture: string | undefined): string {CODE
LOWcommon/src/process_tools.ts181function readLinuxChildrenFromProc(pid: number): number[] | null {CODE
LOWdaemon/src/tools/docker_workspace_path.ts3export function resolveDockerWorkspacePath(CODE
LOWdaemon/src/tools/file_ownership.ts29export async function resolveInstanceFileOwnership(CODE
LOWdaemon/src/tools/file_ownership.ts57export async function syncPathOwnershipWithinRoot(CODE
LOWdaemon/src/tools/file_ownership.ts97export async function syncInstancePathOwnership(CODE
LOWdaemon/src/entity/instance/process_config.ts106function convertPropertiesWriteValues(obj: any): any {CODE
LOWdaemon/src/middlewares/precheck.ts18export async function uploadFileCheckMiddleware(ctx: Context, next: () => Promise<void>) {CODE
LOWdaemon/src/middlewares/precheck.ts48export async function uploadSpeedLimitMiddleware(ctx: Context, next: () => Promise<void>) {CODE
LOWdaemon/src/service/docker_process_service.ts50function isDockerNameConflictError(error: any): boolean {CODE
LOWdaemon/src/service/docker_process_service.ts76async function waitForContainerNameRelease(CODE
LOWdaemon/src/service/docker_process_service.ts93async function createContainerWithNameRetry(CODE
LOWdaemon/src/service/docker_service.ts20function resolveDockerOptionsFromEnv(): Docker.DockerOptions {CODE
LOWdaemon/src/service/docker_service.ts31function parseDockerHostToDockerOptions(dockerHost: string): Docker.DockerOptions | undefined {CODE
LOW…vice/async_task_service/__test__/quick_install.test.ts69async function expectSanitizedDownloadFailure(CODE
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMpanel/src/app/service/mod_manager_service.ts294 // But that's risky. Let's stick to the current logic but ensure it's robust.COMMENT
MEDIUM…ntend/src/widgets/instance/mod-manager/useModUpload.ts27 // Better: check if file has size or use a more robust check if availableCOMMENT
MEDIUMcommon/test/integration/suites/instance.test.ts649 // (output may carry terminal control bytes — assert substring, robust).COMMENT
MEDIUMcommon/test/integration/suites/instance.test.ts737 // robust contract; the streams suite covers exact-line broadcast.COMMENT
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHdaemon/src/entity/instance/instance.ts457 print(data: any) {CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMopenspec/changes/market-dialog-navigation/design.md35### 2. Keep market flow orchestration in the market dialogCOMMENT