AI Slop Code RIsk Monitor

laravel/framework

Laravel is a web application framework with expressive, elegant syntax.

15.4 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for laravel/framework, a PHP project with 34,955 GitHub stars. SynthScan examined 590,342 lines of code across 3301 source files, recording 9856 pattern matches distributed across 4 syntactic categories. The legacy adjusted pattern signal is 15.4 (Elevated 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.

15.4
Adjusted Signal
15.4
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
35.0K
Stars
PHP
Language
590.3K
Lines of Code
3.3K
Files
9.9K
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 53.1/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 1.1/100 · LOW

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

Agent Over-Engineering Ratio 53.0/100 · HIGH

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

PR Review Velocity Impact 56.6/100 · HIGH

Which changes need focused human review? 9856 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 3LOW 9853

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 9856 distinct pattern matches across 4 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 Identifiers9732 hits · 8913 pts
SeverityFileLineSnippetContext
LOW⚡tests/Encryption/EncrypterTest.php180 public function testWithBadKeyLengthAlternativeCipher()CODE
LOW⚡tests/Encryption/EncrypterTest.php187 public function testWithUnsupportedCipher()CODE
LOW⚡tests/Encryption/EncrypterTest.php194 public function testExceptionThrownWhenPayloadIsInvalid()CODE
LOW⚡tests/Encryption/EncrypterTest.php204 public function testDecryptionExceptionIsThrownWhenUnexpectedTagIsAdded()CODE
LOW⚡tests/Encryption/EncrypterTest.php265 public function testTamperedPayloadWillGetRejected($payload)CODE
LOW⚡tests/Encryption/EncrypterTest.php273 public function testEncryptedReturnsTrueForEncryptedValue()CODE
LOW⚡tests/Encryption/EncrypterTest.php281 public function testEncryptedReturnsTrueForEncryptedArray()CODE
LOW⚡tests/Encryption/EncrypterTest.php289 public function testEncryptedReturnsFalseForPlainText()CODE
LOW⚡tests/Encryption/EncrypterTest.php296 public function testEncryptedReturnsFalseForNonString()CODE
LOWtests/Encryption/EncrypterTest.php41 public function testRawStringEncryptionWithPreviousKeys()CODE
LOWtests/Encryption/EncrypterTest.php53 public function testItValidatesMacOnPerKeyBasis()CODE
LOWtests/Encryption/EncrypterTest.php65 public function testItDecryptsUsingTheFirstMacValidatedKey()CODE
LOWtests/Encryption/EncrypterTest.php84 public function testEncryptedLengthIsFixed()CODE
LOWtests/Encryption/EncrypterTest.php107 public function testCipherNamesCanBeMixedCase()CODE
LOWtests/Encryption/EncrypterTest.php120 public function testThatAnAeadCipherIncludesTag()CODE
LOWtests/Encryption/EncrypterTest.php130 public function testThatAnAeadTagMustBeProvidedInFullLength()CODE
LOWtests/Encryption/EncrypterTest.php143 public function testThatAnAeadTagCantBeModified()CODE
LOWtests/Encryption/EncrypterTest.php156 public function testThatANonAeadCipherIncludesMac()CODE
LOWtests/Encryption/EncrypterTest.php215 public function testExceptionThrownWithDifferentKey()CODE
LOWtests/Encryption/EncrypterTest.php224 public function testExceptionThrownWhenIvIsTooLong()CODE
LOWtests/Encryption/EncrypterTest.php237 public function testSupportedMethodAcceptsAnyCasing()CODE
LOW…atabase/DatabaseEloquentBelongsToManyChunkByIdTest.php68 public function testBelongsToChunkByIdDesc()CODE
LOWtests/Database/DatabasePostgresSchemaStateTest.php13 public function testBaseVariablesUseConfiguredConnectionByDefault()CODE
LOWtests/Database/DatabasePostgresSchemaStateTest.php36 public function testBaseVariablesUseDirectConnectionConfigurationWhenAvailable()CODE
LOWtests/Database/DatabasePostgresSchemaStateTest.php69 public function testBaseVariablesDoNotExportEmptySslMode()CODE
LOWtests/Database/DatabaseEloquentAsVectorCastTest.php26 public function testGetDecodesBinaryVector()CODE
LOWtests/Database/DatabaseEloquentAsVectorCastTest.php36 public function testGetDecodesBinaryVectorBeginningWithOpeningBracketByte()CODE
LOWtests/Database/DatabaseEloquentAsVectorCastTest.php56 public function testGetReturnsNullForNullValue()CODE
LOWtests/Database/DatabaseEloquentAsVectorCastTest.php66 public function testSetOnMariaDbWrapsVectorInVecFromText()CODE
LOWtests/Database/DatabaseEloquentAsVectorCastTest.php79 public function testSetOnPostgresStoresJson()CODE
LOWtests/Database/DatabaseEloquentAsVectorCastTest.php109 public function testSetRejectsNonArrayValues()CODE
LOWtests/Database/DatabaseEloquentAsVectorCastTest.php120 public function testVectorCanBeReadBackBeforeSavingOnMariaDb()CODE
LOWtests/Database/DatabaseEloquentAsVectorCastTest.php130 public function testVectorCanBeReadBackBeforeSavingOnPostgres()CODE
LOWtests/Database/DatabaseEloquentMorphToManyTest.php18 public function testEagerConstraintsAreProperlyAdded(): voidCODE
LOWtests/Database/DatabaseEloquentMorphToManyTest.php32 public function testAttachInsertsPivotTableRecord(): voidCODE
LOWtests/Database/DatabaseEloquentMorphToManyTest.php44 public function testDetachRemovesPivotTableRecord(): voidCODE
LOWtests/Database/DatabaseEloquentMorphToManyTest.php59 public function testDetachMethodClearsAllPivotRecordsWhenNoIDsAreGiven(): voidCODE
LOWtests/Database/DatabaseEloquentMorphToManyTest.php74 public function testQueryExpressionCanBePassedToDifferentPivotQueryBuilderClauses(): voidCODE
LOW…Database/DatabaseEloquentRelationNoConstraintsTest.php50 public function testRelationshipAccessWhileResolvingEagerLoadPreservesConstraints()CODE
LOW…Database/DatabaseEloquentRelationNoConstraintsTest.php69 public function testRelationshipAccessInsideExplicitNoConstraintsRemainsUnconstrained()CODE
LOWtests/Database/DatabaseEloquentPivotTest.php17 public function testPropertiesAreSetCorrectly()CODE
LOW⚡tests/Database/DatabaseEloquentPivotTest.php38 public function testMutatorsAreCalledFromConstructor()CODE
LOW⚡tests/Database/DatabaseEloquentPivotTest.php47 public function testFromRawAttributesDoesNotDoubleMutate()CODE
LOW⚡tests/Database/DatabaseEloquentPivotTest.php57 public function testFromRawAttributesDoesNotMutate()CODE
LOW⚡tests/Database/DatabaseEloquentPivotTest.php67 public function testPropertiesUnchangedAreNotDirty()CODE
LOW⚡tests/Database/DatabaseEloquentPivotTest.php76 public function testPropertiesChangedAreDirty()CODE
LOW⚡tests/Database/DatabaseEloquentPivotTest.php86 public function testTimestampPropertyIsSetIfCreatedAtInAttributes()CODE
LOWtests/Database/DatabaseEloquentPivotTest.php97 public function testTimestampPropertyIsTrueWhenCreatingFromRawAttributes()CODE
LOWtests/Database/DatabaseEloquentPivotTest.php115 public function testDeleteMethodDeletesModelByKeys()CODE
LOWtests/Database/DatabaseEloquentPivotTest.php130 public function testPivotModelTableNameIsSingular()CODE
LOWtests/Database/DatabaseEloquentPivotTest.php137 public function testPivotModelWithParentReturnsParentsTimestampColumns()CODE
LOWtests/Database/DatabaseEloquentPivotTest.php148 public function testPivotModelWithoutParentReturnsModelTimestampColumns()CODE
LOWtests/Database/DatabaseConcernsHasAttributesTest.php21 public function testWithConstructorArguments()CODE
LOWtests/Database/DatabaseConcernsHasAttributesTest.php46 public function testCastingEmptyStringToArrayDoesNotError()CODE
LOWtests/Database/DatabaseConcernsHasAttributesTest.php56 public function testUnsettingCachedAttribute()CODE
LOWtests/Database/DatabaseMigrationResetCommandTest.php21 public function testResetCommandCallsMigratorWithProperArguments()CODE
LOWtests/Database/DatabaseMigrationResetCommandTest.php39 public function testResetCommandCanBePretended()CODE
LOWtests/Database/DatabaseMigrationResetCommandTest.php57 public function testRefreshCommandExitsWhenProhibited()CODE
LOW⚡…base/DatabaseEloquentHasManyThroughIntegrationTest.php97 public function testItLoadsARelationWithCustomIntermediateAndLocalKey()CODE
LOW⚡…base/DatabaseEloquentHasManyThroughIntegrationTest.php106 public function testEagerLoadingARelationWithCustomIntermediateAndLocalKey()CODE
9672 more matches not shown…
Fake / Example Data101 hits · 132 pts
SeverityFileLineSnippetContext
LOW⚡tests/Database/DatabaseEloquentIntegrationTest.php2231 $john = EloquentTestUserWithCustomFriendPivot::create(['id' => 1, 'name' => 'John Doe', 'email' => 'johndoe@examCODE
LOW⚡tests/Database/DatabaseEloquentIntegrationTest.php2232 $jane = EloquentTestUserWithCustomFriendPivot::create(['id' => 2, 'name' => 'Jane Doe', 'email' => 'janedoe@examCODE
LOW⚡tests/Database/DatabaseSchemaBlueprintTest.php233 "alter table `users` change `id` `key` bigint unsigned not null auto_increment comment 'lorem ipsum'",CODE
LOW⚡tests/Database/DatabaseSchemaBlueprintTest.php245 ['name' => 'id', 'type' => 'bigint unsigned', 'type_name' => 'bigint', 'nullable' => false, 'collation' => nCODE
LOWtests/Database/DatabaseSchemaBlueprintTest.php221 ['name' => 'id', 'type' => 'bigint unsigned', 'type_name' => 'bigint', 'nullable' => false, 'collation' => nCODE
LOWtests/Database/DatabaseSchemaBlueprintTest.php259 "alter table `users` change `id` `key` bigint unsigned not null auto_increment comment 'lorem ipsum'",CODE
LOWtests/Database/DatabaseEloquentTimestampsTest.php74 'email' => 'test@test.com',CODE
LOWtests/Database/DatabaseEloquentTimestampsTest.php86 'email' => 'test@test.com',CODE
LOWtests/Database/DatabaseEloquentTimestampsTest.php97 'email' => 'test@test.com',CODE
LOW⚡tests/Database/DatabaseEloquentModelTest.php3770 $model->address_line_one = '123 Main Street';CODE
LOW⚡tests/Database/DatabaseEloquentModelTest.php3772 $this->assertSame('123 Main Street', $model->address->lineOne);CODE
LOW⚡tests/Database/DatabaseEloquentModelTest.php3826 $model->fill(['id' => 1, 'full_name' => 'John Doe', 'full_address' => '123 Main Street, Anytown']);CODE
LOW⚡tests/Database/DatabaseEloquentModelTest.php3831 $this->assertSame('123 Main Street', $model->address_line_one);CODE
LOW⚡tests/Database/DatabaseEloquentModelTest.php3839 $model->fill(['id' => 1, 'full_name' => 'John Doe', 'full_address' => '123 Main Street, Anytown']);CODE
LOW⚡tests/Database/DatabaseEloquentModelTest.php3844 $this->assertSame('123 Main Street', $model->address_line_one);CODE
LOW⚡tests/Database/DatabaseQueryBuilderTest.php5860 $builder->select('*')->from('users')->where('name', 'sounds like', 'John Doe');CODE
LOW⚡tests/Database/DatabaseQueryBuilderTest.php5862 $this->assertEquals(['John Doe'], $builder->getBindings());CODE
LOW⚡…atabase/DatabaseEloquentSoftDeletesIntegrationTest.php439 $result = SoftDeletesTestUser::createOrFirst(['email' => 'foo@bar.com']);CODE
LOW⚡…atabase/DatabaseEloquentSoftDeletesIntegrationTest.php440 $this->assertSame('foo@bar.com', $result->email);CODE
LOW⚡…atabase/DatabaseEloquentSoftDeletesIntegrationTest.php500 $userModel->email = 'foo@bar.com';CODE
LOW⚡…atabase/DatabaseEloquentSoftDeletesIntegrationTest.php505 $this->assertSame('foo@bar.com', SoftDeletesTestUser::find(2)->email);CODE
LOW⚡…atabase/DatabaseEloquentSoftDeletesIntegrationTest.php512 $result = SoftDeletesTestUser::updateOrCreate(['email' => 'foo@bar.com'], ['email' => 'bar@baz.com']);CODE
LOW⚡…atabase/DatabaseEloquentSoftDeletesIntegrationTest.php516 $result = SoftDeletesTestUser::withTrashed()->updateOrCreate(['email' => 'taylorotwell@gmail.com'], ['email' => CODE
LOW⚡…atabase/DatabaseEloquentSoftDeletesIntegrationTest.php517 $this->assertSame('foo@bar.com', $result->email);CODE
LOW…atabase/DatabaseEloquentSoftDeletesIntegrationTest.php425 $result = SoftDeletesTestUser::firstOrCreate(['email' => 'foo@bar.com']);CODE
LOW…atabase/DatabaseEloquentSoftDeletesIntegrationTest.php426 $this->assertSame('foo@bar.com', $result->email);CODE
LOW⚡tests/Auth/AuthGuardTest.php39 $credentials = ['email' => 'foo@bar.com', 'password' => 'secret'];CODE
LOW⚡tests/Auth/AuthGuardTest.php43 $guard->setRequest(Request::create('/', 'GET', [], [], [], ['PHP_AUTH_USER' => 'foo@bar.com', 'PHP_AUTH_PW' => 'CODE
LOW⚡tests/Auth/AuthGuardTest.php57 $guard->setRequest(Request::create('/', 'GET', [], [], [], ['PHP_AUTH_USER' => 'foo@bar.com', 'PHP_AUTH_PW' => 'CODE
LOW⚡tests/Auth/AuthGuardTest.php70 $credentials = ['email' => 'foo@bar.com', 'password' => 'secret'];CODE
LOW⚡tests/Auth/AuthGuardTest.php74 $guard->setRequest(Request::create('/', 'GET', [], [], [], ['PHP_AUTH_USER' => 'foo@bar.com', 'PHP_AUTH_PW' => 'CODE
LOW⚡tests/Auth/AuthGuardTest.php84 $credentials = ['email' => 'foo@bar.com', 'password' => 'secret', 'active' => 1];CODE
LOW⚡tests/Auth/AuthGuardTest.php88 $guard->setRequest(Request::create('/', 'GET', [], [], [], ['PHP_AUTH_USER' => 'foo@bar.com', 'PHP_AUTH_PW' => 'CODE
LOW⚡tests/Auth/AuthGuardTest.php100 $credentials = ['email' => 'foo@bar.com', 'password' => 'secret', 'active' => 1, 'type' => [1, 2, 3]];CODE
LOW⚡tests/Auth/AuthGuardTest.php104 $guard->setRequest(Request::create('/', 'GET', [], [], [], ['PHP_AUTH_USER' => 'foo@bar.com', 'PHP_AUTH_PW' => 'CODE
LOWtests/Mail/MailableQueuedTest.php335 ->subject('lorem ipsum')CODE
LOWtests/Mail/MailableQueuedTest.php355 ->subject('lorem ipsum')CODE
LOWtests/Mail/MailableQueuedTest.php376 ->subject('lorem ipsum')CODE
LOWtests/Mail/MailableQueuedTest.php391 ->subject('lorem ipsum')CODE
LOW⚡tests/Integration/Database/QueryBuilderTest.php204 ['id' => '1', 'title' => 'Foo Post', 'foo' => 'Lorem Ipsum.'],CODE
LOW⚡tests/Integration/Database/QueryBuilderTest.php213 $expected = ['id' => '1', 'title' => 'Foo Post', 'content' => 'Lorem Ipsum.'];CODE
LOW⚡tests/Integration/Database/QueryBuilderTest.php226 ['id' => '1', 'title' => 'Foo Post', 'foo' => 'Lorem Ipsum.'],CODE
LOW⚡tests/Integration/Database/QueryBuilderTest.php570 $results = DB::table('posts')->where('content', 'Lorem Ipsum.')->whereNested(function ($query) {CODE
LOW⚡tests/Integration/Database/QueryBuilderTest.php583 (object) ['title' => 'Foo Post', 'content' => 'Lorem Ipsum.'],CODE
LOW⚡tests/Integration/Database/QueryBuilderTest.php584 (object) ['title' => 'Bar Post', 'content' => 'Lorem Ipsum.'],CODE
LOWtests/Integration/Database/QueryBuilderTest.php29 ['title' => 'Foo Post', 'content' => 'Lorem Ipsum.', 'created_at' => new Carbon('2017-11-12 13:14:15')],CODE
LOWtests/Integration/Database/QueryBuilderTest.php30 ['title' => 'Bar Post', 'content' => 'Lorem Ipsum.', 'created_at' => new Carbon('2018-01-02 03:04:05')],CODE
LOWtests/Integration/Database/QueryBuilderTest.php168 ['title' => 'Foo Post', 'content' => 'Lorem Ipsum.', 'created_at' => new Carbon('2017-11-12 13:14:15')],CODE
LOWtests/Integration/Database/QueryBuilderTest.php290 ['title' => 'Baz Post', 'content' => 'Lorem Ipsum.', 'created_at' => new Carbon('2017-11-12 13:14:15')],CODE
LOWtests/Integration/Database/QueryBuilderTest.php636 'Lorem Ipsum.' => 'Bar Post',CODE
LOWtests/Integration/Database/QueryBuilderTest.php659 'Lorem Ipsum.',CODE
LOWtests/Integration/Database/QueryBuilderTest.php660 'Lorem Ipsum.',CODE
LOW…ts/Integration/Database/EloquentHasManyThroughTest.php245 ['name' => 'John Doe'],CODE
LOW⚡…sts/Integration/Database/QueryBuilderWhereLikeTest.php30 ['name' => 'John Doe', 'email' => 'John.Doe@example.com'],CODE
LOW⚡…sts/Integration/Database/QueryBuilderWhereLikeTest.php31 ['name' => 'Jane Doe', 'email' => 'janedoe@example.com'],CODE
LOWtests/Integration/Http/ThrottleRequestsTest.php348 'email' => 'mateus@example.org',CODE
LOW⚡tests/Integration/Http/ResourceTest.php1831 'user@example.com' => 'John',CODE
LOW⚡tests/Integration/Http/ResourceTest.php1832 'admin@example.com' => 'Hank',CODE
LOW⚡tests/Integration/Http/ResourceTest.php1835 'user@example.com' => 'John',CODE
LOW⚡tests/Integration/Http/ResourceTest.php1836 'admin@example.com' => 'Hank',CODE
41 more matches not shown…
Over-Commented Block20 hits · 12 pts
SeverityFileLineSnippetContext
LOWdocker-compose.yml21 - "3306:3306"COMMENT
LOWdocker-compose.yml41 # mssql:COMMENT
LOWdocker-compose.yml61 # image: redis:7.0-alpineCOMMENT
LOWtests/Database/DatabaseEloquentModelTest.php361COMMENT
LOWtests/Database/DatabaseEloquentModelTest.php381 // ]);COMMENT
LOWtests/Database/DatabaseEloquentModelTest.php401 // ->twice()COMMENT
LOWtests/Database/DatabaseEloquentModelTest.php421 // $model = new EloquentModelCastingStub;COMMENT
LOWtests/Database/DatabaseEloquentModelTest.php441 // Model::$encrypter = null;COMMENT
LOWtests/Database/DatabaseEloquentModelTest.php461 // ->with('new-encrypted-custom-value', false)COMMENT
LOWtests/Database/DatabaseEloquentModelTest.php481 // {COMMENT
LOWtests/Database/DatabaseEloquentModelTest.php501 // ->andReturn('{"foo": "bar"}');COMMENT
LOWtests/Integration/Queue/RedisQueueTest.php121 exit;COMMENT
LOWtests/Foundation/FoundationFormRequestTest.php681 // FormRequest::failOnUnknownFields();COMMENT
LOWtests/Foundation/Cloud/ExceptionReportingTest.php2661 }COMMENT
LOWtests/Filesystem/FilesystemManagerTest.php781 $manager->extend(__CLASS__, $creator(...));COMMENT
LOWtests/Validation/ValidationEmailRuleTest.php401 );COMMENT
LOWtests/Validation/ValidationEmailRuleTest.php461 );COMMENT
LOWtests/Validation/ValidationEmailRuleTest.php541COMMENT
LOWtests/Validation/ValidationEmailRuleTest.php581 #[TestWith(['john-doe@some-domain.com'])] // Hyphen in domainCOMMENT
LOWtests/Validation/ValidationEmailRuleTest.php701 }COMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUM…lluminate/Database/Eloquent/Concerns/HasAttributes.php863 // the value and update the cast type so we may leverage the followingCOMMENT
MEDIUMsrc/Illuminate/Database/Query/Grammars/Grammar.php1276 // Essentially we will force every insert to be treated as a batch insert whichCOMMENT
MEDIUMsrc/Illuminate/Database/Query/Grammars/Grammar.php1277 // simply makes creating the SQL easier for us since we can utilize the sameCOMMENT