AI Slop Code RIsk Monitor

pterodactyl/panel

Pterodactyl® is a free, open-source game server management panel built with PHP, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end users.

4.2 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for pterodactyl/panel, a PHP project with 9,311 GitHub stars. SynthScan examined 76,563 lines of code across 1134 source files, recording 321 pattern matches distributed across 5 syntactic categories. The legacy adjusted pattern signal is 4.2 (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.

4.2
Adjusted Signal
4.2
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
9.3K
Stars
PHP
Language
76.6K
Lines of Code
1.1K
Files
321
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 19.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 18.8/100 · LOW

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

PR Review Velocity Impact 19.0/100 · LOW

Which changes need focused human review? 321 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 1LOW 320

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 321 distinct pattern matches across 5 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 Identifiers314 hits · 316 pts
SeverityFileLineSnippetContext
LOWapp/Contracts/Repository/SubuserRepositoryInterface.php12 public function loadServerAndUserRelations(Subuser $subuser, bool $refresh = false): Subuser;CODE
LOWapp/Contracts/Repository/SubuserRepositoryInterface.php24 public function getWithPermissionsUsingUserAndServer(int $user, int $server): Subuser;CODE
LOWapp/Contracts/Repository/NodeRepositoryInterface.php26 public function loadLocationAndServerCount(Node $node, bool $refresh = false): Node;CODE
LOWapp/Contracts/Repository/NodeRepositoryInterface.php37 public function getNodesForServerCreation(): Collection;CODE
LOW…Contracts/Repository/AllocationRepositoryInterface.php13 public function getUnassignedAllocationIds(int $node): array;CODE
LOWapp/Repositories/Eloquent/AllocationRepository.php23 public function getUnassignedAllocationIds(int $node): arrayCODE
LOWapp/Repositories/Eloquent/AllocationRepository.php41 protected function getDiscardableDedicatedAllocations(array $nodes = []): arrayCODE
LOWapp/Repositories/Eloquent/NodeRepository.php78 public function loadLocationAndServerCount(Node $node, bool $refresh = false): NodeCODE
LOWapp/Repositories/Eloquent/NodeRepository.php117 public function getNodesForServerCreation(): CollectionCODE
LOWapp/Repositories/Eloquent/BackupRepository.php21 public function getBackupsGeneratedDuringTimespan(int $server, int $seconds = 600): array|CollectionCODE
LOWapp/Repositories/Eloquent/SubuserRepository.php22 public function loadServerAndUserRelations(Subuser $subuser, bool $refresh = false): SubuserCODE
LOWapp/Repositories/Eloquent/SubuserRepository.php56 public function getWithPermissionsUsingUserAndServer(int $user, int $server): SubuserCODE
LOWapp/Models/User.php211 public function sendPasswordResetNotification($token)CODE
LOWapp/Models/Egg.php159 public function getCopyScriptInstallAttribute(): ?stringCODE
LOWapp/Models/Egg.php172 public function getCopyScriptEntryAttribute(): stringCODE
LOWapp/Models/Egg.php185 public function getCopyScriptContainerAttribute(): stringCODE
LOWapp/Models/Egg.php197 public function getInheritConfigFilesAttribute(): ?stringCODE
LOWapp/Models/Egg.php209 public function getInheritConfigStartupAttribute(): ?stringCODE
LOWapp/Models/Egg.php221 public function getInheritConfigLogsAttribute(): ?stringCODE
LOWapp/Models/Egg.php233 public function getInheritConfigStopAttribute(): ?stringCODE
LOWapp/Models/Egg.php246 public function getInheritFeaturesAttribute(): ?arrayCODE
LOWapp/Models/Egg.php259 public function getInheritFileDenylistAttribute(): ?arrayCODE
LOWapp/Models/UserSSHKey.php76 public static function isSupportedPublicKeyMaterial(string $value): boolCODE
LOWapp/Models/Traits/HasRealtimeIdentifier.php58 protected static function bootHasRealtimeIdentifier(): voidCODE
LOWapp/Exceptions/Handler.php91 private function generateCleanedExceptionStack(\Throwable $exception): stringCODE
LOW…equests/Api/Client/Servers/Subusers/SubuserRequest.php52 protected function validatePermissionsCanBeAssigned(array $permissions)CODE
LOWapp/Http/Controllers/Auth/ForgotPasswordController.php19 protected function sendResetLinkFailedResponse(Request $request, $response): JsonResponseCODE
LOW…Controllers/Admin/Servers/ServerTransferController.php99 private function assignAllocationsToServer(Server $server, int $node_id, int $allocation_id, array $additional_allocCODE
LOWapp/Http/Controllers/Api/Client/ClientApiController.php14 protected function getIncludesForTransformer(BaseClientTransformer $transformer, array $merge = []): arrayCODE
LOWapp/Helpers/Utilities.php16 public static function randomStringWithSpecialCharacters(int $length = 16): stringCODE
LOWapp/Services/Databases/DatabaseManagementService.php47 public static function generateUniqueDatabaseName(string $name, int $serverId): stringCODE
LOWapp/Services/Eggs/EggConfigurationService.php39 protected function convertStartupToNewFormat(array $startup): arrayCODE
LOWapp/Services/Servers/StartupModificationService.php68 protected function updateAdministrativeSettings(array $data, Server &$server): voidCODE
LOW…/Console/Commands/Environment/EmailSettingsCommand.php110 private function setupMailgunDriverVariables()CODE
LOW…/Console/Commands/Environment/EmailSettingsCommand.php131 private function setupMandrillDriverVariables()CODE
LOW…/Console/Commands/Environment/EmailSettingsCommand.php142 private function setupPostmarkDriverVariables()CODE
LOW…Unit/Extensions/Laravel/Sanctum/NewAccessTokenTest.php17 public function testAccessTokenWrapperSupportsSanctumDtoContract()CODE
LOWtests/Unit/Http/Middleware/AdminAuthenticateTest.php14 public function testAdminsAreAuthenticated()CODE
LOWtests/Unit/Http/Middleware/AdminAuthenticateTest.php26 public function testExceptionIsThrownIfUserDoesNotExist()CODE
LOWtests/Unit/Http/Middleware/AdminAuthenticateTest.php38 public function testExceptionIsThrownIfUserIsNotAnAdmin()CODE
LOW…sts/Unit/Http/Middleware/MaintenanceMiddlewareTest.php44 public function testHandleInMaintenanceMode()CODE
LOW…s/Unit/Http/Middleware/RedirectIfAuthenticatedTest.php28 public function testAuthenticatedUserIsRedirected()CODE
LOW…s/Unit/Http/Middleware/RedirectIfAuthenticatedTest.php41 public function testNonAuthenticatedUserIsNotRedirected()CODE
LOWtests/Unit/Http/Middleware/LanguageMiddlewareTest.php28 public function testLanguageIsSetForGuest()CODE
LOWtests/Unit/Http/Middleware/LanguageMiddlewareTest.php39 public function testLanguageIsSetWithAuthenticatedUser()CODE
LOW…/Http/Middleware/Api/Daemon/DaemonAuthenticateTest.php38 public function testResponseShouldContinueIfRouteIsExempted()CODE
LOW…/Http/Middleware/Api/Daemon/DaemonAuthenticateTest.php49 public function testResponseShouldFailIfNoTokenIsProvided()CODE
LOW…/Http/Middleware/Api/Daemon/DaemonAuthenticateTest.php69 public function testResponseShouldFailIfTokenFormatIsIncorrect(string $token)CODE
LOW…/Http/Middleware/Api/Daemon/DaemonAuthenticateTest.php83 public function testResponseShouldFailIfTokenIsNotValid()CODE
LOW…/Http/Middleware/Api/Daemon/DaemonAuthenticateTest.php103 public function testResponseShouldFailIfNodeIsNotFound()CODE
LOW…/Http/Middleware/Api/Daemon/DaemonAuthenticateTest.php118 public function testSuccessfulMiddlewareProcess()CODE
LOWtests/Unit/Rules/UsernameTest.php39 public static function validUsernameDataProvider(): arrayCODE
LOWtests/Unit/Rules/UsernameTest.php55 public static function invalidUsernameDataProvider(): arrayCODE
LOWtests/Unit/Helpers/EnvironmentWriterTraitTest.php11 public function testVariableIsEscapedProperly($input, $expected)CODE
LOW…le/Commands/Environment/Addons/RunHooksCommandTest.php20 public function testHooksAreSkippedWhenDisabled(): voidCODE
LOW…le/Commands/Environment/Addons/RunHooksCommandTest.php31 public function testExecutableHooksRunForEvent(): voidCODE
LOW…le/Commands/Environment/Addons/RunHooksCommandTest.php44 public function testNonExecutableFilesAreIgnored(): voidCODE
LOW…le/Commands/Environment/Addons/RunHooksCommandTest.php57 public function testInvalidEventNameIsRejected(): voidCODE
LOW…le/Commands/Environment/Addons/RunHooksCommandTest.php69 public function testFailingHookDoesNotAbortRemainingHooks(): voidCODE
LOW…le/Commands/Environment/Addons/RunHooksCommandTest.php88 public function testDeclinedConfirmationSkipsHooks(): voidCODE
254 more matches not shown…
Decorative Section Separators1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMdocker-compose.example.yml28# ------------------------------------------------------------------------------------------COMMENT
Over-Commented Block3 hits · 3 pts
SeverityFileLineSnippetContext
LOWpublic/themes/pterodactyl/js/plugins/minecraft/eula.js1// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>COMMENT
LOWpublic/themes/pterodactyl/js/admin/new-server.js1// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>COMMENT
LOWpublic/themes/pterodactyl/js/admin/functions.js1// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>COMMENT
Slop Phrases2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…tabase/Seeders/eggs/minecraft/egg-forge-minecraft.json34 "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\CODE
LOWapp/Models/Server.php306 // Don't forget to join against the server ID as well since the way we're using this relationshipCOMMENT
Redundant / Tautological Comments1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…tabase/Seeders/eggs/minecraft/egg-forge-minecraft.json34 "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\CODE