Mobile app automation and verification for AI coding agents. CLI, MCP server, and typed Node.js API for iOS, Android, HarmonyOS, TV, web, macOS, and Linux.
This report presents the forensic synthetic code analysis of callstack/agent-device, a TypeScript project with 4,270 GitHub stars. SynthScan v2.0 examined 615,627 lines of code across 3593 source files, recording 3980 pattern matches distributed across 10 syntactic categories. The overall adjusted score of 6.8 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 3980 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/integration/smoke-provider-cli-disconnect.test.ts | 27 | function createProviderDaemonFixture(t: TestContext): ProviderDaemonFixture { | CODE |
| LOW | test/integration/smoke-provider-cli-disconnect.test.ts | 70 | async function connectBrowserStackProvider( | CODE |
| LOW | test/integration/smoke-provider-cli-disconnect.test.ts | 116 | async function disconnectProviderSession( | CODE |
| LOW | test/integration/smoke-provider-cli-disconnect.test.ts | 137 | function assertProviderDisconnectRpc(rpcRequests: any[], activeSession: string): void { | CODE |
| LOW | test/integration/test-helpers.ts | 67 | export function createIntegrationTestContext(options: IntegrationTestContextOptions) { | CODE |
| LOW | test/integration/test-helpers.ts | 163 | function formatLastSnapshotContext(args: string[]): string { | CODE |
| LOW | test/integration/client-api-doc-snippets.test.ts | 138 | function stubFreeNamesAndRecompile(tmpDir: string, firstPassOutput: string): string { | CODE |
| LOW | test/integration/smoke-web-platform.test.ts | 270 | async function forceKillManagedBrowserProcesses(status: AgentBrowserToolStatus): Promise<void> { | CODE |
| LOW | test/integration/smoke-web-platform.test.ts | 292 | async function settleManagedBrowserProcesses( | CODE |
| LOW | test/integration/smoke-web-platform.test.ts | 613 | function formatLastSnapshotContext(context: WebSmokeContext): string { | CODE |
| LOW | test/integration/smoke-ios-simulator-coverage.test.ts | 147 | function assertReplayActionFitsViewport(action: ReplayAction, viewport: Viewport): void { | CODE |
| LOW | test/integration/smoke-ios-simulator-coverage.test.ts | 161 | function assertReplayFitsViewports(replayPath: string, viewports: readonly Viewport[]): void { | CODE |
| LOW | test/integration/recording-overlay.test.ts | 140 | function createRecordingIntegrationContext(platform: 'ios' | 'android', testName: string) { | CODE |
| LOW | test/integration/linux-e2e/live-runner.ts | 80 | async function runCommandDiscoveryEvidence(context: LinuxContext): Promise<void> { | CODE |
| LOW | test/integration/linux-e2e/coverage-manifest.ts | 276 | export function liveCommandsForLinuxReplay(): PublicCommand[] { | CODE |
| LOW | test/integration/linux-e2e/coverage-manifest.ts | 284 | export function liveCommandsForLinuxCommandEvidence(): PublicCommand[] { | CODE |
| LOW | test/integration/interaction-contract/fixtures.ts | 35 | export function drawerWithVisibleTwinSnapshot(): SnapshotState { | CODE |
| LOW | test/integration/interaction-contract/fixtures.ts | 67 | export function equivalentWrapperChainSnapshot(): SnapshotState { | CODE |
| LOW | test/integration/interaction-contract/fixtures.ts | 109 | export function edgeGrazingDrawerSnapshot(): SnapshotState { | CODE |
| LOW | test/integration/interaction-contract/fixtures.ts | 245 | export function nonHittableButtonSnapshot(): SnapshotState { | CODE |
| LOW | test/integration/interaction-contract/daemon-harness.ts | 111 | export function runnerGestureViewportEntry(): ProviderScenarioProviderEntry { | CODE |
| LOW | …tegration/provider-scenarios/android-lifecycle.test.ts | 467 | async function runAndroidSetupAndInstallWorkflow( | CODE |
| LOW | …tegration/provider-scenarios/android-lifecycle.test.ts | 650 | function androidRuntimePermissionXml(): string { | CODE |
| LOW | …tegration/provider-scenarios/android-lifecycle.test.ts | 700 | function androidButtonlessAlertXml(): string { | CODE |
| LOW | …tegration/provider-scenarios/android-lifecycle.test.ts | 795 | async function runAndroidAppControlAndObservabilityWorkflow( | CODE |
| LOW | …tegration/provider-scenarios/android-lifecycle.test.ts | 1014 | async function runAndroidCaptureInteractionAndReplayWorkflow( | CODE |
| LOW⚡ | …tegration/provider-scenarios/android-lifecycle.test.ts | 1351 | function assertAndroidProviderContract(world: AndroidSettingsWorld): void { | CODE |
| LOW⚡ | …tegration/provider-scenarios/android-lifecycle.test.ts | 1361 | function assertAndroidInventoryContract(world: AndroidSettingsWorld): void { | CODE |
| LOW⚡ | …tegration/provider-scenarios/android-lifecycle.test.ts | 1370 | function assertAndroidInstallAndLaunchContract(world: AndroidSettingsWorld): void { | CODE |
| LOW | …tegration/provider-scenarios/android-lifecycle.test.ts | 1400 | function assertAndroidPushAndEventContract(world: AndroidSettingsWorld): void { | CODE |
| LOW | …tegration/provider-scenarios/android-lifecycle.test.ts | 1471 | function assertAndroidObservabilityContract(world: AndroidSettingsWorld): void { | CODE |
| LOW | …tegration/provider-scenarios/android-lifecycle.test.ts | 1487 | function assertAndroidInteractionContract(world: AndroidSettingsWorld): void { | CODE |
| LOW | …tegration/provider-scenarios/android-lifecycle.test.ts | 1552 | function assertAndroidShutdownContract(world: AndroidSettingsWorld): void { | CODE |
| LOW | test/integration/provider-scenarios/linux-world.ts | 163 | async function discoverLocalLinuxInventory(): Promise<DeviceInfo[]> { | CODE |
| LOW | test/integration/provider-scenarios/linux-world.ts | 168 | function linuxCalculatorSnapshotNodes(): Array<{ | CODE |
| LOW | …ation/provider-scenarios/android-recording-fixtures.ts | 28 | export async function createAndroidRecordingScenarioHarness( | CODE |
| LOW | …ation/provider-scenarios/android-recording-fixtures.ts | 52 | export function seedAndroidRecordingResource( | CODE |
| LOW | …tion/provider-scenarios/android-ime-lifecycle-world.ts | 18 | export function androidImeInputTextBroadcast(text: string): string[] { | CODE |
| LOW | …tion/provider-scenarios/android-ime-lifecycle-world.ts | 49 | export function createAndroidProviderShellState(): AndroidProviderShellState { | CODE |
| LOW | …tion/provider-scenarios/android-ime-lifecycle-world.ts | 58 | export function androidImeLifecycleAdbResult( | CODE |
| LOW | …tion/provider-scenarios/android-ime-lifecycle-world.ts | 92 | export function updateAndroidProviderImeShellState( | CODE |
| LOW | …vider-scenarios/android-recording-provider-fixtures.ts | 19 | export function createAndroidRecordingProvider(params: { | CODE |
| LOW | …vider-scenarios/android-recording-provider-fixtures.ts | 128 | function respondToProcessDirectory(command: string, processes: Map<string, NativeProcess>) { | CODE |
| LOW | …vider-scenarios/android-recording-provider-fixtures.ts | 151 | function respondToScreenrecordCommand(command: string, processes: Map<string, NativeProcess>) { | CODE |
| LOW⚡ | test/integration/provider-scenarios/android-world.ts | 408 | function androidClipboardMutationAdbResult(args: string[]): AndroidAdbResult | undefined { | CODE |
| LOW⚡ | test/integration/provider-scenarios/android-world.ts | 415 | function androidDoctorProbeAdbResult(args: string[]): AndroidAdbResult | undefined { | CODE |
| LOW⚡ | test/integration/provider-scenarios/android-world.ts | 422 | function androidScreenshotDemoAdbResult(args: string[]): AndroidAdbResult | undefined { | CODE |
| LOW⚡ | test/integration/provider-scenarios/android-world.ts | 429 | function androidSettingsMutationAdbResult(args: string[]): AndroidAdbResult | undefined { | CODE |
| LOW⚡ | test/integration/provider-scenarios/android-world.ts | 439 | function androidAppearanceMutationAdbResult(args: string[]): AndroidAdbResult | undefined { | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 61 | export async function createAndroidSettingsWorld(options?: { | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 225 | export function respondToAndroidSettingsAdbCommand( | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 256 | function updateAndroidProviderShellState(args: string[], state: AndroidProviderShellState): void { | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 283 | function androidDeviceAvailabilityAdbResult( | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 303 | function androidClipboardAdbResult( | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 318 | function createAndroidProviderAppState(): AndroidProviderAppState { | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 325 | function updateAndroidProviderAppState( | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 364 | function androidDeviceMutationAdbResult(args: string[]): AndroidAdbResult | undefined { | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 373 | function androidAppMutationAdbResult(args: string[]): AndroidAdbResult | undefined { | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 389 | function androidInputMutationAdbResult(args: string[]): AndroidAdbResult | undefined { | CODE |
| LOW | test/integration/provider-scenarios/android-world.ts | 397 | function androidShellInputAdbResult(args: string[]): AndroidAdbResult | undefined { | CODE |
| 3669 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.md | 41 | # Start a session. | COMMENT |
| LOW | vitest.config.ts | 1 | import { defineConfig } from 'vitest/config'; | COMMENT |
| LOW | vitest.config.ts | 21 | 'src/daemon/__tests__/daemon-process-takeover.test.ts', | COMMENT |
| LOW | vitest.config.ts | 41 | // never reproduced — what these entries share is an observed record of vanishing from the | COMMENT |
| LOW | vitest.config.ts | 81 | // Wall-clock discipline: unit tests must not wait real time. Measured | COMMENT |
| LOW | vitest.config.ts | 121 | 'scripts/__tests__/help-conformance-expectation-falsification.test.ts', | COMMENT |
| LOW | vitest.config.ts | 141 | // but fixture modules remain visible to the other analysis families. | COMMENT |
| LOW | vitest.config.ts | 161 | // real workflow YAML, parse-only like its sibling above. | COMMENT |
| LOW | …erUITests/RunnerTests+SnapshotPresentationModels.swift | 81 | /// Keep the wire payload's existing spelling while making the presented-node type owned by the | COMMENT |
| LOW | …nner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.h | 41 | /// the call limit allowed extension. Pass 0 to disable extension entirely. | COMMENT |
| LOW | …nner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.h | 61 | /// | COMMENT |
| LOW | …er/AgentDeviceRunnerUITests/RunnerTests+Snapshot.swift | 601 | func testSystemModalProbeSliceSharesAndClampsToPlanDeadline() { | COMMENT |
| LOW | …eviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift | 81 | var abandonedMainThreadWorkCount = 0 | COMMENT |
| LOW | …eviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift | 101 | var privateAXAcceptedDepthBundleId: String? | COMMENT |
| LOW | …eviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift | 121 | let systemModalProbeBudget: TimeInterval = 4 | COMMENT |
| LOW | …eviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift | 201 | /// intentionally covers kAXErrorIllegalArgument and its sibling AX server codes (e.g. | COMMENT |
| LOW | …ITests/RunnerTests+BlockingSystemModalResolution.swift | 101 | // flag on macOS, so the host lane runs the real branch on every PR. | COMMENT |
| LOW | …nerUITests/RunnerTests+SynthesizedCommitDeadline.swift | 1 | import XCTest | COMMENT |
| LOW | …ntDeviceRunnerUITests/RunnerTests+TextEntryFocus.swift | 201 | /// A focus-moved signal for iOS text entry, where `focusedTextInput` is intentionally nil. | COMMENT |
| LOW | …ner/AgentDeviceRunnerUITests/RunnerXCTestEventBridge.h | 1 | #import <Foundation/Foundation.h> | COMMENT |
| LOW | …entDeviceRunnerUITests/RunnerSelectorMatchPolicy.swift | 21 | } | COMMENT |
| LOW | …nner/AgentDeviceRunnerUITests/RunnerTests+Models.swift | 41 | /// | COMMENT |
| LOW | …er/AgentDeviceRunnerUITests/RunnerTapPointPolicy.swift | 1 | import XCTest | COMMENT |
| LOW | …nnerUITests/AgentDeviceRunnerUITests-Bridging-Header.h | 1 | #import "RunnerObjCExceptionCatcher.h" | COMMENT |
| LOW | …nner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.m | 21 | NSString *const RunnerAXSnapshotCustomActionsTruncatedKey = @"truncated"; | COMMENT |
| LOW | …nner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.m | 381 | } | COMMENT |
| LOW | …nner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.m | 401 | /// counting it would inflate the denominator with nodes that never needed a | COMMENT |
| LOW | …viceRunnerUITests/RunnerTests+AXSnapshotFallback.swift | 1 | import XCTest | COMMENT |
| LOW | …er/AgentDeviceRunnerUITests/RunnerTests+Keyboard.swift | 1 | import XCTest | COMMENT |
| LOW | …er/AgentDeviceRunnerUITests/RunnerTests+Keyboard.swift | 61 | return (wasVisible: true, dismissed: !visible, visible: visible, mechanism: visible ? nil : .dismissKey) | COMMENT |
| LOW | …ceRunnerUITests/RunnerTests+SynthesizedTextEntry.swift | 221 | enum SynthesizedTextCommitOutcome: Equatable { | COMMENT |
| LOW | …iceRunnerUITests/RunnerTests+SnapshotCapturePlan.swift | 1 | import XCTest | COMMENT |
| LOW | test/ci/root-docs-paths-ignore.test.ts | 1 | // Regression pin for #1781 A9: the six root-level docs files | COMMENT |
| LOW | test/integration/client-api-doc-snippets.test.ts | 1 | import fs from 'node:fs'; | COMMENT |
| LOW | test/integration/provider-scenarios/test-timeouts.ts | 1 | // These scenarios construct complete in-process daemon/provider fixtures. In | COMMENT |
| LOW | …provider-scenarios/apple-platform-output-guard.test.ts | 21 | // | COMMENT |
| LOW | …provider-scenarios/apple-platform-output-guard.test.ts | 141 | // --------------------------------------------------------------------------- | COMMENT |
| LOW | …egration/provider-scenarios/settle-observation.test.ts | 441 | ['ios.runner.tap'], | COMMENT |
| LOW | test/integration/nightly/concurrency-torture.test.ts | 1 | // Seeded concurrency torture lane for session / lease / lock invariants (#1416, | COMMENT |
| LOW | …/integration/nightly/concurrency-torture/invariants.ts | 1 | // Invariant checks for the concurrency torture lane (#1416), asserted after | COMMENT |
| LOW | …st/integration/nightly/concurrency-torture/bindings.ts | 1 | // Production lock-plan + device bindings for the concurrency torture lane (#1416). | COMMENT |
| LOW | …egration/nightly/concurrency-torture/claim-registry.ts | 1 | // In-memory model of the enforced host-global device claim (`src/daemon/device-claims.ts`). | COMMENT |
| LOW | test/integration/nightly/concurrency-torture/prng.ts | 1 | // Seeded, deterministic PRNG for the concurrency torture lane (#1416). | COMMENT |
| LOW | test/integration/nightly/concurrency-torture/harness.ts | 1 | // Seeded concurrency torture harness for session / lease / lock invariants (#1416). | COMMENT |
| LOW | …ightly/concurrency-torture/real-scope-serialization.ts | 1 | // Real-scope same-device serialization guard for the concurrency torture lane | COMMENT |
| LOW | …nightly/concurrency-torture/deterministic-scheduler.ts | 1 | // Deterministic, seed-driven cooperative scheduler for the concurrency torture | COMMENT |
| LOW | test/integration/support/daemon-leak-model.ts | 1 | // Daemon leak rules (#1781 B1, feeds #1431): given one observation of an | COMMENT |
| LOW | test/wire-compat/surface.ts | 341 | 'tryDirectUploadWithResume', | COMMENT |
| LOW | test/wire-compat/closure-policy.ts | 61 | // challenge first — the reasoning is ADR 0006's own, not convenience. | COMMENT |
| LOW | test/output-economy/routine-workflow.ts | 1 | import type { CommandRequestResult } from '@agent-device/contracts/client'; | COMMENT |
| LOW | test/output-economy/routine-workflow.ts | 21 | // adaptations (an unchanged recheck, the tail retargeted onto a surfaced ref, | COMMENT |
| LOW | scripts/check-tmpdir-leaks-model.ts | 1 | import fs from 'node:fs'; | COMMENT |
| LOW | scripts/xctest-declarations.ts | 1 | // What the runner's XCTest target declares, and on which platforms — the scan behind | COMMENT |
| LOW | scripts/check-xctest-selection.ts | 1 | // `pnpm check:xctest-selection` — derive, from the Swift sources and the workflow files, which | COMMENT |
| LOW | scripts/check-xctest-selection.ts | 21 | // 1. Every `-only-testing:`/`-skip-testing:` identifier names a declared method that | COMMENT |
| LOW | scripts/check-tmpdir-leaks.ts | 1 | // Fails if any agent-device-test-run-* directory under TEST_RUN_TMP_ROOT is | COMMENT |
| LOW | scripts/xctest-run-summary.ts | 1 | // Renders a whole-bundle XCTest lane's job summary, and asserts the run executed exactly the | COMMENT |
| LOW | scripts/node-test-tmpdir.test.ts | 21 | // node --test lane is wrapped (#1595). Add a script name here only alongside | COMMENT |
| LOW | scripts/node-test-tmpdir.ts | 1 | // Redirects TMPDIR to a disposable, pid-tagged directory for the duration of | COMMENT |
| LOW | scripts/node-test-tmpdir.ts | 61 | // cache is intentionally durable across runs (rebuilding it recompiles | COMMENT |
| 114 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/platform-linux/src/linux-env.ts | 22 | // ── Cached input tool resolution ─────────────────────────────────────── | COMMENT |
| MEDIUM | packages/platform-linux/src/atspi-bridge.ts | 25 | // ── Limits (matching macOS helper's SnapshotTraversalLimits) ──────────── | COMMENT |
| MEDIUM | packages/platform-linux/src/atspi-bridge.ts | 58 | // ── Public types ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/platform-linux/src/atspi-bridge.ts | 86 | // ── Public API ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/platform-linux/src/input-actions.ts | 6 | // ── Low-level wrappers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/platform-linux/src/input-actions.ts | 89 | // ── Mouse actions ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/platform-linux/src/input-actions.ts | 175 | // ── Swipe / scroll ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/platform-linux/src/input-actions.ts | 281 | // ── Keyboard actions ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/platform-linux/src/__tests__/input-actions.test.ts | 53 | // ── xdotool tests ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/platform-linux/src/__tests__/input-actions.test.ts | 92 | // ── ydotool tests ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/platform-linux/src/__tests__/clipboard.test.ts | 37 | // ── X11 clipboard ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/platform-linux/src/__tests__/clipboard.test.ts | 85 | // ── Wayland clipboard ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/selectors/src/internal/match.test.ts | 98 | // ── appName / windowTitle selectors ────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | linux/atspi-dump.py | 98 | def get_numeric_value(accessible): | CODE |
| MEDIUM | linux/atspi-dump.py | 111 | def has_state(state_set, state_type): | CODE |
| MEDIUM | linux/atspi-dump.py | 232 | def get_app_info(app): | CODE |
| MEDIUM | linux/atspi-dump.py | 277 | def parse_int_arg(value, name): | CODE |
| LOW⚡ | linux/atspi-dump.py | 107 | except Exception: | CODE |
| LOW⚡ | linux/atspi-dump.py | 114 | except Exception: | CODE |
| LOW⚡ | linux/atspi-dump.py | 124 | except Exception: | CODE |
| LOW⚡ | linux/atspi-dump.py | 129 | except Exception: | CODE |
| LOW⚡ | linux/atspi-dump.py | 134 | except Exception: | CODE |
| LOW⚡ | linux/atspi-dump.py | 216 | except Exception: | CODE |
| LOW⚡ | linux/atspi-dump.py | 218 | except Exception: | CODE |
| LOW⚡ | linux/atspi-dump.py | 227 | except Exception: | CODE |
| LOW⚡ | linux/atspi-dump.py | 235 | except Exception: | CODE |
| LOW⚡ | linux/atspi-dump.py | 239 | except Exception: | CODE |
| LOW | linux/atspi-dump.py | 40 | except Exception: | CODE |
| LOW | linux/atspi-dump.py | 70 | except Exception: | CODE |
| LOW | linux/atspi-dump.py | 94 | except Exception: | CODE |
| LOW | linux/atspi-dump.py | 148 | except Exception: | CODE |
| LOW | linux/atspi-dump.py | 184 | except Exception: | CODE |
| LOW | linux/atspi-dump.py | 197 | except Exception: | CODE |
| LOW | linux/atspi-dump.py | 266 | except Exception: | CODE |
| LOW | linux/atspi-dump.py | 324 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …vider-scenarios/cloud-webdriver-ios-text-entry.test.ts | 84 | ['label=Email', 'user@example.com'], | CODE |
| LOW⚡ | …vider-scenarios/cloud-webdriver-ios-text-entry.test.ts | 90 | assert.equal(data.text, 'user@example.com'); | CODE |
| LOW⚡ | …vider-scenarios/cloud-webdriver-ios-text-entry.test.ts | 93 | assert.equal(server.fieldValues.email, 'user@example.com'); | CODE |
| LOW | …vider-scenarios/cloud-webdriver-ios-text-entry.test.ts | 115 | assert.equal(nodes?.find((node) => node.identifier === 'email')?.value, 'user@example.com'); | CODE |
| LOW | …vider-scenarios/cloud-webdriver-ios-text-entry.test.ts | 132 | ['label=Email', 'user@example.com'], | CODE |
| LOW | …vider-scenarios/cloud-webdriver-ios-text-entry.test.ts | 156 | server.focusField('email', 'user@example.com'); | CODE |
| LOW | …vider-scenarios/cloud-webdriver-ios-text-entry.test.ts | 171 | assert.equal(server.fieldValues.email, 'user@example.com'); | CODE |
| LOW | website/docs/docs/commands.md | 504 | agent-device find label "Email" fill "user@example.com" | CODE |
| LOW | website/docs/docs/quick-start.md | 125 | agent-device find label "Email" fill "user@example.com" | CODE |
| LOW | website/docs/docs/snapshots.md | 83 | # @e8 [other] "John Doe" | COMMENT |
| LOW | website/docs/docs/snapshots.md | 84 | # @e9 [other] "John Doe" | COMMENT |
| LOW | website/docs/docs/selectors.md | 12 | agent-device find label "Email" fill "user@example.com" | CODE |
| LOW | …es/provider-webdriver/src/webdriver-interactor.test.ts | 262 | const pending = interactor.fill(12, 24, 'user@example.com').then( | CODE |
| LOW | packages/provider-webdriver/src/browserstack.test.ts | 20 | await fs.writeFile(appPath, 'placeholder'); | CODE |
| LOW | packages/capture-kit/src/snapshot-occlusion.test.ts | 579 | value: 'user@example.com', | CODE |
| LOW | …/platform-android/src/__tests__/app-deployment.test.ts | 35 | await fs.writeFile(apkPath, 'placeholder', 'utf8'); | CODE |
| LOW | …/platform-android/src/__tests__/app-deployment.test.ts | 52 | await fs.writeFile(apkPath, 'placeholder', 'utf8'); | CODE |
| LOW | …/platform-android/src/__tests__/app-deployment.test.ts | 88 | await fs.writeFile(aabPath, 'placeholder', 'utf8'); | CODE |
| LOW | …/platform-android/src/__tests__/app-deployment.test.ts | 161 | await fs.writeFile(aabPath, 'placeholder', 'utf8'); | CODE |
| LOW | …/platform-android/src/__tests__/app-deployment.test.ts | 194 | await fs.writeFile(aabPath, 'placeholder', 'utf8'); | CODE |
| LOW | src/__tests__/install-source.test.ts | 111 | await fs.writeFile(archivePath, 'placeholder'); | CODE |
| LOW | src/daemon/handlers/__tests__/session-reinstall.test.ts | 112 | fs.writeFileSync(appPath, 'placeholder'); | CODE |
| LOW | src/daemon/handlers/__tests__/session-reinstall.test.ts | 161 | fs.writeFileSync(appPath, 'placeholder'); | CODE |
| LOW | src/daemon/handlers/__tests__/session-reinstall.test.ts | 220 | fs.writeFileSync(appPath, 'placeholder'); | CODE |
| LOW | src/daemon/handlers/__tests__/session-reinstall.test.ts | 256 | fs.writeFileSync(appPath, 'placeholder'); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …egration/nightly/concurrency-torture/claim-registry.ts | 6 | // (#1416 out-of-scope). This model preserves the *invariants* the harness asserts: | COMMENT |
| MEDIUM⚡ | .github/workflows/mutation-affected.yml | 6 | # exits non-zero on a harness failure, never on a score. | COMMENT |
| MEDIUM⚡ | .github/workflows/mutation-affected.yml | 9 | # spends mutants on one thing only — proving the harness still runs end to end | COMMENT |
| MEDIUM⚡ | .github/workflows/mutation-affected.yml | 10 | # when the harness itself changes. `select` therefore returns an empty matrix | COMMENT |
| MEDIUM⚡ | .github/workflows/mutation-affected.yml | 15 | # On a harness diff the matrix is the canary (`LANE_CANARY`, the registry's | COMMENT |
| MEDIUM | .github/workflows/conformance-regenerate.yml | 50 | # harness over the corpus, and rewrites fixtures/ + corpus/manifest.json. | COMMENT |
| MEDIUM | src/daemon/handlers/__tests__/snapshot-handler.test.ts | 598 | // #1076 versioned refs — shared harness for the refsGeneration tests below. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/integration/support/daemon-leak-model.ts | 17 | // scaffold, daemon.json/daemon.lock may exist only while a | COMMENT |
| MEDIUM | test/integration/support/daemon-leak-oracle.ts | 102 | // scaffold leaves no file behind), plus the `lifecycle` of durable capture | COMMENT |
| MEDIUM | website/docs/docs/client-api.md | 340 | ## Batch orchestration for custom transports | COMMENT |
| MEDIUM | src/daemon/handlers/session-replay-runtime.ts | 28 | * #1555 P5 (decomposition): the replay request's own orchestration — routing, plan resolution, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | website/docs/docs/ai-sdk.md | 16 | AI_GATEWAY_API_KEY=your_api_key | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/mcp/router.ts | 63 | async function handleRequest(method: string, params: unknown, era: ProtocolEra): Promise<unknown> { | CODE |
| LOW | src/daemon/request-router.ts | 160 | async function handleRequest(req: DaemonRequest): Promise<DaemonResponse> { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | linux/atspi-dump.py | 201 | CODE | |
| LOW | linux/atspi-dump.py | 244 | CODE | |
| LOW | linux/atspi-dump.py | 288 | CODE |