Repository Analysis

tiann/hapi

App for Claude Code / Codex / Gemini / OpenCode, vibe coding anytime, anywhere

3.6 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of tiann/hapi, a TypeScript project with 4,468 GitHub stars. SynthScan v2.0 examined 206,514 lines of code across 1226 source files, recording 619 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 3.6 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).

3.6
Adjusted Score
3.6
Raw Score
100%
Time Factor
2026-07-13
Last Push
4.5K
Stars
TypeScript
Language
206.5K
Lines of Code
1.2K
Files
619
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

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.

No multi-scan history yet — run the scanner again to build trend data.

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 4MEDIUM 31LOW 583

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 619 distinct pattern matches across 11 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 Identifiers521 hits · 536 pts
SeverityFileLineSnippetContext
LOWweb/e2e-fixtures/file-md-preview-fixture.tsx33function FileMarkdownPreviewFixture() {CODE
LOWweb/src/test/setup.ts9function installMemoryLocalStorage(): void {CODE
LOWweb/src/chat/reconcile.ts125function areAgentReasoningBlocksEqual(left: AgentReasoningBlock, right: AgentReasoningBlock): boolean {CODE
LOWweb/src/chat/reconcile.ts140function areGeneratedImageBlocksEqual(left: GeneratedImageBlock, right: GeneratedImageBlock): boolean {CODE
LOWweb/src/chat/reconcile.ts149function areCodexReviewBlocksEqual(left: CodexReviewBlock, right: CodexReviewBlock): boolean {CODE
LOWweb/src/chat/modelConfig.ts25function parseCursorWireContextWindow(model: string): number | null {CODE
LOWweb/src/chat/reducerTools.ts157export function collectToolIdsFromMessages(messages: NormalizedMessage[]): Set<string> {CODE
LOWweb/src/chat/reducerTools.ts176export function extractTitleFromChangeTitleInput(input: unknown): string | null {CODE
LOWweb/src/chat/reducerTimeline.ts44function mapAgentRunStatusToToolState(status: string | null): ToolCallBlock['tool']['state'] {CODE
LOWweb/src/chat/reducerTimeline.ts62function isNonTerminalAgentRunState(state: ToolCallBlock['tool']['state']): boolean {CODE
LOWweb/src/chat/reducerTimeline.ts66function shouldIgnoreAgentRunNonTerminalUpdateAfterTerminal(CODE
LOWweb/src/chat/reducerTimeline.ts78function isCloseAgentCleanupUpdate(event: Record<string, unknown>): boolean {CODE
LOWweb/src/chat/reducerTimeline.ts90function shouldIgnoreAgentRunCloseCleanupAfterTerminal(CODE
LOWweb/src/chat/outline.ts53export function getConversationMessageAnchorId(messageId: string): string {CODE
LOWweb/src/chat/presentation.ts46export function formatMessageTimestampTitle(date: Date): string {CODE
LOWweb/src/chat/normalizeAgent.ts5function normalizeToolResultPermissions(value: unknown): ToolResultPermission | undefined {CODE
LOWweb/src/chat/normalizeAgent.ts150function normalizeCodexReviewFinding(value: unknown): CodexReviewFinding | null {CODE
LOWweb/src/chat/reducer.ts18function isUsageVisibleInParentContext(usage: UsageData): boolean {CODE
LOWweb/src/chat/reducer.ts60function isRedundantGoalStatusMessage(event: AgentEvent): boolean {CODE
LOWweb/src/chat/normalize.ts8export function normalizeDecryptedMessage(message: DecryptedMessage): NormalizedMessage | null {CODE
LOWweb/src/chat/toolGroups.ts199export function isEligibleForToolGrouping(block: ToolCallBlock): boolean {CODE
LOWweb/src/utils/terminalSupport.ts7export function isRemoteTerminalSupported(metadata: SessionMetadataSummary | null | undefined): boolean {CODE
LOWweb/src/realtime/RealtimeSession.ts62export function resetRealtimeSessionState() {CODE
LOWweb/src/realtime/RealtimeSession.ts82export function getCurrentRealtimeSessionId(): string | null {CODE
LOWweb/src/realtime/gemini/toolAdapter.ts68export async function handleGeminiFunctionCalls(CODE
LOWweb/src/realtime/hooks/voiceContextPlan.ts73export function buildSessionVoiceContextPlan(CODE
LOWweb/src/realtime/hooks/contextFormatters.ts149function extractSpeakableFromContent(content: unknown): string | null {CODE
LOWweb/src/realtime/hooks/contextFormatters.ts182function isNonSpeakableAgentPayload(content: unknown): boolean {CODE
LOWweb/src/realtime/hooks/contextFormatters.ts198export function extractLastAssistantSpeakable(messages: DecryptedMessage[]): string | null {CODE
LOWweb/src/components/PwaUpdateBanner.tsx57export function PwaUpdateBannerWithStatusOffset({CODE
LOWweb/src/components/SessionList.tsx119export function deduplicateSessionsByAgentId(sessions: SessionSummary[], selectedSessionId?: string | null): SessionSummCODE
LOWweb/src/components/SessionList.tsx160export function isSidebarEmptySessionStub(session: SessionSummary): boolean {CODE
LOWweb/src/components/SessionList.tsx169export function shouldShowSessionInSidebar(session: SessionSummary, selectedSessionId?: string | null): boolean {CODE
LOWweb/src/components/SessionList.tsx190export function getNextSessionVisibleCount(current: number, step: number, total: number): number {CODE
LOWweb/src/components/SessionList.tsx245export function expandSelectedSessionCollapseOverrides(CODE
LOWweb/src/components/SessionList.tsx548function formatCodexImportedRelativeTime(value: number, t: (key: string, params?: Record<string, string | number>) => stCODE
LOWweb/src/components/SessionAttentionIndicator.tsx21export function SessionAttentionIndicator(props: {CODE
LOWweb/src/components/MarkdownRenderer.tsx59function StandaloneMarkdownContent(props: MarkdownRendererProps) {CODE
LOWweb/src/components/LazyRainbowText.tsx96function processChildrenForRainbow(children: React.ReactNode): React.ReactNode {CODE
LOWweb/src/components/SessionChat.tsx75export async function applyModelChangeWithReasoningRollback(args: {CODE
LOWweb/src/components/SessionChat.tsx109export function shouldAutoClearPendingSchedule(pending: PendingSchedule | null): boolean {CODE
LOWweb/src/components/SessionChat.tsx121export function isScratchlistToggleHotkey(e: {CODE
LOWweb/src/components/SessionChat.tsx156export function isScratchlistHotkeyBlockedTarget(target: EventTarget | null): boolean {CODE
LOWweb/src/components/SessionChat.tsx192function isUninvokedScheduledMessage(message: DecryptedMessage): boolean {CODE
LOWweb/src/components/Fue.tsx51export function computeFueCalloutPlacement(params: {CODE
LOWweb/src/components/WorkspaceBrowser.tsx76function normalizePathForComparison(path: string): string {CODE
LOWweb/src/components/CursorMigrationBanner.tsx28export function isCursorMigrationInProgress(metadata: Metadata | undefined | null): boolean {CODE
LOWweb/src/components/CursorMigrationBanner.tsx42export function isCursorMigrationAmbiguous(metadata: Metadata | undefined | null): boolean {CODE
LOWweb/src/components/AssistantChat/claudeEffortOptions.ts8function normalizeClaudeComposerEffort(effort?: string | null): string | null {CODE
LOWweb/src/components/AssistantChat/claudeEffortOptions.ts22export function getClaudeComposerEffortOptions(currentEffort?: string | null): ClaudeComposerEffortOption[] {CODE
LOWweb/src/components/AssistantChat/modelOptions.ts22function cursorCatalogCoversCurrentModel(options: ModelOption[], currentModel: string): boolean {CODE
LOWweb/src/components/AssistantChat/HappyComposer.tsx85export function ModelEffortSettingsSection(props: {CODE
LOWweb/src/components/AssistantChat/claudeModelOptions.ts8function normalizeClaudeComposerModel(model?: string | null): string | null {CODE
LOWweb/src/components/AssistantChat/claudeModelOptions.ts17export function getClaudeComposerModelOptions(currentModel?: string | null): ClaudeComposerModelOption[] {CODE
LOWweb/src/components/AssistantChat/claudeModelOptions.ts41export function getNextClaudeComposerModel(currentModel?: string | null): string | null {CODE
LOWweb/src/components/AssistantChat/HappyThread.tsx63export function shouldCancelInitialScrollSettling(intent: ScrollIntent): boolean {CODE
LOWweb/src/components/AssistantChat/HappyThread.tsx93export async function locateOutlineTargetMessage(options: LocateOutlineTargetOptions): Promise<HTMLElement | null> {CODE
LOWweb/src/components/AssistantChat/codexFastMode.ts38export function codexModelAdvertisesFastTier(CODE
LOWweb/src/components/AssistantChat/codexFastMode.ts58export function getDisplayedCodexServiceTier(serviceTier?: string | null): 'standard' | 'fast' {CODE
LOWweb/src/components/AssistantChat/StatusBar.tsx139export function shouldShowComposerStatusBar(agentFlavor: string | null | undefined): boolean {CODE
461 more matches not shown…
Decorative Section Separators29 hits · 87 pts
SeverityFileLineSnippetContext
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx31// ── Plugin array ────────────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx78// ── URI scheme policy (inlined from url-scheme-policy.ts) ───────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx173// ── URL sanitize transform (deny-only) ──────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx200// ── Allowed-schemes state (inlined from useAllowedSchemes.ts) ───────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx294// ── UriConfirmContext — one dialog per markdown root ────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx362// ── Components ───────────────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx45// ── classifyScheme ────────────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx110// ── denyOnlyTransform ─────────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx130// ── useAllowedSchemes (inlined hook, tested via A component) ──────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx181// ── <A> component — click handler ────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx219// ── relative / no-scheme hrefs — regression guard ────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx274// ── intra-tab cross-provider sync (schemeListeners emitter) ──────────────────COMMENT
MEDIUMweb/src/lib/remark-non-https-autolink.test.ts24 // ── Basic autolink ───────────────────────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-non-https-autolink.test.ts52 // ── http/https NOT converted (GFM handles those) ─────────────────────COMMENT
MEDIUMweb/src/lib/remark-non-https-autolink.test.ts64 // ── Existing link nodes not touched ──────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-non-https-autolink.test.ts76 // ── Code blocks / inline code not touched ────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-non-https-autolink.test.ts91 // ── Trailing punctuation handling ────────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-non-https-autolink.test.ts142 // ── Multiple URIs in one text node ───────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-non-https-autolink.test.ts155 // ── Scheme-only / edge cases ─────────────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-repair-tables.test.ts29// ── String-level function ────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-repair-tables.test.ts158// ── Plugin (parse + transform + stringify) ────────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-repair-tables.ts18// ── Helpers ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-repair-tables.ts81// ── String-level preprocessor ─────────────────────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-repair-tables.ts144// ── Plugin ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMcli/src/agent/backends/acp/AcpMessageHandler.test.ts1737 // ── tool_call: at least one must have been emitted ────────────────COMMENT
MEDIUMcli/src/agent/backends/acp/AcpMessageHandler.test.ts1746 // a typed object from the human-readable title. ───────────────COMMENT
MEDIUMcli/src/agent/backends/acp/AcpMessageHandler.test.ts1771 // ── reasoning: at least one prose thought must have surfaced ───────COMMENT
MEDIUMcli/src/agent/backends/acp/AcpMessageHandler.test.ts1785 // ── text messages: none should be a raw JSON blob ─────────────────COMMENT
MEDIUMcli/src/agent/backends/acp/AcpMessageHandler.test.ts1796 // ── optional: assert text messages exist for complete captures ─────COMMENT
Over-Commented Block45 hits · 45 pts
SeverityFileLineSnippetContext
LOWweb/src/router.tsx641 hasMore: messagesHasMore,COMMENT
LOWweb/src/chat/reducer.ts121 // Synthesize a tool card only for a *pending* permission that has no toolCOMMENT
LOWweb/src/components/SessionChat.tsx1141 }, [pendingSchedule])COMMENT
LOWweb/src/components/AssistantChat/HappyComposer.tsx781 || showFastModeSettingsCOMMENT
LOWweb/src/components/assistant-ui/markdown-text.tsx201COMMENT
LOWweb/src/components/assistant-ui/markdown-a.test.tsx81 it('%6Aavascript: (encoded j) → deny', () => expect(classifyScheme('%6Aavascript:alert(1)')).toBe('deny'))COMMENT
LOWweb/src/hooks/mutations/useSendMessage.ts181 // would destroy the attachment preview AND leave the operatorCOMMENT
LOWcli/src/runner/run.ts101 logger.debug('[RUNNER RUN] Starting runner process...');COMMENT
LOWcli/src/runner/run.ts561 // Set timeout for webhook. Default is 15s but can be raised viaCOMMENT
LOWcli/src/runner/run.ts701 });COMMENT
LOWcli/src/runner/run.ts721 // correctly in all execution modes.COMMENT
LOWcli/src/runner/run.ts901 Date.now() >= nextHandoffAttemptAt) {COMMENT
LOWcli/src/runner/run.ts921 // the next heartbeat fires while we are still waiting.COMMENT
LOWcli/src/claude/utils/sdkToLogConverter.ts61export class SDKToLogConverter {COMMENT
LOWcli/src/claude/utils/sdkToLogConverter.ts301 // already learned this model's real contextWindow from a previous resultCOMMENT
LOWcli/src/claude/utils/sdkToLogConverter.ts341COMMENT
LOWcli/src/codex/utils/permissionHandler.ts121COMMENT
LOWcli/src/agent/runnerLifecycle.ts21 cleanupAndExit: (codeOverride?: number) => Promise<void>COMMENT
LOWcli/src/agent/backends/acp/AcpSdkBackend.ts341 // The launcher serializes setModel between turns, but defensively wait for anyCOMMENT
LOWcli/src/pi/session.ts21 // (local ↔ remote). keepAlive reads this so the reported mode does notCOMMENT
LOWcli/src/opencode/opencodeRemoteLauncher.ts161 }COMMENT
LOWe2e/scratchlist.spec.ts221COMMENT
LOWhub/src/cursor/acpVerifyProbe.ts221 constructor(private readonly options: AcpProbeOptions = {}) {COMMENT
LOWhub/src/cursor/acpVerifyProbe.ts241 // EEXIST against the caller's own lock. The caller is thenCOMMENT
LOWhub/src/cursor/acpVerifyProbe.ts261 // Resolution order for the lookup home:COMMENT
LOWhub/src/cursor/acpVerifyProbe.ts361 // ceiling we fall through to releaseLock and acceptCOMMENT
LOWhub/src/cursor/acpVerifyProbe.ts401 }COMMENT
LOWhub/src/cursor/acpVerifyProbe.ts421 this.lockHeld = trueCOMMENT
LOWhub/src/cursor/acpVerifyProbe.ts481 }COMMENT
LOWhub/src/cursor/acpVerifyProbe.test.ts121 expect(existsSync(join(lockDir(hapiHome), 'pid'))).toBe(true)COMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts541 const cwd = metadata.pathCOMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts601 ? metadata.homeDir.trim()COMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts701 }COMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts741 // we could process.kill(pid, 0), so we cannot directly observeCOMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts901 }COMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts1121COMMENT
LOWhub/src/sync/messageService.ts261 if (!localId) {COMMENT
LOWhub/src/sync/syncEngine.ts521 // banner has already disappeared but the chat hasn't re-renderedCOMMENT
LOWhub/src/sync/syncEngine.ts541 }COMMENT
LOWhub/src/sync/syncEngine.ts921 // metadata write that flips cursorSessionProtocol to 'acp' (seeCOMMENT
LOWhub/src/socket/socketLimits.ts1// The largest generated image the CLI will serve inline. Must stay in sync with the CLI-sideCOMMENT
LOWhub/src/socket/handlers/cli/sessionHandlers.ts341 emitAccessError('session', data.sid, sessionAccess.reason)COMMENT
LOWhub/src/store/sessions.ts1import type { Database } from 'bun:sqlite'COMMENT
LOWhub/src/store/sessions.ts21// - PARSE_IDENTITY_FIELDS: required by MetadataSchema inCOMMENT
LOWhub/src/store/sessions.ts41// `cursorSessionId` must drop a stale prior protocol. Handled inCOMMENT
Verbosity Indicators8 hits · 16 pts
SeverityFileLineSnippetContext
LOWcli/scripts/release-all.ts104 // Step 1: Update package.json versionCOMMENT
LOWcli/scripts/release-all.ts116 // Step 2: Build all platform binaries (with embedded web assets)COMMENT
LOWcli/scripts/release-all.ts124 // Step 3: Prepare and publish platform packagesCOMMENT
LOWcli/scripts/release-all.ts133 // Step 4: Publish main packageCOMMENT
LOWcli/scripts/release-all.ts144 // Step 5: bun install to get complete lockfileCOMMENT
LOWcli/scripts/release-all.ts148 // Step 6: Git commit + tag + pushCOMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts300 // Step 1: canonical-path fast path. Skip readdir entirely if we hit.COMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts320 // Step 2: scan every <wsh>/<cursorSessionId>/store.db.COMMENT
Structural Annotation Overuse8 hits · 16 pts
SeverityFileLineSnippetContext
LOWcli/scripts/release-all.ts104 // Step 1: Update package.json versionCOMMENT
LOWcli/scripts/release-all.ts116 // Step 2: Build all platform binaries (with embedded web assets)COMMENT
LOWcli/scripts/release-all.ts124 // Step 3: Prepare and publish platform packagesCOMMENT
LOWcli/scripts/release-all.ts133 // Step 4: Publish main packageCOMMENT
LOWcli/scripts/release-all.ts144 // Step 5: bun install to get complete lockfileCOMMENT
LOWcli/scripts/release-all.ts148 // Step 6: Git commit + tag + pushCOMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts300 // Step 1: canonical-path fast path. Skip readdir entirely if we hit.COMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts320 // Step 2: scan every <wsh>/<cursorSessionId>/store.db.COMMENT
Magic Placeholder Names2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHdocs/guide/voice-assistant.md32export ELEVENLABS_API_KEY="your-api-key"CODE
HIGHdocs/guide/installation.md583export ELEVENLABS_API_KEY="your-api-key"CODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALcli/src/codex/runCodex.test.ts250 const registration = harness.session.rpcHandlerManager.registerHandler.mock.calls.find(CODE
Synthetic Comment Markers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGH…acp/__fixtures__/gemini-3-flash-preview-edit-file.json26 "text": "## 📂 Topic: **Updating demo-write.txt**\n\n**Summary:**\nThe user requested to replace the first liCODE
HIGH…acp/__fixtures__/gemini-3-flash-preview-read-file.json26 "text": "## 📂 Topic: **Initial Project Overview**\n\n**Summary:**\nI will start by reading the README.md filCODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMhub/src/sync/sessionCache.ts738 // half-cleared archive state, so making it robust to a stale snapshotCOMMENT
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMshared/src/voicePromptLayers.ts151export const VOICE_PROVIDER_GUARDRAILS = `# Provider guardrailsCODE
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWcli/src/cursor/utils/cursorLegacyEventConverter.test.ts200 'Lorem ipsum ... Questions skipped by the user, continue with the information you alreadCODE