AI Slop Code Risk Monitor

ocaml/ocaml

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

The core OCaml system: compilers, runtime system, base libraries

3.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for ocaml/ocaml, a OCaml project with 6,615 GitHub stars. SynthScan examined 103,675 lines of code across 509 source files, recording 349 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 3.9 (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.9
Adjusted Signal
3.9
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
6.6K
Stars
OCaml
Language
103.7K
Lines of Code
509
Files
349
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 12.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

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

Agent Over-Engineering Ratio 6.0/100 · LOW

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

PR Review Velocity Impact 22.1/100 · LOW

Which changes need focused human review? 349 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 85LOW 264

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 349 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 Block245 hits · 224 pts
SeverityFileLineSnippetContext
LOWappveyor.yml1#**************************************************************************COMMENT
LOWbuild-aux/ltmain.sh1#! /usr/bin/env shCOMMENT
LOWbuild-aux/ltmain.sh21# same distribution terms that you use for the rest of that program.COMMENT
LOWbuild-aux/ltmain.sh41COMMENT
LOWbuild-aux/ltmain.sh61## -------------------------- ##COMMENT
LOWbuild-aux/ltmain.sh81# the files within it. See the URLs above, or the file `LICENSE`COMMENT
LOWbuild-aux/ltmain.sh181COMMENT
LOWbuild-aux/ltmain.sh401 doneCOMMENT
LOWbuild-aux/ltmain.sh421# overwrite any of the functions or variables defined here beforeCOMMENT
LOWbuild-aux/ltmain.sh501# warnings, or a space delimited list of some subset ofCOMMENT
LOWbuild-aux/ltmain.sh561## ----------------- ##COMMENT
LOWbuild-aux/ltmain.sh721# func_dirname FILE APPEND NONDIR_REPLACEMENTCOMMENT
LOWbuild-aux/ltmain.sh1261# quotes backslashified. Available only if 'unquoted' is specified.COMMENT
LOWbuild-aux/ltmain.sh1281# " | \" | \"COMMENT
LOWbuild-aux/ltmain.sh1521}COMMENT
LOWbuild-aux/ltmain.sh1541# This file is dual licensed under the terms of the MIT licenseCOMMENT
LOWbuild-aux/ltmain.sh1561# of too.COMMENT
LOWbuild-aux/ltmain.sh1581# The default options also support '--debug', which will turn on shellCOMMENT
LOWbuild-aux/ltmain.sh1721 eval set dummy "$func_run_hooks_result"; shiftCOMMENT
LOWbuild-aux/ltmain.sh1741# function unnecessarily because it can be an expensive operation on someCOMMENT
LOWbuild-aux/ltmain.sh1761# {COMMENT
LOWbuild-aux/ltmain.sh1781# ;;COMMENT
LOWbuild-aux/ltmain.sh1801#COMMENT
LOWbuild-aux/ltmain.sh2161COMMENT
LOWbuild-aux/ltmain.sh3081 func_convert_core_file_wine_to_w32_result=COMMENT
LOWbuild-aux/ltmain.sh3121}COMMENT
LOWbuild-aux/ltmain.sh3241}COMMENT
LOWbuild-aux/ltmain.sh3381 fiCOMMENT
LOWbuild-aux/ltmain.sh5381COMMENT
LOWbuild-aux/ltmain.sh5441 s/^====MARK====//COMMENT
LOWbuild-aux/ltmain.sh5461# Platform-specific function to extract theCOMMENT
LOWbuild-aux/ltmain.sh5601# func_emit_wrapper [arg=no]COMMENT
LOWbuild-aux/ltmain.sh5621COMMENT
LOWbuild-aux/ltmain.sh5941# include <io.h>COMMENT
LOWbuild-aux/ltmain.sh5961#if defined __MINGW32__COMMENT
LOWbuild-aux/ltmain.sh5981# define S_IXUSR _S_IEXECCOMMENT
LOWbuild-aux/ltmain.sh6001COMMENT
LOWbuild-aux/ltmain.sh6021# endifCOMMENT
LOWbuild-aux/ltmain.sh7701 # -F/path path to uninstalled frameworks, gcc on darwinCOMMENT
LOWbuild-aux/ltmain.sh9061 case $deplib inCOMMENT
LOWbuild-aux/ltmain.sh11501# The TAGs below are defined such that we never get into a situationCOMMENT
LOWbuild-aux/ltmain.sh11521# Local Variables:COMMENT
LOWtools/ocaml.py1#**************************************************************************COMMENT
LOWtools/ocaml.py21#COMMENT
LOWtools/ocaml.py41#COMMENT
LOWtools/ocaml.py61# value(): the value cast to the "value" Caml runtime type.COMMENT
LOWtools/ocaml.py81# number which can have any value, including negative.COMMENT
LOWtools/gdb_ocamlrun.py1#**************************************************************************COMMENT
LOWtools/git-dev-options.sh1#! /bin/shCOMMENT
LOWtools/gdb.py1#**************************************************************************COMMENT
LOWtools/check-parser-uptodate-or-warn.sh1#!/bin/shCOMMENT
LOWtools/lldb.py1#**************************************************************************COMMENT
LOWtools/opam/process.sh1#!/bin/shCOMMENT
LOWtools/opam/process.sh21if (set -o pipefail 2> /dev/null); thenCOMMENT
LOWtools/ci/actions/check-manual-modified.sh1#!/usr/bin/env bashCOMMENT
LOWtools/ci/actions/deepen-fetch.sh1#!/usr/bin/env bashCOMMENT
LOWtools/ci/actions/deepen-fetch.sh21# - FETCH_HEAD - the merge commit for a PR or the tip of the branch of a pushCOMMENT
LOWtools/ci/actions/check-configure.sh1#!/usr/bin/env bashCOMMENT
LOWtools/ci/actions/check-no-ignored-files.sh1#!/usr/bin/env bashCOMMENT
LOWtools/ci/actions/check-typo.sh1#!/usr/bin/env bashCOMMENT
185 more matches not shown…
Decorative Section Separators68 hits · 129 pts
SeverityFileLineSnippetContext
MEDIUMbuild-aux/ltmain.sh157# --------------COMMENT
MEDIUMbuild-aux/ltmain.sh183# ----------------------COMMENT
MEDIUMbuild-aux/ltmain.sh192# --------------------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh378# ---------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh523# -------------------COMMENT
MEDIUMbuild-aux/ltmain.sh572# ---------------------COMMENT
MEDIUMbuild-aux/ltmain.sh618# ----------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh641# --------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh665# ------------------COMMENT
MEDIUMbuild-aux/ltmain.sh689# ------------------COMMENT
MEDIUMbuild-aux/ltmain.sh722# -------------------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh734# --------------------------------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh755# ----------------COMMENT
MEDIUMbuild-aux/ltmain.sh774# --------------------COMMENT
MEDIUMbuild-aux/ltmain.sh783# ------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh819# -----------------COMMENT
MEDIUMbuild-aux/ltmain.sh832# -----------------------COMMENT
MEDIUMbuild-aux/ltmain.sh844# -----------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh855# ---------------COMMENT
MEDIUMbuild-aux/ltmain.sh881# ---------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh929# -------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh967# ------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1057# --------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1073# --------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1138# ----------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1218# -----------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1253# ------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1264# ----------------COMMENT
MEDIUMbuild-aux/ltmain.sh1317# ------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1338# ---------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1368# -----------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1393# ------------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1422# ----------COMMENT
MEDIUMbuild-aux/ltmain.sh1443# -------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1456# -----------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1469# ----------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1494# -----------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1511# ---------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1640# -----------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1652# ---------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1669# ------------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1681# ---------------------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1699# ---------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1813# ----------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1825# ---------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1858# --------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1879# ---------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh1999# ------------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh2028# ----------------------COMMENT
MEDIUMbuild-aux/ltmain.sh2056# ------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh2069# ------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh2105# -----------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh2131# ----------COMMENT
MEDIUMbuild-aux/ltmain.sh2144# ------------------COMMENT
MEDIUMbuild-aux/ltmain.sh2164# ------------COMMENT
MEDIUMbuild-aux/ltmain.sh2221# ------------COMMENT
MEDIUMbuild-aux/ltmain.sh2245# ----------------COMMENT
MEDIUMbuild-aux/ltmain.sh2336# ---------------------COMMENT
MEDIUMbuild-aux/ltmain.sh2353 # ---------------------------COMMENT
MEDIUMbuild-aux/ltmain.sh2375# -------------------------------COMMENT
8 more matches not shown…
Self-Referential Comments13 hits · 22 pts
SeverityFileLineSnippetContext
MEDIUMbuild-aux/ltmain.sh77# This file is dual licensed under the terms of the MIT licenseCOMMENT
MEDIUMbuild-aux/ltmain.sh1541# This file is dual licensed under the terms of the MIT licenseCOMMENT
MEDIUMbuild-aux/ltmain.sh1559# This file is a library for parsing options in your shell scripts alongCOMMENT
MEDIUMbuild-aux/ltmain.sh2807# This function is only a basic sanity check; it will hardly flush outCOMMENT
MEDIUMbuild-aux/ltmain.sh2817# This function implements the same check as func_lalib_p withoutCOMMENT
MEDIUMbuild-aux/ltmain.sh2840# This function is only a basic sanity check; it will hardly flush outCOMMENT
MEDIUMbuild-aux/ltmain.sh2850# This function is only a basic sanity check; it will hardly flush outCOMMENT
MEDIUMbuild-aux/ltmain.sh2875# This function is only a basic sanity check; it will hardly flush outCOMMENT
MEDIUMbuild-aux/ltmain.sh3015# Create a libtool object file (analogous to a ".la" file),COMMENT
MEDIUMbuild-aux/ltmain.sh7938 # Create the object directory.COMMENT
MEDIUMbuild-aux/ltmain.sh10519 # Create the old-style object.COMMENT
MEDIUMbuild-aux/ltmain.sh10539 # Create an invalid libtool object if no PIC, so that we don'tCOMMENT
MEDIUMtools/ocaml.py15# This file contains any debugger-agnostic code for debugger plugins.COMMENT
AI Slop Vocabulary4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMbuild-aux/ltmain.sh345# Sed substitution that helps us do robust quoting. It backslashifiesCOMMENT
MEDIUMbuild-aux/ltmain.sh5631# Sed substitution that helps us do robust quoting. It backslashifiesCOMMENT
MEDIUMtools/check-parser-uptodate-or-warn.sh22# is not robust to clone/checkout refreshing the files in an arbitraryCOMMENT
MEDIUMtestsuite/tests/backtrace/filter-locations.sh3# to be robust to different inlining choices made by different compiler settings.COMMENT
Redundant / Tautological Comments8 hits · 7 pts
SeverityFileLineSnippetContext
LOWbuild-aux/ltmain.sh379# Check if we can use backslash as IFS='\' separator, and setCOMMENT
LOWbuild-aux/ltmain.sh666# Set func_arith_result to the result of evaluating TERMs.COMMENT
LOWbuild-aux/ltmain.sh690# Set func_basename_result to FILE with everything up to and includingCOMMENT
LOWbuild-aux/ltmain.sh856# Set func_len_result to the length of STRING. STRING may notCOMMENT
LOWbuild-aux/ltmain.sh1074# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.COMMENT
LOWbuild-aux/ltmain.sh4294 # Check if any of the arguments is a wrapper script.COMMENT
LOWbuild-aux/ltmain.sh10242 # Loop over the list of objects to be linked.COMMENT
LOWtools/ci/actions/check-changes-modified.sh35# Check if Changes has been updated in the PRCOMMENT
Deep Nesting5 hits · 5 pts
SeverityFileLineSnippetContext
LOWtools/ocaml.py220CODE
LOWtools/ocaml.py355CODE
LOWtools/ocaml.py407CODE
LOWtools/gdb_ocamlrun.py91CODE
LOWtestsuite/tests/native-debugger/lldb_test.py13CODE
Example Usage Blocks2 hits · 3 pts
SeverityFileLineSnippetContext
LOWtestsuite/tests/native-debugger/gdb_test.py48# Usage:COMMENT
LOWtestsuite/tests/native-debugger/lldb_test.py30# Usage:COMMENT
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWruntime/weak.c125/* If we are in Phase_sweep_ephe we need to check if the keyCOMMENT
Fake / Example Data1 hit · 2 pts
SeverityFileLineSnippetContext
LOWruntime/intern.c800 /* Use the code pointer from the "placeholder" function */COMMENT
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtestsuite/tests/native-debugger/lldb_test.py3CODE
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
LOWruntime/caml/weak.h65 If fields are added, don't forget to update weak.ml, [additional_values],CODE