AI Slop Code Risk Monitor

tstack/lnav

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

Log file navigator

3.1 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for tstack/lnav, a C++ project with 10,775 GitHub stars. SynthScan examined 277,230 lines of code across 693 source files, recording 829 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 3.1 (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.1
Adjusted Signal
3.1
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
10.8K
Stars
C++
Language
277.2K
Lines of Code
693
Files
829
Pattern Hits
2026-10-31
Scan Date
0.03
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 11.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

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

Agent Over-Engineering Ratio 2.4/100 · LOW

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

PR Review Velocity Impact 16.1/100 · LOW

Which changes need focused human review? 829 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 20MEDIUM 16LOW 792

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 829 distinct pattern matches across 17 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 Block739 hits · 648 pts
SeverityFileLineSnippetContext
LOWtools/bin2c.c1// bin2c.cCOMMENT
LOWtest/test_metric_log.sh241# Negative: an unterminated quote on the header line is captured byCOMMENT
LOWtest/test_tabular_format.sh101 -c ";SELECT log_line, log_thread_id, log_duration, log_src_file, log_src_line FROM all_logs ORDER BY log_line" \COMMENT
LOWtest/parser_debugger.py1#! /usr/bin/env python3COMMENT
LOWdocs/_config.yml1# Welcome to Jekyll!COMMENT
LOWdocs/_config.yml41 syntax_highlighter: rougeCOMMENT
LOWdocs/_config.yml61# - Gemfile.lockCOMMENT
LOWdocs/screenshots/generate.sh1#!/usr/bin/env bashCOMMENT
LOWdocs/source/conf.py1# -*- coding: utf-8 -*-COMMENT
LOWdocs/source/conf.py241# The suffix of source filenames.COMMENT
LOWdocs/source/conf.py261release = '0.15.0'COMMENT
LOWdocs/source/conf.py281# add_function_parentheses = TrueCOMMENT
LOWdocs/source/conf.py301html_theme = 'furo'COMMENT
LOWdocs/source/conf.py321# html_logo = NoneCOMMENT
LOWdocs/source/conf.py341# ],COMMENT
LOWdocs/source/conf.py361COMMENT
LOWdocs/source/conf.py401# Grouping the document tree into LaTeX files. List of tuplesCOMMENT
LOWexample-scripts/log_to_csv.sh1#!/usr/bin/env bashCOMMENT
LOWsrc/tailer/tailer.main.c21 * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANYCOMMENT
LOWsrc/tailer/tailer.main.py1#!/usr/bin/env python3COMMENT
LOWsrc/spookyhash/SpookyV2.h1//COMMENT
LOWsrc/spookyhash/SpookyV2.h21// Google's CityHash has similar specs to SpookyHash, and CityHash is fasterCOMMENT
LOWsrc/spookyhash/SpookyV2.h41# define INLINE inlineCOMMENT
LOWsrc/spookyhash/SpookyV2.h121 // Final: compute the hash for the current SpookyHash stateCOMMENT
LOWsrc/spookyhash/SpookyV2.h141 //COMMENT
LOWsrc/spookyhash/SpookyV2.h181 s1 ^= s9; s10 ^= s11; s11 = Rot64(s11,46); s10 += s0;COMMENT
LOWsrc/spookyhash/SpookyV2.h241COMMENT
LOWsrc/spookyhash/SpookyV2.cpp1// Spooky HashCOMMENT
LOWsrc/fmtlib/fmt/ostream.h1// Formatting library for C++ - std::ostream supportCOMMENT
LOWsrc/fmtlib/fmt/ostream.h21#endifCOMMENT
LOWsrc/fmtlib/fmt/format-inl.h1// Formatting library for C++ - implementationCOMMENT
LOWsrc/fmtlib/fmt/format-inl.h21# include <new> // std::bad_allocCOMMENT
LOWsrc/fmtlib/fmt/format-inl.h241// Precondition: n <= pow(10, N + 1).COMMENT
LOWsrc/fmtlib/fmt/ranges.h1// Formatting library for C++ - range and tuple supportCOMMENT
LOWsrc/fmtlib/fmt/xchar.h1// Formatting library for C++ - optional wchar_t and exotic character supportCOMMENT
LOWsrc/fmtlib/fmt/core.h1// Formatting library for C++ - core APICOMMENT
LOWsrc/fmtlib/fmt/chrono.h1// Formatting library for C++ - chrono supportCOMMENT
LOWsrc/fmtlib/fmt/chrono.h21#endifCOMMENT
LOWsrc/fmtlib/fmt/chrono.h221} // namespace safe_duration_castCOMMENT
LOWsrc/fmtlib/fmt/chrono.h241COMMENT
LOWsrc/fmtlib/fmt/chrono.h541// Writes two-digit numbers a, b and c separated by sep to buf.COMMENT
LOWsrc/fmtlib/fmt/os.h1// Formatting library for C++ - optional OS-specific functionalityCOMMENT
LOWsrc/fmtlib/fmt/os.h21# endifCOMMENT
LOWsrc/fmtlib/fmt/os.h41#ifndef FMT_POSIXCOMMENT
LOWsrc/fmtlib/fmt/os.h281 // Duplicates a file descriptor with the dup function and returnsCOMMENT
LOWsrc/fmtlib/fmt/color.h241 // │23│─┘COMMENT
LOWsrc/fmtlib/fmt/color.h261 // │62│─┬── unusedCOMMENT
LOWsrc/fmtlib/fmt/args.h1// Formatting library for C++ - dynamic argument listsCOMMENT
LOWsrc/fmtlib/fmt/printf.h1// Formatting library for C++ - legacy printf implementationCOMMENT
LOWsrc/fmtlib/fmt/compile.h1// Formatting library for C++ - experimental format string compilationCOMMENT
LOWsrc/fmtlib/fmt/format.h41#include "base.h"COMMENT
LOWsrc/fmtlib/fmt/format.h61# include <string> // std::stringCOMMENT
LOWsrc/fmtlib/fmt/format.h81# define FMT_USE_NONTYPE_TEMPLATE_ARGS 0COMMENT
LOWsrc/fmtlib/fmt/format.h101// Use the provided definition.COMMENT
LOWsrc/fmtlib/fmt/format.h121#endifCOMMENT
LOWsrc/fmtlib/fmt/format.h161COMMENT
LOWsrc/fmtlib/fmt/format.h181# define FMT_REDUCE_INT_INSTANTIATIONS 0COMMENT
LOWsrc/fmtlib/fmt/format.h201#endifCOMMENT
LOWsrc/fmtlib/fmt/format.h3341COMMENT
LOWsrc/fmtlib/fmt/format.h4401COMMENT
679 more matches not shown…
Empty Error Handlers20 hits · 100 pts
SeverityFileLineSnippetContext
HIGHdemo/loggen.py20except OSError:CODE
HIGHdemo/loggen.py25except OSError:CODE
HIGHtest/naughty_files.py18except OSError as e:CODE
HIGHrelease/loggen.py17except OSError:CODE
HIGHrelease/loggen.py22except OSError:CODE
HIGHrelease/loggen.py205except OSError:CODE
HIGHrelease/loggen2.py17except OSError:CODE
HIGHrelease/loggen2.py202except OSError:CODE
HIGHrelease/loggen2.py213except OSError:CODE
HIGHdocs/screenshots/animate.py97except OSError:CODE
HIGHdocs/screenshots/animate.py111except (ProcessLookupError, ChildProcessError):CODE
HIGHdocs/screenshots/render.py238except OSError:CODE
HIGHdocs/screenshots/render.py170except OSError:CODE
HIGHdocs/screenshots/render.py252except ProcessLookupError:CODE
HIGHdocs/screenshots/render.py256except (ChildProcessError, OSError):CODE
HIGHsrc/tailer/tailer.main.py152except OSError:CODE
HIGHsrc/tailer/tailer.main.py505except Exception:CODE
HIGHsrc/tailer/tailer.main.py591except OSError:CODE
HIGHsrc/tailer/tailer.main.py656except Exception:CODE
HIGHsrc/tailer/tailer.main.py782except OSError:CODE
AI Slop Vocabulary7 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUMsrc/fmtlib/fmt/format.h3383 // Compilers are not aware of how to leverage the maximum value ofCOMMENT
MEDIUMsrc/third-party/parallel_hashmap/phmap_config.h354// are not defined as such in any file). To utilize the followingCOMMENT
MEDIUMsrc/third-party/md4c/md4c.c2522#define MD_MARK_OPENER 0x04 /* Definitely opener. */COMMENT
MEDIUMsrc/third-party/md4c/md4c.c2523#define MD_MARK_CLOSER 0x08 /* Definitely closer. */COMMENT
MEDIUMsrc/third-party/notcurses/include/notcurses/notcurses.h1890// Essentially, the kept material does not move. It serves to anchor theCOMMENT
MEDIUMsrc/third-party/notcurses/src/lib/render.c716 // we're also in that case working with hopefully more robust terminals.COMMENT
MEDIUMsrc/third-party/notcurses/src/lib/render.c752 // we're also in that case working with hopefully more robust terminals.COMMENT
Decorative Section Separators5 hits · 20 pts
SeverityFileLineSnippetContext
MEDIUM⚡src/third-party/notcurses/include/notcurses/notcurses.h3927// ╭──────────────────────────╮COMMENT
MEDIUM⚡src/third-party/notcurses/include/notcurses/notcurses.h3929// ╭──────────────────────this is the secondary header──────╮COMMENT
MEDIUM⚡src/third-party/notcurses/include/notcurses/notcurses.h3938// ╰────────────────────────────────────here's the footer───╯COMMENT
MEDIUMsrc/third-party/notcurses/include/notcurses/notcurses.h4010// ╭───────────────────╮COMMENT
MEDIUMsrc/third-party/notcurses/include/notcurses/notcurses.h4025//╰────────────────────────press q to exit (there is sartrev("no exit"))─╯COMMENT
Fake / Example Data10 hits · 12 pts
SeverityFileLineSnippetContext
LOWdemo/loggen.py8 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnaCODE
LOWdemo/loggen.py8 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnaCODE
LOW⚡test/textfile_0.md45Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqCODE
LOW⚡test/textfile_0.md45Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqCODE
LOW⚡test/textfile_0.md47<span style="white-space: nowrap">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididCODE
LOW⚡test/textfile_0.md47<span style="white-space: nowrap">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididCODE
LOWrelease/loggen.py62PATH_COMPS = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolorCODE
LOWrelease/loggen.py62PATH_COMPS = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolorCODE
LOWrelease/loggen2.py57PATH_COMPS = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolorCODE
LOWrelease/loggen2.py57PATH_COMPS = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolorCODE
Unused Imports10 hits · 10 pts
SeverityFileLineSnippetContext
LOWtest/parser_debugger.py31CODE
LOWrelease/loggen.py4CODE
LOWrelease/loggen2.py4CODE
LOWrelease/loggen2.py7CODE
LOWdocs/screenshots/animate.py5CODE
LOWdocs/screenshots/animate.py8CODE
LOWdocs/screenshots/render.py12CODE
LOWdocs/source/conf.py32CODE
LOWdocs/source/conf.py32CODE
LOWdocs/source/conf.py32CODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALsrc/formats/java_log.json192 "line": "[2022-06-01T13:37:36,371] WARN574240[Thread-35] - com.vmware.observability.observer.Observer.exCODE
Excessive Try-Catch Wrapping8 hits · 8 pts
SeverityFileLineSnippetContext
LOWtest/log2src/python/log_example.py26 except Exception:CODE
LOWdocs/screenshots/render.py184 except Exception as exc:CODE
LOWcrashd/app.py130 except Exception as e:STRING
MEDIUMcrashd/app.py127def remove_zip(response):CODE
LOWsrc/tailer/tailer.main.py276 except Exception as e:CODE
LOWsrc/tailer/tailer.main.py505 except Exception:CODE
LOWsrc/tailer/tailer.main.py524 except Exception as e:CODE
LOWsrc/tailer/tailer.main.py656 except Exception:CODE
Deep Nesting8 hits · 8 pts
SeverityFileLineSnippetContext
LOWtest/parser_debugger.py97CODE
LOWdocs/screenshots/render.py342CODE
LOWdocs/screenshots/render.py56CODE
LOWsrc/format2csv.py7CODE
LOWsrc/tailer/tailer.main.py97CODE
LOWsrc/tailer/tailer.main.py237CODE
LOWsrc/tailer/tailer.main.py508CODE
LOWsrc/tailer/tailer.main.py648CODE
Self-Referential Comments3 hits · 7 pts
SeverityFileLineSnippetContext
MEDIUMtest/test_sql.sh782# Create a dummy database for the next couple of tests to consume.COMMENT
MEDIUMdocs/source/conf.py6# This file is execfile()d with the current directory set to its containing dir.COMMENT
MEDIUMcrashd/app.py116 # Create a new zip fileSTRING
Verbosity Indicators3 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/fmtlib/fmt/format-inl.h1275 // Step 1: integer promotion & Schubfach multiplier calculation.COMMENT
LOWsrc/fmtlib/fmt/format-inl.h1330 // Step 2: Try larger divisor; remove trailing zeros if necessary.COMMENT
LOWsrc/fmtlib/fmt/format-inl.h1362 // Step 3: Find the significand with the smaller divisor.COMMENT
Structural Annotation Overuse3 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/fmtlib/fmt/format-inl.h1275 // Step 1: integer promotion & Schubfach multiplier calculation.COMMENT
LOWsrc/fmtlib/fmt/format-inl.h1330 // Step 2: Try larger divisor; remove trailing zeros if necessary.COMMENT
LOWsrc/fmtlib/fmt/format-inl.h1362 // Step 3: Find the significand with the smaller divisor.COMMENT
Hyper-Verbose Identifiers4 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/tailer/tailer.main.py184 def set_client_path_state_error(self, cps: ClientPathState, op: str, error_msg: Optional[str]):CODE
LOWsrc/tailer/tailer.main.py508 def handle_load_preview_request(self, path: str, preview_id: int):CODE
LOWsrc/tailer/tailer.main.py579 def handle_complete_path_request(self, path: str):CODE
LOWsrc/static-files/assets/js/lnav-markdown-magic.js1function updateElementFromResponse(element, result) {CODE
Redundant / Tautological Comments5 hits · 4 pts
SeverityFileLineSnippetContext
LOW⚡crashd/app.py49 # Check if header 'lnav-secret' exists and has the correct valueSTRING
LOW⚡crashd/app.py51 # Check if content length is providedSTRING
LOW⚡crashd/app.py58 # Check if content length is zeroSTRING
LOW⚡crashd/app.py62 # Check if content length exceeds 10MBSTRING
LOWcrashd/app.py105 # Check if header 'lnav-secret' exists and has the correct value for downloadingSTRING
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWdocs/screenshots/generate.sh15# Usage:COMMENT
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWdocs/screenshots/render.py506CODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWdocs/source/_ext/lnavlexer.py2__all__ = ['LnavCommandLexer']CODE