AI Slop Code Risk Monitor

jesseduffield/lazygit

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

simple terminal UI for git commands

1.3 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for jesseduffield/lazygit, a Go project with 83,553 GitHub stars. SynthScan examined 202,067 lines of code across 1400 source files, recording 222 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.3 (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.3
Adjusted Signal
1.3
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
83.6K
Stars
Go
Language
202.1K
Lines of Code
1.4K
Files
222
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.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.8/100 · LOW

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

Agent Over-Engineering Ratio 0.8/100 · LOW

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

PR Review Velocity Impact 5.9/100 · LOW

Which changes need focused human review? 222 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 1MEDIUM 9LOW 212

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 222 distinct pattern matches across 11 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.

Over-Commented Block181 hits · 181 pts
SeverityFileLineSnippetContext
LOW.golangci.yml41 # ST1003 complains about names like remoteUrl or itemId (should beCOMMENT
LOW.golangci.yml61COMMENT
LOWdemo/record_demo.sh81mkdir -p "$OUTPUT_DIR"COMMENT
LOWdemo/rerecord_demos.sh1#!/bin/shCOMMENT
LOWcmd/author_colors_repo/main.go1// author_colors_repo creates a git repository for checking that the colorsCOMMENT
LOWdocs/Config.md81 # If true, do not show a warning when attempting to commit without any stagedCOMMENT
LOWdocs/Config.md101COMMENT
LOWdocs/Config.md121 - [status]COMMENT
LOWdocs/Config.md141 # the right)COMMENT
LOWdocs/Config.md161 timeFormat: 02 Jan 06COMMENT
LOWdocs/Config.md261 # If true, display the files in the file views as a tree. If false, display theCOMMENT
LOWdocs/Config.md301 # If true (default), file icons are shown in the file views. Only relevant ifCOMMENT
LOWdocs/Config.md401git:COMMENT
LOWdocs/Config.md421 # # e.g.COMMENT
LOWdocs/Config.md481COMMENT
LOWdocs/Config.md541 log:COMMENT
LOWdocs/Config.md561 # How branches are sorted in the local branches view.COMMENT
LOWdocs/Config.md661# If true, don't display introductory popups upon opening Lazygit.COMMENT
LOWscripts/just_e2e_completion.zsh1# Zsh completion for the `e2e` and `e2e-cli` recipes in lazygit's justfile.COMMENT
LOWdocs-master/Config.md81 # If true, do not show a warning when attempting to commit without any stagedCOMMENT
LOWdocs-master/Config.md101COMMENT
LOWdocs-master/Config.md121 - [status]COMMENT
LOWdocs-master/Config.md141 # the right)COMMENT
LOWdocs-master/Config.md161 timeFormat: 02 Jan 06COMMENT
LOWdocs-master/Config.md261 # If true, display the files in the file views as a tree. If false, display theCOMMENT
LOWdocs-master/Config.md301 # If true (default), file icons are shown in the file views. Only relevant ifCOMMENT
LOWdocs-master/Config.md401git:COMMENT
LOWdocs-master/Config.md421 # # e.g.COMMENT
LOWdocs-master/Config.md481COMMENT
LOWdocs-master/Config.md541 log:COMMENT
LOWdocs-master/Config.md561 # How branches are sorted in the local branches view.COMMENT
LOWdocs-master/Config.md661# If true, don't display introductory popups upon opening Lazygit.COMMENT
LOWpkg/tasks/tasks.go81 // different from what the view last showed (a different command key) callsCOMMENT
LOWpkg/tasks/tasks.go101COMMENT
LOWpkg/tasks/tasks.go121 // for last when StartLoading was called. It is cleared when that task hasCOMMENT
LOWpkg/tasks/tasks.go141 // A gocui task simply represents the fact that lazygit is busy doing something,COMMENT
LOWpkg/tasks/tasks.go161 // satisfied. This is an absolute count from the start of the task, not aCOMMENT
LOWpkg/tasks/tasks.go201// RenderRestore puts a view back where it was when it re-renders content the userCOMMENT
LOWpkg/tasks/tasks.go221 //COMMENT
LOWpkg/tasks/tasks.go541 case <-done:COMMENT
LOWpkg/tasks/tasks.go601 go utils.Safe(func() {COMMENT
LOWpkg/tasks/tasks.go981 // Note we don't reset the origin here even when the command key changed:COMMENT
LOWpkg/tasks/read_request_queue.go1package tasksCOMMENT
LOWpkg/tasks/read_request_queue.go21// Only once the task asked for last has given the view all of its content does theCOMMENT
LOWpkg/config/user_config.go21 ConfirmOnQuit bool `yaml:"confirmOnQuit"`COMMENT
LOWpkg/config/user_config.go81 ScrollOffBehavior string `yaml:"scrollOffBehavior"`COMMENT
LOWpkg/config/user_config.go101 // Number from 0 to 1.0.COMMENT
LOWpkg/config/user_config.go121 // Possible values:COMMENT
LOWpkg/config/user_config.go141 ColorScheme string `yaml:"colorScheme" jsonschema:"enum=auto,enum=dark,enum=light"`COMMENT
LOWpkg/config/user_config.go161 // One of: 'mixed' (default) | 'filesFirst' | 'foldersFirst'COMMENT
LOWpkg/config/user_config.go181 // If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.COMMENT
LOWpkg/config/user_config.go201 // Whether to split the main window when viewing file changes.COMMENT
LOWpkg/config/user_config.go241 // Border color of focused windowCOMMENT
LOWpkg/config/user_config.go281COMMENT
LOWpkg/config/user_config.go301 //COMMENT
LOWpkg/config/user_config.go321 // See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_DiffRenderers.md for more information.COMMENT
LOWpkg/config/user_config.go361 CommitPrefixes map[string][]CommitPrefixConfig `yaml:"commitPrefixes"`COMMENT
LOWpkg/config/user_config.go421 // If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hangCOMMENT
LOWpkg/integration/clients/go_test.go81 // not writing stderr to the pty because we want to capture a panic ifCOMMENT
LOWpkg/integration/tests/ui/accordion.go1package uiCOMMENT
121 more matches not shown…
Decorative Section Separators7 hits · 32 pts
SeverityFileLineSnippetContext
MEDIUM⚡pkg/integration/tests/ui/accordion.go10// ╶─Status─────────────────────────╴┌─Patch──────────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡pkg/integration/tests/ui/accordion.go11// ╶─Files - Submodules──────0 of 0─╴│commit 6e56dd04b70e548976f7f2928c4d9c359574e2bc ▲COMMENT
MEDIUM⚡pkg/integration/tests/ui/accordion.go13// ┌─Commits - Reflog───────────────┐│Date: Wed Jul 19 22:00:03 2023 +1000 │COMMENT
MEDIUM⚡pkg/integration/tests/ui/accordion.go15// │6e56dd04 CI commit-11 █└────────────────────────────────────────────────────────────────┘COMMENT
MEDIUM⚡pkg/integration/tests/ui/accordion.go16// │a35c687d CI commit-10 ▼┌─Command log────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡pkg/integration/tests/ui/accordion.go17// └───────────────────────10 of 20─┘│Random tip: To filter commits by path, press '<ctrl+s>' │COMMENT
MEDIUM⚡pkg/integration/tests/ui/accordion.go18// ╶─Stash───────────────────0 of 0─╴└────────────────────────────────────────────────────────────────┘COMMENT
Fake / Example Data24 hits · 30 pts
SeverityFileLineSnippetContext
LOWpkg/integration/tests/commit/copy_tag_to_clipboard.go19 shell.SetAuthor("John Doe", "john@doe.com")CODE
LOW…g/integration/tests/commit/copy_author_to_clipboard.go19 shell.SetAuthor("John Doe", "john@doe.com")CODE
LOW⚡pkg/integration/tests/commit/auto_wrap_message.go31 Type("Lorem ipsum dolor sit amet, consectetur adipiscing elit.").CODE
LOW⚡pkg/integration/tests/commit/auto_wrap_message.go31 Type("Lorem ipsum dolor sit amet, consectetur adipiscing elit.").CODE
LOW⚡pkg/integration/tests/commit/auto_wrap_message.go33 Content(Equals("Lorem ipsum dolor \nsit amet, \nconsectetur \nadipiscing elit.")).CODE
LOWpkg/integration/tests/commit/auto_wrap_message.go44 "subject\n \n Lorem ipsum dolor\n sit amet,\n consectetur\n adipiscing elit."))CODE
LOWpkg/integration/tests/commit/auto_wrap_message.go54 Content(Equals("Lorem ipsum dolor \nsit amet, \nconsectetur \nadipiscing elit.")).CODE
LOWpkg/gocui/text_area_test.go1056var testContent = `Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOWpkg/gocui/text_area_test.go1056var testContent = `Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOW⚡pkg/gui/presentation/commits_test.go635 models.NewCommit(hashPool, models.NewCommitOpts{Hash: "authorcolors1", AuthorName: "Jane Doe", Parents: []string{"authCODE
LOW⚡pkg/gui/presentation/commits_test.go636 models.NewCommit(hashPool, models.NewCommitOpts{Hash: "authorcolors2", AuthorName: "Jane Doe"}),CODE
LOW⚡pkg/gui/presentation/commits_test.go642 authors.SetCustomAuthors(map[string]string{"Jane Doe": "red"})CODE
LOW⚡pkg/gui/presentation/commits_test.go645 authors.SetCustomAuthors(map[string]string{"Jane Doe": "blue"})CODE
LOW⚡pkg/gui/presentation/authors/authors_test.go54 SetCustomAuthors(map[string]string{"Jane Doe": "red"})CODE
LOW⚡pkg/gui/presentation/authors/authors_test.go55 assert.Equal(t, style.FgRed.Sprint("JD"), ShortAuthor("Jane Doe"))CODE
LOW⚡pkg/gui/presentation/authors/authors_test.go56 assert.Equal(t, style.FgRed.Sprint("Jane Doe"), LongAuthor("Jane Doe", 8))CODE
LOW⚡pkg/gui/presentation/authors/authors_test.go58 SetCustomAuthors(map[string]string{"Jane Doe": "blue"})CODE
LOW⚡pkg/gui/presentation/authors/authors_test.go59 assert.Equal(t, style.FgBlue.Sprint("JD"), ShortAuthor("Jane Doe"))CODE
LOW⚡pkg/gui/presentation/authors/authors_test.go60 assert.Equal(t, style.FgBlue.Sprint("Jane Doe"), LongAuthor("Jane Doe", 8))CODE
LOWpkg/gui/presentation/authors/authors_test.go71 SetCustomAuthors(map[string]string{"Jane Doe": "red"})CODE
LOWpkg/gui/presentation/authors/authors_test.go76 assert.Equal(t, style.FgRed.Sprint("JD"), ShortAuthor("Jane Doe"))CODE
LOWpkg/commands/git_commands/commit_loader_test.go550 AuthorName: "Jane Doe",CODE
LOWpkg/commands/git_commands/commit_loader_test.go577 AuthorName: "Jane Doe",CODE
LOWpkg/commands/git_commands/commit_loader_test.go740 AuthorName: "John Doe",CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHpkg/tasks/tasks_test.go207// A dummy reader that simply yields as many blank lines as requested. The onlyCOMMENT
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMscripts/run_integration_tests.sh26# harness appends to), print them sorted by slowest first so they show up in theCOMMENT
MEDIUMpkg/tasks/tasks.go619 // the user is looking at seamless, and blanking the view for a messageCOMMENT
Deep Nesting2 hits · 2 pts
SeverityFileLineSnippetContext
LOWdemo/fonts/fit_flog_symbols.py66CODE
LOWdemo/fonts/fit_flog_symbols.py93CODE
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWtest/default_test_config/config.yml26 # TODO: add tests which explicitly test auto-refresh functionalityCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/bisect.sh3# How to use:COMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/check_filenames.sh6 # Check if the file name contains uppercase lettersCOMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/workflows/ci.yml177 # If you change this, make sure to also update scripts/golangci-lint-shim.shCOMMENT
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpkg/gui/layout.go100 // already), so we need to check if it didCOMMENT