AI Slop Code Risk Monitor

jgm/pandoc

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

Universal markup converter

1.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for jgm/pandoc, a Haskell project with 46,767 GitHub stars. SynthScan examined 109,534 lines of code across 1505 source files, recording 75 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 1.0 (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.0
Adjusted Signal
1.0
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
46.8K
Stars
Haskell
Language
109.5K
Lines of Code
1.5K
Files
75
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 2.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 2.5/100 · LOW

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

Agent Over-Engineering Ratio 0.1/100 · LOW

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

PR Review Velocity Impact 4.1/100 · LOW

Which changes need focused human review? 75 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 6LOW 68

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 75 distinct pattern matches across 8 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 Data48 hits · 55 pts
SeverityFileLineSnippetContext
LOW⚡MANUAL.txt7598# Lorem ipsumCOMMENT
LOW⚡MANUAL.txt7600**Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctusCODE
LOW⚡MANUAL.txt7600**Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctusCODE
LOWMANUAL.txt7635**Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctusSTRING
LOWMANUAL.txt7635**Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctusSTRING
LOWtest/command/10185.md3Lorem ipsumCODE
LOWtest/command/10185.md10Lorem ipsumCODE
LOWtest/command/10185.md27Lorem ipsum [@foo].CODE
LOWtest/command/10185.md34Lorem ipsum (John Doe, n.d.).CODE
LOWtest/command/opendocument-styles.md39[Figure ("fig1",[],[]) (Caption Nothing []) [Plain [Str "placeholder"]]]CODE
LOWtest/command/4848.md34Lorem ipsumCODE
LOWtest/command/4848.md35\blockquote{dolor sit amet}CODE
LOWtest/command/4848.md49Lorem ipsumCODE
LOWtest/command/4848.md50\blockcquote[198]{Knu86}{dolor sit amet}CODE
LOWtest/command/4848.md77Lorem ipsumCODE
LOWtest/command/4848.md78\foreignblockquote{italian}{dolor sit amet}CODE
LOW⚡test/command/3309.md6Lorem ipsum dolor sit amet,CODE
LOW⚡test/command/3309.md6Lorem ipsum dolor sit amet,CODE
LOW⚡test/command/3309.md14Lorem ipsum dolor sit amet,CODE
LOW⚡test/command/3309.md14Lorem ipsum dolor sit amet,CODE
LOW⚡test/command/3309.md25Lorem ipsum dolor sit amet,CODE
LOW⚡test/command/3309.md25Lorem ipsum dolor sit amet,CODE
LOW⚡test/command/3309.md31Lorem ipsum dolor sit amet,CODE
LOW⚡test/command/3309.md31Lorem ipsum dolor sit amet,CODE
LOWtest/command/9358.md24<p>Lorem ipsum</p>CODE
LOW⚡test/command/8131.md34Lorem ipsum dolor sit amet, consectetuer adipiscing elit.CODE
LOW⚡test/command/8131.md34Lorem ipsum dolor sit amet, consectetuer adipiscing elit.CODE
LOW⚡test/command/8131.md40Lorem ipsum dolor sit amet, consectetuer adipiscing elit.CODE
LOW⚡test/command/8131.md40Lorem ipsum dolor sit amet, consectetuer adipiscing elit.CODE
LOWtest/command/11664.md14 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed doCODE
LOWtest/command/11664.md14 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed doCODE
LOWtest/command/11664.md27| A | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do |CODE
LOWtest/command/11664.md27| A | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do |CODE
LOWtest/command/biblatex-basic.md4author="John Doe",CODE
LOWtest/command/biblatex-basic.md12author="John Doe",CODE
LOWtest/command/citeproc-20.md3Lorem ipsum dolor sit amet^[Consectetur adipisicing elit: «sed do eiusmod tempor incididunt» [@doe_1989, 15].].CODE
LOWtest/command/citeproc-20.md3Lorem ipsum dolor sit amet^[Consectetur adipisicing elit: «sed do eiusmod tempor incididunt» [@doe_1989, 15].].CODE
LOWtest/command/citeproc-20.md21Lorem ipsum dolor sit amet[1].CODE
LOWtest/command/citeproc-20.md21Lorem ipsum dolor sit amet[1].CODE
LOWtest/command/bibtex-basic.md4author="John Doe",CODE
LOWtest/command/bibtex-basic.md12author="John Doe",CODE
LOWtest/command/7678.md4 author = "Jane Doe",CODE
LOWtest/command/7678.md35 author = "Jane Doe",CODE
LOWtest/command/9391.md4<p>Lorem ipsum.</p>CODE
LOWdata/dzslides/template.html40 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac dui eu est feugiat lacinia sit amet nec leo. MaCODE
LOWdata/dzslides/template.html40 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac dui eu est feugiat lacinia sit amet nec leo. MaCODE
LOWpandoc-lua-engine/test/lua/smart-constructors.lua6 pandoc.DefinitionList{{"foo", pandoc.Para "placeholder"}},CODE
LOWpandoc-lua-engine/test/lua/module/pandoc-template.lua88 local tmpl = template.compile('placeholder')CODE
Modern AI Meta-Vocabulary4 hits · 16 pts
SeverityFileLineSnippetContext
MEDIUMdoc/custom-writers.md127## Reducing boilerplate with `pandoc.scaffolding.Writer`COMMENT
MEDIUM⚡doc/lua-filters.md6867# Module pandoc.scaffoldingCOMMENT
MEDIUM⚡doc/lua-filters.md6871## Fields {#pandoc.scaffolding-fields}COMMENT
MEDIUM⚡doc/lua-filters.md6873### Writer {#pandoc.scaffolding.Writer}COMMENT
Over-Commented Block12 hits · 12 pts
SeverityFileLineSnippetContext
LOW.stylish-haskell.yaml1# stylish-haskell configuration fileCOMMENT
LOW.stylish-haskell.yaml21 - simple_align:COMMENT
LOW.stylish-haskell.yaml41 # Default: global.COMMENT
LOW.stylish-haskell.yaml61 # > import qualified Data.List as ListCOMMENT
LOW.stylish-haskell.yaml81 # > ( emptyCOMMENT
LOW.stylish-haskell.yaml101 # > import Data.Foldable (Foldable (fold, foldl, foldMap))COMMENT
LOW.stylish-haskell.yaml121 #COMMENT
LOW.stylish-haskell.yaml141 # # Number of spaces to use for each tab. Default: 8, as specified by theCOMMENT
LOW.stylish-haskell.yaml161# Default: native.COMMENT
LOW.github/workflows/nightly.yml161#COMMENT
LOW.github/workflows/nightly.yml181# run: |COMMENT
LOWdata/dzslides/template.html201 progress of the presentation. */COMMENT
Structural Annotation Overuse7 hits · 10 pts
SeverityFileLineSnippetContext
LOWdoc/getting-started.md10# Step 1: Install pandocCOMMENT
LOWdoc/getting-started.md15# Step 2: Open a terminalCOMMENT
LOWdoc/getting-started.md58# Step 3: Changing directoriesCOMMENT
LOWdoc/getting-started.md138# Step 4: Using pandoc as a filterCOMMENT
LOWdoc/getting-started.md185# Step 5: Text editor basicsCOMMENT
LOWdoc/getting-started.md220# Step 6: Converting a fileCOMMENT
LOWdoc/getting-started.md281# Step 7: Command-line optionsCOMMENT
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHtools/benchplot.js72// Colors: time = green, alloc = red (as requested)COMMENT
Decorative Section Separators1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.stylish-haskell.yaml2# ==================================COMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMdata/dzslides/template.html216# The following block of code is not supposed to be edited.COMMENT
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtools/update-translations.py189CODE