AI Slop Code Risk Monitor

helix-editor/helix

SlopCodeMonitor badge for helix-editor/helix Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A post-modern modal text editor.

1.6 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for helix-editor/helix, a Rust project with 46,748 GitHub stars. SynthScan examined 518,991 lines of code across 667 source files, recording 578 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 1.6 (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.

1.6
Adjusted Signal
1.6
Raw Pattern Score
100%
Time Factor
2026-09-29
Last Push
46.7K
Stars
Rust
Language
519.0K
Lines of Code
667
Files
578
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 3.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

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

Agent Over-Engineering Ratio 3.9/100 · LOW

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

PR Review Velocity Impact 7.8/100 · LOW

Which changes need focused human review? 578 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 1HIGH 0MEDIUM 126LOW 451

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 578 distinct pattern matches across 10 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.

Decorative Section Separators124 hits · 406 pts
SeverityFileLineSnippetContext
MEDIUMruntime/themes/modus_vivendi.toml7# -------------------COMMENT
MEDIUMruntime/themes/modus_vivendi.toml60# --------------COMMENT
MEDIUMruntime/themes/flynt_light.toml4# ── Syntax ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_light.toml45# ── Markup ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_light.toml70# ── Diff ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_light.toml77# ── Diagnostics ───────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_light.toml92# ── UI ────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_light.toml139# ── Palette ───────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡runtime/themes/ashen.toml2# -------------------COMMENT
MEDIUM⚡runtime/themes/ashen.toml6# -------------------COMMENT
MEDIUM⚡runtime/themes/ashen.toml13# -------------------COMMENT
MEDIUMruntime/themes/ashen.toml84# --------------COMMENT
MEDIUMruntime/themes/flynt_dark.toml4# ── Syntax ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_dark.toml45# ── Markup ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_dark.toml70# ── Diff ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_dark.toml77# ── Diagnostics ───────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_dark.toml92# ── UI ────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/flynt_dark.toml139# ── Palette ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/atlas-ragnarok.toml10# ─── Syntax ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/atlas-ragnarok.toml90# ─── UI ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/atlas-ragnarok.toml145# ─── Palette ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMruntime/themes/neonotte84.toml10# ---------------------------COMMENT
MEDIUMruntime/themes/neonotte84.toml14# -----------------COMMENT
MEDIUM⚡runtime/themes/ataraxia.toml4# -------------------COMMENT
MEDIUM⚡runtime/themes/ataraxia.toml6# -------------------COMMENT
MEDIUM⚡runtime/themes/ataraxia.toml8# -------------------COMMENT
MEDIUMruntime/themes/catppuccin_mocha.toml3# -------------------COMMENT
MEDIUMruntime/themes/catppuccin_mocha.toml70# --------------COMMENT
MEDIUMruntime/themes/sidra.toml9# ===========================COMMENT
MEDIUMruntime/themes/sidra.toml11# ===========================COMMENT
MEDIUMruntime/themes/sidra.toml93# ===========================COMMENT
MEDIUMruntime/themes/sidra.toml95# ===========================COMMENT
MEDIUMruntime/themes/sidra.toml161# ===========================COMMENT
MEDIUMruntime/themes/sidra.toml163# ===========================COMMENT
MEDIUMruntime/themes/modus_operandi.toml7# -------------------COMMENT
MEDIUMruntime/themes/modus_operandi.toml60# --------------COMMENT
MEDIUMruntime/themes/neonotte.toml7# -------------------COMMENT
MEDIUMruntime/themes/neonotte.toml58# --------------COMMENT
MEDIUMruntime/themes/sunset.toml6# ----------------------------------------------------------------COMMENT
MEDIUMruntime/themes/sunset.toml56# ----------------------------------------------------------------COMMENT
MEDIUMruntime/themes/sunset.toml84# ----------------------------------------------------------------COMMENT
MEDIUM⚡book/src/guides/indent.md38 matches!(some_hero, Hero { // ←─────────────────╮CODE
MEDIUM⚡book/src/guides/indent.md41 sure: true, // │ ╰───── cursor ├─ traversalCODE
MEDIUM⚡book/src/guides/indent.md42 soon: true, // ╰──────── new line inserted │ start nodeCODE
MEDIUM⚡book/src/guides/indent.md45// ╰───────────────────────────────────────────────╯COMMENT
MEDIUMbook/src/guides/indent.md62} // ←──────────────────────────────────────────────╯CODE
MEDIUM⚡book/src/guides/indent.md119 // ├───────────────────────╮ indent levelCOMMENT
MEDIUM⚡book/src/guides/indent.md120 // @indent ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄COMMENT
MEDIUM⚡book/src/guides/indent.md124 // ├───────────────────────┼─────┼┄┄┄┄┄┄┄┄┄┄┄┄┄┄COMMENT
MEDIUM⚡book/src/guides/indent.md128 })}; // ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄CODE
MEDIUM⚡book/src/guides/indent.md130} //╰┼┴──────────────────────────────────────────────┴┄┄┄┄┄┄┄┄┄┄┄┄┄┄CODE
MEDIUM⚡book/src/guides/indent.md199 # │ ╰──────╯ │ │COMMENT
MEDIUM⚡book/src/guides/indent.md200 # ╰─────────────────────╯ │COMMENT
MEDIUM⚡book/src/guides/indent.md209 ) # ←─────────────────────────────────────────╯CODE
MEDIUM⚡book/src/guides/indent.md237 self.is_soon = soon # │ │ ←───────────────╯CODE
MEDIUM⚡book/src/guides/indent.md239 # │ ╰──────╯ │COMMENT
MEDIUM⚡book/src/guides/indent.md240 # ╰─────────────────────╯COMMENT
MEDIUMbook/src/guides/indent.md271 #←────────── where cursor should go on new lineCOMMENT
MEDIUM⚡book/src/guides/indent.md335# │ ╰─────────────── start of mapCOMMENT
MEDIUM⚡book/src/guides/indent.md336# ╰───────────────── start of list elementCOMMENT
64 more matches not shown…
Over-Commented Block441 hits · 403 pts
SeverityFileLineSnippetContext
LOWhelix-vcs/src/diff/line_cache.rs1//! This modules encapsulates a tiny bit of unsafe code thatCOMMENT
LOWhelix-vcs/src/git/test.rs101COMMENT
LOWhelix-loader/src/workspace_trust.rs1//! Workspace trust.COMMENT
LOWhelix-loader/src/workspace_trust.rs21//! hash = sha256:abc123...COMMENT
LOWhelix-loader/src/lib.rs161}COMMENT
LOWhelix-loader/src/lib.rs181/// name = "toml"COMMENT
LOWhelix-view/benches/texts/source_code.txt1// This sample is from Neovim's source code.COMMENT
LOWhelix-view/benches/texts/source_code.txt21#include <stdbool.h>COMMENT
LOWhelix-view/benches/texts/source_code.txt41#include "nvim/ex_cmds.h"COMMENT
LOWhelix-view/benches/texts/source_code.txt61#include "nvim/garray.h"COMMENT
LOWhelix-view/src/graphics.rs41 // we could split this in 2 `if`s,COMMENT
LOWhelix-view/src/graphics.rs221 }COMMENT
LOWhelix-view/src/graphics.rs241 Rect {COMMENT
LOWhelix-view/src/graphics.rs321 }COMMENT
LOWhelix-view/src/graphics.rs521/// Style let you control the main characteristics of the displayed elements.COMMENT
LOWhelix-view/src/graphics.rs541/// Style::default().fg(Color::Yellow).remove_modifier(Modifier::ITALIC),COMMENT
LOWhelix-view/src/graphics.rs561/// reset all properties until that point use [`Style::reset`].COMMENT
LOWhelix-view/src/graphics.rs641 /// Changes the background color.COMMENT
LOWhelix-view/src/graphics.rs661 /// # use helix_view::graphics::{Color, Style};COMMENT
LOWhelix-view/src/graphics.rs681 pub const fn underline_style(mut self, style: UnderlineStyle) -> Style {COMMENT
LOWhelix-view/src/graphics.rs701 self.sub_modifier.remove(modifier);COMMENT
LOWhelix-view/src/graphics.rs721 self.add_modifier.remove(modifier);COMMENT
LOWhelix-view/src/tree.rs481 // A child is not found. This could be because of either two scenariosCOMMENT
LOWhelix-view/src/keyboard.rs381 /// Page down key.COMMENT
LOWhelix-view/src/editor.rs181pub struct FilePickerConfig {COMMENT
LOWhelix-view/src/editor.rs301 /// Mouse support. Defaults to true.COMMENT
LOWhelix-view/src/editor.rs321 /// Automatic auto-completion, automatically pop up without user trigger. Defaults to true.COMMENT
LOWhelix-view/src/editor.rs401 /// confuse some file watching/hot reloading programs. Defaults to `true`.COMMENT
LOWhelix-view/src/editor.rs621#[serde(default, rename_all = "kebab-case", deny_unknown_fields)]COMMENT
LOWhelix-view/src/editor.rs1321 pub last_completion: Option<CompleteAction>,COMMENT
LOWhelix-view/src/document.rs261/// Inlay hints for a single `(Document, View)` combo.COMMENT
LOWhelix-view/src/document.rs461// The documentation and implementation of this function should be up-to-date withCOMMENT
LOWhelix-view/src/document.rs481 read_and_detect_encoding(reader, encoding, &mut buf)?;COMMENT
LOWhelix-view/src/input.rs81 /// of keys can be read easily.COMMENT
LOWhelix-view/src/macros.rs1//! These are macros to make getting very nested fields in the `Editor` struct easierCOMMENT
LOWhelix-view/src/expansion.rs1use std::borrow::Cow;COMMENT
LOWhelix-view/src/expansion.rs21#[derive(Debug, Clone, Copy, PartialEq, Eq)]COMMENT
LOWhelix-view/src/view.rs161 pub gutters: GutterConfig,COMMENT
LOWhelix-view/src/view.rs661 // match (start, end) {COMMENT
LOWhelix-view/src/view.rs1121 /// `JumpList::remove` dropped every entry belonging to a document (e.g. whenCOMMENT
LOWhelix-view/src/view.rs1181 let mut jumps = make(0);COMMENT
LOWhelix-view/src/handlers/word_index.rs321 .awaitCOMMENT
LOWhelix-lsp-types/src/folding_range.rs61pub struct FoldingRangeCapability {COMMENT
LOWhelix-lsp-types/src/folding_range.rs81 #[serde(skip_serializing_if = "Option::is_none")]COMMENT
LOWhelix-lsp-types/src/folding_range.rs121 /// The zero-based character offset from where the folded range starts. If not defined, defaults to the length of thCOMMENT
LOWhelix-lsp-types/src/request.rs261COMMENT
LOWhelix-lsp-types/src/request.rs481/// The configuration section ask for is defined by the server and doesn’t necessarily need to correspond toCOMMENT
LOWhelix-lsp-types/src/lsif.rs61#[serde(rename_all = "camelCase")]COMMENT
LOWhelix-lsp-types/src/lsif.rs81 full_range: Range,COMMENT
LOWhelix-lsp-types/src/document_diagnostic.rs121/// A diagnostic report with a full set of problems.COMMENT
LOWhelix-lsp-types/src/document_diagnostic.rs181 /// diagnostics in a file B which A depends on. An example of such a language is C/C++ whereCOMMENT
LOWhelix-lsp-types/src/document_diagnostic.rs201 ///COMMENT
LOWhelix-lsp-types/src/document_diagnostic.rs241 }COMMENT
LOWhelix-lsp-types/src/document_link.rs41 pub partial_result_params: PartialResultParams,COMMENT
LOWhelix-lsp-types/src/color.rs101 pub partial_result_params: PartialResultParams,COMMENT
LOWhelix-lsp-types/src/lib.rs221COMMENT
LOWhelix-lsp-types/src/lib.rs361 /// The range at which the message applies.COMMENT
LOWhelix-lsp-types/src/lib.rs381 #[serde(skip_serializing_if = "Option::is_none")]COMMENT
LOWhelix-lsp-types/src/lib.rs481lsp_enum! {COMMENT
LOWhelix-lsp-types/src/lib.rs521/// A textual edit applicable to a text document.COMMENT
381 more matches not shown…
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALhelix-term/src/handlers/completion.rs186 let handle = cx.editor.handlers.completions.request_controller.restart();CODE
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMhelix-view/Cargo.toml14# Skip libtest benchmark harness, the benches use criterion.COMMENT
MEDIUM.cargo/config.toml6# specifying flags this way is more robust as they get mergedCOMMENT
Unused Imports4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/indent/python.py1CODE
LOWtests/indent/python.py2CODE
LOWtests/indent/python.py2CODE
LOWtests/query/highlights/python/constructs.py1CODE
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWtests/indent/python.py56CODE
LOWtests/indent/python.py64CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOWruntime/themes/cyan_light.toml3# This theme has moved to jetbrains_cyan_light, make sure to update your configuration accordingly.COMMENT
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWhelix-tui/src/backend/termina.rs329 // Then request the current flags. We need to check if the terminal enabledCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWhelix-term/src/commands.rs2094// TODO: implement a variant of that uses visual lines and respects virtual textCOMMENT
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtests/query/highlights/python/calls.py1def helper():CODE