A pixel desktop pet that watches Claude Code, Codex, Cursor & other AI coding agents — so you don't have to.
This report presents the forensic synthetic code analysis of rullerzhou-afk/clawd-on-desk, a JavaScript project with 6,064 GitHub stars. SynthScan v2.0 examined 431,094 lines of code across 978 source files, recording 2246 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 6.5 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).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
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 2246 distinct pattern matches across 16 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/server-hook-management.test.js | 19 | function createGuardedIntegrationCtx(target, calls) { | CODE |
| LOW | test/server-hook-management.test.js | 213 | function healthyClaudeSettingsWithThirdPartyHook() { | CODE |
| LOW | test/server-hook-management.test.js | 1028 | function makeServerWithLiveAutoStart(initialValue) { | CODE |
| LOW | test/state-agent-icons.test.js | 112 | function shouldCheckRuntimeIconEntry(entry) { | CODE |
| LOW | test/claude-hook-health.test.js | 535 | function missingCoreEventOnlyReport() { | CODE |
| LOW | test/telegram-identity-wiring-main.test.js | 14 | const start = MAIN_SOURCE.indexOf("async function initTelegramMigrationController()"); | CODE |
| LOW | test/telegram-identity-wiring-main.test.js | 34 | const start = MAIN_SOURCE.indexOf("function buildTelegramApprovalIdentitySignature(config)"); | CODE |
| LOW | test/dashboard.test.js | 12 | function loadDashboardWithElectron(fakeElectron) { | CODE |
| LOW | test/dashboard.test.js | 759 | async function assertFailedPreScaleFlushRetries({ asyncFailure, moved }) { | CODE |
| LOW | test/dashboard.test.js | 832 | async function assertOlderAsyncCompletionPreservesNewerDebt(firstResponse) { | CODE |
| LOW | test/telegram-legacy-retirement.test.js | 71 | const start = main.indexOf("async function persistTelegramMigrationPatch(patch) {"); | CODE |
| LOW | test/permission-slack-announce.test.js | 59 | function loadPermissionWithFakeElectron() { | CODE |
| LOW | test/updater.test.js | 129 | function makeLatestReleaseResponse(release) { | CODE |
| LOW | test/updater.test.js | 144 | function makePendingReleaseResponse(queue) { | CODE |
| LOW | test/pet-window-runtime.test.js | 636 | function wireNativeGeometryListeners(harness) { | CODE |
| LOW | test/pet-window-runtime.test.js | 1051 | function makeInsetMutterClampedWindow(bounds, { rightInset = 0 } = {}) { | CODE |
| LOW | test/focus-mac-extras.test.js | 18 | function setupHermeticSupersetHome({ withDb = true } = {}) { | CODE |
| LOW | test/copilot-hook.test.js | 32 | function makeFakeCopilotHomeWithSession(rootName, sessionId, contents) { | CODE |
| LOW | test/feishu-approval-sdk-security.test.js | 63 | function assertSafeApplicationLogs(applicationCalls) { | CODE |
| LOW | test/remote-ssh-ipc.test.js | 159 | function actionBackedSettingsController(profiles = [], { failOnce = null } = {}) { | CODE |
| LOW | test/permission-hotkey-focus.test.js | 108 | async function assertHotkeyLeavesFocusUntouchedOnCaptureFailure({ accelerator, expectedBehavior }) { | CODE |
| LOW | test/server-route-permission.test.js | 156 | function callPermissionPostThroughAutomation(body, mode, options = {}) { | CODE |
| LOW | test/session-automation-dialog-parent.test.js | 47 | const start = mainSource.indexOf("async function showSessionAutomationWarning(entry)"); | CODE |
| LOW | test/settings-effect-router-notify-autoclose.test.js | 8 | function createFakeSettingsController() { | CODE |
| LOW | test/cleanup-integrations.test.js | 498 | function assertOnlyClawdHooksRemoved(settingsPath) { | CODE |
| LOW | test/accessory-theme-capability.test.js | 34 | function assertDeclaredTargetsExist(themeId, raw) { | CODE |
| LOW | test/permission-family-lifecycle.test.js | 27 | function loadPermissionWithElectron(fakeElectron) { | CODE |
| LOW | test/permission-family-lifecycle.test.js | 116 | function assertSecretAbsentFromLifecycleLogs(harness, secret) { | CODE |
| LOW | test/readme-contributors.test.js | 141 | function extractContributorSection(markdown, filename) { | CODE |
| LOW | test/permission-codex-response.test.js | 9 | function loadPermissionWithElectron(fakeElectron = null) { | CODE |
| LOW | test/permission-codex-response.test.js | 32 | function createCodexDecisionHarness() { | CODE |
| LOW | test/copilot-install.test.js | 40 | function makeTempHomeWithoutCopilot() { | CODE |
| LOW | test/settings-controller.test.js | 1476 | function createControllerWithReadFailure(p, injectedDeps = {}) { | CODE |
| LOW | test/edge-virtualization.test.js | 217 | function createEdgeVirtualizationHarness(overrides = {}) { | CODE |
| LOW | test/edge-virtualization.test.js | 249 | function countedRuntimeGetAllDisplays() { | CODE |
| LOW | test/edge-virtualization.test.js | 253 | function countedMiniGetAllDisplays() { | CODE |
| LOW | test/edge-virtualization.test.js | 268 | function countedRepositionSessionHud() { | CODE |
| LOW | test/edge-virtualization.test.js | 689 | function tickUntilJumpAnimationEnds(mini, maxSteps = 60, stepMs = 10) { | CODE |
| LOW | test/hermes-plugin.test.js | 38 | function envWithoutTerminalIdentity() { | CODE |
| LOW | test/permission-notify-autoclose.test.js | 16 | function loadPermissionWithElectron(fakeElectron) { | CODE |
| LOW | test/settings-effect-router.test.js | 12 | function createFakeSettingsController(initialSnapshot = {}) { | CODE |
| LOW⚡ | test/settings-renderer-browser-env.test.js | 11808 | assert.ok(coreSource.includes("function readCustomToolDetectionResults(")); | CODE |
| LOW⚡ | test/settings-renderer-browser-env.test.js | 11809 | assert.ok(coreSource.includes("function readCustomAgentDetectionResults(")); | CODE |
| LOW⚡ | test/settings-renderer-browser-env.test.js | 11811 | assert.ok(agentsSource.includes("function buildCustomToolResultRows(")); | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 432 | function loadSharedLanguagePickerForTest({ | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 569 | function loadGeneralLanguageRowForTest({ | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 857 | function createKeyboardEventForTest(key) { | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 1407 | function loadTelegramApprovalTabForTest({ | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 1695 | function createFeishuCredentialDraftLifecycleHarness({ | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 1762 | function fillFeishuCredentialDraft(card, prefix) { | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 1777 | async function openFeishuCredentialReplacementEditor(harness, prefix) { | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 1790 | function loadDiscordPresenceTabForTest({ snapshot, update } = {}) { | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 1867 | function createFeishuLookupPreflightHarness({ | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 1953 | function assertVisibleFeishuLookupPreflight(card, lookupButton, expectedMessage) { | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 2051 | function loadAnimOverridesTabForTest({ | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 2206 | function createAnimOverridesRuntime(card, overrides = {}) { | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 8940 | assert.ok(generalSource.includes("function buildRoamMovementStyleRow()")); | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 9249 | assert.ok(generalSource.includes("function buildSessionHudOptionsList(")); | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 9472 | assert.ok(coreSource.includes("function clearTransientStateForChanges(changes)")); | CODE |
| LOW | test/settings-renderer-browser-env.test.js | 10883 | assert.ok(tabSource.includes("function supportsThemeCustomization(theme)")); | CODE |
| 1566 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | test/state.test.js | 5551 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | test/state.test.js | 5560 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 18 | // ── Helpers ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/state.test.js | 231 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 233 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 503 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 505 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 610 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 612 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 1145 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 1147 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 1330 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 1332 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 1598 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 1600 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 3656 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 3658 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 5109 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 5111 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 5275 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 5277 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 5500 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 5502 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 5706 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state.test.js | 5710 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/win-foreground-terminal.test.js | 297 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/win-foreground-terminal.test.js | 303 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/doctor-local-server.test.js | 75 | // ── #681: runtime IDENTITY, not just the port ───────────────────────────── | COMMENT |
| MEDIUM | test/doctor-local-server.test.js | 75 | // ── #681: runtime IDENTITY, not just the port ───────────────────────────── | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 63 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 65 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 154 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 156 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 187 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 189 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 318 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 320 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 364 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 366 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 395 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/pid-resolver-offline-gate.test.js | 397 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state-source-pid-merge.test.js | 27 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state-source-pid-merge.test.js | 29 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state-source-pid-merge.test.js | 108 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/state-source-pid-merge.test.js | 110 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/permission-slack-announce.test.js | 598 | // ── Interaction kind and action target (review item 4) ────────────────────── | COMMENT |
| MEDIUM | test/updater.test.js | 1603 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/updater.test.js | 1610 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/hook-pid-cache-contexts.test.js | 47 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/hook-pid-cache-contexts.test.js | 49 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/hook-pid-cache-contexts.test.js | 137 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/hook-pid-cache-contexts.test.js | 140 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/hook-pid-cache-contexts.test.js | 301 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/hook-pid-cache-contexts.test.js | 303 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/hook-pid-cache-contexts.test.js | 507 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/hook-pid-cache-contexts.test.js | 509 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | test/copilot-hook.test.js | 383 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/copilot-hook.test.js | 385 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/slack-notify-client.test.js | 316 | // ── Delivery is a queue, not a fan-out ────────────────────────────────────── | COMMENT |
| MEDIUM | test/slack-notify-client.test.js | 969 | // ── Startup recovery ──────────────────────────────────────────────────────── | COMMENT |
| 101 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test-oneshot-gate.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tools/copilot-permission-capture/e2e-hook.js | 1 | #!/usr/bin/env node | COMMENT |
| LOW | tools/copilot-permission-capture/capture.js | 1 | #!/usr/bin/env node | COMMENT |
| LOW | test/permission-family-payload.test.js | 1 | // opencode-family payload ↔ renderer contract (plan §3.5/§9). | COMMENT |
| LOW | test/state.test.js | 5541 | seed(api, 20, new Set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])); | COMMENT |
| LOW | test/pid-resolver-offline-gate.test.js | 1 | // test/pid-resolver-offline-gate.test.js — #681 Slice A1. | COMMENT |
| LOW | test/state-source-pid-merge.test.js | 1 | // test/state-source-pid-merge.test.js — #681 Slice A1, server-side contract. | COMMENT |
| LOW | test/opencode-family-jsonc.test.js | 501 | }); | COMMENT |
| LOW | test/permission-slack-announce.test.js | 1 | // Slack "approval needed" announcements must describe reality. | COMMENT |
| LOW | test/hook-pid-cache-contexts.test.js | 1 | "use strict"; | COMMENT |
| LOW | test/hook-pid-cache-contexts.test.js | 501 | const r = runHook("reasonix-hook.js", { event: "PostToolUse", session_id: "default", cwd: "D:/repo", toolName: "bash | COMMENT |
| LOW | test/pet-window-runtime.test.js | 581 | assert.equal(runtime.looseClampPetToDisplays(0, 10_000, 200, 200).y, 600); | COMMENT |
| LOW | test/pet-window-runtime.test.js | 681 | 851, | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1061 | COMMENT | |
| LOW | test/pet-window-runtime.test.js | 1321 | // but mechanistically identical side effect discovered while implementing | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1341 | harness.runtime.applyPetWindowBounds({ | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1361 | const renderWin = harness.renderWin; | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1381 | harness.runtime.getPetWindowBounds().x, | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1421 | clock.advance(50); // t=100, well within gen2's own settle window (until t=450) | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1541 | // KNOWN-WRONG edge case ("semantics to be revisited with P1-4"). C-1's | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1561 | // means the generation never turns over). `fromSettleSweep` is true purely | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1761 | // | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1801 | // lastLogicalBounds, then unconditionally fall through to the Y offset | COMMENT |
| LOW | test/pet-window-runtime.test.js | 1921 | // purely on clamp-explainability, not the settle-window grace period | COMMENT |
| LOW | test/pet-window-runtime.test.js | 2161 | // own new code and found 5 further blocking issues plus 2 non-blocking ones, | COMMENT |
| LOW | test/pet-window-runtime.test.js | 2221 | "the settle sweep must rebase to the actual position a real event chain reported, not adopt-clamp it as if nothing | COMMENT |
| LOW | test/pet-window-runtime.test.js | 2361 | // WRITE time, independent of whether any native event ever arrives), | COMMENT |
| LOW | test/pet-window-runtime.test.js | 2381 | // be explained through (right) was never eligible. | COMMENT |
| LOW | test/pet-window-runtime.test.js | 2441 | // target, applyPetWindowBounds()'s own same-rect skip | COMMENT |
| LOW | test/pet-window-runtime.test.js | 2481 | ); | COMMENT |
| LOW | test/pet-window-runtime.test.js | 2501 | // of whatever the software's OWN inset-learning state is — so once the | COMMENT |
| LOW | test/pet-window-runtime.test.js | 2541 | assert.equal(setBoundsCallsAfterFirstSync, 1, "sanity: the first sync is a genuine write"); | COMMENT |
| LOW | test/pet-window-runtime.test.js | 2581 | COMMENT | |
| LOW | test/session-hud-style.test.js | 81 | // color-vision deficiency. | COMMENT |
| LOW | test/bubble-kimi-cue.test.js | 101 | COMMENT | |
| LOW | test/permission-auto-approve.test.js | 1 | // Permission automation chokepoint in showPermissionBubble. | COMMENT |
| LOW | test/permission-plan-feedback.test.js | 1 | // Tests for the ExitPlanMode "Tell Claude what to change" feedback path. | COMMENT |
| LOW | test/permission-plan-feedback.test.js | 261 | destroy: () => {}, | COMMENT |
| LOW | test/server-runtime-write.test.js | 1 | // test/server-runtime-write.test.js — #681 Slice A1, runtime write robustness. | COMMENT |
| LOW | test/server-runtime-write.test.js | 181 | COMMENT | |
| LOW | test/pid-cache-sanitized.test.js | 1 | // test/pid-cache-sanitized.test.js — #681 Slice A2, the privacy boundary. | COMMENT |
| LOW | test/telegram-approval-settings.test.js | 261 | // test fails loudly if a future refactor re-introduces the read. | COMMENT |
| LOW | test/edge-virtualization.test.js | 1 | "use strict"; | COMMENT |
| LOW | test/edge-virtualization.test.js | 121 | const ISSUE_690_WORK_AREA = { x: 0, y: 0, width: 1920, height: 1080 }; | COMMENT |
| LOW | test/edge-virtualization.test.js | 161 | // geometry change — it would fire a real ConfigureNotify/move event, not | COMMENT |
| LOW | test/edge-virtualization.test.js | 181 | offsetRatio, | COMMENT |
| LOW | test/edge-virtualization.test.js | 221 | let cursor = { x: 100, y: 100 }; | COMMENT |
| LOW | test/edge-virtualization.test.js | 261 | // (src/main.js's petWindowRuntime options) — a single shared counter here | COMMENT |
| LOW | test/edge-virtualization.test.js | 501 | afterEach(() => { | COMMENT |
| LOW | test/edge-virtualization.test.js | 621 | ); | COMMENT |
| LOW | test/edge-virtualization.test.js | 641 | assert.equal(h.runtime.getPetWindowBounds().x, 1816, "logical X must settle at calcMiniX()'s resting position"); | COMMENT |
| LOW | test/edge-virtualization.test.js | 941 | COMMENT | |
| LOW | test/edge-virtualization.test.js | 961 | ); | COMMENT |
| LOW | test/edge-virtualization.test.js | 981 | // could see this — this is the first assembly wiring both sides to the | COMMENT |
| LOW | test/edge-virtualization.test.js | 1021 | // exit must consume the deferred topology change) — using this harness's | COMMENT |
| LOW | test/edge-virtualization.test.js | 1061 | "miniPeekIn()'s own exit must consume the deferred topology change AND preserve peek semantics: the new resting po | COMMENT |
| LOW | test/topmost-runtime.test.js | 361 | }); | COMMENT |
| LOW | test/topmost-runtime.test.js | 1001 | // setImeEditingPetDodge() dedupes against its own `imeEditingPetDodge` | COMMENT |
| LOW | test/antigravity-install.test.js | 601 | const command = __test.buildAntigravityHookCommand( | COMMENT |
| LOW | test/antigravity-install.test.js | 661 | // #568: [Console]::In.ReadToEnd() blocks forever when the runner never | COMMENT |
| 278 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | test/settings-renderer-browser-env.test.js | 9180 | harness.core.state.mountedControls.roamArea.chooseButton.dispatchEvent({ type: "click", bubbles: false }); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 9546 | harness.core.state.mountedControls.generalSwitches.delete("showDock"); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10279 | assert.strictEqual(harness.core.state.transientUiState.generalSwitches.has("soundMuted"), false); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10315 | assert.strictEqual(harness.core.state.transientUiState.generalSwitches.has("soundMuted"), false); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10332 | const manage = harness.core.state.mountedControls.generalSwitches.get("manageClaudeHooksAutomatically"); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10333 | const autoStart = harness.core.state.mountedControls.generalSwitches.get("autoStartWithClaude"); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10358 | let autoStart = harness.core.state.mountedControls.generalSwitches.get("autoStartWithClaude"); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10370 | autoStart = harness.core.state.mountedControls.generalSwitches.get("autoStartWithClaude"); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10381 | autoStart = harness.core.state.mountedControls.generalSwitches.get("autoStartWithClaude"); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10438 | const autoStart = harness.core.state.mountedControls.generalSwitches.get("autoStartWithCodex"); | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10475 | const notificationPolicy = harness.core.state.mountedControls.bubblePolicyControls.get("notificationBubbleAutoCloseS | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10607 | const notificationPolicy = harness.core.state.mountedControls.bubblePolicyControls.get("notificationBubbleAutoCloseS | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10662 | const notificationPolicy = harness.core.state.mountedControls.bubblePolicyControls.get("notificationBubbleAutoCloseS | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 10692 | const notificationPolicy = harness.core.state.mountedControls.bubblePolicyControls.get("notificationBubbleAutoCloseS | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 12273 | harness.core.runtime.agentInstallationHints.agents.map((agent) => agent.agentId), | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 12325 | harness.core.runtime.agentInstallationHints.agents.map((entry) => entry.detectedInstalled), | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 12999 | const permissionsSwitch = [...harness.core.state.mountedControls.agentSwitches.values()] | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 13036 | const soundSwitch = [...harness.core.state.mountedControls.agentSwitches.values()] | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 13096 | const subagentSwitch = [...harness.core.state.mountedControls.agentSwitches.values()] | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 13153 | const subagentSwitch = [...harness.core.state.mountedControls.agentSwitches.values()] | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 13156 | const permissionsSwitch = [...harness.core.state.mountedControls.agentSwitches.values()] | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 13190 | const permissionsSwitch = [...harness.core.state.mountedControls.agentSwitches.values()] | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 13197 | const notificationSwitch = [...harness.core.state.mountedControls.agentSwitches.values()] | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 13496 | harness.core.state.mountedControls.animMapSwitches.set("clawd:error", { | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 13540 | harness.core.state.mountedControls.animMapSwitches.set("clawd:error", { | CODE |
| CRITICAL | test/settings-renderer-browser-env.test.js | 13606 | harness.core.state.mountedControls.animMapSwitches.set("clawd:error", { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/hermes-plugin.test.js | 103 | print(json.dumps({"events": [item["event"] for item in posts]}, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 124 | return None | CODE |
| HIGH | test/hermes-plugin.test.js | 152 | print(json.dumps([{"event": item["event"], "session_id": item["session_id"]} for item in posts])) | CODE |
| HIGH | test/hermes-plugin.test.js | 188 | print(json.dumps(posts, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 236 | print(json.dumps(posts[-1], sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 267 | print(json.dumps(posts[-1], sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 294 | return None | CODE |
| HIGH | test/hermes-plugin.test.js | 326 | print(json.dumps(cases, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 358 | return None | CODE |
| HIGH | test/hermes-plugin.test.js | 376 | print(json.dumps({"meta": meta, "payload": payload, "unresolved": unresolved}, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 446 | print(json.dumps({"calls": calls, "meta": meta}, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 496 | print(json.dumps({"calls": calls, "meta": meta}, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 535 | return None | CODE |
| HIGH | test/hermes-plugin.test.js | 551 | print(json.dumps({ | CODE |
| HIGH | test/hermes-plugin.test.js | 608 | return False | CODE |
| HIGH | test/hermes-plugin.test.js | 632 | print(json.dumps({"result": result, "calls": calls, "cached_port": mod._cached_port}, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 687 | print(json.dumps({"received": received, "cached_port": mod._cached_port}, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 720 | return False | CODE |
| HIGH | test/hermes-plugin.test.js | 749 | print(json.dumps({ | CODE |
| HIGH | test/hermes-plugin.test.js | 786 | print(json.dumps({"result": result, "calls": calls, "logs": logs}, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 809 | print(json.dumps({"result": result, "hook_events": hook_events}, sort_keys=True)) | CODE |
| HIGH | test/hermes-plugin.test.js | 839 | return False | CODE |
| HIGH | test/hermes-plugin.test.js | 855 | print(json.dumps({ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | test/state.test.js | 5552 | // Qwen Code 0.16.1 self-submit filter — qwen's agentic loop fires a synthetic | COMMENT |
| MEDIUM | docs/releases/release-v0.6.0.md | 6 | - **Theme ecosystem** — fully pluggable theme system replacing hardcoded constants. Themes now define state-to-asset map | CODE |
| MEDIUM | docs/releases/release-v0.9.0.md | 13 | - **Mobile companion — read-only PWA LAN preview (M1)** (#391, #412, #419) - A new read-only mobile companion serves a s | CODE |
| MEDIUM | hooks/qwen-code-hook.js | 30 | // agentic-loop tool-result feedback, NOT user input. It used to flash | COMMENT |
| MEDIUM | hooks/clawd-hook.js | 13 | // #634: the pid cache + lifecycle orchestration is owned by the shared resolver | COMMENT |
| MEDIUM | hooks/clawd-hook.js | 708 | // #627/#634: the per-session pid cache + lifecycle orchestration now lives | COMMENT |
| MEDIUM⚡ | src/state.js | 445 | // 2000ms window covers the agentic loop with ~2x headroom while still letting | COMMENT |
| MEDIUM⚡ | src/state.js | 450 | // PostToolUseFailure (where the agentic loop may still self-submit), and | COMMENT |
| MEDIUM | src/state.js | 2018 | // Qwen Code 0.16.1 self-submit guard. qwen's agentic loop fires a synthetic | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | hooks/hermes-plugin/__init__.py | 190 | def _read_runtime_port() -> Optional[int]: | CODE |
| LOW⚡ | hooks/hermes-plugin/__init__.py | 512 | except Exception: | CODE |
| LOW⚡ | hooks/hermes-plugin/__init__.py | 526 | except Exception: | CODE |
| LOW⚡ | hooks/hermes-plugin/__init__.py | 529 | except Exception: | CODE |
| LOW⚡ | hooks/hermes-plugin/__init__.py | 645 | except Exception: | CODE |
| LOW⚡ | hooks/hermes-plugin/__init__.py | 655 | except Exception as exc: | CODE |
| LOW⚡ | hooks/hermes-plugin/__init__.py | 672 | except Exception as exc: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 185 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 196 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 248 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 265 | except Exception as exc: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 327 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 359 | except Exception as exc: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 392 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 409 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 457 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 485 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 755 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 1009 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 1038 | except Exception as exc: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 1122 | except Exception: | CODE |
| LOW | hooks/hermes-plugin/__init__.py | 1168 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/gemini-log-monitor.test.js | 128 | // Step 1: user message → thinking | COMMENT |
| LOW⚡ | test/gemini-log-monitor.test.js | 145 | // Step 2: 300ms — gemini text, no toolCalls (deferred idle starts) | COMMENT |
| LOW⚡ | test/gemini-log-monitor.test.js | 153 | // Step 3: 800ms — toolCalls arrive (within 2s defer) → cancel idle, emit attention | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 275 | // Step 1: user message | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 287 | // Step 2: gemini with tools → attention, turnHasTools=true | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 299 | // Step 3: follow-up text (no tools) → should be SKIPPED (turnHasTools=true) | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 323 | // Step 1: user message | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 335 | // Step 2: gemini with tools → attention, turnHasTools=true | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 347 | // Step 3: new user message → resets turnHasTools | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 360 | // Step 4: gemini text without tools → should NOT be skipped (new turn, turnHasTools reset) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/gemini-log-monitor.test.js | 128 | // Step 1: user message → thinking | COMMENT |
| LOW⚡ | test/gemini-log-monitor.test.js | 145 | // Step 2: 300ms — gemini text, no toolCalls (deferred idle starts) | COMMENT |
| LOW⚡ | test/gemini-log-monitor.test.js | 153 | // Step 3: 800ms — toolCalls arrive (within 2s defer) → cancel idle, emit attention | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 275 | // Step 1: user message | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 287 | // Step 2: gemini with tools → attention, turnHasTools=true | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 299 | // Step 3: follow-up text (no tools) → should be SKIPPED (turnHasTools=true) | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 323 | // Step 1: user message | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 335 | // Step 2: gemini with tools → attention, turnHasTools=true | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 347 | // Step 3: new user message → resets turnHasTools | COMMENT |
| LOW | test/gemini-log-monitor.test.js | 360 | // Step 4: gemini text without tools → should NOT be skipped (new turn, turnHasTools reset) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/remote-ssh-codespaces-harness.test.js | 18 | test("#546 manual harness is tracked, isolated, and never uses broad process cleanup", () => { | CODE |
| MEDIUM | test/remote-ssh-codespaces-harness.test.js | 51 | test("#546 V10 readiness harness uses a test-only identity and exact cleanup", () => { | CODE |
| MEDIUM | test/edge-virtualization.test.js | 274 | // (1 per write, from the runtime's own tail-end call only) — a robust | COMMENT |
| MEDIUM | test/bubble-format.test.js | 187 | // server is always second-to-last, tool is last — robust to extra prefixes. | COMMENT |
| MEDIUM | hooks/opencode-family-install.js | 90 | // to the REAL ~/.config, which is how #825's verification harness first | COMMENT |
| MEDIUM | src/remote-ssh-deploy.js | 424 | // with .trim(), so it's robust to either, but no-newline avoids | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/pet-window-runtime.test.js | 2232 | // write landed exactly as requested) and takes (a) — pre-fix, (a) left | COMMENT |
| HIGH | src/pet-window-runtime.js | 995 | // (a) our own write landed exactly as requested. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/settings-icons.test.js | 58 | const placeholder = icons.getIcon("placeholder"); | CODE |
| LOW | test/settings-icons.test.js | 66 | assert.strictEqual(icons.getIcon("no-such-tab-xyz"), icons.getIcon("placeholder")); | CODE |
| LOW | src/settings-renderer.js | 59 | div.className = "placeholder"; | CODE |
| LOW | src/settings-renderer.js | 61 | `<div class="placeholder-icon">${getTabIcon("placeholder")}</div>` + | CODE |
| LOW | src/settings-tab-agents.js | 91 | empty.className = "placeholder"; | CODE |
| LOW | src/settings-tab-theme.js | 58 | empty.className = "placeholder"; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hooks/hermes-plugin/__init__.py | 218 | CODE | |
| LOW | hooks/hermes-plugin/__init__.py | 277 | CODE | |
| LOW | hooks/hermes-plugin/__init__.py | 571 | CODE | |
| LOW | hooks/hermes-plugin/__init__.py | 1082 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test-macos.sh | 95 | # Check if the state server received it | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ci/wayland-smoke.sh | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hooks/hermes-plugin/__init__.py | 8 | CODE |