Repository Analysis

Gitlawb/openclaude

runs anywhere. uses anything

4.9 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of Gitlawb/openclaude, a TypeScript project with 29,979 GitHub stars. SynthScan v2.0 examined 811,343 lines of code across 3109 source files, recording 3569 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 4.9 places this repository in the Likely human-written 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).

4.9
Adjusted Score
4.9
Raw Score
100%
Time Factor
2026-07-14
Last Push
30.0K
Stars
TypeScript
Language
811.3K
Lines of Code
3.1K
Files
3.6K
Pattern Hits
2026-07-14
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

Severity Breakdown

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.

CRITICAL 1HIGH 3MEDIUM 164LOW 3401

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 3569 distinct pattern matches across 12 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.

Hyper-Verbose Identifiers2806 hits · 2806 pts
SeverityFileLineSnippetContext
LOWtests/sdk/sdk-preserved-segment.test.ts37function createCompactTranscriptWithPreservedSegment(CODE
LOWtests/sdk/permissions.test.ts43function toolUseContextForPermissionMode(mode: string) {CODE
LOWtests/sdk/helpers/query-test-doubles.ts91export function createMinimalConversation(sessionId: string): Array<Record<string, unknown>> {CODE
LOWtests/sdk/helpers/query-test-doubles.ts118export function createMultiTurnConversation(CODE
LOWscripts/provider-recommend.ts38export function getOpenAIConfigurationState(CODE
LOWscripts/system-check.test.ts369 function useOpenAICompatibleProvider() {CODE
LOWscripts/system-check.test.ts375 function useOpenAICompatibleProviderWithoutModel() {CODE
LOWscripts/no-raw-abort-signal-timeout.test.ts45function isAllowedDocumentationLine(line: string): boolean {CODE
LOWscripts/no-raw-abort-signal-timeout.test.ts82function findRawTimeoutSignalUsages(): Finding[] {CODE
LOWscripts/externalsValidation.ts64export function validateIntentionallyBundled(CODE
LOWscripts/externalsValidation.ts146export function validateOptionalRuntimeExternals(CODE
LOWscripts/system-check.ts221function formatDuckDuckGoReliabilityDetail(providerMode: string): string {CODE
LOWscripts/system-check.ts225function vertexModelSupportsNativeWebSearch(model: string): boolean {CODE
LOWscripts/system-check.ts233function isCodexResponsesWebSearchEnabledForDoctor(): boolean {CODE
LOWscripts/system-check.ts241function buildNativeWebSearchCheck(): CheckResult {CODE
LOWscripts/system-check.ts366function getAutoFirecrawlMissingCredentialDetail(): string | undefined {CODE
LOWscripts/system-check.ts374function appendAutoFirecrawlMissingCredentialDetail(result: CheckResult): CheckResult {CODE
LOWscripts/system-check.ts384function isWebSearchApiProviderConfiguredForDoctor(providerName: string): boolean {CODE
LOWscripts/system-check.ts388function buildCustomWebSearchCheck(providerConfigured: boolean): CheckResult {CODE
LOWscripts/system-check.ts457function formatWebSearchTimeoutSeconds(): string {CODE
LOWscripts/system-check.ts461function appendWebSearchTimeoutDetail(result: CheckResult): CheckResult {CODE
LOWscripts/system-check.ts469function appendWebSearchTimeoutDetails(results: CheckResult[]): CheckResult[] {CODE
LOWscripts/system-check.ts99function formatActiveHardCapDetail(CODE
LOWscripts/system-check.ts278function buildAutoNativeWebSearchCheck(): CheckResult | undefined {CODE
LOWscripts/system-check.ts312function getConfiguredWebSearchApiProviderNames(): string[] {CODE
LOWscripts/system-check.ts319function appendConfiguredWebSearchApiProviderDetail(result: CheckResult): CheckResult {CODE
LOWscripts/system-check.ts330function hasFirecrawlRunnableConfig(): boolean {CODE
LOWscripts/system-check.ts335function buildFirecrawlWebSearchCheck(): CheckResult {CODE
LOWscripts/system-check.ts577export function formatReachabilityFailureDetail(CODE
LOWscripts/system-check.ts607export function readNodeExecutableVersion(CODE
LOWscripts/system-check.ts677export function isCliSandboxRuntimeStubbed(bundleText: string): boolean {CODE
LOWscripts/system-check.ts797function getOpenAICompatibleRouteId(baseUrl: string): string {CODE
LOWscripts/system-check.ts805function getOpenAICompatibleCredentialContext(baseUrl: string): {CODE
LOWscripts/system-check.ts1131async function checkProviderGenerationReadiness(): Promise<CheckResult> {CODE
LOWscripts/pr-intent-scan.ts178function hasSuspiciousDownloadIndicators(url: URL): boolean {CODE
LOWscripts/pr-intent-scan.ts246function findSensitivePathFindings(line: DiffLine): Finding[] {CODE
LOWscripts/no-telemetry-plugin.ts33export async function checkGlobalInstallPermissions() { return { hasPermissions: false, npmPrefix: null }; }CODE
LOWscripts/no-telemetry-plugin.ts58export async function logPermissionContextForAnts() {}CODE
LOWscripts/no-telemetry-plugin.ts76export function getUndercoverInstructions() { return ''; }CODE
LOWscripts/no-telemetry-plugin.ts77export function shouldShowUndercoverAutoNotice() { return false; }CODE
LOWscripts/no-telemetry-plugin.ts117function escapeForResolvedPathRegex(modulePath: string): string {CODE
LOWscripts/provider-launch.ts84async function resolveOllamaDefaultModel(CODE
LOWscripts/provider-launch.ts92async function resolveAtomicChatDefaultModel(): Promise<string | null> {CODE
LOWscripts/provider-launch.ts141function hasUsableGeminiLaunchAuth(env: NodeJS.ProcessEnv): boolean {CODE
LOWscripts/provider-launch.ts156export function hasUsableOpenAILaunchCredential(CODE
LOWvscode-extension/openclaude-vscode/src/presentation.js99function buildControlCenterViewModel(status = {}) {CODE
LOWvscode-extension/openclaude-vscode/src/extension.js376async function collectControlCenterState() {CODE
LOWvscode-extension/openclaude-vscode/src/extension.js574function getPrimaryLaunchActionDetail(status) {CODE
LOWvscode-extension/openclaude-vscode/src/extension.js590function getWorkspaceRootActionDetail(status, fallbackDetail) {CODE
LOW…e-extension/openclaude-vscode/src/chat/chatRenderer.js801 function getOrCreateAssistantEl() {CODE
LOW…nsion/openclaude-vscode/src/chat/permissionResponse.js13function buildPermissionControlResult(action, ctx = {}) {CODE
LOWsrc/projectOnboardingSteps.ts40export function isProjectOnboardingComplete(): boolean {CODE
LOWsrc/history.ts230async function resolveStoredPastedContent(CODE
LOWsrc/history.ts436export function clearPendingHistoryEntries(): void {CODE
LOWsrc/main.tsx363function prefetchSystemContextIfSafe(): void {CODE
LOWsrc/main.tsx390function startMemoryMonitorIfNeeded(): void {CODE
LOWsrc/Tool.ts347export function filterToolProgressMessages(CODE
LOWsrc/commands.ts395function withOpenClaudeCommandLocalizationKey(cmd: Command): Command {CODE
LOWsrc/commands.ts469export function meetsAvailabilityRequirement(cmd: Command | null | undefined): boolean {CODE
LOWsrc/commands.ts575export function clearCommandMemoizationCaches(): void {CODE
2746 more matches not shown…
Over-Commented Block498 hits · 470 pts
SeverityFileLineSnippetContext
LOWtests/sdk/query-methods.test.ts241// setPermissionMode is tested via buildPermissionContext in permissions.test.tsCOMMENT
LOWscripts/generate-sdk-types.ts41 UUIDPlaceholder: 'string',COMMENT
LOWscripts/stubMarkerGuard.ts21 return fromSrc.replace(/\.(?:[cm]?[jt]sx?)$/, '')COMMENT
LOWscripts/externals.ts81 '@anthropic-ai/foundry-sdk',COMMENT
LOWscripts/build.ts1001// ── Guard: no unexpected missing-module stubs in the shipped CLI bundle ─────COMMENT
LOWscripts/build.ts1021if (result?.success) {COMMENT
LOWsrc/main.tsx1// These side-effects must run before all other imports:COMMENT
LOWsrc/main.tsx901COMMENT
LOWsrc/main.tsx1001 prompt = undefined;COMMENT
LOWsrc/main.tsx1021 // Trust gate: .claude/settings.json is attacker-controllable in anCOMMENT
LOWsrc/main.tsx1461 // stderr+exit(1) — a throw here becomes a silent unhandledCOMMENT
LOWsrc/main.tsx1921 if (!effectiveReplayUserMessages && outputFormat === 'stream-json') {COMMENT
LOWsrc/main.tsx1941COMMENT
LOWsrc/main.tsx2381 }));COMMENT
LOWsrc/main.tsx2541 // This includes potentially dangerous environment variables from untrusted sourcesCOMMENT
LOWsrc/QueryEngine.ts441 // src/query.ts (the shared query path used by both REPL and SDK), so theyCOMMENT
LOWsrc/query.ts561 // task_budget.remaining tracking across compaction boundaries. UndefinedCOMMENT
LOWsrc/query.ts761 ? microcompactResult?.compactionInfo?.pendingCacheEditsCOMMENT
LOWsrc/query.ts1081COMMENT
LOWsrc/query.ts1101 // Widened to walrus so RC can act as fallback when proactive fails.COMMENT
LOWsrc/query.ts1761 // drain first (cheap, keeps granular context), then reactive compactCOMMENT
LOWsrc/query.ts2101 // `options.model` win over the new profile's OPENAI_MODEL. MirrorCOMMENT
LOWsrc/query.ts2681 // These will be sent as attachments so Claude can respond to them in the current turn.COMMENT
LOWsrc/interactiveHelpers.tsx241 const {COMMENT
LOWsrc/interactiveHelpers.tsx261 // true; only blocks on a cold/stale-false cache (awaits the same memoizedCOMMENT
LOWsrc/ink/dom.ts41 // Used to skip empty renders during React 19's effect double-invoke in test modeCOMMENT
LOWsrc/ink/dom.ts61 // naturally cancels (pure accumulator, no target tracking).COMMENT
LOWsrc/ink/render-node-to-output.ts561 // parent) AND a sibling lands at the same y. Skip rendering — both wouldCOMMENT
LOWsrc/ink/render-node-to-output.ts661 output.write(x, y, text, softWrap)COMMENT
LOWsrc/ink/render-node-to-output.ts761 // scrollAnchor: scroll so the anchored element's top is at theCOMMENT
LOWsrc/ink/render-node-to-output.ts781 // previous max, pin to the new max. Scroll away → stop following;COMMENT
LOWsrc/ink/render-node-to-output.ts841 let cur = node.scrollTop ?? 0COMMENT
LOWsrc/ink/render-node-to-output.ts921 }COMMENT
LOWsrc/ink/render-node-to-output.ts1001COMMENT
LOWsrc/ink/render-node-to-output.ts1021 const spaces = ' '.repeat(w)COMMENT
LOWsrc/ink/render-node-to-output.ts1281// conservatively disable blit for all.COMMENT
LOWsrc/ink/render-node-to-output.ts1481 }COMMENT
LOWsrc/ink/searchHighlight.ts41 const rowOff = row * wCOMMENT
LOWsrc/ink/ink.tsx121 // pass in onRender can read it and App.tsx can update it from mouseCOMMENT
LOWsrc/ink/ink.tsx141 private readonly selectionListeners = new Set<() => void>();COMMENT
LOWsrc/ink/ink.tsx161 // INSIDE the BSU/ESU block so clear+paint is atomic. Writing ERASE_SCREENCOMMENT
LOWsrc/ink/ink.tsx321 // Physical cursor position is unknown after the shell took over duringCOMMENT
LOWsrc/ink/ink.tsx481 // before they're overwritten — the text stays copyable until theCOMMENT
LOWsrc/ink/ink.tsx501 // to scroll off, shift moves the selection endpoint so the same rowsCOMMENT
LOWsrc/ink/ink.tsx521 // the highlight, and getSelectedText reads the CURRENT screenCOMMENT
LOWsrc/ink/ink.tsx541 // LogUpdate remains a pure diff engine.COMMENT
LOWsrc/ink/ink.tsx581 // Selection/highlight overlays write via setCellStyleId which doesn'tCOMMENT
LOWsrc/ink/ink.tsx641 });COMMENT
LOWsrc/ink/ink.tsx661 // After resize, prepend ERASE_SCREEN too. The diff only writes cellsCOMMENT
LOWsrc/ink/ink.tsx761 const skipSyncMarkers = this.altScreenActive ? !SYNC_OUTPUT_SUPPORTED : rewriteMainScreen || shouldSkipMainScreenSynCOMMENT
LOWsrc/ink/ink.tsx1501 // so we must reset terminal modes here to prevent escape sequence leakage.COMMENT
LOWsrc/ink/parse-keypress.ts21// Modifier is optional - when absent, defaults to 1 (no modifiers)COMMENT
LOWsrc/ink/parse-keypress.ts41// eslint-disable-next-line no-control-regexCOMMENT
LOWsrc/ink/log-update.ts161 // finds only the rows that scrolled IN as diffs. prev.screen isCOMMENT
LOWsrc/ink/log-update.ts201 // Additionally, the cursor-restore scroll pushes 1 more row into scrollback.COMMENT
LOWsrc/ink/renderer.ts81 }COMMENT
LOWsrc/ink/components/App.tsx41 readonly exitOnCtrlC: boolean;COMMENT
LOWsrc/ink/components/App.tsx61 // time. Returns the URL or undefined. The browser-open is deferred byCOMMENT
LOWsrc/ink/components/App.tsx561/** Exported for testing. Mutates app.props.selection and click/hover state. */COMMENT
LOWsrc/ink/components/App.tsx661 // trackpad jitter during an intended double-click (press→wobble→releaseCOMMENT
438 more matches not shown…
Decorative Section Separators144 hits · 444 pts
SeverityFileLineSnippetContext
MEDIUMweb/src/data/commands.ts61 // ── sessions & conversations ─────────────────────────────────────────COMMENT
MEDIUMweb/src/data/commands.ts78 // ── context & memory ─────────────────────────────────────────────────COMMENT
MEDIUMweb/src/data/commands.ts91 // ── models & providers ───────────────────────────────────────────────COMMENT
MEDIUMweb/src/data/commands.ts102 // ── code review & git ────────────────────────────────────────────────COMMENT
MEDIUMweb/src/data/commands.ts112 // ── tools & integrations ─────────────────────────────────────────────COMMENT
MEDIUMweb/src/data/commands.ts123 // ── ui & customization ───────────────────────────────────────────────COMMENT
MEDIUMweb/src/data/commands.ts136 // ── help & diagnostics ───────────────────────────────────────────────COMMENT
MEDIUMscripts/no-telemetry-growthbook-stub.test.ts59 // ── File absent ──────────────────────────────────────────────────COMMENT
MEDIUMscripts/no-telemetry-growthbook-stub.test.ts69 // ── Valid JSON object ────────────────────────────────────────────COMMENT
MEDIUMscripts/no-telemetry-growthbook-stub.test.ts91 // ── Malformed / non-object JSON ──────────────────────────────────COMMENT
MEDIUMscripts/no-telemetry-growthbook-stub.test.ts111 // ── Cache invalidation ───────────────────────────────────────────COMMENT
MEDIUMscripts/no-telemetry-growthbook-stub.test.ts126 // ── Security gate ────────────────────────────────────────────────COMMENT
MEDIUMscripts/no-telemetry-growthbook-stub.test.ts136 // ── All getter variants return default ───────────────────────────COMMENT
MEDIUMscripts/no-telemetry-growthbook-stub.test.ts147 // ── Gate helpers route through _getFlagValue ──────────────────────────COMMENT
MEDIUMscripts/no-telemetry-plugin.ts25 // ─── Auto-updater (phones home to GCS + npm) ──────────────────COMMENT
MEDIUMscripts/no-telemetry-plugin.ts42 // ─── Plugin fetch telemetry (not the marketplace itself) ───────COMMENT
MEDIUMscripts/no-telemetry-plugin.ts49 // ─── Transcript / feedback sharing ─────────────────────────────COMMENT
MEDIUMscripts/no-telemetry-plugin.ts55 // ─── Internal employee logging (not needed in the external build) ─────COMMENT
MEDIUMscripts/no-telemetry-plugin.ts62 // ─── Deleted Anthropic-internal modules ───────────────────────────────COMMENT
MEDIUMscripts/build.ts85 // ── Disabled: require Anthropic infrastructure or missing source ─────COMMENT
MEDIUMscripts/build.ts103 // ── Disabled by default, opt-in via runtime env var ─────────────────COMMENT
MEDIUMscripts/build.ts106 // ── Enabled: upstream defaults ──────────────────────────────────────COMMENT
MEDIUMscripts/build.ts114 // ── Enabled: new activations ────────────────────────────────────────COMMENT
MEDIUMscripts/build.ts132// ── Pre-process: replace feature() calls with boolean literals ──────COMMENT
MEDIUMscripts/build.ts529// ── SDK Bundle Build ──────────────────────────────────────────────────────COMMENT
MEDIUMscripts/build.ts966// ── Validate SDK bundle for React/Ink leakage ──────────────────────────────COMMENT
MEDIUMscripts/build.ts989// ── Validate external lists ──────────────────────────────────────────────COMMENT
MEDIUMscripts/build.ts1001// ── Guard: no unexpected missing-module stubs in the shipped CLI bundle ─────COMMENT
MEDIUMsrc/tools/PowerShellTool/pathValidation.ts134 // ─── Write/create operations ──────────────────────────────────────────────COMMENT
MEDIUMsrc/tools/PowerShellTool/pathValidation.ts384 // ─── Read operations ──────────────────────────────────────────────────────COMMENT
MEDIUMsrc/tools/BashTool/pathValidation.ts1204// ───────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/tools/BashTool/pathValidation.ts1224// ───────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts169 // ── 1. Create session (POST /v1/code/sessions, no env_id) ───────────────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts219 // ── 3. Build v2 transport (SSETransport + CCRClient) ────────────────────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts261 // ── 4. State ────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts314 // ── 5. JWT refresh scheduler ────────────────────────────────────────────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts382 // ── 6. Wire callbacks (extracted so transport-rebuild can re-wire) ──────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts533 // ── 8. 401 recovery (OAuth refresh + rebuild) ───────────────────────────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts610 // ── 8. History flush + drain helpers ────────────────────────────────────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts662 // ── 9. Teardown ───────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts773 // ── 10. Handle ──────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/bridge/remoteBridgeCore.ts900// ─── Session API (v2 /code/sessions, no env) ─────────────────────────────────COMMENT
MEDIUMsrc/bridge/initReplBridge.ts407 // ── GrowthBook gate: env-less bridge ──────────────────────────────────COMMENT
MEDIUMsrc/bridge/initReplBridge.ts464 // ── v1 path: env-based (register/poll/ack/heartbeat) ──────────────────COMMENT
MEDIUMsrc/bridge/bridgeMessaging.ts31// ─── Type guards ─────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/bridge/bridgeMessaging.ts124// ─── Ingress routing ─────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/bridge/bridgeMessaging.ts213// ─── Server-initiated control requests ───────────────────────────────────────COMMENT
MEDIUMsrc/bridge/bridgeMessaging.ts399// ─── Result message (for session archival on teardown) ───────────────────────COMMENT
MEDIUMsrc/bridge/bridgeMessaging.ts424// ─── BoundedUUIDSet (echo-dedup ring buffer) ─────────────────────────────────COMMENT
MEDIUMsrc/bridge/bridgeMain.ts2762// ─── Headless bridge (daemon worker) ────────────────────────────────────────COMMENT
MEDIUMsrc/utils/providerProfile.test.ts2212// ── Atomic Chat profile tests ────────────────────────────────────────────────COMMENT
MEDIUMsrc/utils/providerModels.test.ts9// ── parseModelList ────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/utils/providerModels.test.ts88// ── getPrimaryModel ───────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/utils/providerModels.test.ts116// ── hasMultipleModels ─────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/utils/terminalPanel.ts54 // ── public API ────────────────────────────────────────────────────COMMENT
MEDIUMsrc/utils/terminalPanel.ts60 // ── tmux helpers ──────────────────────────────────────────────────COMMENT
MEDIUMsrc/utils/terminalPanel.ts152 // ── show shell ────────────────────────────────────────────────────COMMENT
MEDIUMsrc/utils/terminalPanel.ts173 // ── helpers ───────────────────────────────────────────────────────COMMENT
MEDIUMsrc/utils/bash/ast.ts2043// ────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/utils/bash/ast.ts2052// ────────────────────────────────────────────────────────────────────────────COMMENT
84 more matches not shown…
Verbosity Indicators46 hits · 88 pts
SeverityFileLineSnippetContext
LOWtests/sdk/session-functions.test.ts316 // Step 1: Create session with conversationCOMMENT
LOWtests/sdk/session-functions.test.ts338 // Step 2: Read messages — should find 2COMMENT
LOWtests/sdk/session-functions.test.ts342 // Step 3: Rename — should append title entryCOMMENT
LOWtests/sdk/session-functions.test.ts348 // Step 4: Tag — should append tag entryCOMMENT
LOWtests/sdk/session-functions.test.ts354 // Step 5: Fork — should create new session with remapped UUIDsCOMMENT
LOWtests/sdk/session-functions.test.ts376 // Step 6: Delete original — forked should still existCOMMENT
LOWtests/sdk/permissions.test.ts876 // Step 1: Timeout fires first — resolves with denyCOMMENT
LOWtests/sdk/permissions.test.ts881 // Step 2: Host responds late with allow — must be ignoredCOMMENT
LOWsrc/tasks/LocalShellTask/LocalShellTask.tsx294 // Step 1: Get the task and shell command from current stateCOMMENT
LOWsrc/utils/stableStringify.ts110 // Step 3: primitives short-circuit (post-toJSON the value may now be one).COMMENT
LOWsrc/utils/stableStringify.ts113 // Step 4: arrays — element key is the index as a string.COMMENT
LOWsrc/utils/stableStringify.ts118 // Step 5: cycle check on the post-toJSON value.COMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts715 // Step 1: Migrate to single file format (consolidates V1/V2 files, cleans up legacy cache)COMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts718 // Step 2: Sync enabledPlugins from settings.json to installed_plugins.jsonCOMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts726 // Step 3: Initialize in-memory session stateCOMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts1131 // Step 2: Start with existing data (or start empty if no file exists)COMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts1140 // Step 3: Update V2 scopes based on settings.json (settings is source of truth)COMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts1096 // Step 1: Build a map of pluginId -> scope from all settings.json filesCOMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts1260 // Step 4: Save to single file (V2 format)COMMENT
LOWsrc/utils/plugins/pluginLoader.ts1452 // Step 1: Load or create the plugin manifestCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1457 // Step 2: Create the base plugin objectCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1468 // Step 3: Auto-detect optional directories in parallelCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1686 // Step 4: Process additional agent paths from manifestCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1708 // Step 5: Process additional skill paths from manifestCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1730 // Step 6: Process additional output style paths from manifestCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1752 // Step 7: Load hooks configurationCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1934 // Step 8: Load plugin settingsCOMMENT
LOWsrc/utils/permissions/permissionSetup.ts1053 // We need to check if base tools were explicitly provided (not just empty default)COMMENT
LOWsrc/components/MarkdownTable.tsx107 // Step 1: Get minimum (longest word) and ideal (full content) widthsCOMMENT
LOWsrc/components/MarkdownTable.tsx123 // Step 2: Calculate available spaceCOMMENT
LOWsrc/components/MarkdownTable.tsx130 // Step 3: Calculate column widths that fit available spaceCOMMENT
LOWsrc/components/MarkdownTable.tsx158 // Step 4: Calculate max row lines to determine if vertical format is neededCOMMENT
LOWsrc/components/StructuredDiff/Fallback.tsx353 // Step 1: Transform lines to line objects with type informationCOMMENT
LOWsrc/components/StructuredDiff/Fallback.tsx356 // Step 2: Group adjacent add/remove lines for word-level diffingCOMMENT
LOWsrc/components/StructuredDiff/Fallback.tsx359 // Step 3: Number the diff linesCOMMENT
LOWsrc/components/StructuredDiff/Fallback.tsx368 // Step 4: Render formattingCOMMENT
LOWsrc/entrypoints/sdk/v2.ts692 // Step 1: Index ALL non-sidechain entries by UUID (user, assistant, system, etc.)COMMENT
LOWsrc/entrypoints/sdk/v2.ts748 // Step 2: Only user/assistant entries can be conversation leavesCOMMENT
LOWsrc/entrypoints/sdk/query.ts243 // Step 1: Read entries — compact-aware for large filesCOMMENT
LOWsrc/entrypoints/sdk/query.ts264 // Step 2: Index ALL non-sidechain entries by UUID (user, assistant, system, etc.)COMMENT
LOWsrc/entrypoints/sdk/query.ts279 // Step 3: Apply preserved segment relinks if segment existsCOMMENT
LOWsrc/entrypoints/sdk/query.ts285 // Step 4: Prune pre-boundary entries (keep only preserved + post-boundary)COMMENT
LOWsrc/entrypoints/sdk/query.ts325 // Step 5: Select leaf — either upToUuid target, or latest USER/ASSISTANT entryCOMMENT
LOWsrc/entrypoints/sdk/query.ts359 // Step 5: Build conversation chain and strip internal fieldsCOMMENT
LOWsrc/services/compact/sessionMemoryCompact.ts242 // Step 1: Handle tool_use/tool_result pairsCOMMENT
LOWsrc/services/compact/sessionMemoryCompact.ts288 // Step 2: Handle thinking blocks that share message.id with kept assistant messagesCOMMENT
Structural Annotation Overuse45 hits · 86 pts
SeverityFileLineSnippetContext
LOWtests/sdk/session-functions.test.ts316 // Step 1: Create session with conversationCOMMENT
LOWtests/sdk/session-functions.test.ts338 // Step 2: Read messages — should find 2COMMENT
LOWtests/sdk/session-functions.test.ts342 // Step 3: Rename — should append title entryCOMMENT
LOWtests/sdk/session-functions.test.ts348 // Step 4: Tag — should append tag entryCOMMENT
LOWtests/sdk/session-functions.test.ts354 // Step 5: Fork — should create new session with remapped UUIDsCOMMENT
LOWtests/sdk/session-functions.test.ts376 // Step 6: Delete original — forked should still existCOMMENT
LOWtests/sdk/permissions.test.ts876 // Step 1: Timeout fires first — resolves with denyCOMMENT
LOWtests/sdk/permissions.test.ts881 // Step 2: Host responds late with allow — must be ignoredCOMMENT
LOWsrc/tasks/LocalShellTask/LocalShellTask.tsx294 // Step 1: Get the task and shell command from current stateCOMMENT
LOWsrc/utils/stableStringify.ts110 // Step 3: primitives short-circuit (post-toJSON the value may now be one).COMMENT
LOWsrc/utils/stableStringify.ts113 // Step 4: arrays — element key is the index as a string.COMMENT
LOWsrc/utils/stableStringify.ts118 // Step 5: cycle check on the post-toJSON value.COMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts715 // Step 1: Migrate to single file format (consolidates V1/V2 files, cleans up legacy cache)COMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts718 // Step 2: Sync enabledPlugins from settings.json to installed_plugins.jsonCOMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts726 // Step 3: Initialize in-memory session stateCOMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts1131 // Step 2: Start with existing data (or start empty if no file exists)COMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts1140 // Step 3: Update V2 scopes based on settings.json (settings is source of truth)COMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts1096 // Step 1: Build a map of pluginId -> scope from all settings.json filesCOMMENT
LOWsrc/utils/plugins/installedPluginsManager.ts1260 // Step 4: Save to single file (V2 format)COMMENT
LOWsrc/utils/plugins/pluginLoader.ts1452 // Step 1: Load or create the plugin manifestCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1457 // Step 2: Create the base plugin objectCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1468 // Step 3: Auto-detect optional directories in parallelCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1686 // Step 4: Process additional agent paths from manifestCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1708 // Step 5: Process additional skill paths from manifestCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1730 // Step 6: Process additional output style paths from manifestCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1752 // Step 7: Load hooks configurationCOMMENT
LOWsrc/utils/plugins/pluginLoader.ts1934 // Step 8: Load plugin settingsCOMMENT
LOWsrc/components/MarkdownTable.tsx107 // Step 1: Get minimum (longest word) and ideal (full content) widthsCOMMENT
LOWsrc/components/MarkdownTable.tsx123 // Step 2: Calculate available spaceCOMMENT
LOWsrc/components/MarkdownTable.tsx130 // Step 3: Calculate column widths that fit available spaceCOMMENT
LOWsrc/components/MarkdownTable.tsx158 // Step 4: Calculate max row lines to determine if vertical format is neededCOMMENT
LOWsrc/components/StructuredDiff/Fallback.tsx353 // Step 1: Transform lines to line objects with type informationCOMMENT
LOWsrc/components/StructuredDiff/Fallback.tsx356 // Step 2: Group adjacent add/remove lines for word-level diffingCOMMENT
LOWsrc/components/StructuredDiff/Fallback.tsx359 // Step 3: Number the diff linesCOMMENT
LOWsrc/components/StructuredDiff/Fallback.tsx368 // Step 4: Render formattingCOMMENT
LOWsrc/entrypoints/sdk/v2.ts692 // Step 1: Index ALL non-sidechain entries by UUID (user, assistant, system, etc.)COMMENT
LOWsrc/entrypoints/sdk/v2.ts748 // Step 2: Only user/assistant entries can be conversation leavesCOMMENT
LOWsrc/entrypoints/sdk/query.ts243 // Step 1: Read entries — compact-aware for large filesCOMMENT
LOWsrc/entrypoints/sdk/query.ts264 // Step 2: Index ALL non-sidechain entries by UUID (user, assistant, system, etc.)COMMENT
LOWsrc/entrypoints/sdk/query.ts279 // Step 3: Apply preserved segment relinks if segment existsCOMMENT
LOWsrc/entrypoints/sdk/query.ts285 // Step 4: Prune pre-boundary entries (keep only preserved + post-boundary)COMMENT
LOWsrc/entrypoints/sdk/query.ts325 // Step 5: Select leaf — either upToUuid target, or latest USER/ASSISTANT entryCOMMENT
LOWsrc/entrypoints/sdk/query.ts359 // Step 5: Build conversation chain and strip internal fieldsCOMMENT
LOWsrc/services/compact/sessionMemoryCompact.ts242 // Step 1: Handle tool_use/tool_result pairsCOMMENT
LOWsrc/services/compact/sessionMemoryCompact.ts288 // Step 2: Handle thinking blocks that share message.id with kept assistant messagesCOMMENT
Modern AI Meta-Vocabulary13 hits · 38 pts
SeverityFileLineSnippetContext
MEDIUMsrc/main.tsx3220 // of a remote assistant session. The agentic loop runs remotely; thisCOMMENT
MEDIUMsrc/query.ts441 // budget for the whole agentic turn; `remaining` is computed per iterationCOMMENT
MEDIUMsrc/tools/WebSearchTool/README_SEARCH_PROVIDERS.md28# Tavily (recommended for AI — fast, RAG-ready)COMMENT
MEDIUMsrc/tools/WebSearchTool/providers/custom.ts136// Security guardrailsCOMMENT
MEDIUMsrc/tools/AgentTool/loadAgentsDir.ts122 maxTurns?: number // Maximum number of agentic turns before stoppingCODE
MEDIUMsrc/utils/betas.ts419 // excluded by getAllModelBetas() since non-agentic Haiku calls don't need them.COMMENT
MEDIUMsrc/utils/attachments.ts1123 // During proactive agentic loops, task-notification commands would otherwiseCOMMENT
MEDIUMsrc/utils/attachments.ts1357 // long agentic sessions, where this accumulated 60-105× per session.COMMENT
MEDIUMsrc/services/api/geminiVertexClient.ts661 // this, any agentic prompt (which always declares tools) returnsCOMMENT
MEDIUMsrc/services/api/claude.ts730 // (query.ts decrements across the agentic loop).COMMENT
MEDIUMsrc/services/api/claude.ts1158 // non-agentic queries (compact, side_question, extract_memories, etc.)COMMENT
MEDIUMsrc/services/api/claude.ts1520 // per-call so non-agentic queries keep their own stable header set.COMMENT
MEDIUMsrc/services/api/claude.ts1554 // Only latch from agentic queries so a classifier call doesn't flip theCOMMENT
AI Slop Vocabulary7 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUMsrc/assistant/sessionHistory.ts94 // More robust extraction - handle various URL formatsCOMMENT
MEDIUMsrc/tools/PowerShellTool/commandSemantics.ts216 // robocopy.exe: Windows native robust file copyCOMMENT
MEDIUMsrc/utils/swarm/backends/PaneBackendExecutor.ts341 // A more robust check would query the backend for pane existenceCOMMENT
MEDIUMsrc/utils/powershell/parser.ts1068 // and extracting .Redirections) is both simpler and more robust: it catchesCOMMENT
MEDIUMsrc/screens/replFallbackModelProp.test.ts111 // The robust fix: walk the braces explicitly to find the matchingCOMMENT
MEDIUMsrc/hooks/useVoiceIntegration.tsx176 // the gap is seamless once transcript text arrives.COMMENT
MEDIUMsrc/services/api/geminiVertexClient.ts219// everything else is dropped. This is robust against future JSON SchemaCOMMENT
Synthetic Comment Markers2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHsrc/utils/claudeInChrome/setup.ts319REM Generated by Claude Code - do not edit manuallyCODE
HIGHsrc/utils/claudeInChrome/setup.ts324# Generated by Claude Code - do not edit manuallyCOMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALsrc/tools/AgentTool/UI.tsx727 const toolResultBlock = lastToolResult.data.message.message.content.find(c => c.type === 'tool_result');CODE
Fake / Example Data5 hits · 6 pts
SeverityFileLineSnippetContext
LOWsrc/utils/plugins/pluginLoader.ts1121 * "name": "John Doe",COMMENT
LOWsrc/utils/plugins/marketplaceManager.ts1325 * "owner": { "name": "John Doe", "email": "john@example.com" },COMMENT
LOWsrc/utils/mcp/elicitationValidation.ts24 example: 'user@example.com',CODE
LOWsrc/components/ProviderManager.test.tsx982 mounted.stdin.write('user@example.com')CODE
LOWsrc/components/ProviderManager.test.tsx1011 email: 'user@example.com',CODE
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHsrc/tools/TodoWriteTool/prompt.ts100print("Hello World")CODE
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/utils/hooks.ts1390 // TODO: Add tests for EPIPE handling.COMMENT