AI Slop Code RIsk Monitor

tiann/hapi

App for Codex / Claude Code / Pi / OpenCode / Kimi Code / Grok Build, vibe coding anytime, anywhere

4.2 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for tiann/hapi, a TypeScript project with 5,213 GitHub stars. SynthScan examined 526,125 lines of code across 2650 source files, recording 1488 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 4.2 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

4.2
Adjusted Signal
4.2
Raw Pattern Score
100%
Time Factor
2026-10-06
Last Push
5.2K
Stars
TypeScript
Language
526.1K
Lines of Code
2.6K
Files
1.5K
Pattern Hits
2026-10-12
Scan Date
0.02
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 14.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 4.0/100 · LOW

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

Agent Over-Engineering Ratio 10.5/100 · LOW

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

PR Review Velocity Impact 19.7/100 · LOW

Which changes need focused human review? 1488 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 43HIGH 7MEDIUM 197LOW 1241

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 1488 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers984 hits · 1019 pts
SeverityFileLineSnippetContext
LOWweb/e2e-fixtures/file-md-preview-fixture.tsx33function FileMarkdownPreviewFixture() {CODE
LOWweb/src/test/setup.ts9function installMemoryLocalStorage(): void {CODE
LOWweb/src/chat/reconcile.ts165function areAgentReasoningBlocksEqual(left: AgentReasoningBlock, right: AgentReasoningBlock): boolean {CODE
LOWweb/src/chat/reconcile.ts182function areGeneratedImageBlocksEqual(left: GeneratedImageBlock, right: GeneratedImageBlock): boolean {CODE
LOWweb/src/chat/reconcile.ts193function areCodexReviewBlocksEqual(left: CodexReviewBlock, right: CodexReviewBlock): boolean {CODE
LOWweb/src/chat/modelConfig.ts25function parseCursorWireContextWindow(model: string): number | null {CODE
LOWweb/src/chat/reducerTools.ts182export function collectToolIdsFromMessages(messages: NormalizedMessage[]): Set<string> {CODE
LOWweb/src/chat/reducerTools.ts201export function extractTitleFromChangeTitleInput(input: unknown): string | null {CODE
LOWweb/src/chat/reducerTimeline.ts67function mapAgentRunStatusToToolState(status: string | null): ToolCallBlock['tool']['state'] {CODE
LOWweb/src/chat/reducerTimeline.ts81function attachCodexRoundSummaryToLatestGroup(blocks: ChatBlock[], summary: RoundSummary): void {CODE
LOWweb/src/chat/reducerTimeline.ts105function isNonTerminalAgentRunState(state: ToolCallBlock['tool']['state']): boolean {CODE
LOWweb/src/chat/reducerTimeline.ts109function shouldIgnoreAgentRunNonTerminalUpdateAfterTerminal(CODE
LOWweb/src/chat/reducerTimeline.ts121function isCloseAgentCleanupUpdate(event: Record<string, unknown>): boolean {CODE
LOWweb/src/chat/reducerTimeline.ts133function shouldIgnoreAgentRunCloseCleanupAfterTerminal(CODE
LOWweb/src/chat/outline.ts53export function getConversationMessageAnchorId(messageId: string): string {CODE
LOWweb/src/chat/presentation.ts79export function formatMessageTimestampTitle(date: Date): string {CODE
LOWweb/src/chat/normalizeAgent.ts7function normalizeToolResultPermissions(value: unknown): ToolResultPermission | undefined {CODE
LOWweb/src/chat/normalizeAgent.ts219function normalizeCodexReviewFinding(value: unknown): CodexReviewFinding | null {CODE
LOWweb/src/chat/reducer.ts28function isUsageVisibleInParentContext(msg: NormalizedMessage): boolean {CODE
LOWweb/src/chat/reducer.ts78function isRedundantGoalStatusMessage(event: AgentEvent): boolean {CODE
LOWweb/src/chat/normalize.ts8export function normalizeDecryptedMessage(message: DecryptedMessage): NormalizedMessage | null {CODE
LOWweb/src/chat/sessionStatus.ts76function backgroundTaskCompletions(messages: readonly NormalizedMessage[]): {CODE
LOWweb/src/chat/inlineMediaSource.ts11export function inlineMediaSourceFromWire(value: unknown): InlineMediaSource | undefined {CODE
LOWweb/src/chat/inlineMediaSource.ts31export function areInlineMediaSourcesEqual(left?: InlineMediaSource, right?: InlineMediaSource): boolean {CODE
LOWweb/src/chat/toolGroups.ts225export 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.ts74export function buildSessionVoiceContextPlan(CODE
LOWweb/src/realtime/hooks/contextFormatters.ts151function extractSpeakableFromContent(content: unknown): string | null {CODE
LOWweb/src/realtime/hooks/contextFormatters.ts184function isNonSpeakableAgentPayload(content: unknown): boolean {CODE
LOWweb/src/realtime/hooks/contextFormatters.ts200export function extractLastAssistantSpeakable(messages: DecryptedMessage[]): string | null {CODE
LOWweb/src/components/PwaUpdateBanner.tsx59export function PwaUpdateBannerWithStatusOffset({CODE
LOWweb/src/components/SessionRowSummary.tsx65function formatCodexImportedRelativeTime(CODE
LOWweb/src/components/SessionExportDialog.tsx39function parseSessionExportTooLarge(error: unknown): HapiSessionExportTooLarge | null {CODE
LOWweb/src/components/SessionList.tsx139function isPinnedInProgressSession(session: SessionSummary): boolean {CODE
LOWweb/src/components/SessionList.tsx247export function deduplicateSessionsByAgentId(sessions: SessionSummary[], selectedSessionId?: string | null): SessionSummCODE
LOWweb/src/components/SessionList.tsx283export function isSidebarEmptySessionStub(session: SessionSummary): boolean {CODE
LOWweb/src/components/SessionList.tsx292export function shouldShowSessionInSidebar(session: SessionSummary, selectedSessionId?: string | null): boolean {CODE
LOWweb/src/components/SessionList.tsx325export function getNextSessionVisibleCount(current: number, step: number, total: number): number {CODE
LOWweb/src/components/SessionList.tsx329export function getPreviousSessionVisibleCount(current: number, step: number): number {CODE
LOWweb/src/components/SessionList.tsx391export function expandSelectedSessionCollapseOverrides(CODE
LOWweb/src/components/SessionList.tsx1191export function getPullRefreshIndicatorRotation(state: PullToRefreshState): number {CODE
LOWweb/src/components/SessionHeader.tsx33export function resolveSessionHeaderMachineLabel(CODE
LOWweb/src/components/SessionAttentionIndicator.tsx21export function SessionAttentionIndicator(props: {CODE
LOWweb/src/components/MarkdownRenderer.tsx61function StandaloneMarkdownContent(props: MarkdownRendererProps) {CODE
LOWweb/src/components/LazyRainbowText.tsx96function processChildrenForRainbow(children: React.ReactNode): React.ReactNode {CODE
LOWweb/src/components/SessionChat.tsx136export function opencodeEffortOptionsInvalidationKey(CODE
LOWweb/src/components/SessionChat.tsx146export function isRewindForkFallbackError(error: unknown): boolean {CODE
LOWweb/src/components/SessionChat.tsx170export function buildAgyComposerModelOptions(CODE
LOWweb/src/components/SessionChat.tsx183export async function applyModelChangeWithReasoningRollback(args: {CODE
LOWweb/src/components/SessionChat.tsx208export function shouldClearReasoningEffortForModelChange(args: {CODE
LOWweb/src/components/SessionChat.tsx237export function shouldAutoClearPendingSchedule(pending: PendingSchedule | null): boolean {CODE
LOWweb/src/components/SessionChat.tsx249export function isScratchlistToggleHotkey(e: {CODE
LOWweb/src/components/SessionChat.tsx284export function isScratchlistHotkeyBlockedTarget(target: EventTarget | null): boolean {CODE
LOWweb/src/components/SessionChat.tsx386export function mergeStagedAttachmentsInOrder(CODE
LOWweb/src/components/SessionChat.tsx394function isUninvokedScheduledMessage(message: DecryptedMessage): boolean {CODE
LOWweb/src/components/SessionChat.tsx534export function resolveLatestCompletedBoundaryIdForView(CODE
LOWweb/src/components/Fue.tsx51export function computeFueCalloutPlacement(params: {CODE
924 more matches not shown…
Hallucination Indicators43 hits · 400 pts
SeverityFileLineSnippetContext
CRITICALcli/src/agent/__tests__/runAgentPty.test.ts638 expect(harness.m.resize.mock.calls.at(-1)).toEqual([120, 40])CODE
CRITICALcli/src/agent/__tests__/runAgentPty.test.ts841 const crWrites = harness.m.write.mock.calls.filter((c) => c[0] === '\r').lengthCODE
CRITICALcli/src/agent/__tests__/runAgentPty.test.ts874 const textWrites = harness.m.write.mock.calls.filter((c) => c[0] === 'hi').lengthCODE
CRITICALcli/src/pi/runPi.test.ts288 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (CODE
CRITICALcli/src/pi/runPi.test.ts343 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (CODE
CRITICALcli/src/pi/runPi.test.ts391 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: {CODE
CRITICALcli/src/pi/runPi.test.ts417 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: any, localId: string) => CODE
CRITICALcli/src/pi/runPi.test.ts418 const cancelQueued = harness.session.onCancelQueuedMessage.mock.calls.at(-1)![0] as (localId: string) => booleanCODE
CRITICALcli/src/pi/runPi.test.ts438 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: ReturnType<typeof userMesCODE
CRITICALcli/src/pi/runPi.test.ts463 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: ReturnType<typeof userMesCODE
CRITICALcli/src/pi/runPi.test.ts516 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: ReturnType<typeof userMesCODE
CRITICALcli/src/pi/runPi.test.ts574 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: ReturnType<typeof userMesCODE
CRITICALcli/src/pi/runPi.test.ts619 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: ReturnType<typeof userMesCODE
CRITICALcli/src/pi/runPi.test.ts667 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: {CODE
CRITICALcli/src/pi/runPi.test.ts740 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: ReturnType<typeof userMesCODE
CRITICALcli/src/pi/runPi.test.ts780 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: ReturnType<typeof userMesCODE
CRITICALcli/src/pi/runPi.test.ts839 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: ReturnType<typeof userMesCODE
CRITICALcli/src/pi/runPi.test.ts892 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: {CODE
CRITICALcli/src/pi/runPi.test.ts948 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: {CODE
CRITICALcli/src/pi/runPi.test.ts1118 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (CODE
CRITICALcli/src/pi/runPi.test.ts1149 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (CODE
CRITICALcli/src/pi/runPi.test.ts1171 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (CODE
CRITICALcli/src/pi/runPi.test.ts1202 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (CODE
CRITICALcli/src/pi/runPi.test.ts1237 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (CODE
CRITICALcli/src/pi/runPi.test.ts1248 const onCancelQueuedMessage = harness.session.onCancelQueuedMessage.mock.calls.at(-1)![0] as (localId: string) =CODE
CRITICALcli/src/pi/runPi.test.ts1307 const onUserMessage = harness.session.onUserMessage.mock.calls.at(-1)![0] as (message: {CODE
CRITICALcli/src/pi/runPi.test.ts1762 const onCancelQueuedMessage = harness.session.onCancelQueuedMessage.mock.calls.at(-1)![0] as (localId: string) =CODE
CRITICALcli/src/pi/runPi.test.ts1810 const metadataUpdater = harness.session.updateMetadata.mock.calls.at(-1)![0] as (meta: Record<string, unknown>) CODE
CRITICALcli/src/pi/runPi.test.ts1903 const onCancelQueuedMessage = harness.session.onCancelQueuedMessage.mock.calls.at(-1)![0] as (localId: string) =CODE
CRITICALcli/src/opencode/runOpencode.test.ts718 const messages = harness.session.sendAgentMessage.mock.calls.map((call) => (call[0] as { message: string }).messCODE
CRITICALcli/src/opencode/runOpencode.test.ts754 const messages = harness.session.sendAgentMessage.mock.calls.map((call) => (call[0] as { message: string }).messCODE
CRITICAL…/main/kotlin/app/hapi/protocol/window/WindowMessage.kt143 app.hapi.protocol.wire.HapiJson.encodeToJsonElement(CODE
CRITICAL…n/app/hapi/companion/feature/chat/ChatViewModelTest.kt704 app.hapi.companion.feature.chat.blocks.planProposalMarkdown(it.tool) != nullCODE
CRITICAL…n/app/hapi/companion/feature/chat/ChatViewModelTest.kt732 app.hapi.companion.feature.chat.blocks.planProposalMarkdown(block.tool)?.let { plan ->CODE
CRITICAL…ompanion/feature/newsession/NewSessionViewModelTest.kt408 assertEquals(listOf("default", "read-only", "yolo"), app.hapi.protocol.catalog.PermissionModes.forLaunch("codex"CODE
CRITICAL…/app/hapi/companion/feature/settings/SettingsScreen.kt161 app.hapi.companion.ui.components.PrivacyPolicyLink()CODE
CRITICAL…in/app/hapi/companion/feature/pairing/PairingScreen.kt109 app.hapi.companion.ui.components.PrivacyPolicyLink()CODE
CRITICAL…tlin/app/hapi/companion/feature/chat/ChatTranscript.kt244 app.hapi.companion.ui.theme.ReadingColumn(modifier = rowModifier) {CODE
CRITICAL…pi/companion/feature/chat/blocks/ToolGroupBlockView.kt37 app.hapi.companion.feature.chat.ToolCardPresentation("🔧", title, summary.takeIf { it.isNotEmpty() }),CODE
CRITICAL…api/companion/feature/chat/blocks/ToolCallBlockView.kt52 app.hapi.companion.feature.chat.toolSummaryPresentation(tool, basePath, resources)CODE
CRITICAL…api/companion/feature/chat/blocks/ToolCallBlockView.kt55 val steps = processSteps ?: block.children.size.takeIf { app.hapi.companion.feature.chat.opensToolProcess(block) }CODE
CRITICAL…p/hapi/companion/feature/chat/composer/ChatComposer.kt155 textStyle = app.hapi.companion.ui.theme.HapiTypography.body.copy(CODE
CRITICAL…pp/hapi/companion/feature/newsession/NewSessionForm.kt287 copilotAgentMode = app.hapi.protocol.catalog.CopilotAgentMode.normalize(base.copilotAgentMode).wireId,CODE
AI Slop Vocabulary144 hits · 312 pts
SeverityFileLineSnippetContext
MEDIUMweb/src/chat/tracer.ts91 // robust even when the SDK never emits a prompt-holding sidechain rootCOMMENT
MEDIUMcli/src/codex/shared/queue.ts247 // Definitely rejected; restoring a removed queued item is safe. Never restore an unknown dispatch.COMMENT
MEDIUMcli/src/modules/common/agyModels.ts191// Build the env for the one-shot `agy models` probe. Auth must be as robust asCOMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift134 #expect(harness.interactor.composerText == "note text")COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift143 #expect(harness.interactor.composerText == "draft\nnote")COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift152 #expect(harness.interactor.composerText == "draft")COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift167 #expect(harness.scratchlist.createCalls.count == 1)COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift168 #expect(harness.scratchlist.createCalls[0].sessionId == "sess-1")COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift169 #expect(harness.scratchlist.createCalls[0].text == "park me")COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift170 #expect(harness.scratchlist.createCalls[0].attachments.isEmpty)COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift171 #expect(harness.notices == ["Draft parked to scratchlist"])COMMENT
MEDIUM…iClientTests/Chat/ChatInteractorScratchlistTests.swift188 #expect(harness.interactor.composerText == "draft more")COMMENT
MEDIUM…iClientTests/Chat/ChatInteractorScratchlistTests.swift199 #expect(harness.interactor.composerText == "keep me")COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift212 #expect(harness.interactor.composerText == "keep me too")COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift222 #expect(harness.scratchlist.createCalls.isEmpty)COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift223 #expect(harness.interactor.composerText == " ")COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift233 #expect(harness.interactor.composerText == "stranded draft")COMMENT
MEDIUM⚡…iClientTests/Chat/ChatInteractorScratchlistTests.swift234 #expect(harness.events.isEmpty)COMMENT
MEDIUM…iClientTests/Chat/ChatInteractorScratchlistTests.swift248 #expect(harness.interactor.scratchlistCount == 2)COMMENT
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift367 #expect(await harness.row(localId: "local-1")?.id == "local-1")STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift368 #expect(harness.interactor.composerText.isEmpty)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift369 #expect(harness.drafts.storage[chatSessionID] == nil)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift501 let row = try #require(await harness.row(localId: "local-1"))STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift510 #expect(harness.interactor.attachments.items.isEmpty)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift517 #expect(await eventually { harness.interactor.attachments.allReady })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift549 #expect(harness.interactor.composerText == "hold on")STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift550 #expect(harness.interactor.attachments.items.count == 1)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift554 #expect(await eventually { harness.interactor.attachments.allReady })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift595 #expect(await eventually { harness.interactor.attachments.allReady })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift601 #expect(harness.interactor.attachments.items.isEmpty)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift605 #expect(await eventually { harness.interactor.attachments.allReady })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift610 #expect(harness.interactor.attachments.items.isEmpty)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift695 #expect(await eventually { await harness.performer.count("POST", pathSuffix: "/approve") == 1 })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift697 #expect(await eventually { await harness.performer.count("POST", pathSuffix: "/approve") == 2 })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift699 #expect(await eventually { await harness.performer.count("POST", pathSuffix: "/approve") == 3 })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift701 #expect(await eventually { await harness.performer.count("POST", pathSuffix: "/deny") == 1 })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift730 #expect(await eventually { await harness.performer.count("POST", pathSuffix: "/approve") == 1 })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift732 #expect(await eventually { await harness.performer.count("POST", pathSuffix: "/approve") == 2 })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift734 #expect(await eventually { await harness.performer.count("POST", pathSuffix: "/deny") == 1 })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift800 #expect(await eventually { await harness.performer.count("POST", pathSuffix: "/approve") == 1 })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift802 #expect(harness.interactor.permissionOverrides["r-live"] == .resolving)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift807 #expect(harness.interactor.permissionOverrides.isEmpty)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift818 #expect(await harness.performer.count("POST", pathSuffix: "/collaboration-mode") == 0)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift827 #expect(await eventually { await harness.performer.count("POST", pathSuffix: "/collaboration-mode") == 1 })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift828 #expect(await harness.performer.count("POST", pathSuffix: "/model") == 0)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift834 #expect(await harness.performer.bodies("POST", pathSuffix: "/collaboration-mode") == [#"{"mode":"plan"}"#, #"{"mSTRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift839 #expect(await harness.performer.count("POST", pathSuffix: "/collaboration-mode") == 2)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift859 #expect(await harness.performer.count("POST", pathSuffix: "/collaboration-mode") == 0)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift866 #expect(await harness.performer.count("POST", pathSuffix: "/collaboration-mode") == 1)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift875 #expect(harness.interactor.config.collaborationMode == .plan)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift876 #expect(await eventually { !harness.interactor.configOpPending })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift877 #expect(harness.interactor.config.collaborationMode == nil)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift878 #expect(harness.events.contains { if case .notice = $0 { return true }; return false })STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift998 #expect(await harness.performer.count("POST", pathSuffix: "/codex/plan/implement") == 0)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift1005 #expect(harness.interactor.composerFocusRequest == 1)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift1006 #expect(harness.interactor.composerText == "Please refine step two")STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift1007 #expect(harness.store.detail(for: chatSessionID)?.collaborationMode == .plan)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift1008 #expect(await harness.performer.exchanges.filter { $0.method == "POST" }.isEmpty)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift1009 #expect(!harness.interactor.codexPlanActions(planId: "plan-1").isVisible)STRING
MEDIUM⚡…t/Tests/HapiClientTests/Chat/ChatInteractorTests.swift1012 #expect(harness.interactor.composerFocusRequest == 1)STRING
84 more matches not shown…
Over-Commented Block232 hits · 231 pts
SeverityFileLineSnippetContext
LOWweb/e2e-fixtures/history-load-fixture.tsx81// - ?shortPages=1 — `before` pages return 2 messages regardless of limit, soCOMMENT
LOWweb/src/chat/normalizeAgent.ts541COMMENT
LOWweb/src/components/SessionChat.tsx1781 intent: ComposerSendIntent = 'default',COMMENT
LOWweb/src/components/CodeBlock.tsx61 const scrollHeight = props.maxHeight ?? DEFAULT_SCROLL_HEIGHTCOMMENT
LOWweb/src/components/assistant-ui/markdown-text.tsx41// remarkRepairTables must run immediately after remarkGfm — it reads file.valueCOMMENT
LOWweb/src/components/assistant-ui/markdown-text.tsx241// <a href> is preserved for the onClick layer to handle.COMMENT
LOWweb/src/components/assistant-ui/markdown-text.tsx261 }COMMENT
LOWweb/src/hooks/useSSE.ts81COMMENT
LOWweb/src/hooks/mutations/useSendMessage.ts241 options?.onSuccess?.(input.sessionId)COMMENT
LOWweb/src/lib/use-hub-scratchlist.ts221 setMigrationStatus('idle')COMMENT
LOWweb/src/lib/use-hub-scratchlist.ts261 migrationAttemptedRef.current = trueCOMMENT
LOWweb/src/lib/use-hub-scratchlist.ts521 })COMMENT
LOWcli/src/runner/runner.integration.test.ts101 beforeEach(async () => {COMMENT
LOWcli/src/runner/runner.integration.test.ts141 // exhaust the hook budget before the marker sweep runs. Bound it: if theCOMMENT
LOWcli/src/runner/run.ts201 logger.debug(`[RUNNER RUN] Process about to exit with code: ${code}`);COMMENT
LOWcli/src/runner/run.ts501 awaiter(existingSession);COMMENT
LOWcli/src/runner/run.ts1561 // Snapshot original CLI argv via the project's canonical normalizer so theCOMMENT
LOWcli/src/runner/run.ts1701 }COMMENT
LOWcli/src/runner/run.ts1781 if (typeof installedCliMtimeMs === 'number' &&COMMENT
LOWcli/src/runner/run.ts1801 // 3. Only clear the heartbeat + exit when handoff is confirmed; if itCOMMENT
LOWcli/src/claude/claudeRemoteLauncher.ts341 this.abortFuture = new Future<void>();COMMENT
LOWcli/src/claude/claudeRemoteLauncher.ts361 // following onReady(). If claudeRemote() throws while aCOMMENT
LOWcli/src/claude/claudeRemoteLauncher.ts401 // turn. Without this, scheduleProcessing()'s setTimeout(fn,0) firesCOMMENT
LOWcli/src/claude/claudeRemoteLauncher.ts441 if ((modeHash && msg.hash !== modeHash) || msg.isolate) {COMMENT
LOWcli/src/claude/claudeRemoteLauncher.ts541 }COMMENT
LOWcli/src/claude/claudeRemoteLauncher.ts561 // that case would clear the streak every other attemptCOMMENT
LOW…/src/claude/claudeRemoteLauncher.launchFailure.test.ts321 // call 2 = reaches onReady, then throws -> streak resets to 0 (NOTCOMMENT
LOW…/src/claude/claudeRemoteLauncher.launchFailure.test.ts381 const { claudeRemoteLauncher } = await import('./claudeRemoteLauncher');COMMENT
LOWcli/src/claude/utils/sdkToLogConverter.ts301COMMENT
LOWcli/src/claude/utils/sdkToLogConverter.ts361 // Best-effort 1M-vs-200k seed for turn 1, before any authoritativeCOMMENT
LOWcli/src/claude/utils/sessionHookForwarder.ts281 return;COMMENT
LOWcli/src/claude/utils/sessionHookForwarder.ts301 // SessionStart hook). The stdin format is agy's camelCase schemaCOMMENT
LOWcli/src/codex/utils/permissionHandler.ts121 }COMMENT
LOWcli/src/agent/bracketedPaste.ts1// Bracketed-paste (DECSET 2004) framing for PTY input.COMMENT
LOWcli/src/agent/runnerLifecycle.ts21 cleanupConfirmed: (options?: { timeoutMs?: number }) => Promise<void>COMMENT
LOWcli/src/agent/backends/acp/AcpMessageHandler.ts601COMMENT
LOWcli/src/pi/runPi.ts401 };COMMENT
LOWcli/src/pi/runPi.ts541 if (!dequeued) return;COMMENT
LOWcli/src/pi/runPi.ts1461 // starts. Sending new_session here races get_state and discards a resumed session.COMMENT
LOWcli/src/agy/utils/agyTranscriptTypes.ts21 // Raw agy tool arguments. Values are usually strings (CommandLine,COMMENT
LOWcli/src/agy/headless/agyHeadlessDriver.ts521 // can parse buffered records.COMMENT
LOWcli/src/agy/headless/agyHeadlessDriver.ts701 // established by that record.COMMENT
LOWcli/src/agy/headless/agyHeadlessDriver.ts821 // already removed it from the queue and the hub delivery staysCOMMENT
LOWcli/src/api/apiSession.ts1061COMMENT
LOWcli/src/modules/common/piModels.ts141 // The probe child has no further use once the response (or aCOMMENT
LOWcli/src/opencode/loop.ts61 session.onSessionFound(opts.resumeSessionId);COMMENT
LOWcli/src/opencode/opencodeRemoteLauncher.test.ts21 stderrHandler: null as null | ((error: { type: string; message: string; raw: string }) => void),COMMENT
LOWcli/src/opencode/opencodeRemoteLauncher.test.ts661 expect(compactHarness.calls.length).toBe(1);COMMENT
LOWcli/src/opencode/opencodeRemoteLauncher.test.ts981COMMENT
LOWcli/src/opencode/opencodeRemoteLauncher.test.ts1061 // reproduce this specific window.COMMENT
LOWcli/src/opencode/opencodeRemoteLauncher.test.ts1201 const messages = sessionEvents.filter((event) => event.type === 'message').map((event) => event.message);COMMENT
LOWcli/src/opencode/opencodeRemoteLauncher.test.ts1281 });COMMENT
LOWcli/src/opencode/opencodeRemoteLauncher.test.ts1301 // (handleAbort()'s existing session.queue.reset() call clears anyCOMMENT
LOWcli/src/opencode/opencodeRemoteLauncher.test.ts1461 await Promise.race([COMMENT
LOWcli/src/opencode/runOpencode.test.ts381 await new Promise((resolve) => setTimeout(resolve, 0));COMMENT
LOWcli/src/opencode/runOpencode.test.ts661 it('queues /compact like a prompt while a remote-mode session is still initializing (ACP backend not ready yet), insCOMMENT
LOWcli/src/opencode/runOpencode.test.ts721 const messageQueue = harness.opencodeLoopArgs[0]?.messageQueue as { queue: unknown[] };COMMENT
LOWcli/src/opencode/runOpencode.test.ts761 it('resumes queuing /compact once a torn-down session re-enters remote mode (compactTeardownInProgress resets on theCOMMENT
LOWcli/src/opencode/runOpencode.ts81 const messageQueue = new MessageQueue2<OpencodeMode>((mode) => hashObject({COMMENT
LOWcli/src/opencode/runOpencode.ts101 // comment on RemoteLauncherBase for exactly when that fires). WhileCOMMENT
172 more matches not shown…
Decorative Section Separators50 hits · 150 pts
SeverityFileLineSnippetContext
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx39// ── Plugin array ────────────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx126// ── URI scheme policy (inlined from url-scheme-policy.ts) ───────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx238// ── URL sanitize transform (deny-only) ──────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx265// ── Allowed-schemes state (inlined from useAllowedSchemes.ts) ───────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx359// ── UriConfirmContext — one dialog per markdown root ────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-text.tsx433// ── Components ───────────────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx77// ── classifyScheme ────────────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx142// ── denyOnlyTransform ─────────────────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx162// ── useAllowedSchemes (inlined hook, tested via A component) ──────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx213// ── <A> component — click handler ────────────────────────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx251// ── relative / no-scheme hrefs — fail-closed (#1452) ─────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx251// ── relative / no-scheme hrefs — fail-closed (#1452) ─────────────────────────COMMENT
MEDIUMweb/src/components/assistant-ui/markdown-a.test.tsx471// ── intra-tab cross-provider sync (schemeListeners emitter) ──────────────────COMMENT
MEDIUMweb/src/hooks/useReasoningCollapse.ts46// ── Module-level singleton store ────────────────────────────────────────────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-file-path-links.test.ts96// ── inlineCode autolinking (prong 2) ─────────────────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-file-path-links.test.ts157// ── explicit markdown link rewriting (prong 3) ───────────────────────────────COMMENT
MEDIUMweb/src/lib/remark-file-path-links.test.ts228// ── standalone gate: rewriteExplicitLinks:false (file-preview surface) ────────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.ts2080 // ── tool_call: at least one must have been emitted ────────────────COMMENT
MEDIUMcli/src/agent/backends/acp/AcpMessageHandler.test.ts2089 // a typed object from the human-readable title. ───────────────COMMENT
MEDIUMcli/src/agent/backends/acp/AcpMessageHandler.test.ts2114 // ── reasoning: at least one prose thought must have surfaced ───────COMMENT
MEDIUMcli/src/agent/backends/acp/AcpMessageHandler.test.ts2128 // ── text messages: none should be a raw JSON blob ─────────────────COMMENT
MEDIUMcli/src/agent/backends/acp/AcpMessageHandler.test.ts2139 // ── optional: assert text messages exist for complete captures ─────COMMENT
MEDIUMcli/src/modules/pingPeer/pingPeer.ts545// ── inspect_peer (read twin; no resume) ─────────────────────────────────────COMMENT
MEDIUM…kotlin/app/hapi/protocol/markdown/FilePathLinksTest.kt10 // ── detectFilePathLinks ──────────────────────────────────────────────────COMMENT
MEDIUM…kotlin/app/hapi/protocol/markdown/FilePathLinksTest.kt102 // ── matchWholeFilePath (inline code spans) ───────────────────────────────COMMENT
MEDIUM…kotlin/app/hapi/protocol/markdown/FilePathLinksTest.kt128 // ── rewriteExplicitLinkTarget ────────────────────────────────────────────COMMENT
MEDIUM…n/app/hapi/protocol/markdown/MarkdownTransformsTest.kt20 // ── repairTables (remark-repair-tables parity) ───────────────────────────COMMENT
MEDIUM…n/app/hapi/protocol/markdown/MarkdownTransformsTest.kt100 // ── Parser configuration (disableIndentedCode + extensions) ──────────────COMMENT
MEDIUM…n/app/hapi/protocol/markdown/MarkdownTransformsTest.kt153 // ── stripCjkAutolinkArtifacts ────────────────────────────────────────────COMMENT
MEDIUM…otlin/app/hapi/protocol/markdown/MarkdownTransforms.kt32 // ── Table repair (remark-repair-tables port) ─────────────────────────────COMMENT
MEDIUM…otlin/app/hapi/protocol/markdown/MarkdownTransforms.kt163 // ── Indented-code disable + parser factory ───────────────────────────────COMMENT
MEDIUM…otlin/app/hapi/protocol/markdown/MarkdownTransforms.kt205 // ── CJK autolink artifact strip (remark-strip-cjk-autolink port) ─────────COMMENT
MEDIUM…otlin/app/hapi/protocol/markdown/MarkdownTransforms.kt230 // ── File path link detection (remark-file-path-links port) ───────────────COMMENT
MEDIUM…main/kotlin/app/hapi/companion/ui/markdown/Markdown.kt86// ── Link handling ────────────────────────────────────────────────────────────COMMENT
MEDIUM…main/kotlin/app/hapi/companion/ui/markdown/Markdown.kt112// ── Entry point ──────────────────────────────────────────────────────────────COMMENT
MEDIUM…main/kotlin/app/hapi/companion/ui/markdown/Markdown.kt179// ── Block rendering ──────────────────────────────────────────────────────────COMMENT
MEDIUM…main/kotlin/app/hapi/companion/ui/markdown/Markdown.kt301// ── Table rendering ──────────────────────────────────────────────────────────COMMENT
MEDIUM…main/kotlin/app/hapi/companion/ui/markdown/Markdown.kt441// ── Inline rendering ─────────────────────────────────────────────────────────COMMENT
Magic Placeholder Names4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHdocs/guide/notifications.md85export ELEVENLABS_API_KEY="your-api-key"CODE
HIGHdocs/guide/voice-assistant.md71export ELEVENLABS_API_KEY="your-api-key"CODE
HIGHdocs/guide/voice-assistant.md92export GEMINI_API_KEY="your-api-key" # or GOOGLE_API_KEYCODE
HIGHdocs/guide/voice-assistant.md99export DASHSCOPE_API_KEY="your-api-key" # or QWEN_API_KEYCODE
Verbosity Indicators9 hits · 19 pts
SeverityFileLineSnippetContext
LOW⚡cli/scripts/release-all.ts119 // Step 1: Update all release versions before building or publishing.COMMENT
LOW⚡cli/scripts/release-all.ts124 // Step 2: Build all platform binaries (with embedded web assets)COMMENT
LOW⚡cli/scripts/release-all.ts132 // Step 3: Prepare and publish platform packagesCOMMENT
LOW⚡cli/scripts/release-all.ts141 // Step 4: Verify all platform packages are live on npm before publishing the main package.COMMENT
LOW⚡cli/scripts/release-all.ts151 // Step 5: Publish main packageCOMMENT
LOW⚡cli/scripts/release-all.ts162 // Step 6: bun install to get complete lockfileCOMMENT
LOW⚡cli/scripts/release-all.ts166 // Step 7: Git commit + tag + pushCOMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts303 // Step 1: canonical-path fast path. Skip readdir entirely if we hit.COMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts323 // Step 2: scan every <wsh>/<cursorSessionId>/store.db.COMMENT
Structural Annotation Overuse9 hits · 19 pts
SeverityFileLineSnippetContext
LOW⚡cli/scripts/release-all.ts119 // Step 1: Update all release versions before building or publishing.COMMENT
LOW⚡cli/scripts/release-all.ts124 // Step 2: Build all platform binaries (with embedded web assets)COMMENT
LOW⚡cli/scripts/release-all.ts132 // Step 3: Prepare and publish platform packagesCOMMENT
LOW⚡cli/scripts/release-all.ts141 // Step 4: Verify all platform packages are live on npm before publishing the main package.COMMENT
LOW⚡cli/scripts/release-all.ts151 // Step 5: Publish main packageCOMMENT
LOW⚡cli/scripts/release-all.ts162 // Step 6: bun install to get complete lockfileCOMMENT
LOW⚡cli/scripts/release-all.ts166 // Step 7: Git commit + tag + pushCOMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts303 // Step 1: canonical-path fast path. Skip readdir entirely if we hit.COMMENT
LOWhub/src/cursor/cursorLegacyMigrator.ts323 // Step 2: scan every <wsh>/<cursorSessionId>/store.db.COMMENT
Synthetic Comment Markers3 hits · 18 pts
SeverityFileLineSnippetContext
HIGHcli/src/claude/claudeLocalLauncher.ts16 // Preserve the AI-generated title emitted by Claude Code's nativeCOMMENT
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
Modern AI Meta-Vocabulary3 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMshared/src/voicePromptLayers.ts151export const VOICE_PROVIDER_GUARDRAILS = `# Provider guardrailsCODE
MEDIUM…ges/HapiKit/Sources/HapiClient/HapiClientVersion.swift10 /// Version of the HapiKit client scaffold.COMMENT
MEDIUMandroid/gradle/libs.versions.toml2# All versions verified to exist on Google Maven / Maven Central at scaffold time.COMMENT
Fake / Example Data4 hits · 4 pts
SeverityFileLineSnippetContext
LOW…rc/components/ToolCard/RequestUserInputFooter.test.tsx137 expect(textarea).toHaveAttribute('placeholder', 'Describe the change')CODE
LOWcli/src/cursor/utils/cursorLegacyEventConverter.test.ts200 'Lorem ipsum ... Questions skipped by the user, continue with the information you alreadCODE
LOW…HapiKit/Sources/HapiClient/Chat/PermissionInputs.swift205 placeholder: object["placeholder"]?.stringValue,CODE
LOW…companion/feature/chat/permissions/PermissionInputs.kt162 placeholder = obj["placeholder"].stringOrNull,CODE
Deep Nesting2 hits · 2 pts
SeverityFileLineSnippetContext
LOWios/scripts/pbxproj-audit.py28CODE
LOWios/scripts/localizations.py70CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWios/scripts/linux-test.sh8# Usage:COMMENT