AI Slop Code Risk Monitor

monicahq/monica

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

Personal CRM. Remember everything about your friends, family and business relationships.

0.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for monicahq/monica, a PHP project with 25,552 GitHub stars. SynthScan examined 216,735 lines of code across 1916 source files, recording 86 pattern matches distributed across 4 syntactic categories. The legacy adjusted pattern signal is 0.4 (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.4
Adjusted Signal
0.4
Raw Pattern Score
100%
Time Factor
2026-10-28
Last Push
25.6K
Stars
PHP
Language
216.7K
Lines of Code
1.9K
Files
86
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 1.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

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

Agent Over-Engineering Ratio 1.1/100 · LOW

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

PR Review Velocity Impact 2.0/100 · LOW

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

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 86 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 Identifiers49 hits · 49 pts
SeverityFileLineSnippetContext
LOW…s/PersonalizeContactInformationTypeIndexViewHelper.php33 public static function dtoContactInformationType(ContactInformationType $type): arrayCODE
LOW…p/Domains/Settings/CreateAccount/Jobs/SetupAccount.php131 private function addTemplatePageContactInformation(): voidCODE
LOW…p/Domains/Settings/CreateAccount/Jobs/SetupAccount.php402 private function addTemplatePageLifeEvents(): voidCODE
LOW…p/Domains/Settings/CreateAccount/Jobs/SetupAccount.php445 private function addTemplatePageInformation(): voidCODE
LOW…ins/Settings/ManageUsers/Services/AcceptInvitation.php66 private function createNotificationChannel(): voidCODE
LOW…ageReminders/Jobs/ProcessScheduledContactReminders.php81 private function updateScheduledContactReminderTriggeredAt($scheduledReminder): voidCODE
LOW…ageReminders/Jobs/ProcessScheduledContactReminders.php88 private function updateNumberOfTimesTriggered(int $id): voidCODE
LOW…act/ManageReminders/Services/UpdateContactReminder.php84 private function deleteOldScheduledReminders(): voidCODE
LOW…act/ManageReminders/Services/UpdateContactReminder.php89 private function scheduledReminderForAllUsersInVault(): voidCODE
LOW…act/ManageReminders/Services/CreateContactReminder.php82 private function scheduledReminderForAllUsersInVault(): voidCODE
LOW…nageContactImportantDates/Dav/ImportImportantDates.php90 private function createContactImportantDate(Contact $contact, array $date): voidCODE
LOW…nageContactImportantDates/Dav/ImportImportantDates.php105 private function updateContactImportantDate(Contact $contact, ContactImportantDate $importantDate): boolCODE
LOW…nageContactImportantDates/Dav/ImportImportantDates.php127 private function removeContactImportantDate(Contact $contact, ContactImportantDate $importantDate): voidCODE
LOW…t/DavClient/Services/Utils/AddressBookSynchronizer.php205 private function callSyncCollectionWhenNeeded(): arrayCODE
LOW…ct/DavClient/Services/Utils/PrepareJobsContactPush.php74 private function preparePushChangedContacts(Collection $contacts, Collection $changes): CollectionCODE
LOW…Client/Services/Utils/PrepareJobsContactPushMissed.php42 private function preparePushMissedContacts(Collection $added, Collection $distContacts, Collection $localContacts): CODE
LOW…ains/Contact/Dav/Web/Backend/CalDAV/ICalDAVBackend.php98 public function updateOrCreateCalendarObject(?string $calendarId, string $objectUri, string $calendarData): ?string;CODE
LOW…ntact/Dav/Web/Backend/CalDAV/AbstractCalDAVBackend.php119 public function updateOrCreateCalendarObject(?string $calendarId, ?string $objectUri, ?string $calendarData): ?strinCODE
LOW…ageContactInformation/Dav/ExportContactInformation.php42 private function addContactInformationToVCard(VCard $vcard, ContactInformation $contactInformation)CODE
LOW…tings/Web/ViewHelpers/VaultSettingsIndexViewHelper.php334 public static function dtoQuickFactTemplateEntry(VaultQuickFactsTemplate $template): arrayCODE
LOW…ult/ManageVaultSettings/Services/RemoveVaultAccess.php88 private function removeAllRemindersForThisUserInThisVault(): voidCODE
LOWapp/Domains/Vault/ManageVault/Services/CreateVault.php96 private function populateDefaultContactImportantDateTypes(): voidCODE
LOWapp/Domains/Vault/ManageVault/Services/CreateVault.php117 private function populateMoodTrackingParameters(): voidCODE
LOWapp/Domains/Vault/ManageVault/Services/CreateVault.php156 private function populateDefaultLifeEventCategories(): voidCODE
LOWapp/Domains/Vault/ManageVault/Services/CreateVault.php336 private function populateDefaultQuickVaultTemplateEntries(): voidCODE
LOWapp/Traits/JsonRespondController.php70 public function respondNotTheRightParameters(?string $message = null): JsonResponseCODE
LOWapp/Providers/TelescopeServiceProvider.php42 protected function hideSensitiveRequestDetails()CODE
LOWapp/Models/Note.php52 public function searchIndexShouldBeUpdated()CODE
LOWapp/Models/Group.php58 public function searchIndexShouldBeUpdated()CODE
LOWapp/Models/Vault.php141 public function contactImportantDateTypes(): HasManyCODE
LOWapp/Models/Vault.php251 public function quickFactsTemplateEntries(): HasManyCODE
LOWapp/Models/User.php160 public function sendEmailVerificationNotification(): voidCODE
LOWapp/Models/Contact.php134 public function searchIndexShouldBeUpdated()CODE
LOWapp/Models/Loan.php58 public function searchIndexShouldBeUpdated()CODE
LOWapp/Actions/AttemptToAuthenticateSocialite.php176 protected function throwFailedAuthenticationException(Request $request, string $driver, ?string $message = null): voCODE
LOWapp/Actions/AttemptToAuthenticateSocialite.php200 protected function twoFactorChallengeResponse(Request $request, ?User $user): ResponseCODE
LOWapp/Actions/AttemptToAuthenticateWebauthn.php83 protected function throwFailedAuthenticationException(Request $request)CODE
LOW…Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php59 protected function throwFailedAuthenticationException(Request $request): voidCODE
LOW…Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php84 protected function twoFactorChallengeResponse(Request $request, ?User $user)CODE
LOWapp/Helpers/DateHelper.php89 public static function formatDayAndMonthInParenthesis(Carbon $date, ?string $timezone = null): stringCODE
LOWapp/Helpers/VaultHelper.php14 public static function getPermissionFriendlyName(int $permission): stringCODE
LOWapp/Helpers/UserHelper.php15 public static function getInformationAboutContact(User $user, Vault $vault): ?arrayCODE
LOWapp/Helpers/UserHelper.php21 private static function internalGetInformationAboutContact(User $user, Vault $vault): ?arrayCODE
LOWapp/Services/BaseService.php159 private function validateAuthorBelongsToAccount(array $data): voidCODE
LOWapp/Services/BaseService.php170 private function validateAuthorIsAccountAdministrator(): voidCODE
LOWapp/Services/BaseService.php190 public function validateUserPermissionInVault(int $permission): voidCODE
LOWapp/Services/BaseService.php205 public function validateContactBelongsToVault(array $data): voidCODE
LOWapp/Services/BaseService.php220 public function validateGroupBelongsToVault(array $data): voidCODE
LOW…emplates/Services/RemoveModuleFromTemplatePageTest.php99 private function associateTemplatePageAndModule(Account $accountA, Account $accountB): voidCODE
Fake / Example Data28 hits · 28 pts
SeverityFileLineSnippetContext
LOWconfig/scribe.php120 'placeholder' => '{YOUR_AUTH_KEY}',CODE
LOWresources/js/Shared/Form/TextInput.vue107 :placeholder="placeholder"CODE
LOWresources/js/Shared/Form/ComboBox.vue94 :placeholder="placeholder"CODE
LOWresources/js/Shared/Form/ComboBox.vue108 :placeholder="placeholder"CODE
LOWresources/js/Shared/Form/Dropdown.vue92 :placeholder="placeholder"CODE
LOWresources/js/Shared/Form/ContactSelector.vue187 :placeholder="placeholder"CODE
LOW…omains/Contact/ManageContact/Dav/ImportContactTest.php62 'FN' => 'John Doe',CODE
LOW…omains/Contact/ManageContact/Dav/ImportContactTest.php83 'FN' => 'John Doe',CODE
LOW…omains/Contact/ManageContact/Dav/ImportContactTest.php102 'FN' => 'John Doe',CODE
LOW…iewHelpers/Actions/ActionFeedMoodTrackingEventTest.php53 'name' => 'John Doe',CODE
LOW…rs/Actions/ActionFeedGenericContactInformationTest.php31 'name' => 'John Doe',CODE
LOW…eb/ViewHelpers/Actions/ActionFeedLabelAssignedTest.php50 'name' => 'John Doe',CODE
LOW…Feed/Web/ViewHelpers/Actions/ActionFeedAddressTest.php79 'name' => 'John Doe',CODE
LOW…ewHelpers/Actions/ActionFeedContactInformationTest.php59 'name' => 'John Doe',CODE
LOW…actFeed/Web/ViewHelpers/Actions/ActionFeedGoalTest.php48 'name' => 'John Doe',CODE
LOW…actFeed/Web/ViewHelpers/Actions/ActionFeedNoteTest.php50 'name' => 'John Doe',CODE
LOW…tactFeed/Web/ViewHelpers/Actions/ActionFeedPetTest.php56 'name' => 'John Doe',CODE
LOW…/Unit/Domains/Contact/DAV/Services/ImportVCardTest.php130 'FN' => 'John Doe',CODE
LOW…/Unit/Domains/Contact/DAV/Services/ImportVCardTest.php253 'FN' => 'John Doe',CODE
LOW…nageNotes/Web/ViewHelpers/NotesIndexViewHelperTest.php61 'name' => 'John Doe',CODE
LOW…ontactInformation/Dav/ImportContactInformationTest.php46 'EMAIL' => 'test@test.com',CODE
LOW…ontactInformation/Dav/ImportContactInformationTest.php53 $this->assertEquals('test@test.com', $email->data);CODE
LOW…ontactInformation/Dav/ImportContactInformationTest.php78 $vcard->add('EMAIL', 'test@test.com', [CODE
LOW…ontactInformation/Dav/ImportContactInformationTest.php86 $this->assertEquals('test@test.com', $email->data);CODE
LOW…ontactInformation/Dav/ImportContactInformationTest.php109 $vcard->add('EMAIL', 'test@test.com', [CODE
LOW…ontactInformation/Dav/ImportContactInformationTest.php117 $this->assertEquals('test@test.com', $email->data);CODE
LOW…ontactInformation/Dav/ImportContactInformationTest.php300 'EMAIL' => 'test@test.com',CODE
LOW…ontactInformation/Dav/ImportContactInformationTest.php308 $this->assertEquals('test@test.com', $contactInformation->data);CODE
Over-Commented Block7 hits · 7 pts
SeverityFileLineSnippetContext
LOWconfig/scribe.php181 // so make sure it points to an accessible URL or path. Set to false to not use a logo.COMMENT
LOWresources/js/bootstrap.js21// import Echo from 'laravel-echo';COMMENT
LOWtests/Unit/Domains/Contact/DAV/Services/CardDAVTest.php201 // $user = $this->createUser();COMMENT
LOWtests/Unit/Domains/Contact/DAV/Services/CardDAVTest.php221 // $response->assertHeader('X-Sabre-Version');COMMENT
LOWtests/Unit/Domains/Contact/DAV/Services/CardDAVTest.php241 // $response = $this->call('PROPPATCH', "/dav/addressbooks/{$user->email}/contacts", [], [], [],COMMENT
LOW…ts/Unit/Domains/Contact/DAV/Services/DAVServerTest.php181 // $response->assertStatus(207);COMMENT
LOW…ts/Unit/Domains/Contact/DAV/Services/DAVServerTest.php201COMMENT
Slop Phrases2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMconfig/telescope.php113 | a request or task is executed. Feel free to customize this list.CODE
LOWconfig/scribe.php84 // Don't forget to enable CORS headers for your endpoints.COMMENT