Repository Analysis

refactoringhq/tolaria

Desktop app to manage markdown knowledge bases

5.2 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of refactoringhq/tolaria, a TypeScript project with 18,642 GitHub stars. SynthScan v2.0 examined 402,263 lines of code across 1925 source files, recording 1866 pattern matches distributed across 9 syntactic categories. The overall adjusted score of 5.2 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

5.2
Adjusted Score
5.2
Raw Score
100%
Time Factor
2026-07-14
Last Push
18.6K
Stars
TypeScript
Language
402.3K
Lines of Code
1.9K
Files
1.9K
Pattern Hits
2026-07-14
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

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

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 5HIGH 0MEDIUM 43LOW 1818

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 1866 distinct pattern matches across 9 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 Identifiers1793 hits · 1906 pts
SeverityFileLineSnippetContext
LOWindex.html12 function isResizeObserverLoopMessage(message) {CODE
LOWvite.config.ts65function collectWikiLinksFromValue(value: unknown, depth: number): string[] {CODE
LOWvite.config.ts355function isScalarFrontmatterProperty(value: unknown): value is number | boolean {CODE
LOWvite.config.ts557function commandVaultRenameFilename({ args }: VaultCommandContext): VaultCommandResponse {CODE
LOWvite.config.ts649function collectLegacyWikilinkTargets({ oldPath, oldTitle, vaultPath }: LegacyWikilinkTargetInput): string[] {CODE
LOWvite.config.ts655function updateWikilinksForTargets({ excludePath, newTarget, oldTargets, vaultPath }: WikilinkTargetUpdateInput): numberCODE
LOWvite.config.ts711function collectVaultSearchResults({ excludeFrontmatter, vaultPath, query }: SearchRequestInput): VaultSearchResult[] {CODE
LOWvite.config.ts795function validateMarkdownFilenameStem(value: unknown): FilenameStemValidation {CODE
LOWvite.config.ts802function isUnsafeMarkdownFilenameStem(stem: string): boolean {CODE
LOWvite.config.ts811async function handleVaultRenameFilename(url: URL, req: IncomingMessage, res: ServerResponse): Promise<boolean> {CODE
LOWmcp-server/vault-path.js74function existingOrPreferredAppConfigPath(configDirs, fileName) {CODE
LOWmcp-server/test.js729function assertToolsUseReadOnlyAnnotations(toolsByName, names) {CODE
LOWmcp-server/test.js735function assertToolsUseWritableAnnotations(toolsByName, names) {CODE
LOWmcp-server/test.js749function assertWritableContentToolSchema(toolsByName, name) {CODE
LOWmcp-server/test.js765async function assertRejectsOutsideVault(prefix, resolveNotePath) {CODE
LOWmcp-server/test.js789async function assertWriteRejectsOutsideVault(prefix, writeOutsideNote) {CODE
LOWmcp-server/agent-instructions.js18export async function vaultContextWithInstructions(vaultPath) {CODE
LOWmcp-server/tool-service.js223function fallbackCreateNoteContent(args = {}) {CODE
LOWmcp-server/vault.js233async function ensureWritableParentInsideVault(vaultRoot, requestedPath) {CODE
LOWmcp-server/vault.js260function relativeNotePathInsideVault(vaultRoot, requestedPath) {CODE
LOWmcp-server/vault.js335function shouldUseFallbackFrontmatter(parsed, fallback) {CODE
LOWmcp-server/vault.js525async function assertNoteMatchesExpectedMtime(noteRealPath, expectedMtime) {CODE
LOWtests/smoke/tldraw-whiteboard-notes.spec.ts50async function installTauriContextMenuHarness(page: Page): Promise<void> {CODE
LOWtests/smoke/tldraw-whiteboard-notes.spec.ts93async function expectNoEditorNodeSelection(page: Page): Promise<void> {CODE
LOWtests/smoke/note-width-modes.spec.ts27async function expectWideModeHasUnboundedWidth(page: Page) {CODE
LOWtests/smoke/fenced-code-copy.spec.ts62async function expectRichCodeBlockButtonCopy(page: Page, blockIndex: number, expectedText: string) {CODE
LOWtests/smoke/missing-string-metadata-open-note.spec.ts11function isMissingStringMetadataCrash(message: string): boolean {CODE
LOWtests/smoke/missing-string-metadata-open-note.spec.ts19function collectMissingMetadataCrashes(page: Page): string[] {CODE
LOWtests/smoke/missing-string-metadata-open-note.spec.ts32function removeAlphaProjectStringMetadata(entries: Array<Record<string, unknown>>) {CODE
LOWtests/smoke/missing-string-metadata-open-note.spec.ts50function appendMalformedReloadEntry(entries: Array<Record<string, unknown>>) {CODE
LOWtests/smoke/missing-string-metadata-open-note.spec.ts73async function reloadVaultFromCommandPalette(page: Page): Promise<void> {CODE
LOWtests/smoke/missing-string-metadata-open-note.spec.ts83async function expectAlphaProjectHeading(page: Page): Promise<void> {CODE
LOWtests/smoke/missing-string-metadata-open-note.spec.ts87async function switchFromNoteBBackToAlpha(page: Page, noteList: Locator): Promise<void> {CODE
LOWtests/smoke/create-empty-vault-flows.spec.ts42async function expectFreshVaultSeedEntries(page: Page) {CODE
LOWtests/smoke/create-empty-vault-flows.spec.ts85 function buildFreshVaultSeedEntries(vaultPath: string): MockEntry[] {CODE
LOWtests/smoke/plain-filename-autolink.spec.ts60async function appendPlainFilenameParagraph(page: Page, value: string) {CODE
LOWtests/smoke/blocknote-slash-menu-mouse.spec.ts32async function openFilteredSlashMenuOnNewLine(page: Page) {CODE
LOWtests/smoke/blocknote-slash-menu-mouse.spec.ts41async function openEmojiShortcodeMenuOnNewLine(page: Page, query: string) {CODE
LOWtests/smoke/table-hover-crash.spec.ts91function writeTableWikilinkAliasNotes(vaultDir: string): void {CODE
LOWtests/smoke/sidebar-type-picker-sync.spec.ts13function seedJournalInstanceWithoutType(vaultPath: string): void {CODE
LOWtests/smoke/sidebar-type-picker-sync.spec.ts23async function openSidebarVisibilityPopover(page: Page): Promise<void> {CODE
LOWtests/smoke/sidebar-type-picker-sync.spec.ts31async function closeSidebarVisibilityPopover(page: Page): Promise<void> {CODE
LOWtests/smoke/create-open-relationship-note.spec.ts22async function openFirstRelationshipInput(page: import('@playwright/test').Page) {CODE
LOWtests/smoke/create-note-backing-file.spec.ts87async function installCreateNoteBackingFileProbe(page: Page): Promise<void> {CODE
LOWtests/smoke/list-marker-paste-regression.spec.ts45async function expectPastedFreshListItem(page: Page, options: {CODE
LOWtests/smoke/multi-selection-shortcuts.spec.ts36function frontmatterDelimiterLineCount(content: string): number {CODE
LOWtests/smoke/wikilink-cmd-click-history.spec.ts34function trackStaleLinkClickErrors(page: Page): string[] {CODE
LOWtests/smoke/wikilink-cmd-click-history.spec.ts109async function dispatchModifiedLinkActivation(link: Locator): Promise<void> {CODE
LOWtests/smoke/vault-loading-skeleton.spec.ts101async function expectResponsiveShellWhileVaultLoads(page: Page): Promise<void> {CODE
LOWtests/smoke/new-note-title-caret-click.spec.ts47async function editorHasContentEditableFocus(page: Page): Promise<boolean> {CODE
LOWtests/smoke/raw-editor-type-propagation.spec.ts3async function openFirstNoteWithProperties(page: Page) {CODE
LOWtests/smoke/gitignored-visibility.spec.ts24async function installGitignoredVisibilityHarness(page: Page): Promise<void> {CODE
LOWtests/smoke/gitignored-visibility.spec.ts73async function reloadVaultFromCommandPalette(page: Page): Promise<void> {CODE
LOWtests/smoke/add-remote-from-no-remote.spec.ts76async function openAddRemoteFromStatusChip(page: Page): Promise<void> {CODE
LOWtests/smoke/add-remote-from-no-remote.spec.ts88async function connectRemoteFromCommandPalette(page: Page, remoteUrl: string): Promise<void> {CODE
LOWtests/smoke/add-remote-from-no-remote.spec.ts110async function assertCommitPushDialogStillOpens(page: Page): Promise<void> {CODE
LOWtests/smoke/testBridge.ts8async function waitForDispatchBrowserMenuCommand(page: Page): Promise<void> {CODE
LOWtests/smoke/testBridge.ts16async function attemptTriggerMenuCommandInPage(commandId: string): Promise<boolean> {CODE
LOWtests/smoke/testBridge.ts34function dispatchMenuCommandFallbackInPage(commandId: string): void {CODE
LOWtests/smoke/vault-switcher-bottom-bar.spec.ts90function buildVaultSwitcherInitData(defaultVaultExists: boolean): VaultSwitcherInitData {CODE
1733 more matches not shown…
Decorative Section Separators39 hits · 117 pts
SeverityFileLineSnippetContext
MEDIUMscripts/generate_demo_vault.py33# ── Quarter / month mappings ─────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py71# ── Helpers ──────────────────────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py113# ── AREAS ────────────────────────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py126# ── RESPONSIBILITIES ─────────────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py172# ── MEASURES ─────────────────────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py193# ── TOPICS ───────────────────────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py223# ── PERSONS ──────────────────────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py392# ── PROJECTS ─────────────────────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py437# ── EXPERIMENTS ───────────────────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py447# ── GOALS ─────────────────────────────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py461# ── EVERGREEN TOPICS AND BODIES ───────────────────────────────────COMMENT
MEDIUMscripts/generate_demo_vault.py517# ── READING NOTES ─────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml18 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml21 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml119 # -------------------------------------------------------------COMMENT
MEDIUM.github/workflows/release.yml121 # -------------------------------------------------------------COMMENT
MEDIUM.github/workflows/release.yml132 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml135 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml336 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release.yml338 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release-stable.yml14 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release-stable.yml16 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release-stable.yml59 # -------------------------------------------------------------COMMENT
MEDIUM.github/workflows/release-stable.yml61 # -------------------------------------------------------------COMMENT
MEDIUM.github/workflows/release-stable.yml72 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release-stable.yml74 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release-stable.yml285 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/release-stable.yml287 # ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/ci.yml46 # ── 0. Build check (catches type errors and bundler failures) ─────────COMMENT
MEDIUM.github/workflows/ci.yml113 # ── 2. Documentation check (warning only — does not fail build) ───────COMMENT
MEDIUM.github/workflows/ci.yml131 # ── 3. Lint & format ──────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/commands/ai.rs116// ── Claude CLI commands (desktop) ───────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/commands/ai.rs258// ── Claude CLI (mobile stubs) ───────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/commands/system.rs106// ── MCP commands (desktop) ──────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/commands/system.rs176// ── MCP commands (mobile stubs) ─────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/commands/system.rs217// ── Menu commands ───────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/commands/system.rs383// ── Settings & config commands ──────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/commands/git.rs15// ── Git commands (desktop) ──────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/commands/git.rs318// ── Git commands (mobile stubs) ─────────────────────────────────────────────COMMENT
Hallucination Indicators5 hits · 50 pts
SeverityFileLineSnippetContext
CRITICALsrc-tauri/gen/apple/assets/mcp-server/index.js17094 const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e) => {CODE
CRITICALsrc/components/arrowLigaturesExtension.test.ts94 fixture.view.state.doc.textBetween.mockReturnValue('-')CODE
CRITICALsrc/components/arrowLigaturesExtension.test.ts108 fixture.view.state.doc.textBetween.mockReturnValueOnce('\\<')CODE
CRITICALsrc/components/arrowLigaturesExtension.test.ts111 fixture.view.state.doc.textBetween.mockReturnValueOnce('<-')CODE
CRITICALsrc/components/arrowLigaturesExtension.test.ts133 fixture.view.state.doc.textBetween.mockReturnValue('-')CODE
Fake / Example Data11 hits · 11 pts
SeverityFileLineSnippetContext
LOWsrc-tauri/src/git/mod.rs610 .args(["config", "user.email", "test@test.com"])CODE
LOWsrc-tauri/src/git/dates.rs175 .args(["config", "user.email", "test@test.com"])CODE
LOWsrc-tauri/src/vault/cache.rs782 .args(["config", "user.email", "test@test.com"])CODE
LOWsrc-tauri/src/vault/rename.rs718 run_git(vault, &["config", "user.email", "test@test.com"]);CODE
LOWsrc-tauri/src/vault/frontmatter_regression_tests.rs35 Some("Acme Corp")CODE
LOWsrc/mock-tauri/mock-entries.ts268 properties: { Company: 'Acme Corp', Role: 'Engineering Lead' },CODE
LOWsrc/components/FilterBuilder.test.tsx40 expect(screen.getByTestId('filter-value-input')).toHaveAttribute('placeholder', 'value')CODE
LOWsrc/components/FeedbackDialog.test.tsx197 opener.setAttribute('placeholder', 'Type a command...')CODE
LOWsrc/components/InspectorPanels.test.tsx95 entry: { path: '/vault/people/john-doe.md', filename: 'john-doe.md', title: 'John Doe', isA: 'Person' as const },CODE
LOWsrc/hooks/useNoteCreation.extra.test.ts272 const { entry } = resolveNewNote({ title: 'John Doe', type: 'Person', vaultPath: '/my/vault' })CODE
LOWsrc/lib/feedbackDialogOpener.ts16 && element.getAttribute('placeholder') === 'Type a command...'CODE
Modern AI Meta-Vocabulary4 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMdocs/GETTING-STARTED.md153│ │ ├── Editor.tsx # Third panel: editor orchestrationCODE
MEDIUMdocs/GETTING-STARTED.md160│ │ ├── AiWorkspace.tsx # Multi-chat AI workspace orchestration (docked or native window)CODE
MEDIUMdocs/GETTING-STARTED.md267│ │ │ └── getting_started.rs # Getting Started vault clone orchestrationCODE
MEDIUMscripts/generate_demo_vault.py522 ("note-building-a-second-brain","Building a Second Brain","Tiago Forte","topic-productivity-systems","https://examplCODE
Over-Commented Block9 hits · 8 pts
SeverityFileLineSnippetContext
LOWsrc-tauri/gen/apple/assets/mcp-server/index.js16281 });COMMENT
LOWsrc-tauri/gen/apple/assets/mcp-server/index.js16321 }),COMMENT
LOWsrc-tauri/gen/apple/assets/mcp-server/index.js16341 // : never;COMMENT
LOWsrc-tauri/gen/apple/assets/mcp-server/index.js16361 setKey(key, schema) {COMMENT
LOWsrc-tauri/src/git/dates.rs41/// file-a.mdCOMMENT
LOWsrc-tauri/src/vault/mod_tests.rs41COMMENT
LOWsrc-tauri/src/vault/mod.rs501#[cfg(test)]COMMENT
LOWsrc-tauri/src/vault/entry.rs41 /// Accent color key for Type entries: "red", "purple", "blue", "green", "yellow", "orange".COMMENT
LOWsrc-tauri/src/vault/entry.rs61 pub display: Option<String>,COMMENT
Structural Annotation Overuse3 hits · 4 pts
SeverityFileLineSnippetContext
LOW.claude/commands/create-adr.md90### Step 1: Mark the old ADR as supersededCOMMENT
LOW.claude/commands/create-adr.md107### Step 2: Create the new ADRCOMMENT
LOW.claude/commands/create-adr.md119### Step 3: Update the README indexCOMMENT
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsrc-tauri/gen/apple/assets/mcp-server/index.js2782 function getData($data, { dataLevel, dataNames, dataPathArr }) {CODE
Deep Nesting1 hit · 0 pts
SeverityFileLineSnippetContext
LOWscripts/generate_demo_vault.py85CODE