AI Slop Code Risk Monitor

web-infra-dev/midscene

SlopCodeMonitor badge for web-infra-dev/midscene Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

See interfaces like a human. E2E testing in natural language.

2.1 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for web-infra-dev/midscene, a TypeScript project with 15,450 GitHub stars. SynthScan examined 470,530 lines of code across 2309 source files, recording 774 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 2.1 (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.1
Adjusted Signal
2.1
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
15.4K
Stars
TypeScript
Language
470.5K
Lines of Code
2.3K
Files
774
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 8.6/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.8/100 · LOW

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

Agent Over-Engineering Ratio 6.9/100 · LOW

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

PR Review Velocity Impact 9.1/100 · LOW

Which changes need focused human review? 774 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 5HIGH 2MEDIUM 36LOW 731

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 774 distinct pattern matches across 11 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 Identifiers592 hits · 600 pts
SeverityFileLineSnippetContext
LOWpackages/playground-app/src/SessionSetupPanel.tsx14function getPlatformSelectorFieldKey(CODE
LOWpackages/playground-app/src/SessionSetupPanel.tsx20export function getPlatformSelectorOptions(CODE
LOWpackages/playground-app/src/session-setup.ts8export function resolveAutoCreateSessionInput(CODE
LOWpackages/playground-app/src/DeviceInteractionLayer.tsx144function hasHostSelectionOutsideOverlay(overlay: HTMLElement | null): boolean {CODE
LOWpackages/playground-app/src/session-state.ts40export function buildSessionInitialValues(CODE
LOWpackages/playground-app/src/scrcpy-preview.ts30export function isScrcpyPreviewStatusEvent(CODE
LOWpackages/playground-app/src/scrcpy-preview.ts41export function isScrcpyPreviewErrorEvent(CODE
LOW⚡packages/playground-app/src/scrcpy-preview.ts76export function getDefaultScrcpyWaitingStatusText(): string {CODE
LOW⚡packages/playground-app/src/scrcpy-preview.ts80export function getScrcpyDecoderStatusText(): string {CODE
LOW⚡packages/playground-app/src/scrcpy-preview.ts84export function getScrcpyPreviewStatusText(CODE
LOWpackages/playground-app/src/scrcpy-preview.ts104export function getScrcpyMetadataTimeoutMessage(CODE
LOWpackages/playground-app/src/manual-interaction.ts3export function buildManualDragInteractPayload(CODE
LOWpackages/playground-app/src/manual-interaction.ts27export function buildManualScrollInteractPayload(CODE
LOWpackages/playground-app/src/runtime-info.ts32export function normalizeRuntimeDeviceType(CODE
LOWpackages/playground-app/src/runtime-info.ts70export function filterValidExecutionUxHints(CODE
LOWpackages/playground-app/src/runtime-info.ts79export function resolvePreviewConnectionInfo(CODE
LOW…yground-app/src/panels/PlaygroundConversationPanel.tsx38export function PlaygroundConversationPanel({CODE
LOWpackages/playground-app/src/controller/ai-config.ts9export function serializePlaygroundAiConfig(CODE
LOW…ayground-app/src/controller/usePlaygroundController.ts37function getPlatformSelectorFieldKey(CODE
LOWpackages/playground-app/src/controller/selectors.ts51export function buildConversationBranding(CODE
LOW…s/playground-app/src/controller/create-agent-error.tsx33export function getPuppeteerChromeInstallCommand(): string {CODE
LOW…s/playground-app/src/controller/create-agent-error.tsx87export function isPuppeteerChromeMissingError(error: unknown): boolean {CODE
LOW…s/playground-app/src/controller/create-agent-error.tsx220export function getCreateAgentErrorNotification(CODE
LOWpackages/playground-app/src/controller/auto-create.ts24export function resolveAutoCreateDecision({CODE
LOWpackages/playground-app/src/controller/auto-create.ts44export function shouldResetAutoCreateBlock(options?: {CODE
LOWpackages/core/tests/unit-test/model-adapter.test.ts16function createTestPlannerDefinition(): CustomPlanningDefinition<null> {CODE
LOW…es/core/tests/unit-test/agent-describe-element.test.ts38function createElementDescriberRuntime(agent: Agent): ElementDescriberRuntime {CODE
LOWpackages/core/tests/unit-test/grounding.test.ts8function adaptElementLocateResultToRect(CODE
LOW…ts/unit-test/report-generator-reference-images.test.ts29function createPlanningExecutionWithReferenceImage(options: {CODE
LOW…ts/unit-test/report-generator-reference-images.test.ts81function referenceImageRefsFromDump(CODE
LOW…ts/unit-test/report-generator-reference-images.test.ts89function firstPlanningReferenceImageUrl(execution: ExecutionDump): string {CODE
LOW…/tests/unit-test/task-executor-custom-planning.test.ts60function createCustomPlanningModel(plannedActions: any[] = []): ModelRuntime {CODE
LOW…es/core/tests/unit-test/player-action-dispatch.test.ts22function createPlayerWithActionSpace(actionSpace: any[]) {CODE
LOW…tests/unit-test/model-adapter/auto-glm/actions.test.ts27function transformAutoGLMActionForTest(CODE
LOW…/unit-test/model-adapter/ui-tars/locate-result.test.ts10function getUiTarsLocateResultCodec() {CODE
LOW…e/tests/unit-test/test-helpers/agent-report-manager.ts7export function installAgentReportManager(agent: Agent): void {CODE
LOW…kages/core/tests/unit-test/test-helpers/report-html.ts42export function extractGroupedDumpScripts(html: string): ScriptTag[] {CODE
LOW…/core/tests/unit-test/test-helpers/report-generator.ts53export function buildIncrementalExecution(CODE
LOW…/core/tests/unit-test/test-helpers/report-generator.ts89export async function createPatternedPngFixture() {CODE
LOWpackages/core/src/report.ts95function readDeclaredScreenshotMode(CODE
LOWpackages/core/src/report.ts1168function externalizeImagesInExecution(CODE
LOWpackages/core/src/report.ts1223export function splitReportHtmlByExecution(CODE
LOWpackages/core/src/report-markdown.ts543function screenshotsMarkdownSection(CODE
LOWpackages/core/src/element-describer.ts332export async function verifyElementDescriptionAtPoint(CODE
LOWpackages/core/src/common.ts9export function findActionInActionSpaceOrThrow(CODE
LOWpackages/core/src/common.ts218export function validateRequiredLocateFields(CODE
LOWpackages/core/src/utils.ts127export function insertContentBeforeClosingHtml(CODE
LOWpackages/core/src/utils.ts142export function insertScriptBeforeClosingHtml(CODE
LOWpackages/core/src/report-cli.ts70function writeAttachmentFromReport(CODE
LOWpackages/core/src/report-cli.ts252function deriveReportAttributesFromHtml(CODE
LOWpackages/core/src/report-generator.ts111export function assertReportGenerationOptions(opts: {CODE
LOWpackages/core/src/dump/html-utils.ts52function collectUsageModelsForAgent(report: IReportActionDump): string {CODE
LOWpackages/core/src/dump/html-utils.ts80export function generateAgentReportComment(report: IReportActionDump): string {CODE
LOWpackages/core/src/dump/html-utils.ts113export function generateReportArtifactScriptTag(path: string): string {CODE
LOWpackages/core/src/dump/html-utils.ts125function reportArtifactPathExtractor(filePath: string) {CODE
LOWpackages/core/src/dump/html-utils.ts151export function extractReportArtifactPathSync(CODE
LOWpackages/core/src/dump/html-utils.ts164export async function extractReportArtifactPathAsync(CODE
LOWpackages/core/src/dump/html-utils.ts202export function generateTestRunReportScriptTag(CODE
LOWpackages/core/src/dump/html-utils.ts217export function extractTestRunReportDumpSync(CODE
LOWpackages/core/src/dump/html-utils.ts459export function extractLastDumpScriptSync(filePath: string): string {CODE
532 more matches not shown…
Verbosity Indicators52 hits · 96 pts
SeverityFileLineSnippetContext
LOW⚡packages/core/tests/unit-test/search-area.test.ts85 // Step 1: expand 100px each side -> {left: 400, top: 400, width: 250, height: 250}COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts87 // Step 2: scale to 400x400 from center (525, 525)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts119 // Step 1: left can only expand 10px (10-100 clamped to 0)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts122 // Step 2: center (80, 525), scale factor = 2.0, new size = 320x500COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts137 // Step 1: right can only expand 10px (original right 990, desired 1090, clamped to 1000)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts140 // Step 2: center (920, 525), scale factor = 2.0, new size = 320x500COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts155 // Step 1: top can only expand 10px (10-100 clamped to 0)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts158 // Step 2: center (525, 80), scale factor = 2.0, new size = 500x320COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts173 // Step 1: bottom can only expand 10px (original bottom 990, desired 1090, clamped to 1000)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts176 // Step 2: center (525, 920), scale factor = 2.0, new size = 500x320COMMENT
LOWpackages/core/tests/unit-test/search-area.test.ts103 // Step 1: expand 100px each side -> {left: 400, top: 400, width: 500, height: 500}COMMENT
LOWpackages/core/tests/unit-test/search-area.test.ts232 // Step 1: {left: 100, top: 100, width: 800, height: 800}COMMENT
LOWpackages/core/tests/unit-test/search-area.test.ts249 // Step 1: {left: 400, top: 400, width: 400, height: 400}COMMENT
LOWpackages/core/tests/unit-test/search-area.test.ts265 // Step 1: {left: 200, top: 400, width: 400, height: 220}COMMENT
LOWpackages/core/tests/unit-test/search-area.test.ts281 // Step 1: {left: 400, top: 200, width: 220, height: 400}COMMENT
LOW⚡…kages/core/tests/unit-test/merge-browser-parse.test.ts226 // Step 1: extract (what mergeReports does)COMMENT
LOW⚡…kages/core/tests/unit-test/merge-browser-parse.test.ts229 // Step 2: escape again (what reportHTMLContent does)COMMENT
LOW⚡…kages/core/tests/unit-test/merge-browser-parse.test.ts232 // Step 3: unescape (what browser does via antiEscapeScriptTag)COMMENT
LOW⚡packages/core/tests/unit-test/prompt/prompt.test.ts321 expect(prompt).toContain('## Step 1: Observe (related tags: <planning>)');CODE
LOW⚡packages/core/tests/unit-test/prompt/prompt.test.ts323 '## Step 1: Observe and Plan (related tags: <planning>, <update-plan-content>, <mark-sub-goal-done>)',CODE
LOWpackages/core/tests/unit-test/prompt/prompt.test.ts369 '## Step 1: Observe and Plan (related tags: <planning>, <update-plan-content>, <mark-sub-goal-done>)',CODE
LOW…s/core/src/ai-model/workflows/grounding/search-area.ts43 // Step 1: Extend each side by expandSize (100px), clamped to screen boundariesCOMMENT
LOW⚡…s/core/src/ai-model/workflows/grounding/search-area.ts61 // Step 2: Check if area is already >= 400x400COMMENT
LOW⚡…s/core/src/ai-model/workflows/grounding/search-area.ts68 // Step 2: Scale up from center to reach minimum 400x400 areaCOMMENT
LOW…ges/core/src/ai-model/prompt/planning/system-prompt.ts78## Step 1: ${renderSubGoalsContent(COMMENT
LOW…ges/core/src/ai-model/prompt/planning/system-prompt.ts161${renderSubGoalsContent(`## Step 2: Memory Data from Current Screenshot (related tags: <memory>)CODE
LOWpackages/computer/tests/ai/chrome-extension-helpers.ts608 // Step 1: Set alwaysAllow permissionCOMMENT
LOWpackages/computer/tests/ai/chrome-extension-helpers.ts619 // Step 2: Stop bridge, then start it so it uses the new permissionCOMMENT
LOWpackages/computer/src/device.ts1134 // Step 1: Take a screenshot (with timeout to handle screenshot-desktopCOMMENT
LOWpackages/computer/src/device.ts1151 // Step 2: Verify pointer control. Windows capture, display enumeration,COMMENT
LOWpackages/computer/src/device.ts1225 // Step 3: List available monitorsCOMMENT
LOW…n/tests/unit-test/yaml/input-mode-typeonly-e2e.test.ts28 // Step 1: Type first value using native PuppeteerCOMMENT
LOW⚡…n/tests/unit-test/yaml/input-mode-typeonly-e2e.test.ts39 // Step 2: Click button to change focusCOMMENT
LOW⚡…n/tests/unit-test/yaml/input-mode-typeonly-e2e.test.ts42 // Step 3: Simulate typeOnly behavior - click input and type without clearingCOMMENT
LOW…-integration/tests/ai/web/puppeteer/input-mode.test.ts22 // Step 1: Input first value (default replace mode)COMMENT
LOW…-integration/tests/ai/web/puppeteer/input-mode.test.ts33 // Step 2: Input second value with typeOnly mode (should append, not replace)COMMENT
LOW⚡…-integration/tests/ai/web/puppeteer/input-mode.test.ts73 // Step 1: Input first valueCOMMENT
LOW⚡…-integration/tests/ai/web/puppeteer/input-mode.test.ts83 // Step 2: Input second value with replace mode (default, should clear first)COMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts51 // Step 1: Verify initial stateCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts56 // Step 2: Pinch out (zoom in) on the zoom areaCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts63 // Step 3: Verify pinch worked — scale changedCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts68 // Step 4: Scroll down in the scroll area — this should still work after pinchCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts75 // Step 5: Verify scroll worked — bottom items are visibleCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts78 // Step 6: Scroll back up — confirm scroll is not brokenCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts85 // Step 7: Verify scroll up workedCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts88 // Step 8: Pinch in (zoom out) — confirm pinch still works after scrollingCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts95 // Step 9: Final scroll to confirm no residual conflictCOMMENT
LOWpackages/visualizer/src/types.ts151 // For these, we need to check if the field represents a location inputCOMMENT
LOW⚡…on/src/extension/recorder/components/ProgressModal.tsx493 // Step 0: Stop recording if currently recordingCOMMENT
LOW⚡…on/src/extension/recorder/components/ProgressModal.tsx503 // Step 1: Generate element descriptionsCOMMENT
LOW⚡…on/src/extension/recorder/components/ProgressModal.tsx513 // Step 2: Generate session title and description if not already generatedCOMMENT
LOW…on/src/extension/recorder/components/ProgressModal.tsx530 // Step 3: Generate code with streaming supportCOMMENT
Structural Annotation Overuse46 hits · 90 pts
SeverityFileLineSnippetContext
LOW⚡packages/core/tests/unit-test/search-area.test.ts85 // Step 1: expand 100px each side -> {left: 400, top: 400, width: 250, height: 250}COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts87 // Step 2: scale to 400x400 from center (525, 525)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts119 // Step 1: left can only expand 10px (10-100 clamped to 0)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts122 // Step 2: center (80, 525), scale factor = 2.0, new size = 320x500COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts137 // Step 1: right can only expand 10px (original right 990, desired 1090, clamped to 1000)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts140 // Step 2: center (920, 525), scale factor = 2.0, new size = 320x500COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts155 // Step 1: top can only expand 10px (10-100 clamped to 0)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts158 // Step 2: center (525, 80), scale factor = 2.0, new size = 500x320COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts173 // Step 1: bottom can only expand 10px (original bottom 990, desired 1090, clamped to 1000)COMMENT
LOW⚡packages/core/tests/unit-test/search-area.test.ts176 // Step 2: center (525, 920), scale factor = 2.0, new size = 500x320COMMENT
LOWpackages/core/tests/unit-test/search-area.test.ts103 // Step 1: expand 100px each side -> {left: 400, top: 400, width: 500, height: 500}COMMENT
LOW⚡…kages/core/tests/unit-test/merge-browser-parse.test.ts226 // Step 1: extract (what mergeReports does)COMMENT
LOW⚡…kages/core/tests/unit-test/merge-browser-parse.test.ts229 // Step 2: escape again (what reportHTMLContent does)COMMENT
LOW⚡…kages/core/tests/unit-test/merge-browser-parse.test.ts232 // Step 3: unescape (what browser does via antiEscapeScriptTag)COMMENT
LOW⚡packages/core/tests/unit-test/prompt/prompt.test.ts321 expect(prompt).toContain('## Step 1: Observe (related tags: <planning>)');CODE
LOW⚡packages/core/tests/unit-test/prompt/prompt.test.ts323 '## Step 1: Observe and Plan (related tags: <planning>, <update-plan-content>, <mark-sub-goal-done>)',CODE
LOWpackages/core/tests/unit-test/prompt/prompt.test.ts369 '## Step 1: Observe and Plan (related tags: <planning>, <update-plan-content>, <mark-sub-goal-done>)',CODE
LOW…s/core/src/ai-model/workflows/grounding/search-area.ts43 // Step 1: Extend each side by expandSize (100px), clamped to screen boundariesCOMMENT
LOW⚡…s/core/src/ai-model/workflows/grounding/search-area.ts61 // Step 2: Check if area is already >= 400x400COMMENT
LOW⚡…s/core/src/ai-model/workflows/grounding/search-area.ts68 // Step 2: Scale up from center to reach minimum 400x400 areaCOMMENT
LOW…ges/core/src/ai-model/prompt/planning/system-prompt.ts161${renderSubGoalsContent(`## Step 2: Memory Data from Current Screenshot (related tags: <memory>)CODE
LOWpackages/computer/tests/ai/chrome-extension-helpers.ts608 // Step 1: Set alwaysAllow permissionCOMMENT
LOWpackages/computer/tests/ai/chrome-extension-helpers.ts619 // Step 2: Stop bridge, then start it so it uses the new permissionCOMMENT
LOWpackages/computer/src/device.ts1134 // Step 1: Take a screenshot (with timeout to handle screenshot-desktopCOMMENT
LOWpackages/computer/src/device.ts1151 // Step 2: Verify pointer control. Windows capture, display enumeration,COMMENT
LOWpackages/computer/src/device.ts1225 // Step 3: List available monitorsCOMMENT
LOW…n/tests/unit-test/yaml/input-mode-typeonly-e2e.test.ts28 // Step 1: Type first value using native PuppeteerCOMMENT
LOW⚡…n/tests/unit-test/yaml/input-mode-typeonly-e2e.test.ts39 // Step 2: Click button to change focusCOMMENT
LOW⚡…n/tests/unit-test/yaml/input-mode-typeonly-e2e.test.ts42 // Step 3: Simulate typeOnly behavior - click input and type without clearingCOMMENT
LOW…-integration/tests/ai/web/puppeteer/input-mode.test.ts22 // Step 1: Input first value (default replace mode)COMMENT
LOW…-integration/tests/ai/web/puppeteer/input-mode.test.ts33 // Step 2: Input second value with typeOnly mode (should append, not replace)COMMENT
LOW⚡…-integration/tests/ai/web/puppeteer/input-mode.test.ts73 // Step 1: Input first valueCOMMENT
LOW⚡…-integration/tests/ai/web/puppeteer/input-mode.test.ts83 // Step 2: Input second value with replace mode (default, should clear first)COMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts51 // Step 1: Verify initial stateCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts56 // Step 2: Pinch out (zoom in) on the zoom areaCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts63 // Step 3: Verify pinch worked — scale changedCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts68 // Step 4: Scroll down in the scroll area — this should still work after pinchCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts75 // Step 5: Verify scroll worked — bottom items are visibleCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts78 // Step 6: Scroll back up — confirm scroll is not brokenCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts85 // Step 7: Verify scroll up workedCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts88 // Step 8: Pinch in (zoom out) — confirm pinch still works after scrollingCOMMENT
LOW⚡…s/web-integration/tests/ai/web/puppeteer/pinch.test.ts95 // Step 9: Final scroll to confirm no residual conflictCOMMENT
LOW⚡…on/src/extension/recorder/components/ProgressModal.tsx493 // Step 0: Stop recording if currently recordingCOMMENT
LOW⚡…on/src/extension/recorder/components/ProgressModal.tsx503 // Step 1: Generate element descriptionsCOMMENT
LOW⚡…on/src/extension/recorder/components/ProgressModal.tsx513 // Step 2: Generate session title and description if not already generatedCOMMENT
LOW…on/src/extension/recorder/components/ProgressModal.tsx530 // Step 3: Generate code with streaming supportCOMMENT
Decorative Section Separators25 hits · 75 pts
SeverityFileLineSnippetContext
MEDIUMpackages/shared/src/constants/example-code.ts140 # ----------------COMMENT
MEDIUMpackages/shared/src/constants/example-code.ts151 # ----------------COMMENT
MEDIUMpackages/shared/src/constants/example-code.ts200 # ----------------COMMENT
MEDIUMpackages/shared/src/constants/example-code.ts207 # ----------------COMMENT
MEDIUM…es/computer/tests/ai/chrome-extension-recorder.test.ts63 // ── Combined: full recorder lifecycle ─────────────────────────────────COMMENT
MEDIUMpackages/computer/tests/ai/chrome-extension-helpers.ts8// ─── Constants ──────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/computer/tests/ai/chrome-extension-helpers.ts32// ─── Types ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/computer/tests/ai/chrome-extension-helpers.ts45// ─── Environment Config Keys ────────────────────────────────────────────────COMMENT
MEDIUMpackages/computer/tests/ai/chrome-extension-helpers.ts56// ─── Browser Helpers ────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/computer/tests/ai/chrome-extension-helpers.ts255// ─── Extension ID Reader ────────────────────────────────────────────────────COMMENT
MEDIUMpackages/computer/tests/ai/chrome-extension-helpers.ts324// ─── CDP Helpers ────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/computer/tests/ai/chrome-extension-helpers.ts448// ─── Config Injection ───────────────────────────────────────────────────────COMMENT
MEDIUM…ages/computer/tests/ai/chrome-extension-bridge.test.ts160 // ── Setup: open side panel and switch to Bridge Mode ─────────────────COMMENT
MEDIUM…ages/computer/tests/ai/chrome-extension-bridge.test.ts208 // ── Test: bridge connects to a real server ────────────────────────────COMMENT
MEDIUM…ages/computer/tests/ai/chrome-extension-bridge.test.ts230 // ── Test: stop bridge ─────────────────────────────────────────────────COMMENT
MEDIUM…ages/computer/tests/ai/chrome-extension-bridge.test.ts241 // ── Test: after stop, server gets no connection ───────────────────────COMMENT
MEDIUM…ages/computer/tests/ai/chrome-extension-bridge.test.ts254 // ── Test: restart and connect again ───────────────────────────────────COMMENT
MEDIUM…es/computer/tests/ai/chrome-extension-settings.test.ts68 // ── Combined: settings modal open/edit/close ──────────────────────────COMMENT
MEDIUM…es/computer/tests/ai/chrome-extension-settings.test.ts110 // ── Combined: three-mode rotation with Bridge UI checks ───────────────COMMENT
MEDIUM…eb-integration/tests/unit-test/bridge/security.test.ts73 // ─── VULN-1: Cross-origin WebSocket hijacking ────────────────────────────COMMENT
MEDIUM…eb-integration/tests/unit-test/bridge/security.test.ts154 // ─── VULN-2: Kill signal DoS ─────────────────────────────────────────────COMMENT
MEDIUM…eb-integration/tests/unit-test/bridge/security.test.ts235 // ─── Positive: legitimate flows still work ───────────────────────────────COMMENT
MEDIUMapps/chrome-extension/tests/bridge-start-stop.test.ts17// ─── BridgeConnector unit tests ──────────────────────────────────────────────COMMENT
MEDIUMapps/chrome-extension/tests/bridge-start-stop.test.ts138// ─── Worker message handling tests ──────────────────────────────────────────COMMENT
MEDIUMapps/chrome-extension/tests/bridge-start-stop.test.ts171// ─── UI state tests ──────────────────────────────────────────────────────────COMMENT
Hallucination Indicators5 hits · 50 pts
SeverityFileLineSnippetContext
CRITICALpackages/test/tests/terminal-reporter.test.ts1385 first.io.log.mock.calls.flat().filter((line) => line.startsWith('WARN')),CODE
CRITICALpackages/test/tests/terminal-reporter.test.ts1499 expect(verbose.io.log.mock.calls.flat().join('\n')).toContain(CODE
CRITICALpackages/test/tests/terminal-reporter.test.ts1502 expect(verbose.io.log.mock.calls.flat().join('\n')).toContain(CODE
CRITICAL…kages/computer/tests/unit-test/device-security.test.ts646 expect(mockState.libnut.moveMouse.mock.calls.at(0)).toEqual([200, 300]);CODE
CRITICAL…kages/computer/tests/unit-test/device-security.test.ts647 expect(mockState.libnut.moveMouse.mock.calls.at(-1)).toEqual([700, 300]);CODE
Fake / Example Data25 hits · 28 pts
SeverityFileLineSnippetContext
LOW…ages/playground-app/tests/controller-selectors.test.ts43 ).not.toHaveProperty('placeholder');CODE
LOWpackages/core/tests/unit-test/xml-parser.test.ts8 expect(result).toBe('John Doe');CODE
LOWpackages/core/tests/unit-test/xml-parser.test.ts42 expect(result).toBe('John Doe');CODE
LOW…ckages/core/tests/unit-test/llm-planning-retry.test.ts136 by: z.enum(['label', 'placeholder']),CODE
LOW…ckages/core/tests/unit-test/llm-planning-retry.test.ts164 by: { type: "enum('label', 'placeholder')" },CODE
LOW…s/unit-test/prompt/planning/action-description.test.ts72 by: z.enum(['label', 'placeholder']),CODE
LOW…s/unit-test/prompt/planning/action-description.test.ts99 by: { type: "enum('label', 'placeholder')" },CODE
LOWpackages/android/tests/unit-test/page.test.ts3547 'data:image/png;base64,fake-data',CODE
LOWpackages/android/tests/unit-test/page.test.ts3588 'data:image/png;base64,fake-data',CODE
LOWpackages/android/tests/unit-test/page.test.ts3629 'data:image/png;base64,fake-data',CODE
LOWpackages/android/tests/unit-test/page.test.ts3779 'data:image/png;base64,fake-data',CODE
LOW…es/web-integration/tests/unit-test/yaml/player.test.ts1099 value: 'John Doe'CODE
LOW…es/web-integration/tests/unit-test/yaml/player.test.ts1133 "value": "John Doe",CODE
LOW…c/component/playground/playground-demo-ui-context.json34 "placeholder": "Username",CODE
LOW…c/component/playground/playground-demo-ui-context.json64 "placeholder": "Password",CODE
LOW⚡apps/site/docs/zh/faq.md144MIDSCENE_MODEL_API_KEY="placeholder"CODE
LOW⚡apps/site/docs/zh/faq.md148这里的 `MIDSCENE_MODEL_API_KEY="placeholder"` 只是为了满足 OpenAI SDK 的初始化要求,真实 API Key 会通过 `defaultHeaders.api-key` 发送。CODE
LOW⚡apps/site/docs/zh/faq.md153MIDSCENE_MODEL_API_KEY="placeholder"CODE
LOW⚡apps/site/docs/en/faq.md144MIDSCENE_MODEL_API_KEY="placeholder"CODE
LOW⚡apps/site/docs/en/faq.md148In this fallback, `MIDSCENE_MODEL_API_KEY="placeholder"` only satisfies the OpenAI SDK constructor check. The real key iCODE
LOW⚡apps/site/docs/en/faq.md153MIDSCENE_MODEL_API_KEY="placeholder"CODE
LOWapps/report/tests/report-template-utils.test.ts31 ).toThrow('placeholder');CODE
LOWapps/report/tests/report-template-utils.test.ts40 ).toThrow('placeholder');CODE
LOW…/report/src/components/playground-demo-ui-context.json34 "placeholder": "Username",CODE
LOW…/report/src/components/playground-demo-ui-context.json64 "placeholder": "Password",CODE
Synthetic Comment Markers2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHpackages/core/src/agent/ui-utils.ts175 // Prefer AI-generated output.log over user inputCOMMENT
HIGH⚡apps/studio/src/renderer/recorder/export.ts310 '# Generated locally from recorded events, not AI-generated.',CODE
Modern AI Meta-Vocabulary7 hits · 14 pts
SeverityFileLineSnippetContext
MEDIUMapps/site/rspress.config.ts776 'basics#javascript-orchestration',CODE
MEDIUMapps/site/rspress.config.ts923 to: '/basics#javascript-orchestration',CODE
MEDIUMapps/site/rspress.config.ts927 to: '/basics#javascript-orchestration',CODE
MEDIUMapps/site/rspress.config.ts1015 to: '/zh/basics#javascript-orchestration',CODE
MEDIUMapps/site/rspress.config.ts1019 to: '/zh/basics#javascript-orchestration',CODE
MEDIUMapps/site/tests/legacy-redirects.test.ts89 'basics#javascript-orchestration',CODE
MEDIUMapps/site/tests/legacy-redirects.test.ts93 'basics#javascript-orchestration',CODE
Over-Commented Block13 hits · 13 pts
SeverityFileLineSnippetContext
LOWpackages/core/tests/unit-test/utils.test.ts481 // <!DOCTYPE html>COMMENT
LOWpackages/core/src/report-html-template.ts1// Keep the Report template in its own source module. Core's bundle:falseCOMMENT
LOWpackages/playground/src/mjpeg-hub.ts241 // there's no FIN until something else cleans up. Each subsequent mountCOMMENT
LOWpackages/shared/tests/unit-test/image/index.test.ts641 // await alignCoordByTrim(file, {COMMENT
LOWpackages/cli/src/framework/rstest-project.ts121// Anchor the framework entry on this bundle's own directory rather thanCOMMENT
LOWpackages/computer/native/phased-scroll.m1// Synthesize trackpad-like scroll-wheel events with proper gesture phase soCOMMENT
LOW…ges/computer/native/rdp/include/rdp_helper_session.hpp1#pragma onceCOMMENT
LOWpackages/computer/native/rdp/tests/screenshot_test.cpp1#include <algorithm>COMMENT
LOWpackages/computer/native/rdp/src/session.cpp1#include "rdp_helper_session.hpp"COMMENT
LOWpackages/computer/native/rdp/src/session.cpp21#elseCOMMENT
LOWpackages/computer/src/device.ts141// Edge scrolls (scrollToTop / scrollToBottom / ...) use a large totalCOMMENT
LOW…ages/web-integration/tests/unit-test/bridge/io.test.ts321 });COMMENT
LOW…c/extension/recorder/generators/playwrightGenerator.ts41// recordLogger.info('Starting Playwright test generation', {COMMENT
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMpackages/shared/src/img/info.ts144 // This is more robust than just checking the first 4 bytesCOMMENT
MEDIUMapps/chrome-extension/tests/event-memory-stress.test.ts257 // check stays deterministic and robust.COMMENT
MEDIUM…/chrome-extension/src/extension/recorder/recorder.less279 // ensure internal components do not generate scrollbars and fully utilize widthCOMMENT
MEDIUM…/chrome-extension/src/extension/recorder/recorder.less538 // ensure timeline items fully utilize widthCOMMENT
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippetContext
LOW⚡apps/studio/src/renderer/recorder/export.ts320 '# Set WDA_BASE_URL to the original WDA gateway URL before replay.',CODE
LOW⚡apps/studio/src/renderer/recorder/export.ts327 '# Set WDA_MJPEG_URL to the original MJPEG URL before replay.',CODE
LOW⚡apps/studio/src/renderer/recorder/export.ts334 '# Set WDA_SESSION_ID to the existing WDA session ID before replay.',CODE