AI Slop Code Risk Monitor

julyx10/lap

SlopCodeMonitor badge for julyx10/lap Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).
2.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for julyx10/lap. SynthScan examined 146,822 lines of code across 259 source files, recording 262 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 2.9 (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.9
Adjusted Signal
2.9
Raw Pattern Score
100%
Time Factor
—
Last Push
—
Stars
—
Language
146.8K
Lines of Code
259
Files
262
Pattern Hits
2026-10-31
Scan Date
0.06
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 5.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 8.6/100 · LOW

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

Agent Over-Engineering Ratio 4.5/100 · LOW

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

PR Review Velocity Impact 12.8/100 · LOW

Which changes need focused human review? 262 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 14HIGH 1MEDIUM 4LOW 243

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 262 distinct pattern matches across 10 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.

Hallucination Indicators14 hits · 185 pts
SeverityFileLineSnippetContext
CRITICAL⚡src-vite/src/components/Content.vue2481 ? localeMsg.value.msgbox.permanent_delete.files_content.replace('{count}', deleteCount.toLocaleString())CODE
CRITICAL⚡src-vite/src/components/Content.vue2482 : localeMsg.value.msgbox.permanent_delete.file_content.replace('{file}', fileList.value[selectedItemIndex.value]CODE
CRITICAL⚡src-vite/src/components/Content.vue2484 ? localeMsg.value.msgbox.move_to_trash.files_content.replace('{count}', deleteCount.toLocaleString())CODE
CRITICAL⚡src-vite/src/components/Content.vue2485 : localeMsg.value.msgbox.move_to_trash.file_content.replace('{file}', fileList.value[selectedItemIndex.value]?.nCODE
CRITICAL⚡src-vite/src/components/Content.vue2487 ? `\n${localeMsg.value.msgbox.move_to_trash.raw_jpeg_companions_content.replace('{count}', rawJpegCompanionDeleteCouCODE
CRITICAL⚡src-vite/src/components/Content.vue9087 ? localeMsg.value.msgbox.permanent_delete.file_success.replace('{file}', fileName)CODE
CRITICAL⚡src-vite/src/components/Content.vue9088 : localeMsg.value.msgbox.move_to_trash.file_success.replace('{file}', fileName);CODE
CRITICAL⚡src-vite/src/components/Content.vue9092 ? localeMsg.value.msgbox.permanent_delete.files_success.replace('{count}', count.toLocaleString())CODE
CRITICAL⚡src-vite/src/components/Content.vue9093 : localeMsg.value.msgbox.move_to_trash.files_success.replace('{count}', count.toLocaleString());CODE
CRITICALsrc-vite/src/components/Content.vue2498 return localeMsg.value.msgbox.trash_failed.files_content.replace('{count}', deleteCount.toLocaleString());CODE
CRITICALsrc-vite/src/components/Content.vue2500 return localeMsg.value.msgbox.trash_failed.file_content.replace(CODE
CRITICALsrc-vite/src/common/updater.ts81 return localeMsg.value.settings.about.auto_update.downloading.replace(CODE
CRITICALsrc-vite/src/common/updater.ts104 return localeMsg.value.settings.about.auto_update.new_version_available.replace('{version}', updateVersion.value);CODE
CRITICALsrc-vite/src/common/updater.ts223 localeMsg.value.settings.about.auto_update.new_version_available.replace('{version}', update.version),CODE
Hyper-Verbose Identifiers151 hits · 136 pts
SeverityFileLineSnippetContext
LOWsrc-vite/src/App.vue201function handleMainWindowScaleShortcut(event) {CODE
LOWsrc-vite/src/composables/useAlbumSelection.ts30export function useAlbumSelectionProvider(CODE
LOWsrc-vite/src/components/SmartAlbumList.vue277function handleSmartAlbumContextMenu(smartAlbum: any, event: MouseEvent) {CODE
LOWsrc-vite/src/components/SmartAlbumList.vue308function handleReorderOutsidePointerDown(event: PointerEvent) {CODE
LOWsrc-vite/src/components/Content.vue11138// function startDraggingfilmStripView(event: MouseEvent) {COMMENT
LOWsrc-vite/src/components/Content.vue921function handleTitleBreadcrumbNavigate(path: string) {CODE
LOWsrc-vite/src/components/Content.vue1095async function refreshSelectionPanelPreviews() {CODE
LOWsrc-vite/src/components/Content.vue1147function removeDeletedFilesFromImageViewerSession(fileIds: number[]) {CODE
LOWsrc-vite/src/components/Content.vue1168async function finishSelectedFileRefresh(results: Array<{ file: any; size_delta: number; skipped: boolean }>) {CODE
LOWsrc-vite/src/components/Content.vue1273function handleSelectionContextMenu(index: number, event: MouseEvent) {CODE
LOWsrc-vite/src/components/Content.vue1319function clearSelectionForFileListUpdate() {CODE
LOWsrc-vite/src/components/Content.vue1336function captureSelectionForFileListRefresh() {CODE
LOWsrc-vite/src/components/Content.vue1356async function restoreSelectionAfterFileListRefresh() {CODE
LOWsrc-vite/src/components/Content.vue1442function rememberFocusedFileForPresentationRefresh() {CODE
LOWsrc-vite/src/components/Content.vue1447async function restoreFocusedFileAfterListRefresh() {CODE
LOWsrc-vite/src/components/Content.vue1522function clearLoadedSelectionFlags() {CODE
LOWsrc-vite/src/components/Content.vue1571function getActiveCustomSmartAlbum() {CODE
LOWsrc-vite/src/components/Content.vue1631function isGroupingSupportedForCurrentView() {CODE
LOWsrc-vite/src/components/Content.vue1813function updateGroupSelectedCountForFile(file: any, delta: number) {CODE
LOWsrc-vite/src/components/Content.vue1836function recomputeLoadedGroupSelectedCounts() {CODE
LOWsrc-vite/src/components/Content.vue1861function normalizeGroupedRowsResult(result: any) {CODE
LOWsrc-vite/src/components/Content.vue1918function getGroupedRowIndexForFileIndex(fileIndex: number) {CODE
LOWsrc-vite/src/components/Content.vue1934function getGroupedFileIndexForRowIndex(rowIndex: number) {CODE
LOWsrc-vite/src/components/Content.vue2055function handleQuickViewMouseLeave() {CODE
LOWsrc-vite/src/components/Content.vue2072function getCurrentPreviewImageSrc() {CODE
LOWsrc-vite/src/components/Content.vue2199async function refreshGridLayoutPreservingScroll() {CODE
LOWsrc-vite/src/components/Content.vue2212function clearRightPanelAnimationTimer() {CODE
LOWsrc-vite/src/components/Content.vue2259function migrateRightPanelWidthToPixels() {CODE
LOWsrc-vite/src/components/Content.vue2375async function removeFileFromCurrentCollection(index: number) {CODE
LOWsrc-vite/src/components/Content.vue2393async function removeSelectedFromCollection() {CODE
LOWsrc-vite/src/components/Content.vue2752async function resolveAlbumImportDestination(albumId: number, folderPath?: string) {CODE
LOWsrc-vite/src/components/Content.vue2764async function resolveCurrentAlbumImportDestination() {CODE
LOWsrc-vite/src/components/Content.vue3148function updateContentDragPosition(event: PointerEvent) {CODE
LOWsrc-vite/src/components/Content.vue3473async function refreshFolderSidebarCount(path: string) {CODE
LOWsrc-vite/src/components/Content.vue3494async function refreshFolderSidebarCounts(changedPaths: string[]) {CODE
LOWsrc-vite/src/components/Content.vue3525function matchesRequestedSidebarCount(request: any) {CODE
LOWsrc-vite/src/components/Content.vue3560function commitRequestedSidebarCount(count: number, request = uiStore.countUpdateRequest) {CODE
LOWsrc-vite/src/components/Content.vue3808function waitForContentLoadingPaint() {CODE
LOWsrc-vite/src/components/Content.vue3814function refreshContentFromSelectionChange() {CODE
LOWsrc-vite/src/components/Content.vue3874async function refreshImportedAlbumContent(albumId: number) {CODE
LOWsrc-vite/src/components/Content.vue4008async function selectRangeFromSingleSelection(anchorIndex: number, targetIndex: number) {CODE
LOWsrc-vite/src/components/Content.vue4221function unselectFileFromSelection(fileId: number) {CODE
LOWsrc-vite/src/components/Content.vue4258function currentOriginalsUnavailable() {CODE
LOWsrc-vite/src/components/Content.vue4973function handleQuickPreviewShortcut(event: { key: string; code?: string; repeat?: boolean }): boolean {CODE
LOWsrc-vite/src/components/Content.vue5015function isContentInteractionActive() {CODE
LOWsrc-vite/src/components/Content.vue5361function buildScanStreamQueryParams() {CODE
LOWsrc-vite/src/components/Content.vue5472async function scheduleScanStreamingPull(albumId: number, current: number) {CODE
LOWsrc-vite/src/components/Content.vue5517function restoreScrollAfterRefresh() {CODE
LOWsrc-vite/src/components/Content.vue6171function restoreInitialSelectionIfNeeded() {CODE
LOWsrc-vite/src/components/Content.vue6961async function initializeGroupedFileList(requestId: number) {CODE
LOWsrc-vite/src/components/Content.vue7091async function hydrateSelectedFilesByIds() {CODE
LOWsrc-vite/src/components/Content.vue7132async function getActionableSelectedItemsForAction() {CODE
LOWsrc-vite/src/components/Content.vue7152async function getSelectedItemsForClipboard(limit = 10) {CODE
LOWsrc-vite/src/components/Content.vue7189async function fetchMissingVisibleThumbnails(startIndex: number, endIndex: number) {CODE
LOWsrc-vite/src/components/Content.vue7379async function getMapSearchClusterFileList(fileIds: number[], gpsParams: Record<string, any>, requestId: number, exactMeCODE
LOWsrc-vite/src/components/Content.vue8695function rebuildSelectionAfterListMutation(selectedIds: Set<number>) {CODE
LOWsrc-vite/src/components/Content.vue9454async function refreshGroupedRowsAfterDelete(fileIds: number[]) {CODE
LOWsrc-vite/src/components/Content.vue9552function getNextVideoThumbnailRefreshPercent(file: any) {CODE
LOWsrc-vite/src/components/Content.vue9599function handleDedupCullingStatusUpdated(fileId: number, cullingFlag: number) {CODE
LOWsrc-vite/src/components/Content.vue9691function advanceAfterMetadataShortcut(fileId: number, requestId: number) {CODE
91 more matches not shown…
Fake / Example Data75 hits · 75 pts
SeverityFileLineSnippetContext
LOWsrc-vite/src/locales/hu.json450 "placeholder": "Keresés fájlnévre"CODE
LOWsrc-vite/src/locales/hu.json851 "placeholder": "Könyvtárnév megadása",CODE
LOWsrc-vite/src/locales/hu.json924 "placeholder": "Új fájlnév megadása",CODE
LOWsrc-vite/src/locales/hu.json931 "placeholder": "Új név",CODE
LOWsrc-vite/src/locales/hu.json999 "placeholder": "Leírás megadása",CODE
LOWsrc-vite/src/locales/nl.json450 "placeholder": "Zoek op bestandsnaam"CODE
LOWsrc-vite/src/locales/nl.json851 "placeholder": "Voer een bibliotheeknaam in",CODE
LOWsrc-vite/src/locales/nl.json924 "placeholder": "Voer een nieuwe bestandsnaam in",CODE
LOWsrc-vite/src/locales/nl.json931 "placeholder": "Nieuwe naam",CODE
LOWsrc-vite/src/locales/nl.json999 "placeholder": "Voer een beschrijving in",CODE
LOWsrc-vite/src/locales/ja.json450 "placeholder": "ファイル名を検索"CODE
LOWsrc-vite/src/locales/ja.json851 "placeholder": "ライブラリ名",CODE
LOWsrc-vite/src/locales/ja.json924 "placeholder": "新しいファイル名を入力",CODE
LOWsrc-vite/src/locales/ja.json931 "placeholder": "新しい名前",CODE
LOWsrc-vite/src/locales/ja.json999 "placeholder": "説明を入力",CODE
LOWsrc-vite/src/locales/de.json450 "placeholder": "Dateiname"CODE
LOWsrc-vite/src/locales/de.json851 "placeholder": "Bibliotheksname",CODE
LOWsrc-vite/src/locales/de.json924 "placeholder": "Neuen Dateinamen eingeben",CODE
LOWsrc-vite/src/locales/de.json931 "placeholder": "Neuer Name",CODE
LOWsrc-vite/src/locales/de.json999 "placeholder": "Beschreibung eingeben",CODE
LOWsrc-vite/src/locales/ru.json450 "placeholder": "Имя файла"CODE
LOWsrc-vite/src/locales/ru.json851 "placeholder": "Имя библиотеки",CODE
LOWsrc-vite/src/locales/ru.json924 "placeholder": "Введите новое имя файла",CODE
LOWsrc-vite/src/locales/ru.json931 "placeholder": "Новое имя",CODE
LOWsrc-vite/src/locales/ru.json999 "placeholder": "Введите описание",CODE
LOWsrc-vite/src/locales/pl.json450 "placeholder": "Szukaj nazwy pliku"CODE
LOWsrc-vite/src/locales/pl.json851 "placeholder": "Wprowadź nazwę biblioteki",CODE
LOWsrc-vite/src/locales/pl.json924 "placeholder": "Wprowadź nową nazwę pliku",CODE
LOWsrc-vite/src/locales/pl.json931 "placeholder": "Nowa nazwa",CODE
LOWsrc-vite/src/locales/pl.json999 "placeholder": "Wprowadź opis",CODE
LOWsrc-vite/src/locales/uk.json450 "placeholder": "Шукати за назвою файлу"CODE
LOWsrc-vite/src/locales/uk.json851 "placeholder": "Введіть назву бібліотеки",CODE
LOWsrc-vite/src/locales/uk.json924 "placeholder": "Введіть нову назву файлу",CODE
LOWsrc-vite/src/locales/uk.json931 "placeholder": "Нова назва",CODE
LOWsrc-vite/src/locales/uk.json999 "placeholder": "Введіть опис",CODE
LOWsrc-vite/src/locales/zh-CN.json450 "placeholder": "搜索文件名"CODE
LOWsrc-vite/src/locales/zh-CN.json851 "placeholder": "输入库的名称",CODE
LOWsrc-vite/src/locales/zh-CN.json924 "placeholder": "输入新文件名",CODE
LOWsrc-vite/src/locales/zh-CN.json931 "placeholder": "新名称",CODE
LOWsrc-vite/src/locales/zh-CN.json999 "placeholder": "输入描述",CODE
LOWsrc-vite/src/locales/pt.json450 "placeholder": "Nome do arquivo"CODE
LOWsrc-vite/src/locales/pt.json851 "placeholder": "Nome da biblioteca",CODE
LOWsrc-vite/src/locales/pt.json924 "placeholder": "Digite um novo nome de arquivo",CODE
LOWsrc-vite/src/locales/pt.json931 "placeholder": "Novo nome",CODE
LOWsrc-vite/src/locales/pt.json999 "placeholder": "Introduzir descrição",CODE
LOWsrc-vite/src/locales/en.json450 "placeholder": "Search file name"CODE
LOWsrc-vite/src/locales/en.json851 "placeholder": "Enter library name",CODE
LOWsrc-vite/src/locales/en.json924 "placeholder": "Enter a new file name",CODE
LOWsrc-vite/src/locales/en.json931 "placeholder": "New name",CODE
LOWsrc-vite/src/locales/en.json999 "placeholder": "Enter description",CODE
LOWsrc-vite/src/locales/it.json450 "placeholder": "Cerca nome file"CODE
LOWsrc-vite/src/locales/it.json851 "placeholder": "Inserisci il nome della libreria",CODE
LOWsrc-vite/src/locales/it.json924 "placeholder": "Inserisci un nuovo nome file",CODE
LOWsrc-vite/src/locales/it.json931 "placeholder": "Nuovo nome",CODE
LOWsrc-vite/src/locales/it.json999 "placeholder": "Inserisci descrizione",CODE
LOWsrc-vite/src/locales/fr.json450 "placeholder": "Nom de fichier"CODE
LOWsrc-vite/src/locales/fr.json851 "placeholder": "Nom bibliothèque",CODE
LOWsrc-vite/src/locales/fr.json924 "placeholder": "Entrer un nouveau nom de fichier",CODE
LOWsrc-vite/src/locales/fr.json931 "placeholder": "Nouveau nom",CODE
LOWsrc-vite/src/locales/fr.json999 "placeholder": "Saisir une description",CODE
15 more matches not shown…
Over-Commented Block12 hits · 12 pts
SeverityFileLineSnippetContext
LOWsrc-vite/src/components/Image.vue681 // We need to compare paths. The src might be a full URL (asset://...) while filePath is absolute pathCOMMENT
LOWsrc-vite/src/common/layout.ts81 // Width if scaled to targetHeightCOMMENT
LOWscripts/remove_appimage_wayland_client.sh1#!/usr/bin/env bashCOMMENT
LOWsrc-tauri/src/t_sqlite.rs3361 }COMMENT
LOWsrc-tauri/src/t_sqlite.rs3381 // .query_map(params![album_id], |row| {COMMENT
LOWsrc-tauri/src/t_sqlite.rs7821 updated_at: Some(Self::now_ts()),COMMENT
LOWsrc-tauri/src/t_xmp.rs1//! XMP sidecar import, non-destructive writeback, and local-edit protection.COMMENT
LOWsrc-tauri/src/t_xmp.rs61pub struct XmpMetadata {COMMENT
LOWsrc-tauri/src/t_xmp.rs81 pub hierarchical_tags: Option<Vec<String>>,COMMENT
LOWsrc-tauri/src/t_motion_photo.rs1//! Android Motion Photo detection.COMMENT
LOWsrc-tauri/src/t_face.rs481COMMENT
LOWsrc-tauri/src/t_cmds.rs221COMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMsrc-tauri/src/t_sqlite.rs2633 // that the permissive EXIF reader scans, so it is robust againstCOMMENT
MEDIUMsrc-tauri/src/t_sqlite.rs10469 // Ideally we should check strict versioning but for now this is robust enough for simple addition.COMMENT
MEDIUMsrc-tauri/src/t_utils.rs3471 // Some EXIF dates might use different separators or formats, so we can try to be a bit more robustCOMMENT
Verbosity Indicators2 hits · 3 pts
SeverityFileLineSnippetContext
LOWsrc-tauri/src/t_dedup.rs191 // Step 3: Hash themCOMMENT
LOWsrc-tauri/src/t_dedup.rs248 // Step 4: Rebuild duplicate groupsCOMMENT
Structural Annotation Overuse2 hits · 3 pts
SeverityFileLineSnippetContext
LOWsrc-tauri/src/t_dedup.rs191 // Step 3: Hash themCOMMENT
LOWsrc-tauri/src/t_dedup.rs248 // Step 4: Rebuild duplicate groupsCOMMENT
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc-tauri/src/t_cmds.rs2044/// where Tauri cannot provide file paths).COMMENT
Cross-Language Confusion1 hit · 2 pts
SeverityFileLineSnippetContext
HIGHscripts/test_metadata_reader.py13Frontend action tests: cd src-vite && npm run test:xmp.STRING
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/remove_appimage_wayland_client.sh17# Usage:COMMENT