AI Slop Code Risk Monitor

cjpais/Handy

SlopCodeMonitor badge for cjpais/Handy Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A free, open source, and extensible speech-to-text application that works completely offline.

3.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for cjpais/Handy, a Rust project with 35,719 GitHub stars. SynthScan examined 96,198 lines of code across 378 source files, recording 279 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 3.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.

3.2
Adjusted Signal
3.2
Raw Pattern Score
100%
Time Factor
2026-10-27
Last Push
35.7K
Stars
Rust
Language
96.2K
Lines of Code
378
Files
279
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 4.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 9.0/100 · LOW

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

Agent Over-Engineering Ratio 1.7/100 · LOW

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

PR Review Velocity Impact 14.3/100 · LOW

Which changes need focused human review? 279 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 0HIGH 0MEDIUM 9LOW 270

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 279 distinct pattern matches across 9 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.

Fake / Example Data182 hits · 182 pts
SeverityFileLineSnippetContext
LOWsrc/i18n/locales/pl/translation.json172 "placeholder": "Nowa notatka",CODE
LOWsrc/i18n/locales/pl/translation.json442 "placeholder": "Wybierz mikrofon...",CODE
LOWsrc/i18n/locales/pl/translation.json458 "placeholder": "Wybierz urządzenie wyjściowe...",CODE
LOWsrc/i18n/locales/pl/translation.json582 "placeholder": "Dodaj słowo",CODE
LOWsrc/i18n/locales/pl/translation.json648 "placeholder": "https://api.openai.com/v1",CODE
LOWsrc/i18n/locales/pl/translation.json654 "placeholder": "sk-..."CODE
LOWsrc/i18n/locales/pl/translation.json794 "placeholder": "Wybierz okres retencji..."CODE
LOWsrc/i18n/locales/vi/translation.json172 "placeholder": "Ghi chú mới",CODE
LOWsrc/i18n/locales/vi/translation.json442 "placeholder": "Chọn micrô...",CODE
LOWsrc/i18n/locales/vi/translation.json458 "placeholder": "Chọn thiết bị đầu ra...",CODE
LOWsrc/i18n/locales/vi/translation.json582 "placeholder": "Thêm một từ",CODE
LOWsrc/i18n/locales/vi/translation.json648 "placeholder": "https://api.openai.com/v1",CODE
LOWsrc/i18n/locales/vi/translation.json654 "placeholder": "sk-..."CODE
LOWsrc/i18n/locales/vi/translation.json794 "placeholder": "Chọn thời gian lưu giữ..."CODE
LOWsrc/i18n/locales/sv/translation.json172 "placeholder": "Ny anteckning",CODE
LOWsrc/i18n/locales/sv/translation.json442 "placeholder": "Välj mikrofon...",CODE
LOWsrc/i18n/locales/sv/translation.json458 "placeholder": "Välj utmatningsenhet...",CODE
LOWsrc/i18n/locales/sv/translation.json582 "placeholder": "Lägg till ett ord",CODE
LOWsrc/i18n/locales/sv/translation.json648 "placeholder": "https://api.openai.com/v1",CODE
LOWsrc/i18n/locales/sv/translation.json654 "placeholder": "sk-..."CODE
LOWsrc/i18n/locales/sv/translation.json794 "placeholder": "Välj lagringsperiod..."CODE
LOWsrc/i18n/locales/he/translation.json172 "placeholder": "פתק חדש",CODE
LOWsrc/i18n/locales/he/translation.json442 "placeholder": "בחר מיקרופון...",CODE
LOWsrc/i18n/locales/he/translation.json458 "placeholder": "בחר התקן פלט...",CODE
LOWsrc/i18n/locales/he/translation.json582 "placeholder": "הוסף מילה",CODE
LOWsrc/i18n/locales/he/translation.json648 "placeholder": "https://api.openai.com/v1",CODE
LOWsrc/i18n/locales/he/translation.json654 "placeholder": "sk-..."CODE
LOWsrc/i18n/locales/he/translation.json794 "placeholder": "בחר משך שמירה..."CODE
LOWsrc/i18n/locales/da/translation.json172 "placeholder": "Ny note",CODE
LOWsrc/i18n/locales/da/translation.json442 "placeholder": "Vælg mikrofon...",CODE
LOWsrc/i18n/locales/da/translation.json458 "placeholder": "Vælg outputenhed...",CODE
LOWsrc/i18n/locales/da/translation.json582 "placeholder": "Tilføj et ord",CODE
LOWsrc/i18n/locales/da/translation.json648 "placeholder": "https://api.openai.com/v1",CODE
LOWsrc/i18n/locales/da/translation.json654 "placeholder": "sk-..."CODE
LOWsrc/i18n/locales/da/translation.json794 "placeholder": "Vælg opbevaringsperiode..."CODE
LOWsrc/i18n/locales/ja/translation.json172 "placeholder": "新規メモ",CODE
LOWsrc/i18n/locales/ja/translation.json442 "placeholder": "マイクを選択…",CODE
LOWsrc/i18n/locales/ja/translation.json458 "placeholder": "出力デバイスを選択…",CODE
LOWsrc/i18n/locales/ja/translation.json582 "placeholder": "単語を追加",CODE
LOWsrc/i18n/locales/ja/translation.json648 "placeholder": "https://api.openai.com/v1",CODE
LOWsrc/i18n/locales/ja/translation.json654 "placeholder": "sk-…"CODE
LOWsrc/i18n/locales/ja/translation.json794 "placeholder": "保持期間を選択…"CODE
LOWsrc/i18n/locales/it/translation.json172 "placeholder": "Nuova nota",CODE
LOWsrc/i18n/locales/it/translation.json442 "placeholder": "Scegli microfono...",CODE
LOWsrc/i18n/locales/it/translation.json458 "placeholder": "Scegli dispositivo di output...",CODE
LOWsrc/i18n/locales/it/translation.json582 "placeholder": "Aggiungi una parola",CODE
LOWsrc/i18n/locales/it/translation.json648 "placeholder": "https://api.openai.com/v1",CODE
LOWsrc/i18n/locales/it/translation.json654 "placeholder": "sk-..."CODE
LOWsrc/i18n/locales/it/translation.json794 "placeholder": "Seleziona periodo di conservazione..."CODE
LOWsrc/i18n/locales/ca/translation.json172 "placeholder": "Nota nova",CODE
LOWsrc/i18n/locales/ca/translation.json442 "placeholder": "Seleccionaun micròfon...",CODE
LOWsrc/i18n/locales/ca/translation.json458 "placeholder": "Selecciona un dispositiu de sortida...",CODE
LOWsrc/i18n/locales/ca/translation.json582 "placeholder": "Afegiu una paraula",CODE
LOWsrc/i18n/locales/ca/translation.json648 "placeholder": "https://api.openai.com/v1",CODE
LOWsrc/i18n/locales/ca/translation.json654 "placeholder": "sk-..."CODE
LOWsrc/i18n/locales/ca/translation.json794 "placeholder": "Selecciona el període de conservació..."CODE
LOWsrc/i18n/locales/cs/translation.json172 "placeholder": "Nová poznámka",CODE
LOWsrc/i18n/locales/cs/translation.json442 "placeholder": "Vyberte mikrofon...",CODE
LOWsrc/i18n/locales/cs/translation.json458 "placeholder": "Vyberte výstupní zařízení...",CODE
LOWsrc/i18n/locales/cs/translation.json582 "placeholder": "Přidat slovo",CODE
122 more matches not shown…
Over-Commented Block72 hits · 72 pts
SeverityFileLineSnippetContext
LOWscripts/check-nix-deps.ts1// scripts/check-nix-deps.ts — Keep .nix/bun.nix in sync with bun.lockCOMMENT
LOWscripts/ci/stage-transcribe-libs.sh1#!/usr/bin/env bashCOMMENT
LOW.github/workflows/build.yml281 echo "RC=llvm-rc" >> $env:GITHUB_ENVCOMMENT
LOW.github/workflows/build.yml361 # ggml-vulkan (built by transcribe-cpp-sys when the Vulkan backend is on)COMMENT
LOWsrc-tauri/Cargo.toml121 "Win32_Graphics_Gdi",COMMENT
LOWsrc-tauri/Cargo.toml181# The rev is a cjpais/tao branch, not upstream: dev past 0.35.3 also carriesCOMMENT
LOWsrc-tauri/build.rs1fn main() {COMMENT
LOWsrc-tauri/build.rs141/// "transcribe"`) emits its install dirs and the wrapper (`links =COMMENT
LOWsrc-tauri/build.rs201 libs.insert(name.to_string(), src);COMMENT
LOWsrc-tauri/build.rs401 });COMMENT
LOWsrc-tauri/build.rs541 println!("cargo:rustc-link-arg=-Wl,-rpath,/usr/lib/swift");COMMENT
LOWsrc-tauri/src/autostart.rs1//! Launch-at-login (autostart) handling.COMMENT
LOWsrc-tauri/src/transcription_coordinator.rs61 /// Holds at least this long stop recording; shorter ones lock it on.COMMENT
LOWsrc-tauri/src/transcription_coordinator.rs101COMMENT
LOWsrc-tauri/src/transcription_coordinator.rs901 BusyAction::Remember,COMMENT
LOWsrc-tauri/src/transcription_coordinator.rs921 // The unit tests above assert the classifiers in isolation. The harnessCOMMENT
LOWsrc-tauri/src/lib.rs121COMMENT
LOWsrc-tauri/src/lib.rs221 // Note: Shortcuts are NOT initialized here.COMMENT
LOWsrc-tauri/src/memory.rs1//! glibc allocator tuning (Linux only).COMMENT
LOWsrc-tauri/src/memory.rs21COMMENT
LOWsrc-tauri/src/memory.rs41/// Return freed-but-cached malloc arena memory to the OS.COMMENT
LOWsrc-tauri/src/tray.rs1//! System tray icon and menu.COMMENT
LOWsrc-tauri/src/tray.rs81 /// Latest computed snapshot, waiting to be (or just) applied.COMMENT
LOWsrc-tauri/src/overlay.rs681/// `hide()` below only unmaps the window if no show happened after it wasCOMMENT
LOWsrc-tauri/src/overlay.rs721static LAYER_SHELL_ACTIVE: AtomicBool = AtomicBool::new(false);COMMENT
LOWsrc-tauri/src/clipboard.rs441 .arg("type")COMMENT
LOWsrc-tauri/src/input.rs161/// Get the current mouse cursor position using the managed Enigo instance.COMMENT
LOWsrc-tauri/src/secure_input.rs1//! macOS Secure Event Input detection, monitoring, and fallback.COMMENT
LOWsrc-tauri/src/settings.rs121 pub api_format: PostProcessApiFormat,COMMENT
LOWsrc-tauri/src/settings.rs181 /// Hold to record and release to stop, or tap to keep recording until theCOMMENT
LOWsrc-tauri/src/settings.rs381 fn deref_mut(&mut self) -> &mut Self::Target {COMMENT
LOWsrc-tauri/src/settings.rs401 /// default bindings for any missing keys before the settings are used.COMMENT
LOWsrc-tauri/src/settings.rs421 pub autostart_enabled: bool,COMMENT
LOWsrc-tauri/src/settings.rs441 /// None means "average all channels" (original behavior).COMMENT
LOWsrc-tauri/src/settings.rs501 pub theme: Theme,COMMENT
LOWsrc-tauri/src/settings.rs521 #[serde(default)]COMMENT
LOWsrc-tauri/src/settings.rs541 #[serde(default)]COMMENT
LOWsrc-tauri/src/settings.rs1461 assert!(!settings.audio_feedback);COMMENT
LOWsrc-tauri/src/signal_handle.rs21 } else {COMMENT
LOWsrc-tauri/src/cli.rs21 pub toggle_post_process: bool,COMMENT
LOWsrc-tauri/src/cli.rs41COMMENT
LOWsrc-tauri/src/tray_i18n.rs1//! Tray menu internationalizationCOMMENT
LOWsrc-tauri/src/paste_tx/macos.rs1//! macOS reliable paste.COMMENT
LOWsrc-tauri/src/paste_tx/mod.rs1//! Receipt-sequenced clipboard paste ("reliable paste", debug-gated).COMMENT
LOWsrc-tauri/src/paste_tx/mod.rs21//! read before that is an eager third party (clipboard manager, antivirus)COMMENT
LOWsrc-tauri/src/paste_tx/mod.rs61/// When the chord could not be injected at all, no legitimate receipt canCOMMENT
LOWsrc-tauri/src/paste_tx/windows.rs1//! Windows reliable paste.COMMENT
LOWsrc-tauri/src/shortcut/handy_keys.rs1//! Handy-keys based keyboard shortcut implementationCOMMENT
LOWsrc-tauri/src/audio_toolkit/lang_id.rs1//! Confidence-gated text-based language identification.COMMENT
LOWsrc-tauri/src/audio_toolkit/text.rs61COMMENT
LOWsrc-tauri/src/audio_toolkit/text.rs141/// - Soundex phonetic matching for pronunciation similarityCOMMENT
LOWsrc-tauri/src/audio_toolkit/text.rs401 let capitalized = filler.as_str().starts_with(char::is_uppercase);COMMENT
LOWsrc-tauri/src/engine_supervisor/supervisor.rs1//! Parent side: [`EngineSupervisor`], the single owner of the transcribe.cppCOMMENT
LOWsrc-tauri/src/engine_supervisor/supervisor.rs41/// Floor for stream calls that do no decoding (begin, reset).COMMENT
LOWsrc-tauri/src/engine_supervisor/supervisor.rs221 /// The loaded model (logically: it stays loaded while its worker isCOMMENT
LOWsrc-tauri/src/engine_supervisor/mod.rs1//! Process isolation for transcribe.cpp.COMMENT
LOWsrc-tauri/src/catalog/mod.rs1//! The bundled, offline model catalog.COMMENT
LOWsrc-tauri/src/catalog/mod.rs61 transcribe_cpp: String,COMMENT
LOWsrc-tauri/src/managers/model_capabilities.rs1//! Model capability probing — the seam between Handy's model UI and "what canCOMMENT
LOWsrc-tauri/src/managers/model_capabilities.rs81 /// Not a GGUF we can use (bad magic, unsupported version, malformed).COMMENT
12 more matches not shown…
Decorative Section Separators8 hits · 30 pts
SeverityFileLineSnippetContext
MEDIUM⚡src-tauri/src/shortcut/handy_keys.rs11//! ┌─────────────────┐ commands ┌──────────────────────┐COMMENT
MEDIUM⚡src-tauri/src/shortcut/handy_keys.rs12//! │ Main Thread │ ───────────────▶ │ Manager Thread │COMMENT
MEDIUM⚡src-tauri/src/shortcut/handy_keys.rs16//! └─────────────────┘ │ - dispatches actions │COMMENT
MEDIUM⚡src-tauri/src/shortcut/handy_keys.rs17//! └──────────────────────┘COMMENT
MEDIUMsrc-tauri/src/catalog/mod.rs171// ───────────────────────── scores ─────────────────────────COMMENT
MEDIUMsrc-tauri/src/catalog/mod.rs210// ───────────────────────── descriptions ─────────────────────────COMMENT
MEDIUMsrc-tauri/src/managers/model/download/tests.rs12// ── SHA256 verification tests ─────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/managers/model/download/tests.rs81// ── Resumable HTTP downloader tests ───────────────────────────────────────COMMENT
Structural Annotation Overuse11 hits · 16 pts
SeverityFileLineSnippetContext
LOWCONTRIBUTING_TRANSLATIONS.md30### Step 1: Create the Language FolderCOMMENT
LOWCONTRIBUTING_TRANSLATIONS.md47### Step 2: Copy the English FileCOMMENT
LOWCONTRIBUTING_TRANSLATIONS.md53### Step 3: Translate the ValuesCOMMENT
LOWCONTRIBUTING_TRANSLATIONS.md73### Step 4: Register Your LanguageCOMMENT
LOWCONTRIBUTING_TRANSLATIONS.md90### Step 5: Test Your TranslationCOMMENT
LOWCONTRIBUTING_TRANSLATIONS.md97### Step 6: Submit a Pull RequestCOMMENT
LOWREADME.md289#### Step 1: Find Your App Data DirectoryCOMMENT
LOWREADME.md303#### Step 2: Create Models DirectoryCOMMENT
LOWREADME.md315#### Step 3: Download Model FilesCOMMENT
LOWREADME.md330#### Step 4: Install ModelsCOMMENT
LOWREADME.md353#### Step 5: Verify InstallationCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc-tauri/src/secure_input.rs114/// none are affected), the experience is seamless and nothing is shown.COMMENT
Hyper-Verbose Identifiers2 hits · 2 pts
SeverityFileLineSnippetContext
LOWsrc/components/update-checker/portableInstaller.ts23export function resolvePortableInstallerUrl(CODE
LOWsrc/lib/utils/modelTranslation.ts22export function getTranslatedModelDescription(CODE
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/check-nix-deps.ts83 "[check-nix-deps] Don't forget to commit: .nix/bun.nix .nix/bun-lock-hash",CODE
Excessive Try-Catch Wrapping1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/mirror_models.py145 except Exception as e:CODE
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/mirror_models.py193CODE