Repository Analysis

logancyang/obsidian-copilot

THE Copilot in Obsidian

2.8 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of logancyang/obsidian-copilot, a TypeScript project with 7,409 GitHub stars. SynthScan v2.0 examined 170,208 lines of code across 585 source files, recording 290 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 2.8 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).

2.8
Adjusted Score
2.8
Raw Score
100%
Time Factor
2026-07-14
Last Push
7.4K
Stars
TypeScript
Language
170.2K
Lines of Code
585
Files
290
Pattern Hits
2026-07-14
Scan Date
0.02
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 11MEDIUM 22LOW 256

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 290 distinct pattern matches across 13 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 Identifiers157 hits · 160 pts
SeverityFileLineSnippetContext
LOWdesigndocs/todo/AGENT_REASONING_BLOCK.md112export function createInitialReasoningState(): AgentReasoningState {CODE
LOWdesigndocs/todo/AGENT_REASONING_BLOCK.md427function parseAgentReasoningMarker(content: string): {CODE
LOWsrc/aiParams.ts196export function subscribeToModelKeyChange(callback: () => void): () => void {CODE
LOWsrc/aiParams.ts214export function subscribeToChainTypeChange(callback: () => void): () => void {CODE
LOWsrc/aiParams.ts262export function removeSelectedTextContext(id: string) {CODE
LOWsrc/aiParams.ts267export function clearSelectedTextContexts() {CODE
LOWsrc/aiParams.ts280export function setProjectContextLoadState(state: ProjectContextLoadState) {CODE
LOWsrc/aiParams.ts323export function updateIndexingProgressState(partial: Partial<IndexingProgressState>) {CODE
LOWsrc/aiParams.ts342export function resetIndexingProgressState() {CODE
LOWsrc/aiParams.ts367export function throttledUpdateIndexingCount(indexedCount: number): void {CODE
LOWsrc/utils.ts308export function stringToFormattedDateTime(timestamp: string): FormattedDateTime {CODE
LOWsrc/utils.ts344export function isAllowedFileForNoteContext(file: TFile | null): boolean {CODE
LOWsrc/utils.ts367export function isAllowedFileForChainContext(file: TFile | null, chainType: ChainType): boolean {CODE
LOWsrc/utils.ts437function resolveNoteFilesFromTitles(noteTitles: string[], vault: Vault): TFile[] {CODE
LOWsrc/utils.ts528export function processVariableNameForNotePath(variableName: string): string {CODE
LOWsrc/utils.ts539export function extractUniqueTitlesFromDocs(docs: Document[]): string[] {CODE
LOWsrc/utils.ts789function createReadableStreamFromString(input: string) {CODE
LOWsrc/utils.ts1051export function shouldUseGitHubCopilotResponsesApi(CODE
LOWsrc/plusUtils.ts282export async function refreshSelfHostModeValidation(): Promise<void> {CODE
LOWsrc/settings/model.ts329export function subscribeToSettingsChange(CODE
LOWsrc/settings/model.ts656function mergeAllActiveModelsWithCoreModels(settings: CopilotSettings): CopilotSettings {CODE
LOWsrc/settings/model.ts721function filterUnsupportedEmbeddingModels(models: CustomModel[]): CustomModel[] {CODE
LOWsrc/settings/v2/components/ModelImporter.tsx38function renderVerificationMessage(message: string): React.ReactNode {CODE
LOWsrc/tools/ToolResultFormatter.ts7export function deriveReadNoteDisplayName(rawNotePath: string): string {CODE
LOWsrc/tools/NoteTools.ts269function extractLinkedNoteMetadata(content: string, sourceFile: TFile): LinkedNoteMetadata[] {CODE
LOWsrc/tools/TimeTools.ts527async function convertTimeBetweenTimezones(CODE
LOWsrc/LLMProviders/brevilabsClient.ts17async function buildMultipartFromFormData(CODE
LOWsrc/LLMProviders/BedrockChatModel.ts54function rewriteBedrockErrorMessage(status: number, body: string, streaming = false): string {CODE
LOW…Providers/githubCopilot/GitHubCopilotResponsesModel.ts24export function buildGitHubCopilotAuthedFetch(CODE
LOWsrc/LLMProviders/chainRunner/README.md506async function executeSequentialToolCall(CODE
LOW…c/LLMProviders/chainRunner/utils/toolPromptDebugger.ts77function formatPromptSectionsWithAnnotations(sections: PromptSection[]): string {CODE
LOWsrc/LLMProviders/chainRunner/utils/imageExtraction.ts13export function extractMarkdownImagePaths(markdown: string): string[] {CODE
LOWsrc/LLMProviders/chainRunner/utils/imageExtraction.ts91function stripOptionalTitleFromEnd(value: string): string {CODE
LOWsrc/LLMProviders/chainRunner/utils/imageExtraction.ts167function findClosingParenIndexForImage(source: string, openParenIndex: number): number | null {CODE
LOWsrc/LLMProviders/chainRunner/utils/imageExtraction.ts251function findMatchingUnescapedQuoteFromEnd(CODE
LOWsrc/LLMProviders/chainRunner/utils/imageExtraction.ts267function findMatchingOpeningParenForEnd(source: string): number | null {CODE
LOWsrc/LLMProviders/chainRunner/utils/toolCallParser.ts64function buildOmittedResultMessage(toolName: string): string {CODE
LOWsrc/LLMProviders/chainRunner/utils/searchResultUtils.ts101export function formatSearchResultsForLLM(searchResults: unknown): string {CODE
LOWsrc/LLMProviders/chainRunner/utils/searchResultUtils.ts161export function formatSearchResultStringForLLM(resultString: string): string {CODE
LOWsrc/LLMProviders/chainRunner/utils/searchResultUtils.ts180export function extractSourcesFromSearchResults(CODE
LOWsrc/LLMProviders/chainRunner/utils/searchResultUtils.ts312export function formatSplitSearchResultsForLLM(CODE
LOWsrc/LLMProviders/chainRunner/utils/searchResultUtils.ts424export function formatMetadataOnlyDocuments(docs: unknown, snippetLength = 300): string {CODE
LOWsrc/LLMProviders/chainRunner/utils/searchResultUtils.ts448export function logSearchResultsDebugTable(searchResults: SearchDoc[]): void {CODE
LOWsrc/LLMProviders/chainRunner/utils/nativeToolCalling.ts141export function createAIMessageWithToolCalls(CODE
LOW…LMProviders/chainRunner/utils/promptPayloadRecorder.ts48function buildLayeredViewFromMessages(CODE
LOW…LMProviders/chainRunner/utils/promptPayloadRecorder.ts276export function clearRecordedPromptPayload(): void {CODE
LOW…LMProviders/chainRunner/utils/promptPayloadRecorder.ts284export async function flushRecordedPromptPayloadToLog(): Promise<void> {CODE
LOWsrc/LLMProviders/chainRunner/utils/chatHistoryUtils.ts115export function processedMessagesToTextOnly(CODE
LOW…c/LLMProviders/chainRunner/utils/promptDebugService.ts25export async function generatePromptDebugReportForAgent(CODE
LOW…c/LLMProviders/chainRunner/utils/promptDebugService.ts86export async function buildAgentPromptDebugReport(CODE
LOW…/LLMProviders/chainRunner/utils/AgentReasoningState.ts39export function createInitialReasoningState(): AgentReasoningState {CODE
LOWsrc/LLMProviders/chainRunner/utils/citationUtils.ts74export function getQACitationInstructions(CODE
LOWsrc/LLMProviders/chainRunner/utils/citationUtils.ts94export function getCitationFormatReminder(enableInlineCitations: boolean): string | null {CODE
LOWsrc/LLMProviders/chainRunner/utils/citationUtils.ts144export function sanitizeContentForCitations(text: string | null | undefined): string {CODE
LOWsrc/LLMProviders/chainRunner/utils/citationUtils.ts186export function getWebSearchCitationInstructions(enableInlineCitations: boolean = true): string {CODE
LOWsrc/LLMProviders/chainRunner/utils/citationUtils.ts368function convertFootnoteDefinitions(sourcesBlock: string, map: Map<number, number>): string[] {CODE
LOWsrc/LLMProviders/chainRunner/utils/citationUtils.ts406function consolidateDuplicateSources(items: string[]): {CODE
LOWsrc/LLMProviders/chainRunner/utils/citationUtils.ts447export function updateCitationsForConsolidation(CODE
LOWsrc/LLMProviders/chainRunner/utils/citationUtils.ts474export function deduplicateAdjacentCitations(content: string): string {CODE
LOWsrc/LLMProviders/chainRunner/utils/cicPromptUtils.ts12export function buildLocalSearchInnerContent(introText: string, formattedContent: string): string {CODE
97 more matches not shown…
Structural Annotation Overuse48 hits · 82 pts
SeverityFileLineSnippetContext
LOW.claude/agents/prerelease.md20### Step 0: Pre-flight Sanity ChecksCOMMENT
LOW.claude/agents/prerelease.md99### Step 1: Determine Prerelease IdentityCOMMENT
LOW.claude/agents/prerelease.md110### Step 2: Prepare the BranchCOMMENT
LOW.claude/agents/prerelease.md123### Step 3: Bump the VersionCOMMENT
LOW.claude/agents/prerelease.md147### Step 4: Gather and Understand Merged PRsCOMMENT
LOW.claude/agents/prerelease.md158### Step 5: Generate Prerelease NotesCOMMENT
LOW.claude/agents/prerelease.md203### Step 6: Update RELEASES.mdCOMMENT
LOW.claude/agents/prerelease.md209### Step 7: Commit and Create PRCOMMENT
LOW.claude/agents/prerelease.md238### Step 8: Report BackCOMMENT
LOW.claude/agents/release.md22### Step 0: Pre-flight Sanity ChecksCOMMENT
LOW.claude/agents/release.md94### Step 1: Determine Release TypeCOMMENT
LOW.claude/agents/release.md102### Step 2: Prepare the BranchCOMMENT
LOW.claude/agents/release.md115### Step 3: Bump the VersionCOMMENT
LOW.claude/agents/release.md123### Step 4: Gather and Understand Merged PRsCOMMENT
LOW.claude/agents/release.md159### Step 5: Generate Release NotesCOMMENT
LOW.claude/agents/release.md195### Step 6: Update RELEASES.mdCOMMENT
LOW.claude/agents/release.md199### Step 7: Commit and Create PRCOMMENT
LOW.claude/agents/release.md226### Step 8: Report BackCOMMENT
LOWdocs/getting-started.md32### Step 1: Open Plugin SettingsCOMMENT
LOWdocs/getting-started.md36### Step 2: Add an API KeyCOMMENT
LOWdocs/getting-started.md49### Step 3: Choose a Default ModelCOMMENT
LOWdocs/getting-started.md53### Step 4: Choose a Chat ModeCOMMENT
LOWsrc/core/MessageLifecycle.test.ts24 // Step 1: User types a message and attaches a noteCOMMENT
LOWsrc/core/MessageLifecycle.test.ts39 // Step 2: Message is stored with basic display textCOMMENT
LOWsrc/core/MessageLifecycle.test.ts62 // Step 3: Context Manager processes the note and updates processed textCOMMENT
LOWsrc/core/MessageLifecycle.test.ts92 // Step 4: Verify different views for UI vs LLMCOMMENT
LOWsrc/core/MessageLifecycle.test.ts110 // Step 5: AI responds based on the contextCOMMENT
LOWsrc/core/MessageLifecycle.test.ts131 // Step 6: Verify complete conversationCOMMENT
LOWsrc/core/MessageLifecycle.test.ts152 // Step 7: Verify what LLM history contains (for chat memory)COMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts74 // Step 1: Extract L5 (raw user query) from envelopeCOMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts79 // Step 2: Extract tags from raw query (BEFORE condensing!)COMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts83 // Step 3: Get chat history from memory (L4)COMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts88 // Step 4: Condense L4 + L5 into standalone question for RAG retrievalCOMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts97 // Step 5: Create retriever based on semantic search settingCOMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts151 // Step 6: Build messages array with envelope-aware logicCOMMENT
LOWsrc/system-prompts/migration.ts173 // Step 1: Create the fileCOMMENT
LOWsrc/system-prompts/migration.ts176 // Step 2: Add frontmatterCOMMENT
LOWsrc/system-prompts/migration.ts184 // Step 3: Write-then-verify - read back and confirm content matchesCOMMENT
LOWsrc/components/chat-components/ChatControls.tsx166 // Step 1: Completely clear all cached data for this project (in-memory and on-disk)COMMENT
LOWsrc/components/chat-components/ChatControls.tsx173 // Step 2: Trigger a full reload from scratch.COMMENT
LOWsrc/services/settingsPersistence.test.ts818 // Step 1: force the double-failure so the lock arms.COMMENT
LOWsrc/services/settingsPersistence.test.ts827 // Step 2: the user fixes whatever was wrong and edits any setting →COMMENT
LOWsrc/services/settingsPersistence.test.ts835 // Step 3: the lock must be lifted so the next migration attempt can run.COMMENT
LOWsrc/services/settingsPersistence.ts768 // Step 3: reconcile with any concurrent settings edits that landedCOMMENT
LOW…c/services/webViewerService/webViewerServiceActions.ts298 // Step 1: Extract video metadata from JSON-LD (structured data)COMMENT
LOW…c/services/webViewerService/webViewerServiceActions.ts368 // Step 2: Fallback to DOM selectors for missing metadataCOMMENT
LOW…c/services/webViewerService/webViewerServiceActions.ts384 // Step 3: Find or open the transcript panelCOMMENT
LOW…c/services/webViewerService/webViewerServiceActions.ts448 // Step 4: Extract transcript segments from the panelCOMMENT
Verbosity Indicators26 hits · 49 pts
SeverityFileLineSnippetContext
LOWsrc/core/MessageLifecycle.test.ts24 // Step 1: User types a message and attaches a noteCOMMENT
LOWsrc/core/MessageLifecycle.test.ts39 // Step 2: Message is stored with basic display textCOMMENT
LOWsrc/core/MessageLifecycle.test.ts62 // Step 3: Context Manager processes the note and updates processed textCOMMENT
LOWsrc/core/MessageLifecycle.test.ts92 // Step 4: Verify different views for UI vs LLMCOMMENT
LOWsrc/core/MessageLifecycle.test.ts110 // Step 5: AI responds based on the contextCOMMENT
LOWsrc/core/MessageLifecycle.test.ts131 // Step 6: Verify complete conversationCOMMENT
LOWsrc/core/MessageLifecycle.test.ts152 // Step 7: Verify what LLM history contains (for chat memory)COMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts74 // Step 1: Extract L5 (raw user query) from envelopeCOMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts79 // Step 2: Extract tags from raw query (BEFORE condensing!)COMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts83 // Step 3: Get chat history from memory (L4)COMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts88 // Step 4: Condense L4 + L5 into standalone question for RAG retrievalCOMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts97 // Step 5: Create retriever based on semantic search settingCOMMENT
LOWsrc/LLMProviders/chainRunner/VaultQAChainRunner.ts151 // Step 6: Build messages array with envelope-aware logicCOMMENT
LOWsrc/system-prompts/migration.ts173 // Step 1: Create the fileCOMMENT
LOWsrc/system-prompts/migration.ts176 // Step 2: Add frontmatterCOMMENT
LOWsrc/system-prompts/migration.ts184 // Step 3: Write-then-verify - read back and confirm content matchesCOMMENT
LOWsrc/components/chat-components/ChatControls.tsx166 // Step 1: Completely clear all cached data for this project (in-memory and on-disk)COMMENT
LOWsrc/components/chat-components/ChatControls.tsx173 // Step 2: Trigger a full reload from scratch.COMMENT
LOWsrc/services/settingsPersistence.test.ts818 // Step 1: force the double-failure so the lock arms.COMMENT
LOWsrc/services/settingsPersistence.test.ts827 // Step 2: the user fixes whatever was wrong and edits any setting →COMMENT
LOWsrc/services/settingsPersistence.test.ts835 // Step 3: the lock must be lifted so the next migration attempt can run.COMMENT
LOWsrc/services/settingsPersistence.ts768 // Step 3: reconcile with any concurrent settings edits that landedCOMMENT
LOW…c/services/webViewerService/webViewerServiceActions.ts298 // Step 1: Extract video metadata from JSON-LD (structured data)COMMENT
LOW…c/services/webViewerService/webViewerServiceActions.ts368 // Step 2: Fallback to DOM selectors for missing metadataCOMMENT
LOW…c/services/webViewerService/webViewerServiceActions.ts384 // Step 3: Find or open the transcript panelCOMMENT
LOW…c/services/webViewerService/webViewerServiceActions.ts448 // Step 4: Extract transcript segments from the panelCOMMENT
Magic Placeholder Names6 hits · 45 pts
SeverityFileLineSnippetContext
HIGHsrc/utils/curlCommand.ts93 return { apiKey: "<YOUR_API_KEY>", warnings };CODE
HIGHsrc/utils/curlCommand.ts93 return { apiKey: "<YOUR_API_KEY>", warnings };CODE
HIGHsrc/utils/curlCommand.ts100 return { apiKey: "<YOUR_API_KEY>", warnings };CODE
HIGHsrc/utils/curlCommand.ts100 return { apiKey: "<YOUR_API_KEY>", warnings };CODE
HIGHsrc/utils/curlCommand.ts105 return { apiKey: "<YOUR_API_KEY>", warnings };CODE
HIGHsrc/utils/curlCommand.ts105 return { apiKey: "<YOUR_API_KEY>", warnings };CODE
Decorative Section Separators9 hits · 34 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/release.yml60 # ── Step 2: Checkout the merge commit on master ─────────────────────────COMMENT
MEDIUM.github/workflows/release.yml118 # ── Step 4: Set up Node.js ───────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml126 # ── Step 5: Install dependencies ────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml131 # ── Step 6: Build the plugin ─────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml136 # ── Step 7: Write PR body to a file (avoids shell injection) ─────────────COMMENT
MEDIUM.github/workflows/release.yml146 # ── Step 8: Check if release already exists (idempotency guard) ─────────COMMENT
MEDIUM.github/workflows/release.yml160 # ── Step 9: Prepare release-asset manifest ──────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml174 # ── Step 10: Generate build provenance attestation ──────────────────────COMMENT
MEDIUM.github/workflows/release.yml192 # ── Step 11: Create GitHub Release ───────────────────────────────────────COMMENT
Modern AI Meta-Vocabulary10 hits · 24 pts
SeverityFileLineSnippetContext
MEDIUMRELEASES.md782- #1809 Show embedding model @logancyangCODE
MEDIUMRELEASES.md1086- #1405 Encrypt embedding model api keys @logancyangCODE
MEDIUMRELEASES.md1139- #1266 Add support for rendering `<think>` sections and fix RAG with reasoning models @logancyangCODE
MEDIUMRELEASES.md1245- #1107 Add copilot-plus-large embedding model @logancyangCODE
MEDIUMRELEASES.md1333- #1001 Add copilot plus multilingual embedding model @logancyangCODE
MEDIUMRELEASES.md1371- #969 Enable batch embedding and add experimental `copilot-plus-small` embedding model for Plus users @logancyangCODE
MEDIUMlocal_copilot.md34#### Important note about setting context windowCOMMENT
MEDIUMdesigndocs/OBSIDIAN_CLI_INTEGRATION.md203### Phase 0: Design + scaffolding (done)COMMENT
MEDIUMsrc/search/v3/README.md80### 3. Merge and dedup at orchestration layerCOMMENT
MEDIUMsrc/search/v3/README.md90### 4. How they reach final RAG contextCOMMENT
Synthetic Comment Markers3 hits · 20 pts
SeverityFileLineSnippetContext
HIGHsrc/logFileManager.ts52 // Error handling: include stack traces by default as requested, collapsed to one lineCOMMENT
HIGHsrc/search/indexBackend/OramaIndexBackend.ts40 * @returns True because Orama depends on embeddings generated by Copilot.COMMENT
HIGHsrc/styles/tailwind.css3 This file is generated by Copilot plugin.CODE
Over-Commented Block17 hits · 17 pts
SeverityFileLineSnippetContext
LOW.github/workflows/release.yml61 - name: CheckoutCOMMENT
LOW.github/workflows/release.yml161 # For a prerelease, the manifest.json asset uploaded to the GitHubCOMMENT
LOWsrc/plusUtils.ts21export const DEFAULT_COPILOT_PLUS_EMBEDDING_MODEL_KEY =COMMENT
LOWsrc/settings/v2/components/AdvancedSettings.tsx61 const keychainAvailable = KeychainService.getInstance().isAvailable();COMMENT
LOWsrc/settings/v2/components/AdvancedSettings.tsx221 }COMMENT
LOWsrc/LLMProviders/chainRunner/README.md481COMMENT
LOWsrc/commands/customCommandUtils.ts201 // Containing {selected_text} means the prompt was using the custom promptCOMMENT
LOWsrc/services/settingsPersistence.test.ts781 // Migration's first save IS durable; memory must match so the next saveCOMMENT
LOWsrc/services/settingsPersistence.ts321 // regardless of any downstream cleanup that happens to `settings`.COMMENT
LOWsrc/services/settingsPersistence.ts361COMMENT
LOWsrc/services/settingsPersistence.ts381 // `{ ...getSettings(), ...loadedSparse }` andCOMMENT
LOWsrc/services/settingsPersistence.ts501 // import, external setSettings, cross-version sync) that could smuggle aCOMMENT
LOWsrc/services/settingsPersistence.ts741 // Step 1+2: persist secrets to keychain and stripped data.json.COMMENT
LOWsrc/services/settingsPersistence.ts761 // the data.json copy that already exists. A migration-specific rollbackCOMMENT
LOWsrc/services/settingsPersistence.ts781 // persist once more with `target` as the baseline so keychain + diskCOMMENT
LOWsrc/services/settingsPersistence.ts921// junk into the keychain during a compound failure. Considered andCOMMENT
LOW…c/services/webViewerService/webViewerServiceActions.ts381 }COMMENT
Cross-Language Confusion (JS/TS)2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHsrc/context/L2ContextCompactor.test.ts509 print("Hello, World!")CODE
HIGHsrc/search/v3/chunks.test.ts88 "# Code Examples\n\n```javascript\nfunction example() {\n const x = 'This code block should not be split'CODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALsrc/components/CopilotView.tsx127 this.containerEl.doc.documentElement.style.getPropertyValue("--keyboard-height") || "0"CODE
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMsrc/LLMProviders/chainRunner/CopilotPlusChainRunner.ts428 // Process standard markdown images using robust character-scanning parserCOMMENT
MEDIUM…LLMProviders/chainRunner/utils/imageExtraction.test.ts47 // Process standard markdown images using robust character-scanning parserCOMMENT
MEDIUMsrc/LLMProviders/chainRunner/utils/citationUtils.ts167 // More robust detection: look for ANY line starting with [^digits]:COMMENT
Fake / Example Data7 hits · 8 pts
SeverityFileLineSnippetContext
LOWsrc/settings/v2/components/ModelAddDialog.tsx313 const hasRealKey = !result.warnings.some((w) => w.includes("placeholder"));CODE
LOWsrc/settings/v2/components/ModelAddDialog.tsx315 const otherWarnings = result.warnings.filter((w) => !w.includes("placeholder"));CODE
LOWsrc/search/v3/chunks.test.ts86 "# Large Document\n\nThis is a very long document that will need chunking.\n\n## Chapter 1: Introduction\nCODE
LOWsrc/search/v3/chunks.test.ts86 "# Large Document\n\nThis is a very long document that will need chunking.\n\n## Chapter 1: Introduction\nCODE
LOWsrc/search/v3/chunks.test.ts146 frontmatter: { title: "Test Document", author: "John Doe", tags: ["test", "chunk"] },CODE
LOWsrc/search/v3/engines/FullTextEngine.test.ts270 author: "John Doe",CODE
LOWsrc/search/v3/engines/FullTextEngine.test.ts840 const results = engine.search(["John Doe"], 10, [], "John Doe");CODE
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/components/modals/CustomPatternInputModal.tsx15 // TODO: Add validationCOMMENT