AI Slop Code Risk Monitor

thephpleague/flysystem

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

Abstraction for local and remote filesystems

2.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for thephpleague/flysystem, a PHP project with 13,594 GitHub stars. SynthScan examined 24,520 lines of code across 246 source files, recording 53 pattern matches distributed across 2 syntactic categories. The legacy adjusted pattern signal is 2.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.

2.2
Adjusted Signal
2.2
Raw Pattern Score
100%
Time Factor
2026-10-03
Last Push
13.6K
Stars
PHP
Language
24.5K
Lines of Code
246
Files
53
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 10.2/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 53 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 10.1/100 · LOW

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

PR Review Velocity Impact 10.2/100 · LOW

Which changes need focused human review? 53 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 0LOW 53

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 53 distinct pattern matches across 2 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 Identifiers52 hits · 52 pts
SeverityFileLineSnippetContext
LOWsrc/Filesystem.php240 private function resolvePublicUrlGenerator(): ?PublicUrlGeneratorCODE
LOWsrc/Filesystem.php282 private function resolveConfigForMoveAndCopy(array $config): ConfigCODE
LOWsrc/UnableToCopyFile.php44 public static function sourceAndDestinationAreTheSame(string $source, string $destination): UnableToCopyFileCODE
LOWsrc/UnableToMountFilesystem.php24 public static function becauseTheFilesystemWasNotValid($filesystem): UnableToMountFilesystemCODE
LOWsrc/MountManager.php41 public function dangerouslyMountFilesystems(string $key, FilesystemOperator $filesystem): voidCODE
LOWsrc/MountManager.php352 private function determineFilesystemAndPath(string $path): arrayCODE
LOWsrc/CalculateChecksumFromStream.php12 private function calculateChecksumFromStream(string $path, Config $config): stringCODE
LOWsrc/MountManagerTest.php225 public static function dpMetadataRetrieverMethods(): iterableCODE
LOWsrc/FilesystemTest.php347 public static function scenariosCausingPathTraversal(): GeneratorCODE
LOWsrc/UnableToMoveFile.php22 public static function sourceAndDestinationAreTheSame(string $source, string $destination): UnableToMoveFileCODE
LOWsrc/UnableToResolveFilesystemMount.php11 public static function becauseTheSeparatorIsMissing(string $path): UnableToResolveFilesystemMountCODE
LOWsrc/UnableToResolveFilesystemMount.php16 public static function becauseTheMountWasNotRegistered(string $mountIdentifier): UnableToResolveFilesystemMountCODE
LOWsrc/Ftp/FtpAdapter.php134 private function isServerSupportingListOptions(): boolCODE
LOWsrc/Ftp/FtpAdapter.php521 private function listDirectoryContentsRecursive(string $directory): GeneratorCODE
LOWsrc/Ftp/FtpAdapter.php596 private function ensureParentDirectoryExists(string $path, ?string $visibility): voidCODE
LOWsrc/Ftp/FtpAdapterTestCase.php47 public static function clearFilesystemAdapterCache(): voidCODE
LOWsrc/Ftp/FtpAdapterTestCase.php129 public static function scenariosCausingWriteFailure(): GeneratorCODE
LOWsrc/Ftp/FtpAdapterTestCase.php165 public static function scenariosCausingDirectoryDeleteFailure(): GeneratorCODE
LOWsrc/Ftp/FtpAdapterTestCase.php208 public static function scenariosCausingCopyFailure(): GeneratorCODE
LOWsrc/Ftp/UnableToResolveConnectionRoot.php24 public static function couldNotGetCurrentDirectory(string $message = ''): UnableToResolveConnectionRootCODE
LOWsrc/Ftp/FtpConnectionOptions.php90 public function timestampsOnUnixListingsEnabled(): boolCODE
LOWsrc/PhpseclibV2/SftpAdapter.php114 private function ensureParentDirectoryExists(string $path, Config $config): voidCODE
LOWsrc/PhpseclibV2/SftpAdapter.php308 private function convertListingToAttributes(string $path, array $attributes): StorageAttributesCODE
LOWsrc/PhpseclibV2/SftpConnectionProvider.php163 private function getFingerprintFromPublicKey(string $publicKey): stringCODE
LOWsrc/PhpseclibV2/SftpConnectionProvider.php199 private function authenticateWithPrivateKey(SFTP $connection): voidCODE
LOWsrc/PhpseclibV2/UnableToEstablishAuthenticityOfHost.php15 public static function becauseTheAuthenticityCantBeEstablished(string $host): UnableToEstablishAuthenticityOfHostCODE
LOWsrc/PhpseclibV3/SftpAdapter.php100 private function ensureParentDirectoryExists(string $path, Config $config): voidCODE
LOWsrc/PhpseclibV3/SftpAdapter.php294 private function convertListingToAttributes(string $path, array $attributes): StorageAttributesCODE
LOWsrc/PhpseclibV3/SftpConnectionProviderTest.php257 public static function fingerprintFormatProvider(): iterableCODE
LOWsrc/PhpseclibV3/SftpConnectionProvider.php141 private function fingerprintMatchesPublicKey(string $expectedFingerprint, string $publicKey): boolCODE
LOWsrc/PhpseclibV3/SftpConnectionProvider.php188 private function authenticateWithUsernameAndPassword(SFTP $connection): voidCODE
LOWsrc/PhpseclibV3/SftpConnectionProvider.php214 private function authenticateWithPrivateKey(SFTP $connection): voidCODE
LOWsrc/PhpseclibV3/UnableToEstablishAuthenticityOfHost.php12 public static function becauseTheAuthenticityCantBeEstablished(string $host): UnableToEstablishAuthenticityOfHostCODE
LOWsrc/AwsS3V3/S3ClientStub.php72 public function throwExceptionWhenExecutingCommand(string $commandName, ?S3Exception $exception = null): voidCODE
LOWsrc/AwsS3V3/AwsS3V3AdapterTest.php312 public static function casesWhereHttpStreamingInfluencesSeekability(): GeneratorCODE
LOWsrc/Local/LocalFilesystemAdapter.php94 private function ensureRootDirectoryExists(): voidCODE
LOWsrc/Local/LocalFilesystemAdapter.php399 private function resolveDirectoryVisibility(?string $visibility): intCODE
LOWsrc/ZipArchive/ZipArchiveAdapterTestCase.php101 public static function scenariosThatCauseWritesToFail(): GeneratorCODE
LOWsrc/ZipArchive/StubZipArchive.php17 public function failNextDirectoryCreation(): voidCODE
LOWsrc/ZipArchive/StubZipArchive.php81 public function failWhenSettingVisibility(): voidCODE
LOWsrc/ZipArchive/StubZipArchive.php86 public function setExternalAttributesName($name, $opsys, $attr, $flags = null): boolCODE
LOWsrc/ZipArchive/FilesystemZipArchiveProvider.php30 private function createParentDirectoryForZipArchive(string $fullPath): voidCODE
LOWsrc/ZipArchive/ZipArchiveAdapter.php380 private function ensureParentDirectoryExists(string $path, Config $config): voidCODE
LOWsrc/AdapterTestUtilities/FilesystemAdapterTestCase.php49 public static function clearFilesystemAdapterCache(): voidCODE
LOWsrc/AdapterTestUtilities/FilesystemAdapterTestCase.php397 protected function formatIncorrectListingCount(array $items): stringCODE
LOWsrc/AdapterTestUtilities/FilesystemAdapterTestCase.php409 protected function givenWeHaveAnExistingFile(string $path, string $contents = 'contents', array $config = []): voidCODE
LOW…gleCloudStorage/UniformBucketLevelAccessVisibility.php23 public function visibilityToPredefinedAcl(string $visibility): stringCODE
LOWsrc/GoogleCloudStorage/GoogleCloudStorageAdapter.php292 public function storageObjectToStorageAttributes(StorageObject $object): StorageAttributesCODE
LOWsrc/GoogleCloudStorage/VisibilityHandler.php13 public function visibilityToPredefinedAcl(string $visibility): string;CODE
LOWsrc/GoogleCloudStorage/PortableVisibilityHandler.php49 public function visibilityToPredefinedAcl(string $visibility): stringCODE
LOWsrc/AsyncAwsS3/S3ClientStub.php60 public function throwExceptionWhenExecutingCommand(string $commandName, ?Exception $exception = null): voidCODE
LOWsrc/AsyncAwsS3/AsyncAwsS3Adapter.php530 private function createObjectIdentifierForXmlRequest(string $key): ObjectIdentifierCODE
Over-Commented Block1 hit · 1 pts
SeverityFileLineSnippetContext
LOW.github/workflows/quality-assurance.yml41 composer-flags: [ '' ]COMMENT