AI Slop Code Risk Monitor

briannesbitt/Carbon

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

A simple PHP API extension for DateTime.

4.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for briannesbitt/Carbon, a PHP project with 16,585 GitHub stars. SynthScan examined 338,559 lines of code across 2039 source files, recording 1366 pattern matches distributed across 2 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-29
Last Push
16.6K
Stars
PHP
Language
338.6K
Lines of Code
2.0K
Files
1.4K
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 18.9/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 1366 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? 1359 finding(s).

PR Review Velocity Impact 18.3/100 · LOW

Which changes need focused human review? 1366 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 1366

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 1366 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 Identifiers1359 hits · 1412 pts
SeverityFileLineSnippetContext
LOWsponsors.php16function getMaxHistoryMonthsByAmount($amount): intCODE
LOWsponsors.php53function getOpenCollectiveSponsors(): stringCODE
LOWtests/AbstractTestCase.php227 public function assertInstanceOfCarbonInterval($d): voidCODE
LOWtests/PHPStan/Fixture.php20 public function testCarbonMacroCalledStatically(): stringCODE
LOWtests/PHPStan/Fixture.php25 public function testCarbonMacroCalledDynamically(): stringCODE
LOWtests/PHPStan/FeaturesTest.php41 public function testAnalysesWithoutErrors(): voidCODE
LOWtests/CarbonTimeZone/CreateTest.php67 public function testSafeCreateDateTimeZoneWithoutStrictMode()CODE
LOWtests/CarbonTimeZone/ConversionsTest.php94 public function testToOffsetNameDateAsParam(string $date, string $expectedOffset, string|int $timezone)CODE
LOWtests/CarbonTimeZone/ConversionsTest.php101 public function testToOffsetNameFromDifferentCreationMethods()CODE
LOWtests/CarbonTimeZone/ConversionsTest.php141 public function testInvalidRegionForOffset()CODE
LOWtests/CarbonTimeZone/ConversionsTest.php147 public function testInvalidRegionForOffsetInStrictMode()CODE
LOWtests/CarbonPeriod/FilterTest.php49 public function testUpdateInternalStateWhenBuiltInFiltersAreRemoved()CODE
LOWtests/CarbonPeriod/FilterTest.php113 public function testRemoveFilterByInstance()CODE
LOWtests/CarbonPeriod/FilterTest.php271 public function testChangeNumberOfRecurrences()CODE
LOWtests/CarbonPeriod/FilterTest.php313 public function testThrowExceptionWhenNextValidDateCannotBeFound()CODE
LOWtests/CarbonPeriod/FilterTest.php388 public function testAddFilterFromCarbonMethod()CODE
LOWtests/CarbonPeriod/FilterTest.php402 public function testAddFilterFromCarbonMacro()CODE
LOWtests/CarbonPeriod/FilterTest.php423 public function testAddFilterFromCarbonMethodWithArguments()CODE
LOWtests/CarbonPeriod/FilterTest.php437 public function testRemoveFilterFromCarbonMethod()CODE
LOWtests/CarbonPeriod/FilterTest.php451 public function testInvalidCarbonMethodShouldNotBeConvertedToCallback()CODE
LOWtests/CarbonPeriod/FilterTest.php479 public function testRemoveCallableFilters()CODE
LOWtests/CarbonPeriod/MonthlyTest.php29 public function testMonthlyWithoutParameters()CODE
LOWtests/CarbonPeriod/MonthlyTest.php102 public function testMonthlyWithStartDateAndRecurrences()CODE
LOWtests/CarbonPeriod/MonthlyTest.php173 public function testMonthlyWithTimestamps()CODE
LOWtests/CarbonPeriod/MonthlyTest.php206 public function testMonthlyWithOtherDateRepresentations(CODE
LOWtests/CarbonPeriod/MonthlyTest.php229 public function testMonthlyWithEndDateAndRecurrences()CODE
LOWtests/CarbonPeriod/AliasTest.php48 public function testSetStartDateWithNamedParameters()CODE
LOWtests/CarbonPeriod/AliasTest.php113 public function testSetEndDateWithNamedParameters()CODE
LOWtests/CarbonPeriod/AliasTest.php259 public function testModifyIntervalSingular()CODE
LOWtests/CarbonPeriod/AliasTest.php303 public function testOverrideDefaultInterval()CODE
LOWtests/CarbonPeriod/AliasTest.php316 public function testModifyIntoEmptyDateInterval()CODE
LOW⚡tests/CarbonPeriod/IteratorTest.php29 public function testKeyAndCurrentAreCorrectlyInstantiated()CODE
LOW⚡tests/CarbonPeriod/IteratorTest.php39 public function testValidIsCorrectlyInstantiated()CODE
LOW⚡tests/CarbonPeriod/IteratorTest.php46 public function testCurrentIsAlwaysCarbonInstance()CODE
LOWtests/CarbonPeriod/IteratorTest.php74 public function testElementsInLoopAreAlwaysValid()CODE
LOWtests/CarbonPeriod/IteratorTest.php83 public function testKeyAndCurrentAreCorrectlyIterated()CODE
LOWtests/CarbonPeriod/IteratorTest.php94 public function testKeyAndCurrentAreCorrectlyRewound()CODE
LOWtests/CarbonPeriod/IteratorTest.php106 public function testKeyAndCurrentAreNullAfterIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php136 public static function dataForIterateBackwardsArguments(): GeneratorCODE
LOWtests/CarbonPeriod/IteratorTest.php160 public function testChangingParametersShouldNotCauseInfiniteLoop()CODE
LOWtests/CarbonPeriod/IteratorTest.php196 public function testChangeEndDateDuringIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php225 public function testKeepIncreasingRecurrencesDuringIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php254 public function testChangeStartDateDuringIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php286 public function testChangeDateIntervalDuringIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php313 public function testValidateOncePerIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php331 public function testInvalidateCurrentAfterChangingParameters()CODE
LOWtests/CarbonPeriod/IteratorTest.php343 public function testTraversePeriodDynamically()CODE
LOWtests/CarbonPeriod/IteratorTest.php365 public function testExtendCompletedIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php392 public function testRevalidateCurrentAfterChangeOfParameters()CODE
LOWtests/CarbonPeriod/IteratorTest.php409 public function testRevalidateCurrentAfterEndOfIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php424 public function testChangeStartDateBeforeIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php434 public function testChangeStartDateAfterStartedIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php447 public function testInvertDateIntervalDuringIteration()CODE
LOWtests/CarbonPeriod/IteratorTest.php592 public function testReverseOrderWithDynamicStep()CODE
LOWtests/CarbonPeriod/IteratorTest.php619 public function testBackAndForthWithRecurrences()CODE
LOWtests/CarbonPeriod/DynamicIntervalTest.php21 public function testDynamicIntervalInPeriod()CODE
LOWtests/CarbonPeriod/MacroTest.php64 public function testParameterOtherThanSelfIsNotGivenPeriodInstance()CODE
LOWtests/CarbonPeriod/MacroTest.php77 public function testPassPeriodInstanceAfterOptionalParameters()CODE
LOWtests/CarbonPeriod/MacroTest.php96 public function testMacroIsBindedToDatePeriodInstance()CODE
LOWtests/CarbonPeriod/MacroTest.php127 public function testMacroIsBoundToDatePeriodClass()CODE
1299 more matches not shown…
Over-Commented Block7 hits · 5 pts
SeverityFileLineSnippetContext
LOWtests/Unit/UnitTest.php41 #[TestWith([Unit::Quarter, 'quarters'])]COMMENT
LOWtests/Carbon/StartEndOfTest.php441 {COMMENT
LOWtests/Carbon/StartEndOfTest.php461 $this->assertCarbon($dt->startOfQuarter(), 2015, $startOfQuarterMonth, 1, 0, 0, 0);COMMENT
LOWtests/CarbonImmutable/StartEndOfTest.php361COMMENT
LOWtests/CarbonImmutable/StartEndOfTest.php381 {COMMENT
LOWtests/CarbonImmutable/NoDiscardTest.php21use PHPUnit\Framework\Attributes\TestWith;COMMENT
LOWsrc/Carbon/Traits/Date.php921 // @call addUnitCOMMENT