AI Slop Code Risk Monitor

chromebrew/chromebrew

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

Package manager for Chrome OS

1.1 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for chromebrew/chromebrew, a Ruby project with 2,531 GitHub stars. SynthScan examined 157,029 lines of code across 2809 source files, recording 114 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 1.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.

1.1
Adjusted Signal
1.1
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
2.5K
Stars
Ruby
Language
157.0K
Lines of Code
2.8K
Files
114
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.7/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 1.1/100 · LOW

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

PR Review Velocity Impact 5.2/100 · LOW

Which changes need focused human review? 114 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 24LOW 89

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 114 distinct pattern matches across 9 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 Block61 hits · 61 pts
SeverityFileLineSnippetContext
LOWtools/build_updated_packages.rb1#!/usr/local/bin/rubyCOMMENT
LOWtools/getrealdeps.rb1#!/usr/local/bin/rubyCOMMENT
LOWtools/gl.sh1#!/bin/bashCOMMENT
LOWtools/licenses.txt1# A list of valid licenses for the license field. Note the American English of license.COMMENT
LOWtests/unit_test.sh41rubocop --require rubocop-chromebrew &>/dev/null || gem install rubocop-chromebrewCOMMENT
LOWpackages/qemu.rb121 #include <libdrm/i915_drm.h>COMMENT
LOWpackages/qemu.rb141 # from ../hw/i3c/core.c:12:COMMENT
LOWpackages/qemu.rb161 # -1.0 -I/usr/local/lib64/dbus-1.0/include -I/usr/local/include/fribidi -I/usr/local/include/harfbuzz -I/usr/local/iCOMMENT
LOWpackages/llvm20_build.rb41 # LLVM_TARGETS_TO_BUILD = 'ARM;AArch64;AMDGPU'COMMENT
LOWpackages/llvm21_build.rb41 # LLVM_TARGETS_TO_BUILD = 'ARM;AArch64;AMDGPU'COMMENT
LOWpackages/gnutls.rb61 --with-system-priority-file=#{CREW_PREFIX}/etc/gnutls/default-priorities \COMMENT
LOWpackages/gnutls.rb81 # FAIL: aead-cipher-vecCOMMENT
LOWpackages/gnutls.rb101 # FAIL: system-override-sig-tls.shCOMMENT
LOWpackages/buildessential.rb61 depends_on 'gtk_doc'COMMENT
LOWpackages/buildessential.rb81COMMENT
LOWpackages/buildessential.rb101 # depends_on 'clisp'COMMENT
LOWpackages/buildessential.rb121 # depends_on 'fpc'COMMENT
LOWpackages/motif.rb61 endCOMMENT
LOWpackages/busybox.rb81 CONFIG_STATIC_LIBGCC=yCOMMENT
LOWpackages/busybox.rb101 CONFIG_UNIT_TEST=yCOMMENT
LOWpackages/busybox.rb221 CONFIG_FEATURE_UNZIP_XZ=yCOMMENT
LOWpackages/busybox.rb381 CONFIG_BASE64=yCOMMENT
LOWpackages/busybox.rb401 # CONFIG_SETFONT is not setCOMMENT
LOWpackages/busybox.rb421 CONFIG_RUN_PARTS=yCOMMENT
LOWpackages/busybox.rb521 #COMMENT
LOWpackages/busybox.rb541 # CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not setCOMMENT
LOWpackages/busybox.rb561 CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""COMMENT
LOWpackages/busybox.rb661 # CONFIG_HD is not setCOMMENT
LOWpackages/busybox.rb881 # Networking UtilitiesCOMMENT
LOWpackages/busybox.rb1041 # CONFIG_FEATURE_UDHCPC6_RFC3646 is not setCOMMENT
LOWpackages/busybox.rb1121 # CONFIG_ENVDIR is not setCOMMENT
LOWpackages/busybox.rb1141 # CONFIG_FEATURE_SETFILES_CHECK_OPTION is not setCOMMENT
LOWpackages/geoip.rb41 # system 'curl -#LO http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz'COMMENT
LOWpackages/docopts.rb41 # Tests currently fail:COMMENT
LOWpackages/pulseaudio.rb61 -Dtests=false \COMMENT
LOWpackages/glibc_build223.rb321 # Remove libmount.so since it conflicts with the one from util_linux.COMMENT
LOWpackages/llvm23_build.rb81 # See See https://github.com/llvm/llvm-project/issues/45130 . Currently handled with the debian patchCOMMENT
LOWpackages/glibc_build237.rb61 # We need to avoid this patch to preserve float128. Otherwise strtof128,COMMENT
LOWpackages/glibc_build237.rb241 endCOMMENT
LOWpackages/kbd.rb41 # Tests fail spectacularly.COMMENT
LOWpackages/aide.rb41 #define ADFS_SUPER_MAGIC 0xadf5COMMENT
LOWpackages/aide.rb61 #define EXT3_SUPER_MAGIC 0xEF53COMMENT
LOWpackages/aide.rb81 #define MINIX2_SUPER_MAGIC2 0x2478 /* minix v2 fs, 30 char names */COMMENT
LOWpackages/aide.rb101 #define CIFS_SUPER_MAGIC 0xFF534D42 /* the first four bytes of SMB PDUs */COMMENT
LOWpackages/aide.rb121 #define PIPEFS_MAGIC 0x50495045COMMENT
LOWpackages/containerd.rb61 # bin_dir is the directory in which the binaries for the plugin is kept.COMMENT
LOWpackages/containerd.rb81 # who don't have a cni daemonset in production yet.COMMENT
LOWpackages/containerd.rb101 # Omission of this field defaults to the empty string "", which indicates no key model,COMMENT
LOWpackages/containerd.rb121 # specific layout https://docs.docker.com/engine/security/certificates/COMMENT
LOWpackages/double_conversion.rb21 depends_on 'glibc' # RCOMMENT
LOWpackages/nftables.rb41 # SKIP: tests/monitor/run-tests.shCOMMENT
LOWpackages/zstd_static.rb801 # Set build optionsCOMMENT
LOWpackages/zstd_static.rb821COMMENT
LOWpackages/inetutils.rb61 # Handle conflict with the uutils_coreutils hostname.COMMENT
LOWpackages/inetutils.rb81 # File.write("#{CREW_DEST_PREFIX}/bin/ping6", @PING6_SH, perm: 0o755)COMMENT
LOWpackages/a2png.rb41 # We use the lib64 directory on 64-bit systems, even though we don't have multilib support.COMMENT
LOWpackages/python3.rb121 FileUtils.ln_sf 'pip3', "#{CREW_DEST_PREFIX}/bin/pip"COMMENT
LOWlib/deb_utils.rb1module DebUtilsCOMMENT
LOWlib/crew_lockfile.rb1# Based upon the fork of https://github.com/ahoward/lockfile atCOMMENT
LOWlib/package.rb181 # base class. Instead of defining it, we initialize it in a functionCOMMENT
1 more matches not shown…
Self-Referential Comments13 hits · 38 pts
SeverityFileLineSnippetContext
MEDIUMinstall.sh337# Create the device.json file.COMMENT
MEDIUMtools/update_python_pip_packages.rb38 # Create a thread pool for parallelization.COMMENT
MEDIUMtools/update_ruby_gem_packages.rb25 # Create a thread pool for parallelization.COMMENT
MEDIUMtests/tools/getrealdeps.rb14 # Create the Package (or superclass) object, assigning it the relevant values.COMMENT
MEDIUMtests/tools/getrealdeps.rb18 # Create the temporary package file, write the content to it, and rewind the stream.COMMENT
MEDIUMtests/tools/version.rb5 # Create a temporary file in the packages directory with the filename of the class name of the input package.COMMENT
MEDIUMtests/lib/package_utils.rb13 # Create a nonsense package name which will not be installed.COMMENT
MEDIUMpackages/clamav.rb53 system 'freshclam' # Create the clamav database.CODE
MEDIUM.github/workflows/Generate-PR.yml98 # Create a draft PR and immediately try to update the branchCOMMENT
MEDIUM.github/workflows/Generate-PR.yml437 # Create a draft PR and immediately try to update the branchCOMMENT
MEDIUMlib/fixup.rb252 # Create a minimal Package object and pass it to Command.removeCOMMENT
MEDIUMlib/buildsystems/ruby.rb155 # Create a filelist from the gem if the latest gem version isCOMMENT
MEDIUMcommands/search.rb9 # Create a case-insensitive regex from the passed string.COMMENT
Decorative Section Separators7 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUMpackages/libbsd.rb31 # ===========COMMENT
MEDIUMpackages/nftables.rb44 # ============================================================================COMMENT
MEDIUMpackages/nftables.rb46 # ============================================================================COMMENT
MEDIUM⚡lib/package.rb313 # └─────buildessentialCOMMENT
MEDIUM⚡lib/package.rb322 # └─────chromeCOMMENT
MEDIUM⚡lib/package.rb323 # └─────buildessentialCOMMENT
MEDIUM⚡lib/package.rb327 # └─────buildessentialCOMMENT
Redundant / Tautological Comments10 hits · 15 pts
SeverityFileLineSnippetContext
LOWinstall.sh57# Check if the script is being run as root.COMMENT
LOWtests/package_test.rb27 # Check if the tests passed.COMMENT
LOWtests/unit_test.sh40# Check if rubocop-chromebrew is installed and working, and if not install it.COMMENT
LOWtests/unit_test.sh51 ## Check if rake is installed and working, and if not install it.COMMENT
LOWpackages/vim.rb89 # Set vim to be the default vi if there is no vi or if a defaultCOMMENT
LOWpackages/sommelier.rb318 # Check if milestone is greater than 105.COMMENT
LOWpackages/gvim.rb107 # Set vim to be the default vi if there is no vi or if a defaultCOMMENT
LOWpackages/helix_editor.rb58 # Check if helix can find its runtime pathCOMMENT
LOWpackages/neovim.rb38 # Set nvim to be the default vi if there is no vi or if a defaultCOMMENT
LOWlib/selector.rb15 # Set timeout to zero if a non-interactive console.COMMENT
AI Slop Vocabulary7 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMtools/packages.yaml1484url: https://github.com/go-delve/delve/releasesCODE
LOWtools/create_gem_packages.rb78 # This files doesn't contain deps, so just add new deps.COMMENT
MEDIUMtools/repology.json2429 "homepage": "https://github.com/go-delve/delve",CODE
LOWtests/tools/version.rb47 # We shoudn't be attempting to check versions of Pip or Ruby packages, so we just return nil.COMMENT
LOWpackages/fpc.rb28 # In the meantime, though, just pass the correct library path manually.COMMENT
MEDIUMpackages/delve.rb5 homepage 'https://github.com/go-delve/delve'CODE
MEDIUMpackages/delve.rb24 system "GOBIN=#{CREW_DEST_PREFIX}/bin go install github.com/go-delve/delve/cmd/dlv@v#{version}"CODE
Hyper-Verbose Identifiers9 hits · 9 pts
SeverityFileLineSnippetContext
LOWtools/build_updated_packages.rb139def update_hashes_and_manifests(pkg)CODE
LOWtools/create_gem_packages.rb20def check_gem_binary_build_needed(ruby_gem_name = nil, ruby_gem_version = nil)CODE
LOWtests/dep_test.rb10def check_for_removed_dependencies(pkg, verbose: false)CODE
LOWtests/tools/version.rb4def update_package_test_wrapper(input_file, version, expected_pkg_file, version_updated: true, bc_updated: nil)CODE
LOWpackages/helix_editor.rb74 def ask_to_remove_user_defined_config_files_in(dir)CODE
LOWlib/buildsystems/ruby.rb7def check_gem_binary_build_needed(ruby_gem_name = nil, ruby_gem_version = nil)CODE
LOWlib/buildsystems/ruby.rb75def add_gem_binary_compression(pkg_name = nil)CODE
LOWcommands/download.rb259def cache_downloaded_git_repository(extract_dir, cachefile)CODE
LOWcommands/update.rb69def determine_updatable_packages(json: false)CODE
Example Usage Blocks5 hits · 8 pts
SeverityFileLineSnippetContext
LOWtools/gl.sh7# Usage:COMMENT
LOWlib/crew_lockfile.rb4# Usage:COMMENT
LOWlib/package_utils.rb197 # Usage:COMMENT
LOWlib/gnome.rb9 # Usage:COMMENT
LOWlib/package_helpers.rb39 # Usage:COMMENT
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHlib/downloader.rb173 puts "Sleeping for #{retry_after} seconds as requested.".lightredCODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpackages/protobuf_c.rb3# Before upgrading protobuf_c, make sure to upgrade protobuf first.COMMENT